Arduino モーター制御
電子工学の基礎と言ったら駆動系、モーターかなと思いモーター動かします。
用意するもの
いつものセット
- Arduino nano
- PC(Windows 10)
- Arduino IDE
- USBケーブル(Aオス-ミニBオス)
モーター周辺の部品は以下
- トランジスタ(NPN)
- 抵抗1kΩ
- 可変抵抗10kΩ
- DCモーター(今回は低電力で回転するタミヤ ソーラーモーター02)
同品:Amazon.co.cp - ブレッドボード
回路構成を考える。
モーター用電源は外部より電池2本の3V。一応、Arduino nanoの+5Vでも駆動可能。
モーターはノイズが多いので必要に応じてコンデンサや逆起電力対策を行おう。
プログラミングする
モーター制御に使うのはPWM。
Arduino nano(ATmega328P)のPWMが使用できるピンは3,5,6,9-11ピンのみ。
プログラムは以前使用したArduino nano アナログ テストプログラムを流用。
以下のようにanalogWrite()を追加した。
analogWrite()の範囲はanalogRead()で取得できる値0~1023と違い、0~255までなので合わせるために読み込んだ値を1/4にしています。
void loop() { //シリアル受信処理 if(Serial.available() > 0) { inByte = Serial.read(); LEDstat = inByte; } //アナログ入力 for(int i=0; i<=5 ; i++){value0 = analogRead(0);} A0in = REF_DEF * value0 / 1024; Aval = value0 / 4; //アナログ出力 if(LEDstat == '5'){ analogWrite(11, Aval); }else{ analogWrite(11,0); } }
実験
Arduino nanoにプログラムを書き込んだらシリアル通信で”5″を入力。
すると可変抵抗器でモーターの速度を調節できます。
以下、操作中の動画です。(モーター電源はArduino nanoの+5V)
回ってますね。
・・・以上