2022年9月19日月曜日

WIFIからプロポへ

 新しい二号機の機体は、ほぼアルミパイプで組まれているせいか、 ラズパイのWIFIに繋がりにくい。因果関係はもう一つわからないが、アンテナの中にラズパイがあるようなものなので、そう考えてします。基本、wifiで制御するシステムなので、これは致命的な問題になる。そこで、ラジコンのようにプロポで制御することを目指す。

プロポはOpenTXで組まれたJumper T-Liteというのを持っているので、それとフタバ互換の受信機を組み合わせることにした。受信機は、「Corona 受信機 S.BUS 2.4G S-FHSS フタバ 互換 (R8SF(8CH))」だ。送受信機ともに8チャンネルだ。

この受信機は、プロポの信号によって、直接サーボモータも回すことができる。送信信号の詳細はわからないが、受信信号は、従ってPWM(パルス幅変調)されたものだ。PWMは、パワーを1周期内のパルスの幅によって信号の強度を表現する。この強度をデューティー比という。

今回の目的は、サーボモータを回すのではなく、プロポの操作をフライトコントローラーの制御信号と読み取らなければならないので、なんらかの形でデューティー比をアナログのデータに変換しなければならない。

どうやってそれを実現するかが問題だ。

最初は、安易に、フライトコントローラーで、アナログ信号をPWM信号に変えて、ESC(モータースピードコントローラー)に渡すのが、pca9685というチップなので、これを逆に、出力側にPWM信号を与えて、readさせれば、元に戻るのではないかと考えたが、これは全くダメだった。

次に、矩形波をサンプリングして、mcp3208というおなじみのADコンバーターで読み取り、そこのビットの切り替えタイミングをとらえてデューティー比を計算する方法を考えた。考え方に大きな間違いはなかったが、mcp3208のサンプリング速度が100KHz程度で、これでは、安定した信号を捉えることができない。最低1MHzくらい必要な感じで、一応、それくらいのサンプリングができるADコンバーターを発注したが、いろいろ難しい。

その辺りで、ふとネットを調べていたら、PWM信号をローパスフィルタに通して、デューティー比の信号をアナログ電圧にするという裏技が紹介してあった。

https://www.macnica.co.jp/business/semiconductor/articles/cypress/107577/

これはいいと思った。ただ、私が欲しいのは直流電圧で、RCのローパスフィルタでは、リップルというノイズが大きい。これを小さくするためにはCの容量を大きくしなければならない。しかしそれをやると、Cに電荷が貯まるまでの時間が長くなり、コントローラーの反応に機敏に追随しなくなる。

そこで、次のサイトに書いてある、オペアンプを使ったローパスフィルタを試みた。

https://geek.tacoskingdom.com/blog/88

これでももう一つ満足いく結果を得られなかった。しかし、次のサイトに、複数のオペアンプを通して信号を平滑化する試みが描かれていて、それを試みて、結構満足のいく結果になった。


オペアンプLM358には、同じオペアンプが二つ組み込まれていて、同じ回路を構成し、直列に繋げば、2段のローパスフィルタになる。これをやってみたら、結構いい感じになったのだ。






また、この信号をラズパイに繋いだAD変換LSIのMCP3208を通すと、次のようになった。

これで使える。



0 件のコメント:

コメントを投稿

920MHz帯無線通信モジュールTY92SS-E2730を使う

 先にも書いたが、ドローン2号機上のコントローラーはラズパイ4で、それとのやりとりをもともとWIFI経由で予定していたが、機体がアルミパイプであるために通信が不安定で使い物にならなかった。そこで、プロポに変えた。プロポの信号取り出しもなんとか安定できるようになったが、そのシステム...