【AIラジコンカー】RC受信機のパルス計測精度を上げる
前回、RPi-GP90を使ってRC受信機からパルス計測をしましたが、解像度16しか得られなかったため、今回はこれをなんとかして上げるということを目標に頑張って行きます。
まずは前回考えたとおり外部クロックをRPi-GP90に入力することでカウンタを高速で動かし、解像度を上げるということを試してみました。
使用したのは30MHzと最大12MHz(分周機能付き)の水晶発振器です。
結果は大失敗でした・・・。
友人の伝手で大学のオシロスコープで出力波形を確認し、綺麗な三角波が確認できたので一応コンパレータを使ってさらに矩形波に整形したり、色々と工夫をしてみたものの全くカウントできないという結果に。
カウントには一般的にJKフリップフロップ回路を使うみたいで、その内部構造を調べたりしたんですが、「単純にクロックの周波数上げても問題なさそうやけどなぁ・・・」と途方にくれていました。(この辺りに詳しい方いましたら教えてください泣)
ひととおり試せることを試したところで、RPi-GP90の製造元から問い合わせの返事が返ってきました。
「RPi-GP90の構造上、外部クロックを使ってもカウンタの分解能を上げることはできません。」
ガーーーーーーーン。
まぁ製造元が言うのであればそうなのでしょう。
お金の暴力なんてものは無かった。(参考)
ということで、新たな策を考えなければなりません。
そこでfacebookや知恵袋で質問していたら、どうやらarduino microが向いているという情報をいただくことができました。
早速、arduino microを購入して実験をはじめました。
参考にしたソースコードはこちら。
はじめはusbの電源でarduinoを動かしていたのですが、ノイズが酷くてこれも失敗かなと思っていました。しかし電源をRC用バッテリーから5vとった瞬間、素晴らしい性能を見せつけてくれました。
その結果がこちらです↓
なんと片側約400段階の分解能!
これがarduinoの力だったんですね!
もっと早くarduinoについて勉強しておけばよかった泣
ということで、今回はここまでです。
次回はarduinoを使ってpwm出力とラズパイとのシリアル通信をやってみます。
この記事が気に入ったらサポートをしてみませんか?