
Raspberry Pi Picoは、魅力的な小型サイズでありながらパワフルなボードで、ユーザーは大小さまざまなプロジェクトを作成できます。例えばロボット工学プロジェクトでは、モーターが必要になります。では、Raspberry Pi PicoでDCモーターを制御するにはどうすればよいでしょうか?GPIOに直接接続することは可能でしょうか?答えは「いいえ」です。
Raspberry Pi PicoのGPIOピンはDCモーターに必要な電流を供給できず、もし供給しようとするとPicoを損傷してしまう可能性があります。そこで、Picoとモーターのブリッジとして機能するモーターコントローラーが必要になります。Picoの2つのGPIOピンをオン/オフすることでモーターコントローラーを制御し、モーターコントローラーが2つの出力をオン/オフすることでモーターを動かします。
このプロジェクトに必要なものは
- MicroPython を実行するRaspberry Pi Pico (Raspberry Pi Pico の設定方法を参照)
- Thonnyがコンピュータにインストールされました
- 4 x オス-オスジャンパーワイヤー
- ハーフサイズまたはフルサイズのブレッドボード
- モーターコントローラーボード。今回はDRV8833チップを使用しましたが、L298またはL9110Sチップでも動作するはずです。
- 5V / 6V DCモーター。マイクロギア付きメタルモーターを使用しましたが、一般的なホビー用DCモーターでも動作します。モーターをブレッドボードに接続するには、オス-オスのジャンパー線が2本必要になることに注意してください。
Raspberry Pi Pico を使用した DC モーターのハードウェアセットアップ
このプロジェクトで使用しているチップはDRV8833です。このバージョンはブレッドボード用に設計されていますが、ロボットへの組み込み用に設計されたバージョンなど、他にも多くのバージョンがあります。市場には他にも、L298DやL9110Sといった、ロボット工学向けのシンプルで手頃な価格のモーターコントローラーがあります。すべてのモーターコントローラーは同じ入出力規則を共有しています。
- マイクロ USB ポートがブレッドボードの端から垂れ下がるように、Raspberry Pi Pico をブレッドボードに配置します。
- DRV8833 モーター コントローラーを、ピンが中央のチャネルの両側になるようにブレッドボードに配置します。
- Raspberry Pi PicoのVBUSピンをジャンパー線でDRV8833のVCCピンに接続します。これにより、USB経由で供給される5V電源からモーターコントローラーに直接電力が供給されます。
- Raspberry Pi Pico のGND ピンをDRV8833 のGND ピンに接続します。
- Raspberry Pi Pico のGPIO 14 をDRV8833 のIN1 に接続します。
- Raspberry Pi Pico のGPIO 15 をDRV8833 のIN2 に接続します。
- OUT1 と OUT2 をモーターのピンに接続します。このテストではどちらでも構いません。
Raspberry Pi Pico を使った DC モーターのソフトウェア設定
回路が構築されたら、Raspberry Pi Pico を接続し、Thonny アプリケーションを開きます。
import utime
from machine import Pin
2. motor1aとmotor1bという2つのオブジェクトを作成します。これらのオブジェクトには、DRV8833モーターコントローラを制御するための出力として使用されるGPIOピン番号が格納されます。
motor1a = Pin(14, Pin.OUT)
motor1b = Pin(15, Pin.OUT)
3.モーターを「前進」させる関数を作成します。これを行うには、一方のピンをハイに、もう一方のピンをローにする必要があります。これにより、モーターコントローラーに意図した方向が伝えられ、対応する出力ピンがそれに従ってモーターを指定された方向に動かします。
def forward(): motor1a.high() motor1b.low()
4. 「後方」に移動する関数を作成します。これにより、GPIOピンの状態が反転し、モーターが逆方向に回転します。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
def backward(): motor1a.low() motor1b.high()
5.モーターを停止する関数を作成します。両方のピンをローにすることで、モーターコントローラーにモーターの動きをすべて停止するように指示します。
def stop(): motor1a.low() motor1b.low()
6.最後の「テスト」関数を作成します。この関数は、前の関数を呼び出し、モーターを2秒間「前進」させ、その後2秒間「後退」させるテストシーケンスを実行します。その後、モーターを停止させます。
def test(): forward() utime.sleep(2) backward() utime.sleep(2) stop()
7.テスト関数を 5 回実行する for ループを作成します。
for i in range(5):
test()
Raspberry Pi Picoにコードをmotor.pyとして保存し、緑の矢印をクリックしてコードを実行します。モーターは両方向に5回回転します。
レス・パウンダーは、トムズ・ハードウェアのアソシエイトエディターです。クリエイティブテクノロジストとして、7年間にわたり、老若男女を問わず、教育と啓発のためのプロジェクトを手がけてきました。Raspberry Pi Foundationと協力し、教師向けトレーニングプログラム「Picademy」の執筆・提供にも携わっています。