こんにちは!
inukaiです。
前回Lチカが終わったので、ここからはペリフェラルの設定をしていきます。
今回はまずPWMから設定します。
製作中のマウスにおいてPWMを使う場所としては、左右のモータ、ブザー・吸引ファンの合計4つがあります。
制御用のマイコンにRX631を使用する場合、PWMを出力できる機能として、TPU(16bitタイマタイマパルスユニット)、MTU(マルチファンクションタイマパルスユニット)があります。
どちらの機能を使ってもよいのですが、MTUを使って実装することとしました。
なので、マイコンのMTIOCxxという端子を割り当てることになるわけです。
自分の回路図の場合は、PWMの割り当てのみ着目すると下記のようになります。
・モータ1 : MTIOC2B
・モータ2 : MTIOC3C
・吸引ファン:MTIOC0C
・ブザー : MTIOC4D
さて、PWMを出すファームを書こうと思い今一度ハードウェアマニュアルを見てみます。
PWM出力に関する部分を抜き出したものが下図になります。
PWMモード1を見てみると、モータ1 :用MTIOC2Bとブザー用MTIOC4Dが使えなかったのです・・・
というわけで、いったんブザーはあきらめ、どうしても必要なPWM1は別の端子から引いてきました。
(ブザーに割り当てているP31は、PPG(フログラマブルパルスジェネレーター)でPWMっぽいものは出せるそうなのですが、今回はブザーは後回しにします。)
ただブログ書いていて気が付いたのですが、PWMモード2でMTIOC2Bを駆動すればよかったのでは・・・
とりあえず、このように解決して無事PWM出力できました。
ひとまず左右で同じデューティー比でPWMを出力し走行した結果がこちらです。
なかなか真っすぐ走らないものだなぁという感じですね。
ここで、重心の話になるのですが、バッテリーを前においてはどうかという意見を社内でもらいました。
そこですぐにバッテリーを前に適当において走行をしてみました。
バッテリーの位置を変えるだけで、前重心となり真っすぐ走れるようになりました!
これは制御しやすそうでうれしい結果です。
これからはエンコーダを読んで速度フィードバックを実装したりするわけですが、直進性がよいものができたのでほっとしました。
ではまた次回!
最後におまけ(撮影NG)
(動画撮影でボタンを押し間違えて後ろに走らせてしまいました・・・)