新しい二号機の機体は、ほぼアルミパイプで組まれているせいか、 ラズパイの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
これでももう一つ満足いく結果を得られなかった。しかし、次のサイトに、複数のオペアンプを通して信号を平滑化する試みが描かれていて、それを試みて、結構満足のいく結果になった。
0 件のコメント:
コメントを投稿