モータードライバでモーターを動かしてみる。 [Arduino]
モーターを動かしてみたいというのは前々から考えてたのですが、LEDとは違ってマイコンに直結するわけにも行かずちょっと調べてみました。
具体的には、ミニ四駆やプラレールなどに使われているおもちゃ用のFA-130タイプのモーターを動かしてみたいと思いました。
箱には、使用電圧範囲 1.5~3.0V、適正電圧 1.5V、消費電流 500mA とありました。
ちょっと秋月電子のページを見てみたら、BD6211というモータードライバをみつけました。
フルブリッジドライバ 7V BD6211F-E2: 半導体 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gI-05087/
出力電流:1.0Aまでということで、モーターの消費電流 500mA以上あるのでいいかと思いきや、、
性能線図の見方と使用例|マブチモーター
http://www.mabuchi-motor.co.jp/ja_JP/technic/t_0201.html
で、みてみると、停動電流(Is)というのがあり、「回転中のモーターの負荷を増加させて、モーターの回転が停止した時の電流を停動電流(A)と表します。」と書いてありました。
データシートで見てみると、FA-130RA-2270 の STALL CURRENTに2.20A とありました。
FA-130RA - マブチモーター
http://www.mabuchi-motor.co.jp/en_US/cat_files/fa_130ra.pdf
まあ、でもホビーユースだし、、特徴 6)に「出力保護回路(過電流/過電圧/過熱/不足電圧)」って書いてあるし、、まあとりあえずつないでみるかということでやってみました。
ただ、通常のArduinoだと、システムが5Vになっているし、なにかやって壊れちゃうのもいやなので、ATtiny45Vと単3アルカリ乾電池2本で動かしてみることにしました。
SOP8ピンSIP化変換基板をつかってブレッドボードで使えるようにして、裏面にコンデンサーものせました。
SOP8ピンSIP化変換基板 (1枚): パーツ一般 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gP-06554/
で、こんな感じにしました。
モーターの配線からノイズが出るのか、配線の向きによってはリセットがかかったので、念のためプルアップ。
マイコンのロジックのIO電圧も乾電池の電圧より低めにでるようなので、プルアップしてみました。
スケッチはこんな感じ。
動いている様子です。
わかりにくいので、音で感じてください。
具体的には、ミニ四駆やプラレールなどに使われているおもちゃ用のFA-130タイプのモーターを動かしてみたいと思いました。
箱には、使用電圧範囲 1.5~3.0V、適正電圧 1.5V、消費電流 500mA とありました。
ちょっと秋月電子のページを見てみたら、BD6211というモータードライバをみつけました。
フルブリッジドライバ 7V BD6211F-E2: 半導体 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gI-05087/
出力電流:1.0Aまでということで、モーターの消費電流 500mA以上あるのでいいかと思いきや、、
性能線図の見方と使用例|マブチモーター
http://www.mabuchi-motor.co.jp/ja_JP/technic/t_0201.html
で、みてみると、停動電流(Is)というのがあり、「回転中のモーターの負荷を増加させて、モーターの回転が停止した時の電流を停動電流(A)と表します。」と書いてありました。
データシートで見てみると、FA-130RA-2270 の STALL CURRENTに2.20A とありました。
FA-130RA - マブチモーター
http://www.mabuchi-motor.co.jp/en_US/cat_files/fa_130ra.pdf
まあ、でもホビーユースだし、、特徴 6)に「出力保護回路(過電流/過電圧/過熱/不足電圧)」って書いてあるし、、まあとりあえずつないでみるかということでやってみました。
ただ、通常のArduinoだと、システムが5Vになっているし、なにかやって壊れちゃうのもいやなので、ATtiny45Vと単3アルカリ乾電池2本で動かしてみることにしました。
SOP8ピンSIP化変換基板をつかってブレッドボードで使えるようにして、裏面にコンデンサーものせました。
SOP8ピンSIP化変換基板 (1枚): パーツ一般 秋月電子通商 電子部品 ネット通販
http://akizukidenshi.com/catalog/g/gP-06554/
で、こんな感じにしました。
モーターの配線からノイズが出るのか、配線の向きによってはリセットがかかったので、念のためプルアップ。
マイコンのロジックのIO電圧も乾電池の電圧より低めにでるようなので、プルアップしてみました。
スケッチはこんな感じ。
// モータードライバ(BD6211F)のテスト (ATtiny45 1MHz版)
// FIN RIN VREF OUT1 OUT2
// L L x HiZ HiZ スタンバイ
// H L VCC H L 正転
// L H VCC L H 逆転
// H H x L L ブレーキ(停止)
// PWM L VCC H #PWM 正転(PWM制御A)
// PWM H VCC L #PWM 逆転(PWM制御B)(PWM duty比と出力が逆になる)
#include "wiring_private.h" // sbi(), cbi() を使うため
#include <util/delay.h>
#define BD6211F_FIN 1 // OC0B
#define BD6211F_RIN 0
void setup() {
pinMode( BD6211F_FIN , OUTPUT ); // OC0B
pinMode( BD6211F_RIN , OUTPUT );
// 20-100kHzほどのPWMを作成
TCCR0A = _BV(WGM01) | _BV(WGM00); // 高速PWM (TOP値 OC0A),
TCCR0B = _BV(WGM02) | _BV(CS00); // 分周なし
TIMSK = 0; // タイマー割り込みの不許可 (Arduinoの時間系をつぶす)
OCR0A = 15; // 62.5kHz @ 1MHz (←1MHz/16clk) OC0B 0-15でPWMのduty比調整
}
void loop() {
int motorPWM; // モーターの出力
// analogWriteは sbi(TCCR0A, COM0B1); をやってくれて OCR0Bに値を入れてくれる。
// ただし、値が0だと digitalWrite を呼び出し、cbi(TCCR0A, COM0B1); でPWM OFFにされる。
// ■正転(PWM制御A) スピードアップ
cbi( TCCR0A, COM0B0 ); // OC0B非反転動作
for( motorPWM = 1; motorPWM < 16; motorPWM++) {
analogWrite( BD6211F_FIN , motorPWM );
digitalWrite( BD6211F_RIN , LOW );
_delay_ms( 1000 );
}
// ■ブレーキ(停止)
cbi( TCCR0A, COM0B0 ); // 標準ポート動作(OC0B切断)
digitalWrite( BD6211F_FIN , HIGH );
digitalWrite( BD6211F_RIN , HIGH );
_delay_ms( 2000 );
// ■正転(PWM制御A) スピードダウン
cbi( TCCR0A, COM0B0 ); // OC0B非反転動作
for( motorPWM = 15; motorPWM > 0; motorPWM--) {
analogWrite( BD6211F_FIN , motorPWM );
digitalWrite( BD6211F_RIN , LOW );
_delay_ms( 1000 );
}
// ■逆転(PWM制御B) スピードアップ
sbi( TCCR0A, COM0B0 ); // OC0B反転動作
for( motorPWM = 1; motorPWM < 16; motorPWM++) {
analogWrite( BD6211F_FIN , motorPWM );
digitalWrite( BD6211F_RIN , HIGH );
_delay_ms( 1000 );
}
// ■スタンバイ
cbi( TCCR0A, COM0B0 ); // 標準ポート動作(OC0B切断)
digitalWrite( BD6211F_FIN , LOW );
digitalWrite( BD6211F_RIN , LOW );
_delay_ms( 2000 );
// ■逆転(PWM制御B) スピードダウン
sbi( TCCR0A, COM0B0 ); // OC0B反転動作
for( motorPWM = 15; motorPWM > 0; motorPWM--) {
analogWrite( BD6211F_FIN , motorPWM );
digitalWrite( BD6211F_RIN , HIGH );
_delay_ms( 1000 );
}
}
動いている様子です。
わかりにくいので、音で感じてください。
タグ:モーター