【Raspberry Pi Pico】DCモーターをモータードライバで制御する

【Raspberry Pi Pico】DCモーターをモータードライバで制御する

こんにちは! けい(Twitter)です。

今回は、Raspberry Pi Pico(ラズピコ)でDCモーターをモータードライバを使って制御する方法を紹介していきたいと思います。

必要な物

Raspberry Pi Pico

モータードライバ

2つのDCモーターを制御できるモータードライバを使います。

モーター

モータードライバの電源が3V~10Vなので、その間の電圧で動くものであれば何でも大丈夫です。

created by Rinker
タミヤ(TAMIYA)
¥594 (2024/04/26 19:01:44時点 Amazon調べ-詳細)

今回私は3V程度で動作するモーターでテストを行いました。

その他

created by Rinker
Sintron
¥343 (2023/05/26 13:50:35時点 Amazon調べ-詳細)

回路図

モータードライバの仕様

使用するピン
  • GND:グラウンド
  • VCC:モーターの電源ピン
  • IN1、IN2:モーターの制御信号ピン
  • OUT1、OUT2:モーターに接続

モータードライバに送る信号(IN1、IN2)によって、モーターの回転する方向を変化させることができます。

IN1IN2モーターにかかる力
LOWLOW
HIGHLOW正転
LOWHIGH逆転
HIGHHIGHブレーキ

配線

サンプル①:電源電圧をそのままモーターにかける

それでは、電源電圧をそのままモーターにかけるプログラムを見ていきましょう。

プログラム

import machine
import utime

IN1 = machine.Pin(1, machine.Pin.OUT)
IN2 = machine.Pin(2, machine.Pin.OUT)

while True:
    # 正転
    IN1.value(1)
    IN2.value(0)
    utime.sleep(2)
    
    # ブレーキ
    IN1.value(1)
    IN2.value(1)
    utime.sleep(2)
    
    # 逆転
    IN1.value(0)
    IN2.value(1)
    utime.sleep(2)
    
    # 停止
    IN1.value(0)
    IN2.value(0)
    utime.sleep(2)

解説

Pin1とPin2を出力用のピンとして設定し、HIGHかLOWの値を出力する、デジタル出力ピンとしています。

正転→ブレーキ→逆転→停止をwhileループの中で繰り返しています。

サンプル②:PWM信号でモーターの速度を調整する

一個目のプログラムでは電源電圧をそのままモーターにかけていましたが、PWM信号を与えることで、電圧レベルを下げてモーターに供給させることができます。

プログラム

from machine import PWM, Pin
import utime

IN1 = PWM(Pin(1))
IN2 = PWM(Pin(2))
IN1.freq(100)
IN2.freq(100)

max_duty = 65025

while True:
    # 正転
    IN2.duty_u16(0)
    for i in range(50, 100):
        IN1.duty_u16(int(max_duty*i*0.01))
        utime.sleep(0.1)
        
    # ブレーキ
    IN1.duty_u16(max_duty)
    IN2.duty_u16(max_duty)
    utime.sleep(2)
    
    # 逆転
    IN1.duty_u16(0)
    for i in range(50, 100):
        IN2.duty_u16(int(max_duty*i*0.01))
        utime.sleep(0.1)
        
    # 停止
    IN1.duty_u16(0)
    IN2.duty_u16(0)
    utime.sleep(2)

解説

IN1、IN2に与える信号をPWM信号にしています。

プログラムでは50%から100%へと段々と出力を上げていくプログラムです。
モーターに何も接続していない状態だと速度の違いが分かりにくいですが、実際にロボットカーなどをモーターで制御したときに、はっきりと速度の違いを感じることができます。

PWM信号のプログラムについては、以前の記事でも書いているのでぜひ参考にしてみて下さい。