76
Raspberry Pi PicoをDCモーターで使う方法
DCモーター搭載Raspberry Pi Pico
(画像提供:Tom's Hardware)

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本必要になることに注意してください。

DCモーター搭載Raspberry Pi Pico

(画像提供:Tom's Hardware)

Raspberry Pi Pico を使用した DC モーターのハードウェアセットアップ

このプロジェクトで使用しているチップはDRV8833です。このバージョンはブレッドボード用に設計されていますが、ロボットへの組み込み用に設計されたバージョンなど、他にも多くのバージョンがあります。市場には他にも、L298DやL9110Sといった、ロボット工学向けのシンプルで手頃な価格のモーターコントローラーがあります。すべてのモーターコントローラーは同じ入出力規則を共有しています。 

DCモーター搭載Raspberry Pi Pico

(画像提供:Tom's Hardware)
  1. マイクロ USB ポートがブレッドボードの端から垂れ下がるように、Raspberry Pi Pico をブレッドボードに配置します。
  2. DRV8833 モーター コントローラーを、ピンが中央のチャネルの両側になるようにブレッドボードに配置します。
  3. Raspberry Pi PicoのVBUSピンをジャンパー線でDRV8833のVCCピンに接続します。これにより、USB経由で供給される5V電源からモーターコントローラーに直接電力が供給されます。
  4. Raspberry Pi Pico のGND ピンをDRV8833 のGND ピンに接続します。
  5. Raspberry Pi Pico のGPIO 14 をDRV8833 のIN1 に接続します。
  6. Raspberry Pi Pico のGPIO 15 をDRV8833 のIN2 に接続します。
  7. OUT1 と OUT2 をモーターのピンに接続します。このテストではどちらでも構いません。

DCモーター搭載Raspberry Pi Pico

(画像提供:Tom's Hardware)

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」の執筆・提供にも携わっています。