ロボ研の藤田大悟です。
Engineerコースでは、1年前のSmartコースでモーターコントローラーに挑戦してもらったものを
更に発展させ、マイコンボードだけでモーターコントロールをしてもらう方法を学びました。
直流(DC)モーターをコントロールするにはPWM制御というパルスの幅をかえる事でエネルギーの無駄なく
スピードを変える事ができます。
Smartコースでは、既存の基板をつかっておこなったため、一度つくったら速さの調整や、逆回転する事などは出来ませんでした。
マイコンボードは、プログラミングでそれら全てを制御することができます。
DCモーターを制御するためには、「モータードライバ」を使う必要がありその使い方を学んだ上で、
回路を作り、実際にプログラミングをしました。
今回は、可変抵抗が半分のところでストップ、左に回すと左回転でだんだん速くなり、右に回すと右回転でだんだん速くなるというプログラミングにしました。
だんだん複雑なプログラムで、英語のスペルミスなどもありそれを修正するための「デバック」に苦労しました。
最終的には、きれいに制御できるプログラム、回路作りに成功しました。
実際のロボットはDCモーターだけでなく、サーボモーターが多く使われています。こちらはもう少し後に学びます。
次回はモーターを2つコントロールして自由に動くロボットをつくります。
実際のスケッチ
#include <rxduino.h>
const int SENSOR = 14;
const int drive6 = 1;
const int drive5 = 2;
const int drive4 = 3;
int sensVAL = 0;
void setup(){
pinMode(drive6,OUTPUT);
pinMode(drive5,OUTPUT);
pinMode(drive4,OUTPUT);
}
void loop(){
sensVAL=analogRead(SENSOR)/2;
if (sensVAL>=255 && sensVAL<=256)
{
digitalWrite(drive6, LOW);
digitalWrite(drive5, LOW);
}
else if (sensVAL>256)
{
digitalWrite(drive6, HIGH);
digitalWrite(drive5, LOW);
analogWrite(drive4, sensVAL-256);
}
else
{
digitalWrite(drive6, LOW);
digitalWrite(drive5, HIGH);
analogWrite(drive4, 255-sensVAL);
}
}
Leave A Comment