3

オーブンをシミュレートしています。ポテンショメーターは希望の温度を設定し、センサーは「オーブン」である小さな銅板の現在の温度を読み取ります。

両方の温度センサーは、arduino uno の独自のアナログ入力ピンに接続されています。個人的には、ポテンショメータと温度センサーの両方で意味のある値を取得しました (シリアル ウィンドウで値を監視しています)。ただし、ポテンショメータを調整すると、センサーの読み取り値が大幅に変化します。

例えば:

  • ポテンショメータは 0 の位置にあり、センサーは室温の空気中にあります。シリアルは、TempSensor = 22 C、TSet = 0 C を示しています。これは正常です。
  • 次にポットを上げたとき: TempSensor= 40 C, TSet=55 C. -しかし、温度センサーはまだ室温の空気の中にあります! したがって、ポットの値 TSet は本来あるべきように上昇しますが、温度が実際には変化していなくても、センサーの読み取り値にも影響を与えます。

アドバイスをいただければ幸いです。ありがとう!

 void setup() {    
     Serial.begin(9600); 
 }

 void loop() {  
     int sensorValue = analogRead(A3);
     float tsens =  map(sensorValue, 0, 1023, 0, 500); 

     int sensorValue2 = analogRead(A1);
     float tset =  map(sensorValue2, 0, 1023, 0, 70);

     Serial.println(tsens); 
     Serial.println(tset);
 }
4

4 に答える 4

0

それはノイズですか、それとも悪い値ですか?ピンを見て、以前の最大値と最小値と照合する小さなテスト ルーチンを実行しました。新しい境界値が表示されるたびに、シリアル モニターに出力しました。間違った値が安定している場合は、回路を確認してください。有効な値の周りでノイズが多い場合は、デジタル ロー パス フィルターがうまく機能します。ポットを 34 回読み取ります。最高値と最低値を見つけて、それらを破棄します。次に、残りの 32 回の測定値の平均を取ります。セットアップで 90% の改善が見られました (40 カウントのエラーが 3 に減少)。2 つの高値と 2 つの低値を破棄した 36 の読み取り値は、おそらくさらに改善するでしょう。時間があれば、ダブル パス フィルターを実行できます。この同じプロセスを 34 回行い、高値と安値を捨てて、もう一度平均化します。全体としてこれは 34 x 34 の読み取り値なので、ノイズはなくなるはずです。しかし、サンプルを取得するのに時間がかかり、ポットの変更が検出されるまでに時間がかかります。時間を節約するために、メイン ループを通過するたびにポットを読み取り、各値を循環バッファーに保存します。ポットを読む必要があるときは、過去の 33 の読みと 34 番目の新しい読みを見ます。

于 2016-05-03T21:32:53.753 に答える
0

ほとんどの場合、温度センサーに接地されていないか、接地が間違っています。Arduino のアナログ ピンのピン構成は、近くのピンに電圧が印加されたときにフローティング電圧が上下に移動するように、互いに非常に近くに配置されています。センサーのアース接続(または電源、最初は正しい場合はおそらくアース)が切断されているか、高インピーダンスラインに固定されている場合、アナログ電圧は他の通常は非常に小さい電圧源が信号を支配するため、いたるところに移動しますパス。A3ピンの近くにも指を入れると大きく変動する可能性があります。

于 2013-12-17T00:46:52.513 に答える