実装機能の動作確認続きです。
みなさんこんにちはYUUKIです。
前回、予定では距離センサー、IMU、モータードライバの3本でお届けしようとしたところ少しボリュームが増えたので、分割するとしていました。
なので、残りのIMUとモータードライバについて記事にしていきます。
IMU
YMmouseに搭載するMPU9250から、加速度、角速度(それぞれXYZ軸)と温度を確認していきます。YMmouseに実際使用するのは、角速度のZ軸のみですが、後々使うであろう部分も一緒に確認していきます。

ここものりさんのブログを参考に進めます。
使用するMPU9250のデータシートはこちらです。
また、レジスタマップも必要となりますね。
レジスタマップの見方やコードの書き方はのりさんのブログを参考にして、まずは
「Who am i」で71が返ってくるか(SPI通信できているか)を確認します。
ここは問題なく確認できました。
その後、加速度、角速度、温度を確認していきます。
しかし、ここでもトラブルはやってきます。IMUモジュールを動かしながら動作確認するとX軸やY軸の加速度、肝心の角速度の反応がありません。
Who am iは返ってきているので通信はできています。アドレスが違うかと確認しましたが問題はありません。
結局今回は、IMUモジュールの不良が原因と判断しました。時間がなく何が原因かまでは特定していませんが、社内のプロジェクトでこのIMUモジュールを使用した先輩方の情報によると不良が多く、使えるやつを選別して使用したとのことでした。
なので、社内に合った同じものをいくつか確認して使えそうなものを3個ほど確保できました。
写真だとわかり辛いのですが、これでも加速度のX軸は反応がありません。
今回使用する角速度のZ軸が動いているので今回は、このまま使用します。
写真左側2個が今回使えると判断したIMUモジュール。右3個が不良品です。
ソケットを利用してピンを取り付けると、バッテリー取り付けパーツと干渉するため、基板に直付けしていました。そのため外しては取り付けてを繰り替えす時間のかかることをしていました。
(おかげさまではんだの吸い取りが少し上手くなりました笑)
途中から低いタイプのピンヘッダを使用するとギリギリ対応できることが分かったので、良品にはロープロファイルのピンがついています。
モータードライバー
今回使用しているDRV8835ですが、動作確認に少し苦戦しました。

しゅうさんのブログを参考に作業を進めます。
PHASE/ENABLEモードで制御をするため、MODEピンはマイコンのピン数節約もかねてプルアップのみにしています。
実際参考にしたブログの通りに、動かすとモーターは回りました。
マウスの大会に初出場する前日、なんとかスタートができると思っていましたが、想定外の挙動をします。Aチャンネル、Bチャンネルそれぞれに同じデューティ比のPWM信号を入力し、左右のモーターを回したら、多少カーブするにしてもある程度は直進してくれるものと思っていました。
しかし実際は鼠花火状態で、高速回転します。車体を浮かせモーターを動かしてみると、明らかに片方の車輪が高回転しています。(本来手順は逆ですよね…)
・・・もしやと思いどちらか片方のチャンネルのみ信号入力すると、不思議なことに当初の目論見通りの直進をしてくれました。運よく初出場の大会はこれでスタートを切るという目標が達成されました。後日改めて開発を再開すべく、マウスに電源を入れようとしますが電源確認用のLEDが光らず書き込みができません。
では問題個所を探します。
・電源用のLEDが光らない
私の回路では、電源用のLEDは3.3Vから直接拾っているのではなくマイコンを経由しています。
この時点で、3.3V系で何か不具合があるのだろうと察しがつきました。
一度安定化電源で電圧を確認するとショートしていることがわかり、とりあえずリワークした3.3Vレギュレーターを外し、再度安定化電源で電圧を確認すると問題なく通電します。
・テスターで3.3V系を大捜査
3.3V系のどこかでショートしているのだろうというのがわかりましたが、実装した部材を外しながらテスター使いながら大捜査を行いました。(外す必要はなかったような・・・)
四苦八苦しながらなんとかモタドラが犯人と突き止めます。
(この時にはマイコンまで外していました汗)
・モタドラがショートした原因
なぜモータードライバはショートしたのか…薄々上述した謎の挙動が関連しているのはわかっていましたが、原因はわかっていませんでした。
回路図と睨めっこしても間違いは確認できませんでしたが、よく見るとフットプリントに問題があることを発見しました。
1~6番まではあってますが7~12番はそっくり反対になっています。6番の上から7番と始まらなければいけません。
ではなぜこんなことが・・・それはこちらをご覧ください。
はい、自分でデータシートを見ながら自作していました。
ということでリワークした後がこちらになります。
これですべてが解決し、無事モーターが回るようになりました!
・・・当時もっと知識があれば、貴重なF446マイコンを無駄にすることなく、予備基板を召喚することなく済んだのにと悔やんだのもいい思い出ですね。
次回
実装ミスやら、購入したモジュールの不良、自作時のミスと各ペリフェラルの動作確認だけでもブログネタになるような内容が豊富にありました。(次回記事でもまだまだ出てきます)
次回は、エンコーダーと割り込み処理について書いていきます。
これでYMmouseに必要な機能の動作確認は全てになるはずです!
それではっ
YUUKI