当サイトは広告が表示されます。

WRX micro:bitを車両で使う その23 DCモーターを制御する(TB6612FNG・DRV8833)

2020年5月6日Ad,micro:bit,社外部品・DIY

今回はmicro:bitでDCモータードライバ(TB6612FNG)を搭載したブレイクアウトボードを使用して、DCモーターの回転速度や回転方向の制御を行ってみます。DCモーター用のブレイクアウトボードは、いつものkeyestudioブランドの物を購入しました。

2023年7月、keyestudioの新しいDCモーター用ブレイクアウトボード「ks4033(DRV8833)」を購入しました。

スポンサーリンク

注記

記事投稿時に購入したkeyestudioのDCモーター用ブレイクアウトボードの「ks0308(TB6612FNGドライバ)」ですが、現在は販売終了となり、後継として「ks4033」が発売されています。ks4033ではドライバとして「DRV8833」が使用されていますが、micro:bitからks4033の制御方法としてks0308と大きく変わらない(→変わっていました)様子です。ただし供給出来る電圧がks0308では「6~12V」だったのに対し、ks4033では「5~10.8V」になっているので注意が必要です(wiki)。また購入する際は新旧製品のどちらなのかを確認して購入して下さい(見た目はほとんど一緒です)。

2023年7月追記

別メーカー(Kitronik)のDCモーター用拡張基盤を購入しました。現在、プラレールをmicro:bitで制御しようと色々試していて、基盤サイズやmicro:bitとの取付位置関係から新たに購入しました。詳しくは下記記事を見て下さい。

さらに追記(ks4033)

久しぶりに「ks0308」を使用してみようと配線を行っていたところ、配線を間違えてチップを焦がしてしまいました…。DCモーターと5V仕様のセンサーを同時に使用したかったのですが、上記記事のKitronikの拡張基盤では5Vは利用出来ない仕様です。また、ちょうどAmazonで「ks4033」が入荷したタイミングだったので、新たにks4033を購入しました。

上記、左が新しい「ks4033」、右が古い「ks0308」です。少し見ただけでは違いは感じません。

「ks4033」です。よく見るとDRV8833の他に、抵抗なども追加されています。

こちらは「ks0308」。矢印の箇所が焦げました。同じチップのもう一方は無事なので、2個接続出来るDCモーターの内の片側であれば制御はまだ可能かもしれません。

さて、ks4033のプログラムをwikiにあるサンプルプログラムを参考に上記の様に組みました。サンプルでは12番と13番ピンでモーターAを、15番と16番ピンでモーターBを制御し、12番と15番をアナログ値で「速度」、13番と16番をデジタル(0か1)で回転方向を指定している様です。しかし上記の様に「速度」となるアナログ値を同じにしても、実際には正転と逆転で速度が異なってしまいました。ただし説明では…

The motor pin A1,A2,B2 and B1 of the expansion board are controlled by P13,P12,P15 and P16 of the micro:bit board.

Google翻訳:「拡張ボードのモーター ピンA1、A2、B2、B1は、micro:bitボードのP13、P12、P15、P16によって制御されます。」

※ks4033のwikiページより引用。

と書かれているので、単純にアナログ値で電圧を変えているだけの様な気がしました。とすると、デジタルの「1」とはアナログでは「1023」になるので、Bボタンを押した時は「1023-150」で「873」の電圧差が発生し、逆転しても速度が異なっている…?

そこで、上記の様にBボタンで速度を「873」として見ると、見た目上は正転逆転で同じ速度になりました(電圧差が「1023-873=150」で13番ピンに掛かる)。

結局のところは、上記の様に回転させたい方向のピンに対して電圧となるアナログ値を指定し、もう一方のピンは「0」とするだけの様です。またアナログ値は供給電圧に対しての割合(1023で100%)なので、仮に9Vを供給してアナログ値を「1023」にすると、モーターには9Vの電圧が掛かってしまいます。利用するモーターの仕様を越えない範囲でアナログ値を指定する必要があります。

さらにwikiではサンプルプログラム(hex)もダウンロード出来る様になっていますが(ページ最下部の「Resource」より)、ダウンロードしたファイルは古い「ks0308」側のプログラムになっていました。これまで信頼していたkeyestudioですが、ks4033については少々怪しい雰囲気です…。

注記

上記の「ks4033」の動作方法・プログラムはあくまで私が試した限りです。参考にして利用した場合の、拡張基盤等の故障や損傷、動作に伴う怪我等の責任は負えませんので注意して下さい。また、購入する際は新旧製品のどちらなのかを確認して購入して下さい。旧製品(ks0308)の在庫もまだある様子です。

購入した物(ks0308)

DCモーター制御用ブレイクアウトボード

ブレイクアウトボードはこれまで様々な用途の物を購入していますが、個人的にkeyestudioブランドの物が信頼性が高いと感じています。メーカーサイトとは別にwikiページでの解説もあるので、使い方等も理解し易いです。

今回購入した、DCモーター用のブレイクアウトボードは型式「ks0308」の「Motor Drive Breakout Board for micro bit」という物です。東芝の「TB6612FNG」ドライバを搭載していて、同時に2個のDCモーターを制御出来ます(正転/逆転/ブレーキ/停止)。またアナログ出力によるPWM(パルス幅)の指定でDCモーターの回転速度も制御出来ます。その他、micro:bitの各入出力端子が3Vまたは5V、GNDでそれぞれ3ピンヘッダーで用意されています。注意点として別途DC6~12Vの電源入力が必要です。

DCモーター

DCモーターは工作用として最も一般的なのは130型かと思いますが、今回はRE-260型を購入しました。適正電圧はDC3.0V、適正負荷時の回転数は8900rpmとなっています。後々にこのDCモーターを使ってある物を作る予定ですが、回転数が目的に近い事がRE-260型を購入した理由になります。※上記モーターには既に別途ギヤを付けています。

接続

ブレイクアウトボードにmicro:bit本体を接続し、さらにブレイクアウトボードの下部にある青い端子台にDC電源「G(-)・VM(+)」とDCモーター(A1・A2またはB1・B2)を接続します。電源は今回、単3電池4本(1.5V*4)で6Vを供給します。DCモーターの接続(+、-)については、それによって回転方向が変わりますが、ここでは特に意識していません。

※micro:bit本体の入出力端子にも3Vがありますが、合計90mA以上を必要とする場合は外部から電源を供給する必要があるとされています(micro:bit電源仕様)。

※2020年11月にmicro:bitの本体バージョンが「2.0」になり、端子から供給出来る電源容量が200mAまで増えています。ただしこれまでの古いmicro:bit(~v1.5)の電源容量が更新される訳ではありません。

プログラム

Microsot MakeCodeで開く

wikiページに解説もありますが、DCモーターの制御はとても簡単です。拡張機能を追加する必要もありません。プログラム上で使用する端子はモーターA(ボードの端子A1・A2)はP1(アナログ)とP12、P13、モーターB(ボードの端子B1・B2)はP2(アナログ)とP15、P16です。

上記のプログラムではmicro:bitのAボタンを押している間は高速回転、Bボタンを押している間で低速逆回転します。それぞれボタンを離すと停止(空転停止)しますが、A+Bボタンでブレーキによる制動が掛かります。DCモーターは1個でA側に接続しています。

速度の指定

P1またはP2を「アナログで出力する端子」ブロックで0~1023の範囲で数値を指定する事で、DCモーターの速度が決まります。ただしあまり小さな数値ではモーター自体を回転させる力(トルク)が足りないので、ある程度の数値が必要です。

回転方向の指定

P12とP13、またはP15とP16でどちらかを「1」、もう一方を「0」とするとDCモーターが指定した速度で回転します。さらに「1」と「0」の指定をそれぞれ逆にする事で、DCモーターは先の回転から逆方向に回転します。

ブレーキ・停止の指定

P12とP13、またはP15とP16で両方を「1」とするとブレーキが掛かります。両方を「0」とした場合は停止(空転)です。ただしブレーキと言っても保持力はほとんど無く、制動が掛かって回転状態からの減速が早くなります。

その他

※東芝デバイス&ストレージ株式会社、TB6612FNGデータシートpdfより転載

各入力とモーター出力の関係は上記の様になっています。またmicro:bitのプログラム上で最初にP14を「1」にしていますが、これはスタンバイ(STBY)になる様です。

DCモーター電圧について

今回、keyestudioのDCモーター制御用ブレイクアウトボードを使用するにあたって当初から疑問だったのは、DCモーターに掛かる電圧です。ブレイクアウトボードに供給する電源はDC6~12Vですが、実際にモーター駆動用として出力される電圧が不明でした。DCモーターは電圧を変化させる事で回転速度が変わりますが、レギュレーターによってブレイクアウトボード上で3Vと5V電圧が作られているので、最大5Vなのかと想像だけはしていましたが。

そこでブレイクアウトボードに単3電池8本で合計12Vを供給し、アナログの指定値を最大の「1023」とした上で実際にテスターで電圧を測定してみた所、供給した電圧そのままの値になってしまいました。上記では乾電池がだいぶヘタっているので供給側からもDC10Vしかありませんが、出力もDC10Vになりました。またアナログ指定を半分の「511」にすると出力もDC5V程度になりました。

※東芝デバイス&ストレージ株式会社、TB6612FNGデータシートpdfより転載

上記は先と同じ、TB6612FNGデータシートに記載されている内容ですが、出力端子O1とO2は確かに「VM」に繋がっています。先に見ておけば良かった。

従って利用するDCモーターの適正電圧に合わせて、供給する電圧やアナログの指定値を調整する必要があります。今回の私の場合はDCモーターの適正電圧3Vですが、ブレイクアウトボードは最低DC6Vの供給なので単3電池4本で6Vを供給した上で、アナログの最大指定値を半分の「511」とするのが良さそうです。

keyestudioのwikiページで紹介しているモーターはロボット用のギヤ付きDCモーターで、電圧は6Vです。また供給電圧は3.7Vの18650リチウムイオン電池が2本なので、約7Vです。ほぼ適正電圧になっています。

・・・ただし実際には今回、3VのDCモーターに10Vを掛けてしまいました。かなり強力に回転しましたが、正常な回転を保証する訳ではありません。モーターの故障にも繋がります。

モーターのノイズについて

ブラシ付きの直流モーターを使用する場合、コンデンサーをモーターの端子間に接続してノイズ対策を行いますが、今回のブレイクアウトボードを使用するにあたって、あえてコンデンサーは接続しませんでした。理由はボード上にコンデンサーが用意されている様に見えた為です。

※東芝デバイス&ストレージ株式会社、TB6612FNGデータシートpdfより転載

TB6612FNGデータシートにも応用例の回路図に、ノイズ吸収用コンデンサーの指示が記載されています。ブレイクアウトボードがこの応用例通りであれば良いのですが、コンデンサーを接続していない現状でも、DCモーターの回転に不具合はありません。ただしDCモーター周辺への影響は不明です。

今後は今回のDCモーターとブレイクアウトボード、また前回記事の7セグメントLEDを使用して、ある物を作る予定です。

micro:bit 新バージョン「2.0」について

2020年11月25日より、Micro:bit本体の新バージョン「2.0」が発売になっています。従ってこれまでの古いmicro:bitを使用した記事(~その24)と新しいmicro:bitでは記事内容に相違がある場合があります。ただしこれまでのプログラムは基本的には新しいmicro:bitでも動作し、古いmicro:bitも引き続き使用する事が可能です(ハード的に新たに追加された機能は、拡張ボード等が必要ですが)。

なお新しいmicro:bitについては実際に1つ購入し、micro:bit関連記事「その25」から扱っています。

2022年4月追記

2021年12月にmicro:bit本体のバージョンが「2.2」になるとのアナウンスがありましたが、「2.0」との機能上の違いは無いとされています。

「micro:bit」関連記事

以下は「micro:bit」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。「その24」までの記事ではmicro:bit本体のバージョン「1.5」を使用しています。

micro:bit関連記事
クリックで開きます

「micro:bit+プラレール」も始めました。

プラレール関連記事

その他

FA用PLCとELM327を使用した「OBD2」関連の記事は以下の記事から始まります。

注記

    • このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
    • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
    • 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
    • micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
    • BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。