10K Pot生の出力ADCデータをarduino unoから電圧と抵抗に変換する方法?

私は簡単で基本的な質問をしています。私は10Kのポテンショメータからの出力を読むためにArduinoのUNOを使っています。私は、Unoが10ビットADCを使っていることを理解しているので、0から0Vまで、1024から5Vまでの出力を表示することができます。

質問:10K Potの抵抗値を変えながら、これらの値をpotから取得して、arduino IDEのシリアルモニタに表示しています。 0〜1024の値に対応する出力電圧と抵抗をどのように計算または知ることができますか。

もう1つの問題は、POTのノブを最大点、つまり5Vに変更すると、表示される出力が1007または1008になるということです。5Vの場合は1024を出力することになっていませんか。

0
10kのポットが直線(lol)であると仮定すると、「半分の方向」(135度回転)は5Kまたは512の読みに対応するはずです - それは単なる端数です。実際には、角度/抵抗/読み取り値をプロットして直線性の誤差を補正することによってシステムを較正してみてください。
追加された 著者 t billips,

4 答え

1024に変換された値は5Vに対応するでしょう - あるいはあなたがチップのVrefピンに加えるどんな電圧にも対応します。しかし、10ビットの場合、コンバータが配信できる最大数は1023です。これはわずかな違いですが、注意してください。

変換値に対応する電圧を見つけるためには、V =(値/ 1024)* Vrefである。したがって、1008の読み取り値は4.92vに対応し、Vrefで5.00ボルトと仮定しています。

1
追加された

map関数を使用して、0から1023の値を使用可能な値にマップできます。

http://www.arduino.cc/en/Reference/Map

map(value, fromLow, fromHigh, toLow, toHigh)

int val = analogRead(0);
val = map(val, 0, 1023, 0, 500);
analogWrite(9, val);

これはあなたに0から500までの出力を与えるでしょう、そしてそれはあなたの電圧* 100になるでしょう。 私が500を使う理由は、あなたが0から5までを指定するならば、それがあなたに整数を与えるだけだからです。 500では100で割ることができ、それは小数点以下2桁の結果です。

1
追加された

私が考えることができる2つのこと...

ADCにはVrefが必要です。それはあなたのArduinoのあなたの5.xボルトVinに近いでしょうが正確ではありません。すべての測定はその電圧レベルを基準にして行われます。 Arduinoのピンでその電圧を測定できると思います。

鍋の中のワイパーの位置は、ネジが完全に後退しているときでも、抵抗器全体を横切るようになっているので、実際のVoutはVinほど高くはないかもしれません。

0
追加された

電圧プローブ(すなわちマルチメータ)をポットと並列に配置して、ADC値に対する電圧の最適曲線を作成することができます。これはリニアポットの場合に最も効果的ですが、すべてのアナログ回路の場合と同様に、完璧ではありません。

編集:その線形ポットを仮定すると、それが何であるべきかのアイデアを得るために極端にそれを回すことによってマルチメータから抵抗値をつかむこともできます。

電流が一定であれば、オームの法則を使用して抵抗の原因を見つけることができます。これまでの経験的測定からの電圧がわかります。

0
追加された