走るだけ (3) タミヤ工作セット71201を動かす

 連載の1回目で、モータ駆動に使われるポートを見つけました。その情報をもとにスケッチを作ります。開発は、Arduino IDE 1.8.9です。

  • P13 PWM出力。値511、周期1000us
  • P14 PWM出力。値511、周期1000us
  • P15 ディジタル出力。MOVE、STOP
  • P16 ディジタル出力。MOVE、STOP 

 micro:bitへPCからは電池ホルダをめくりあげてUSBケーブルを接続します。

 Arduino IDEで、ボードは次のように設定します。

  • ボードは BBC micro:bit
  • Softdeviceは S110
  • シリアルポートは COMXX (BBC micro:bit)

スケッチ1 右のモータだけ

 ON/OFFのポートrightP15out 15は、setup()内で出力に設定し、HIGHのレベルにしてSTOP状態にします。

#define rightP13pwm 13
#define rightP15out 15

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("start");
pinMode(rightP15out, OUTPUT);
digitalWrite(rightP15out, HIGH); // Stop
}

void loop() {
digitalWrite(rightP15out, LOW);
analogWrite(rightP13pwm, 80);
delay(2000);
analogWrite(rightP13pwm, 10);
delay(5000);
}

 実行すると、ベルト(クローラ)は後ろ方向に回りました。なので、モータの2ピン・コネクタをモータ駆動ボードmi-01から抜き、左右を逆にして挿し込みました。これで、超音波距離センサがある側へ前進するようになりました。

 PWMのパラメータは0に近いほうが高速に回ります。90を超えるとほぼ止まった状態になりました。

スケッチ2 両方のモータを回転

 次のスケッチでは、左右のクローラが独立して回転数を変えながら動きます。バックはできません。

#define rightP13pwm 13
#define rightP15out 15
#define leftP14pwm 14
#define leftP16out 16

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("start");
pinMode(rightP15out, OUTPUT);
digitalWrite(rightP15out, HIGH); // Stop
pinMode(leftP16out, OUTPUT);
digitalWrite(leftP16out, HIGH); // Stop
}

void loop() {
digitalWrite(rightP15out, LOW);
analogWrite(rightP13pwm, 80);
digitalWrite(leftP16out, LOW);
analogWrite(leftP14pwm, 80);
delay(2000);
analogWrite(rightP13pwm, 10);
analogWrite(leftP14pwm, 50);
delay(5000);
}

波形

 モータの配線部分にオシロスコープのプローブをあてています。PWMが80(低速回転)のときの波形です。周期は2msなので500Hzです。

 PWMが10(高速回転)のときの波形です。

前へ

走るだけ (2) タミヤ工作セット71201の組み立て

次へ

走るだけ (4) タミヤ工作セット71201の超音波距離計