フリスクサイズの小さな基板にデジタルカメラと画像処理モジュールが搭載された製品 Open MV Cam。この小さなサイズで(パソコンやスマホなしに)リアルタイムでカメラの画像を取り込みながら、並行して画像処理や画像認識(例えば顔認識)まで完結するのは驚きなのですが、マイコンボードとしてのGPIOの機能も充実しています。SPI, UART, ADC, DAC, PWM と汎用マイコンボードのArduinoやmbedと同等の機能が詰まっています。
そこでOpenMVからモータードライバーを介してDCモーターに接続し、二輪駆動ロボットのスピード制御を試みます。OpenMV Cam M7のPWM OutとDigital Outを"TB6612 2chモータードライバー"に接続して左右1対のブラシ付きDCモーター(いわゆる模型用モーター)をコントロールしてみます。
※上写真にはモーターの出力(ワニ口クリップ)が1対しか映っていませんが、モータードライバーのターミナル(端子台)には2対(AOUT1/AOUT2とBOUT1/BOUT2)の出力があります。
OpenMVとTB6612の接続
OpenMVの出力("PWM Out"と"Digital Out")をTB6612 motor driverの入力へ接続します。
OpenMV | TB6612 | 備考 |
---|---|---|
P0 | AIN1 | モータA 方向1 |
P1 | AIN2 | モータA 方向2 |
P2 | BIN1 | モータB 方向1 |
P3 | BIN2 | モータB 方向2 |
GND | GND | |
P7 | PWMA | モータA PWM |
P8 | PWMB | モータB PWM |
N/C | STBY | 5V (10kΩプルアップ) |
TB6612の入力(IN1/IN2)と出力の真理値表
TB6612 motor driverにはAとBの2チャンネルあります。
たとえば、AチャンネルのIN1はAIN1と読み替えます。
IN1 | IN2 | 出力 |
---|---|---|
Low | Low | 停止(ブレーキ) ※1 |
Low | High | 正転 (CW:ClockWise direction) |
High | Low | 逆転 (CCW:CounterClockWise direction) |
High | High | 停止(フリー) |
※1. 発電ブレーキ、ショートブレーキ(Short Brake)
TB6612出力先の接続
TB6612 | 出力先 |
---|---|
AO1 | 左モータ (+) |
AO2 | 左モータ (-) |
BO1 | 右モータ (+) |
BO2 | 右モータ (-) |
GND | バッテリー (-) |
VM | バッテリー (+) |
OpenMVのMicroPythonスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from pyb import Pin, Timer pin0 = Pin('P0', Pin.OUT_PP) pin1 = Pin('P1', Pin.OUT_PP) pin2 = Pin('P2', Pin.OUT_PP) pin3 = Pin('P3', Pin.OUT_PP) tim = Timer(4, freq=1000) # Frequency in Hz ch1 = tim.channel(1, Timer.PWM, pin=Pin("P7"), pulse_width_percent=25) ch2 = tim.channel(2, Timer.PWM, pin=Pin("P8"), pulse_width_percent=50) pin0.high() pin1.low() pin2.high() pin3.low() |
参照リンク
- OpenMV公式サイト : https://openmv.io