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では、これらのシールド基板を使って、何か作る予定ですのでお楽しみに。
