前回リポ化したファーストミニッツのステアリングをサーボ化するため、まずはレシーバーからステア用モーターの信号を取り出して、サーボ信号に変換します。
ファーストミニッツ受信基板内でのステアリング用(およびメインモーターも)の信号はPWMで、パルス幅のデューティ比が0~100%まで送信機の操作によって変化します。しかもブラシモーターを正転・逆転させなきゃいけないので、ステアリングを右に切ったときと左に切ったときではHブリッジ入力の異なる端子に信号が出力されます。
具体的には、左端のHブリッジドライバの内側2本のピンです。
デューティ比 0%
デューティ比 数%
PWM周波数は8ms間隔 = 125Hzですな
デューティ比 40%くらい
デューティ比 100%
なお、0%でL、100%でHが出ているということはブレーキ機能はありません。
信号を盗み見るピンがわかったので、これを何かのマイコンで認識し、サーボ信号のPPMに変換して出力してやればファーストミニッツ送受信機を生かしたままサーボが使えます。でもなるべく安く簡単に、しかも小さくやる必要があります。
RP2040を使ったボードもサイズやら値段やらたくさんありそうなので、今回はaliexpressで一枚あたり250円くらいで売られていた Waveshare RP2040-Zero というのを使いました。ピン割り当ては8番にL入力、7番にR入力、サーボ出力は14番ピンとしました。まずはRP2040系ボードをarduinoで使うページを参考に環境構築をして、LEDがレインボーに光るあたりまで動かしてみましょう。(おすすめ参考ページ : https://aloseed.com/it/rp2040_zero/)
サーボ信号変換プログラムは特に悩むこともなく動作確認しながら組めました。ソースコード(inoファイル)はこちらです。ステータスLEDを緑に点灯させるところ以外はごく一般的なarduinoの機能しか使ってないので、RP2040以外のどんなarduinoマイコンにでも移植できると思います。printデバッグで認識されたPWMのデューティ比を確認してみたところ、数%~100%まで5%刻みくらいの分解能で信号が得られるようです。少なくとも10%刻みよりは確実に細かいので、ステアの切り角を左右とも各10~20段階では操作できそうです。
いろいろあって完成後の写真はこんな具合です。RP2040ボードにはバッテリーからの電源、PWM信号の入力2つ、サーボへの電源と信号出力3本が接続されます。開発中なのでサーボはコネクタ経由でつないでいます。線をカットして直でマイコンボードに繋げはさらにコンパクトにできそうです。以下に実体配線図を載せておきます。
まあ、とにかく無事にサーボ駆動信号が出せるようになりました。
0 件のコメント:
コメントを投稿