PCA9685およびTB67H450FNGの使い方
~4輪ロボットのモータ制御~

Jetson Nanoを用いた自律移動ロボットの作成を目指し、PCA9685およびTB67H450FNGを用いてモータ制御を行っていきます。

TB67H450FNGを用いたモータ制御(正回転、逆回転のPWM出力)をするためには、モータ1つにつき2ポートのPWM出力が必要となります。つまり4輪ロボットの移動を制御するためには合計8ポートのPWM出力を準備する必要があります…。

Jetson NanoのPWM出力は2ポートのみであるため、今回はPWM出力モジュールPCA9685を用いて8ポートのPWM出力を実現しようと思います。PCA9685自体はJetson NanoとI2C通信させます。

使用機材

モータ

モータは前回の記事で選定した、Pololu社のエンコーダ付き6V 210:1 75RPMマイクロメータギアモータを用います。

図1:エンコーダ付き6V 210:1 75RPMマイクロメータギアモータhttps://www.robotshop.com/jp/ja/6v-2101-75rpm-micro-metal-gearmotor-w-encoder.html

モータドライバ

以前の記事で紹介した、TB67H450FNGを用いることとします。以前は購入したTB67H450FNG(SMD)をDIP変換基板でDIP化して使用していました。

今回は秋月電子で既にDIPのモジュールとなったものが販売されていたため、そちらを使用することとしました。

https://akizukidenshi.com/
TB67H450モータドライバモジュール
通販コード:K-14753

PWMドライバ

Adafruit Industries社のPCA9685モジュールを購入しました。

図2:Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface - PCA9685

Switch Science社の下記ページで購入可能です(2022/02/26現在)

https://www.switch-science.com/catalog/961/
PCA9685搭載16チャネル PWM/サーボ ドライバー (I2C接続)

回路

今回の回路を下記のようになっています。
回路図はKiCadで作成しています。

PCA9685

Jetson NanoとI2C通信を行うため、SDAとSCLをそれぞれ接続します。

また、PCA9685自体の電源VCCはJetson Nanoの3.3V出力を用います。

OEはアクティブLOW(LOWにすればPCA9685が動作する)のため、10kΩの抵抗を介してGNDに接続します。

PWM0~PWM7をTB67H450FNGのIN1、IN2にそれぞれ入力します。

モータの動作電源はバッテリからTB67H450FNGに供給するため、PCA9685のV+は使用しません。

TB67H450FNG

IN1、IN2にはPCA9685のPWM0~PWM7それぞれ入力します。

モータ電源Vmには、回路図では省略していますが、DC/DCを介してバッテリを接続しており、6Vを入力しています。

OUT1、OUT2にはモータの+、-端子をそれぞれ接続します。

モータの定格電流が170mAなので、170mA以上は電流が流れないようにVrefとRSで設定を行います。

ちなみに出力電流の上限値$I_{out}(Max)$は下記の式で計算できます。
※$V_{ref}(gain) = 0.1$です。

$$I_{out}(Max) = V_{ref}(gain) * \frac{V_{ref}(V)}{ RSS(Ω)}$$

今回は$V_{ref} = 1.65V$、$RSS = 1.0Ω$とすることで、出力電流の上限値$I_{out}(Max) = 0.165mA$とするつもりでした。

ただ、上記の設定だとモータが動作しなかったため、$RSS = 0.5Ω(I_{out}(Max) = 0.33mA?)$としています。この設定だと動作しました。理由は不明です…。

ロボット機体

モータ動作による移動を検証するための試作機を、ユニバーサルプレートで作成しました。今はユニバーサルプレートの上に各部品を載せているだけで、空中配線ばかりになってしまっていますが、ある程度サイズ感が分かってきたら、CADで設計し、ボディを改めて作成する予定です。

現状の試作機(図4)の詳細に関しては、後日別の記事で紹介させていただくので、詳細が知りたい方は少々お待ちください。

図4:4輪ロボット試作機

プログラム

Githubに載せたため、下記を参照ください。

https://github.com/edamame-y/Jetson-Nano-motor-control

試走

上記の回路、プログラムで試走している様子です。PCA9685およびTB67H450FNGを用いてモータ制御を行っています。Jetson Nanoとバッテリが重く、旋回できなかったため、旋回する際のPWMの値を大きくしています。(それでも旋回する際に滑っているようですが…笑)

試走の様子

まとめ

PCA9685およびTB67H450FNGを用いて、8つのPWM出力を準備し、4つのモータ制御を行いました。

そのうちハードウェアに関しても説明および格好がいいものにアップデートしていく予定です。

コメントを残す

メールアドレスが公開されることはありません。