図1:ポケットサイズのオシロスコープ(DSO Nano v3)
①ラジコンの受信機→
②ローパスフィルター→
③ArduinoUNOのアナログIN→
④ArduinoUNOのアナログOUT→
⑤サーボモーター
の流れの中で、②ローパスフィルターから③ArduinoUNOに情報を正確に伝える為にはどの程度までノイズを抑えたら良いのかそもそも計算していませんでした。
順番が前後してしまいましたが、ちゃんとしておかないと後々困りそうなので、今更ですが計算しておきます。
1. サーボモーターを動かす信号
2. 計算してみた
2.1 矩形波をフラットな電圧にしたら
2.85V出力にDuty比%を100で割った値を掛けるとフラットにした時の電圧に相当します。
Duty比の最小値・最大値について計算した結果が式②,③です。
2.2 電圧を読み取る範囲
式②から式③までの電圧を読み取るので、読み取り範囲は式④の様になります。
2.3 目標のノイズ(リップル)
ラジコンのサーボモーターは256段階(8bit)で制御されておりますので、式④の電圧の範囲を256で割った電圧以下にノイズを下げる事が目標となります。
式⑤より、ローパスフィルターで目標とするノイズは0.891mV以下と言う事が分かりました・・・えっ!?・・・無理っぽい?
ローパスフィルターはあと3種類試してみますが、そもそもArduinoUNOで0.891mVの差が判別出来るのかと言う疑問が湧いてきました。
2.4 ArduinoUNOのアナログ入力で測れる最小電圧
ArduinoUNOのAnalogReadで読み取れる電圧は0~5Vで分解能は10bitあります。
ここから電圧の分解能は式⑥-1~⑥-2より、4.883mVで式⑤と比較すると式⑥-3の通り、ArduinoUNOには0.891mVの差は測れません。
2.5 Arduino101のアナログ入力の限界
ArduinoUNOがダメなら次世代ArduinoUNOと言われているArduino101であれば行けそうな気がするので計算してみます。
Arduino101のAnalogReadで読み取れる電圧は0~3.3Vで分解能は12bitあります。
ここから電圧の分解能は式⑦-1~⑦-2より、0.8057mVで式⑤と比較すると式⑦-3の通り、Arduino101には0.891mVの差は・・・測れます!
3. まとめ
50Hzの応答速度を維持しつつ、ラジコンの受信機から出力される2.58V、66.7HzのPWM信号を0.891mV以下のノイズに収めるローパスフィルターが残り3つの中に有ればいいのですが・・・。※CRローパスフィルターのノイズ残りは4.54Vでした。
とりあえずArduino101で0.891mVが測れると分かったのは唯一の救いです。
励みになりますのでよければクリック下さい(^o^)/