はしもとの自作マウス研修

回路設計始める前に– はしもとの自作マウス研修 Part11

はしもとの自作マウス研修

はしもとの自作マウス研修一覧

こんにちは!はしもとです。

前回は、STM32F446を使って、DCモータのエンコーダ値の確認をしました。
ここまでで今回使用するマウス部品の各々の動作確認できました。
なので、次のステップとして回路設計を進めていこうと思いますが、その前に下記の、回路設計前にやるべきことをまとめてみました。

  • 部品配置を行い、部品同士の位置関係を確認
  • 各部品同士でどのようなつながりを持っているか回路ブロック図を作成
  • 部品配置を参考に、STM32にピン配置

部品配置

部品は以下のように配置してみました。配置する際に注意したことは以下のとおりです。

  • モータとバッテリーの位置関係
    • マイクロマウスにおいて比較的重たい部品なのがモータとバッテリーだと思います。なので、その両者が機体の前後方向どちらかに偏ってしまうと、機体が傾いてしまい、迷路の小さな段差に躓いてしまう可能性があります。
    • なので、今回は機体の前部分にモータ、後ろにバッテリーを配置して、車体のバランスを保てるようにしてみました。
  • モータドライバとバッテリの位置関係
    • 先輩のブログによれば、モータドライバなどのモータ系はノイズになりやすいため、電源の近くに配置します。具体的には、モータ系の部品にはモータを回転させるために比較的大きい電流を流す必要があります。そのときに、電流が流れると磁界が発生し、その影響でその他のICにノイズを与える可能性があります。そのため、電源とモータドライバの距離は他のICに影響を及ぼさないように近くに配置する必要があります。
    • 先程の話に関連して、大きい電流を流す場合、配線の幅も他の配線に比べて太くしてあげる必要があります。そのときに、モータドライバと電源との距離が遠ければ、その分太い配線の距離が長くなるので、基板の表面積内の自由に使えるスペースが減ってしまいます。なので、モータ系と電源は近くに置いたほうがよいです。

 

回路ブロック図

前述した部品配置に登場する部品をもとに回路ブロック図を以下のように考えてみました。

参考にしたブログは以下の通りです。

STM32のピン配置設定

上記の作成した回路ブロック図をもとに、ピン配置を行いました。

やり方はしゅうさんのブログを参考にしました。

自分の場合も同様に、
システムコアの設定→通信関係(UART)→タイマ関係(PWMやエンコーダ)→そのほかの部品との接続
の順でピン配置を行いました。

  • モータ系
  • 壁センサ
    • LEDとフォトトランジスタのピン配置
    • 機体の左側に置く予定のLED、フォトトランジスタは後々の配線のしやすさを考慮して
      マイコンの左側のピンに配置しました。機体の右側に置く予定のLED、フォトトランジスタも同様にしました。
    • ピンの設定方法
  • UART・I2C
    • UARTは、PCでデバッグ用のUARTピンとESP32との通信用のUARTピン2つを設定しました。ESP32を使ってSTMとWIFI通信する方法はこちら(ブログ①ブログ②)にまとめています。
    • I2Cは今のところ使用予定はないですが、今後部品を追加したとき用に念のためピン配置しています。
    • ピンの設定方法
  • IMU
    • IMUではSPI通信を用いるので、SPIのピンを設定しています
    • STM32でピンにSPIの機能を割り振ったとき、SPI2_MOSI, SPI2_MISO, SPI2_SCKが自動的に割り振られますが、SPI通信にはSS(Slave Select)ピンも必要です(参考)。SSはスレーブ専用ICでは、CS(Chip Select)と表記されることもあります(参考)。SSピンをLowにすることでマスタと通信することができます。
    • しゅうさんのブログを参考に、PB12にGPIO_Outputを割り振りました。
  • モード表示用LED
    • 今回のマウスでは、7セグLEDを使用予定で、0~9という数字を表示するためにはGPIOピンが少なくとも7個必要なためGPIOピンを画像のように多めに設定しています。
      使い方はこちらの動画がわかりやすかったです。
    • 一方でモード表示用のLEDのために7個のGPIOピンを使用するのは少しもったいない気がします。そのようなときは、7セグメントドライバ(7セグメントデコーダ)を使うことで、必要なピンの数を7→4ピンに減らすことができます。具体的には、BCD(Binary Coded Decimal)コードを使って、2進数の値を4桁用いて、10進数における1桁分の値を表現する方法です。こちらは今後時間的に余裕があれば試していけたらと考えています。
  • スイッチ
    • モードの切り替えをするために使用します。
  • 現在のバッテリー残量表示用LED

まとめ

今回は、以下の内容についてまとめました。

  • 部品配置を行い、部品同士の位置関係を確認
  • 各部品同士でどのようなつながりを持っているか回路ブロック図を作成
  • 部品配置を参考に、STM32にピン配置

ここまでで回路設計をする準備が整ってきたので、次回からは各機能に対して回路設計を行う流れで進めていきます~!まだまだ暑い日が続きますが、暑さに負けず引き続き頑張っていきます!💪

タイトルとURLをコピーしました