NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

ローパスフィルター(ノイズ低減目標)

図1:ポケットサイズのオシロスコープ(DSO Nano v3)
 
 前回の記事 でCRローパスフィルターのノイズ(リップル電圧)について調べましたが、そもそもの目的である
①ラジコンの受信機→
②ローパスフィルター→
③ArduinoUNOのアナログIN→
④ArduinoUNOのアナログOUT→
の流れの中で、②ローパスフィルターから③ArduinoUNOに情報を正確に伝える為にはどの程度までノイズを抑えたら良いのかそもそも計算していませんでした。
 順番が前後してしまいましたが、ちゃんとしておかないと後々困りそうなので、今更ですが計算しておきます。

1. サーボモーターを動かす信号

 ということで受信機からサーボモーターに出力される信号を図1のオシロスコープで測ってみました。
 
1.1 出力電圧
 ラジコンの受信機から出力されている矩形波の電圧・周期・デューティー比(以下Duty)の最小値(左折時)と最大値(右折時)を測った結果です。
イメージ 1

2. 計算してみた

2.1 矩形波をフラットな電圧にしたら
 2.85V出力にDuty比%を100で割った値を掛けるとフラットにした時の電圧に相当します。
 Duty比の最小値・最大値について計算した結果が式②,③です。
イメージ 2
イメージ 3
 
2.2 電圧を読み取る範囲
 式②から式③までの電圧を読み取るので、読み取り範囲は式④の様になります。
イメージ 4

 
2.3 目標のノイズ(リップル)
 ラジコンのサーボモーターは256段階(8bit)で制御されておりますので、式④の電圧の範囲を256で割った電圧以下にノイズを下げる事が目標となります。
 式⑤より、ローパスフィルターで目標とするノイズは0.891mV以下と言う事が分かりました・・・えっ!?・・・無理っぽい?
 ローパスフィルターはあと3種類試してみますが、そもそもArduinoUNOで0.891mVの差が判別出来るのかと言う疑問が湧いてきました。
イメージ 5
2.4 ArduinoUNOのアナログ入力で測れる最小電圧
 ArduinoUNOのAnalogReadで読み取れる電圧は0~5Vで分解能は10bitあります。
 ここから電圧の分解能は式⑥-1~⑥-2より、4.883mVで式⑤と比較すると式⑥-3の通り、ArduinoUNOには0.891mVの差は測れません。
イメージ 6
2.5 Arduino101のアナログ入力の限界
 ArduinoUNOがダメなら次世代ArduinoUNOと言われているArduino101であれば行けそうな気がするので計算してみます。
 Arduino101のAnalogReadで読み取れる電圧は0~3.3Vで分解能は12bitあります。
 ここから電圧の分解能は式⑦-1~⑦-2より、0.8057mVで式⑤と比較すると式⑦-3の通り、Arduino101には0.891mVの差は・・・測れます!
イメージ 7

3. まとめ

 50Hzの応答速度を維持しつつ、ラジコンの受信機から出力される2.58V、66.7HzのPWM信号を0.891mV以下のノイズに収めるローパスフィルターが残り3つの中に有ればいいのですが・・・。※CRローパスフィルターのノイズ残りは4.54Vでした。
 とりあえずArduino101で0.891mVが測れると分かったのは唯一の救いです。
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ローパスフィルター回路の色々!】目次に戻る