はじめに
Rasberry pi pico w を利用してプラレールをラジコン化している記事を見かけて自分もやってみたい!と思い各種部品を購入しました。ブレッドボード上で回路を組んでみたのですがモーターが全く動きません...
困っていること
モーターが回らない原因は何でしょうか...? もし確認すべき点などありましたら教えていただけると助かります
部品
- Raspberry Pi Pico W
- モータードライバー TB6612FNG
- DCモーター
- 電池ボックス (単4 x 2)
- 単4電池 2個
- ブレッドボード
- ジャンパー線
回路図
プログラム
Raspberry Pi Pico WをPC(Mac)に接続し、Thonny経由でプログラムを保存します。
from machine import Pin, PWM
STBY = machine.Pin(13, machine.Pin.OUT)
AIN1 = machine.Pin(14, machine.Pin.OUT)
AIN2 = machine.Pin(15, machine.Pin.OUT)
PWMA = machine.PWM(machine.Pin(16))
LED = machine.Pin('LED', machine.Pin.OUT)
LED.on() # プログラムが動いているのを確認するため
STBY.on()
AIN1.on()
AIN2.off()
PWMA.duty_u16(1000)
試したこと
-
Raspberry Pi Pico Wに電源は供給されているのか
- LED点灯の実装をいれることで確認できるようにしました = 電源は供給されていました
-
電池ボックスとモーターを直接つなぐ
- モーターは動く = モーターは壊れていない
原因が分かりました!
結論
PWMで周波数の設定が漏れていました。以下の実装のように PWMA.freq(1000)
で周波数の設定をすることで、モーターが回るようになりました!
from machine import Pin, PWM
STBY = machine.Pin(13, machine.Pin.OUT)
AIN1 = machine.Pin(14, machine.Pin.OUT)
AIN2 = machine.Pin(15, machine.Pin.OUT)
PWMA = machine.PWM(machine.Pin(16))
PWMA.freq(1000) # 周波数の設定1kHz
LED = machine.Pin('LED', machine.Pin.OUT)
LED.on() # プログラムが動いているのを確認するため
STBY.on()
AIN1.on()
AIN2.off()
# デューティー比 = 100%(高速), 25%(低速)
# PWMA.duty_u16(65535) # Duty 100%
PWMA.duty_u16(49152) # Duty 75%
# PWMA.duty_u16(32768) # Duty 50%
# PWMA.duty_u16(16384) # Duty 25%
原因究明の過程でお助け相談のツイートをしましたが、3名の方から助言のコメントを頂きました。ありがとうございました!