電池とモータの実装

ハードウェア第一段階完成

ogochan
ロボットネズミ

前回、「次回こそモータ」と書いたので、その辺の実装について考えて行きます。

同時に、機構関係のすり合わせをやって、動かせる状態まで持って行きます。

機構を考える

モータを動かすということで、ではそのモータが動くことをどうやって確認しようかと考えました。

ちゃんとやろうと思えば、テストベンチを作って、そこにテスト基板を置いて... なのですが、ちょっと面倒なことがあります。

まず、「テスト基板」と言うからには何らかの基板を作らなければなりません。今回はまだ試作ですから、基板を起こすようなことはしません。ですから、ブレッドボード的な何かを使うことになります。実際にはユニバーサル基板を使います。

ユニバーサル基板を使うのは良いのですが、どこにどう置いてどんなサイズにするかの検討が必要になります。

これをちゃんとするには、実際に部品をどう配置するかをより具体的に考える必要があります。

前回までのところで、だいたい置けそうだという見当はつきましたが、実際にちゃんと置けるかどうかは、あらためて検討してみる必要があります。何しろ既成のケースに組み込むわけですし、そのケースはなるべく加工したくはないので1ミリでも大き過ぎるというのはアウトですから。

そんなわけで、より具体的に検討して行く必要があります。

電池の台

まずは大物である電池をどう置くかになります。

前回までの検討で、単三電池を2つ使うということになり、元々ある電池箱の上に置けば大丈夫そうだということになりました。

とりあえず台のようなものを作ってみます。

こうやって作ってやった台の上に、

このように置いてみます。

これでカバーをかけてみると、だいたい干渉せずに納まりました。なので、この方針でやって良いとします。ちなみにこの黄色の材料は、

百均で買って来た「オーブン樹脂ねんど」です。今回は「オーブン」の部分は特に意味がありませんが、うまくすればこれで台が作れたのかも知れません。

高さ方向はこんな感じなので、ギアの上の方に電池箱を置く限りは余裕があるように見えます。

そこで、こんなゲタを作り、

こんな台を作ってやります。

この上に電池箱を載せます。

ゲタの部分の図面はこんな感じです。

黄緑の線が外形線、白い線は補助線です。

白い箱の上がモータ箱の高さ、左にある長い四角はウォームギアの位置、その下にある箱は駆動輪の軸の通る場所、右の箱は元々ある電池箱です。元々の電池箱の上が少し下げてあるのは、ここに横の板を置くためです。

とりあえず仮に載せるとこんな感じに。

回路を考える

モータドライバは二階建にして、必要な部分をピンでつなぎました。

回路設計の前提

いろいろ配置やつなぎ方を考えたのですが、電源やI2Cは直結になって、別々にしなければならないのは、

  • I2Cアドレス設定
  • 異常アラート(今回は使っていません)
  • モータの出力
  • 異常電流検出(今回は使っていません)

だけで、このうち実際に処理しなければならないのは、アドレス設定とモータ出力なので、そのまま重ねた方が楽だなということで重ねてしまいました。これも、配置を何度も試行錯誤した結果です。

まぁこの辺は基板を起こした時に改めて考えることにして、今回はこれで行きます。

部品の配置が決まったので、やっと配線ができます。

ここまでで配線しなければならないのは、

  • 3Vのモータ電源
  • 3.7VのLiPo電池
  • 3.3Vのペリフェラル電源
  • I2C

です。

回路図

ということで回路図です。

左にある9ピンコネクタが4つあるのは、MaixBitです。明示的に×がついているのは、「耳」の中に入れるためにカットしたピンヘッダです。

回路としては簡単ですね。I2C(の予定)にDRV8830がつながっているだけです。

I2Cのプルアップ抵抗は今回はとりあえず20kΩになっています。I2Cのプルアップ抵抗はいつも値に悩むのですが、

  • 小さいほどLレベルで電流が流れる
  • 大きいほど信号が劣化しやすい
  • データシートには適当なことしか書いてなくてよくわからない

という傾向にあります。今回はプルアップ抵抗で食う電流のことを悩む必要性はあまりない(他の方がずっと食う)ので、本当に適当に「こんなもの」になっています。

DRV8830が動作するための電源は、モータの電源と共通です。この辺分離されているドライバICが多いのですが、DRV8830は共通になっているようです。つまり、DRV8830は3Vで動いています。他方、MaixBitの外部ロジックは3.3Vが基本となっていて、特にピンヘッダに出ている信号は全部3.3V系のロジックです(1.8Vのロジック線はピンヘッダでないコネクタ)。

こうなると、2種類の電圧が存在していることになって、いろいろ厄介なのですが、データシートを見ると

  • DRV8830の信号線の電圧範囲はVCCの範囲と同じ
    つまり3.3Vが入っても問題ない
  • MaixBitの信号線も3V供給時のDRV8830の信号線も、ロジックの電圧レベルは許容範囲内
    DRV8830のロジックレベルはVCCによって変化します
  • I2Cには将来DRV8830以外のデバイスをつなぐかも知れない
    他のデバイスがあるとすれば、3.3V電源です

ということを考えて、「直結の上3.3Vにプルアップする」ことにしました。神経質な人はここにレベルシフタを入れるでしょうが、そこまで頑張る必要性は少なくともデータシートを見る限りではないようです。レベルシフタ入れる代わりに適当な抵抗を入れる方法もありますが、それをやる必要もない感じです。5V系ロジックと3.3V系ロジックを混在させる場合は、やることもありますが、今回は構成的にも電圧的にもしなくて構わないはずです。

配線

以上を配線するとこんな感じになります。

基板の上に配線が飛んでいるのは、裏面を使わないで配線したためです。この基板はベタっと貼りつけたかったので、裏面に凸凹が出ないようにしたいからです。プルアップ抵抗もSMD(2012M)を使ってピンコネクタのところについています。まぁ多分そのまま固定しないで何か挟むとは思うので、そこまで気にすることもなかったのですけどね。部品にSMDを使うのは、手元にそれしかないからです。

モータの雑音対策とか

モータはこんな感じに加工してあります。

モータについている青いのは、0.01uFのコンデンサです。DCブラシ付きモータはしばしば雑音発生器となるので、その原因となるスパイクを吸収させるためです。リード線が雑音のアンテナにならないために、モータのすぐ近くに置きます。コネクタはその辺にあったピンソケットです。

モータを実装すると、こんな感じになります。

モータの端子が基板に触れるのは嫌なので、カプトンテープで養生します。

第一段階の完成

全部載せると、タイトル画像のような感じになります。

なんとなく綺麗に納まりました。

これでとりあえずハードウェアは出来たことになります。次回は動作確認とちょっとした拡張をします。