振動モーターを使ってみた

振動モーターというのはスマホのバイブレーションに使われているような振動を起こさせるモーターです。
しかし内部的には一般のDCモーターと同じようです。
ですので、DCモーターの駆動と同じく、DCモーター用のドライバを使って動作させることが出来ます。
今回はAmazonで購入できる上記の安いモータードライバを使って動かしてみました。

以前、以下の秋月電子のモータードライバモジュールをArduinoで使ってみたことがあったのですが、こちらではモーターの駆動用電源(回路中のVM)とモジュールの電源(VCC)が分離されています。
ですから、今回のような3V(以下)で動かすようなモーターを直感的に制御できるのですが、今回のL298Nのドライバでは負荷(モーター)用の電源が5V以上となっています。
また、モーターの駆動用電源とモジュールの電源が共通となっています。
akizukidenshi.com

つまり、今回の組み合わせは「モーターの駆動用電源とモジュールの電源」が共通で5V以上、しかし駆動したいモーターは3Vとなります。
そこで、写真のようにモーターを3直列(定格9V)として電源に9VのACアダプタから入力するということで動作させることが出来ました。
回路とプログラム
回路はArduinoのD3~D6をモータードライバのIN1~IN6に接続し、電源にはACアダプタから9Vを入力します。(トップの写真参照)
モーターは2系統接続できます。
モーターの速度は analogWrite(IN1, MoterPower);のようにPWMで制御することが出来ます。
//モータードライバ設定 const int IN1 = 3; // IN1ピンをD3に const int IN2 = 4; // IN2ピンをD4に const int IN3 = 5; // IN3ピンをD5に const int IN4 = 6; // IN4ピンをD6に const int MoterPower = 128; //モーターの速度 1~255 void setup() { //モータードライバ設定 pinMode(IN1, OUTPUT); // デジタルピンを出力に設定 pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void MoterStop() { analogWrite(IN1, 0); // 2つのモーターを停止 analogWrite(IN2, 0); analogWrite(IN3, 0); analogWrite(IN4, 0); } void MoterRotate() { // モーターの両端の出力の組み合わせでモーター回転 // 2つのモーターを正回転 analogWrite(IN1, MoterPower); analogWrite(IN2, 0); analogWrite(IN3, MoterPower); analogWrite(IN4, 0); } void loop() { MoterStop();//モーターを止める delay(1000); MoterRotate();//モーターを動かす delay(1000); }
モータードライバはこのようにすると矩形波でモーターに出力をすることができ、このDutyによって速度の調整が出来ます。
通常、DCモーターでは正転逆転をIN1とIN2、IN3とIN4の電圧をどちらをHIGHにするかで設定できますが、今回のような振動モーターでは逆電圧にしても特に意味がありません。