COSMACでDCモーターを制御してみました。モータードライバは各社から出ていますが、ブレッドボードでも手軽に実験ができそうな秋月電子のTB6612使用 Dual DCモータードライブキット[AE-TB6612]を使うことにしました。いつものようにブレッドボードで試作し、動作確認をしたところで基板化します。
COSMAC CPU基板に接続するモータードライバの回路図は以下のようになります。
これをブレッドボードで試作し、COSMAC CPUボードに接続しました。
次にCOSMACに書き込むプログラムを考えます。このモータードライバは1つのモーターあたり2ビットのデジタル信号を与えることで正転、逆転、停止を制御します。さらにPWMで速度調整もできるようですが、こちらはQ信号に接続しておいて後から制御方法を考えます。
COSMACのプログラムローダー基板にあるトグルスイッチの値を読み取り、その値をモータードライバに伝えることにします。これで4つのトグルスイッチで2つのモーターを自在に制御できるはずです。
プログラムは以下のようになります。今回はQはHIGH固定にしています。11バイトならトグルスイッチでのプログラム入力も簡単です。
0000- 1 * 0000- 2 * Motor driver program 1 for COSMAC 0000- 3 * SB-Assembler 0000- 4 * 0000- 5 * SW input -> motor (forward <->reverse) 0000- 6 * 0000- 7 * BUS0 --- AIN1 0000- 8 * BUS1 --- AIN2 0000- 9 * BUS2 --- BIN1 0000- 10 * BUS3 --- BIN2 0000- 11 * Q --- PWMA/B 0000- 12 * 0000- 13 .CR 1802 ;To load the 1802 cross overlay 0000- 14 .OR $0000 0000- 15 * 0000-F8 0A 16 ( 2) START LDI #IOR ;D <- #IOR 0002-A5 17 ( 2) PLO 5 ;R(5).0 <- D 0003-E5 18 ( 2) SEX 5 ;X <- 5 0004-7B 19 ( 2) SEQ 0005-6A 20 ( 2) LOOP1 INP 2 ;M(R(5)) <- BUS; D <- BUS 0006-64 21 ( 2) OUT 4 ;BUS <- M(R(5)); R(5)++ 0007-25 22 ( 2) DEC 5 ;R(5)-- 0008-30 05 23 ( 2) BR LOOP1 ;Branch to LOOP1 000A- 24 * 000A-00 25 IOR .DB 0 ;IO Register 000B- 26 000B- 27 .EN
トグルスイッチをON-OFFしたところ、無事モーターが動くことを確認しました。正転、逆転も自由自在です。
YouTubeにもアップしておきました。
これで動作確認もできましたので、シールド基板を発注しました。
Maker Faire Tokyo 2019では、これらのシールド基板を使って、何か作る予定ですのでお楽しみに。
コメント