Arduinoアナログ入力の例の説明


8

まず第一に、私は電子工学の完全なナブです。

最近、Arduino Nanoを入手しました。ここで、http://arduino.cc/en/Tutorial/ReadAnalogVoltageの例に公称電位差計がない理由と、この公称値の変動がアナログ入力の読み取りにどのように影響するかを理解しようとしています。

また、http://arduino.cc/en/Tutorial/AnalogReadSerialの例で、なぜ10kポテンショメーターを選んだのか、200kポテンショメーターでは何が違うのか。

ありがとう!

回答:


12

(無負荷)ポテンショメーターからのワイパー電圧出力に違いはありません。これらはすべて同じように動作します。

ただし、最適なパフォーマンスを得るには、Arduinoへのアナログ入力で10kOhm未満のソースインピーダンスを推奨しています。これは、サンプルおよびホールドコンデンサの充電にかかる時間によるもので、ダイナミックインピーダンスと見なすことができます。以下の画像は、AtMega328データシートから抜粋したものです(Arduinoのベースとなっているマイクロコントローラー)。

アナログ入力インピーダンス

これを完全に理解していなくても、あまり心配しないでください。10kOhms未満のソースインピーダンスが必要であることを受け入れてください。

ポテンショメータからの出力インピーダンスをどのように計算しますか?

詳細については、テブナン等価インピーダンスを調べてください。これは、ポットのワイパーからの最大出力抵抗が上から下に測定した抵抗の1/4であることを示しています(ワイパーが中央にある場合)したがって、ポットが10kの場合、最大出力抵抗は2.5kです。 。
これは、一端から他端へスイープされる10kポットのシミュレーションです。

ポットシム

X軸は0〜100%の回転を表します(表示されている実際の値は無視してください)。Y軸はワイパーで測定された出力インピーダンスです。これが0オームで開始および終了し、中央で2.5kOhmsでピークに達する(50%)ことがわかります。
これは、推奨されるソースインピーダンスの10kよりも快適に低くなっています。
したがって、分圧器として、たとえば100オームと40kの間の任意のポット値を使用できます。

編集-200kポットを使用するとどうなるかについての質問に答えるには:

データシートの抜粋にあるように、ソースインピーダンスが高いほど、S / Hコンデンサの充電に時間がかかります。読み取り値が取得される前に完全に充電されていない場合、読み取り値は真の値と比較してエラーを示します。

コンデンサが最終値の90%まで充電する必要がある時間を計算できます。式は次のとおりです。

2.3 * R * C

1 RC時定数の後、電圧は最終値の約63%になります。2.3時定数の後は、上記のように約90%になります。これは1-(1 / e ^(RC / t))で計算されます。ここで、eは自然対数〜2.718です。たとえば、2.3時定数の場合、1-(1 / e ^ 2.3)= 0.8997になります。

したがって、示されている値を接続すると、50kのソースインピーダンス、100kの直列インピーダンス(最悪の場合を想定)、14pFの容量が得られます。

2.3 * 150k * 14pF = 4.83usで90%まで充電されます。

-3dB値も計算できます。

1 /(2pi * 150k * 14pF)= 75.8kHz

最終値を99%以内にしたい場合は、約4.6タウ(時定数)待機する必要があります。

4.6 * 150k * 14pF = 9.66usで99%まで充電-これは約16.5kHzに対応

したがって、ソースインピーダンスが高いほど充電時間が長くなり、ADCによって正確に読み取られる周波数が低くなることがわかります。

〜DC値を制御するポットの場合でも、リークが非常に少ないため、非常に低い周波数でサンプリングして充電するのに十分な時間をかけることができます。したがって、この場合は200kで実際に問題ないはずです。たとえば、オーディオ信号または変化する(AC)高インピーダンス信号の場合は、上記のすべてを考慮する必要があります。
このリンクは、ATMega328 ADC特性についての詳細を説明しています。


1
詳しい説明ありがとうございます!40kΩを超えるポテンショメータがデジタル測定値にどのように影響するかを明確にしていただけませんか?たとえば、ポテンショメータが200kΩになるように5を掛けてみましょう。
AB

@AB-さらに詳細を追加しました。あなたの質問のポットは、DC値を変化させるために使用されているだけであることに気付きました(AC信号のレベルを制御するのではありません)。既知の電圧があり、直列抵抗を変化させる場合、ソースインピーダンス>> 10kの増加の影響について独自のテストをいくつか実行できます。
Oli Glaser

6

Oliはデータシートに情報を示しましたが、これに慣れていない場合は、彼の説明が少し気になるかもしれません。

ADC(アナログ-デジタルコンバーター)には、アナログ入力電圧を保持する小さなコンデンサーがあります。そのコンデンサは、入力の抵抗を通じて充電されます。抵抗が大きいと、コンデンサの充電が遅くなります。最大値として10kΩが推奨されるため、その値のポトメーターを使用しても問題ありません。Oliの最大値は40kΩが適切ですが、テブナンについて学ぶと明らかになります。


1

私のArduinosでの経験では、ポテンショメータが10kを超えると、測定値が変動します。これを解決するには、ワイパーとグラウンドの間に0.1ufコンデンサを配置します。これにより、アナログ読み取りの電圧が安定します。コンデンサを使用することで、1メガオームまでのポットを使用し、安定した安定した測定値を取得しました。


入力ピンが切り替えられた後、並列の.1uFコンデンサが低インピーダンスソースを保証するので、私はこれが好きです。0.1uF / 14pf = 7142、およびadc(10bit)の分解能は1023分の1です。非常に大きなポットでは、入力ピンの電圧の設定と安定化の間にわずかな遅延がありますが、これは気付かれそうにありません。4Mohmポットは1Mohm impです。* 0.1uF = 0.1秒。0.46秒で あなたの価値は変化の99%に落ち着きます!
Dario Dentes、2015

これが馬鹿げているように見える場合は申し訳ありませんが、電圧が低下している場合はどうなりますか?
HilarieAK 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.