Raspberry PiとL298NでDCモーターを制御する

  • URLをコピーしました!

今回は先日購入したL298Nを搭載したモータードライバを使用し、Raspberry PiからDCモータを制御してみたいと思います。Pythonでモーター制御プログラムを作成してみました。

目次

モータドライバ L298N

モーターの制御に使用するドライバICはL298Nです。
VKLSVANのモータドライバについては以下の記事で解説しています。

回路作成する際に揃えておきたいアイテム

実際にモータドライブ回路を作成する際に揃えておきたい道具を以下の記事でまとめています。

モータドライバの基板上の赤枠の部分が制御ピンになります。

左からENA、IN1、IN2、IN3、IN4、ENBとなります。

制御ピンの使用方法は以下のようになります。

今回はモーター一つでテストしますのでRaspberry PiからENAにPWMを入力、IN1、IN2にデジタルIOからON/OFF信号を入力します。

モータドライバにRaspberry Pi、モータ、電源を接続して以下のような状態になりました。
PWM信号を出力するGPIO18はENAに接続します。
回転方向を制御する信号GPIO17、18はIN1、IN2に接続します。

ハードウェアの準備ができたらRaspberry Piのソフトウェアを用意します。

環境

ハードウェア:Raspberry Pi 2
OS:Raspbiann 11
Python:3.9.2

Raspberry Pi 2を使用していますが、Raspberry Pi 3、4でも同様に実装できます。

GPIOライブラリ

今回Raspberry PiのGPIOの制御にはpigpioというライブラリを使用します。
pigpioについては以下の記事で解説しています。

DCモーターを制御するPythonプログラム

L298Nを使用してDCモータを制御するPythonプログラムを作成しました。

※Raspberry Pi 4の場合はGPIO12、13がハードウェアPWM出力に対応したピンとなります。
 汎用入出力ピンについても必要に応じて変更してください。

from time import sleep
import pigpio
import time
pi = pigpio.pi()
pi.set_mode(17, pigpio.OUTPUT)
pi.set_mode(22, pigpio.OUTPUT)
#PWMパラメータ
pwm_pin1 = 18 #PWM出力ピンを指
duty = 0 #デューティー比を%で指定
freq = 100 #PWM周波数をHzで指定
up_flag = True
#IN1、IN2の制御信号
pi.write(17, 0)
pi.write(22, 1)
while True:
    
    #デューティサイクル計算
    cnv_dutycycle = int((duty * 1000000 / 100))
    #PWMを出力
    pi.hardware_PWM(pwm_pin1, freq, cnv_dutycycle)
    #dutyを変更
    if up_flag == True:
        if duty == 100:
            up_flag = False
        else:
            duty += 1
    else:
        if duty == 0:
            up_flag = True
        else:
            duty -=1
    
    time.sleep(0.05)

Raspberry Piでモーターを制御している動画

Pythonプログラムを実行すると以下のようにDCモーターを回すことができました。
PWMのデューティー比に応じて回転速度が変化しています。

まとめ

DCモーターをRaspberry Piからコントロールできるようになりました。今回は1つだけでしたが、Raspberry Pi 4が入手出来たら2つ同時に制御してロボットとして動作させる予定です。

また、Raspberry Piでのハードウェア制御をさらに深く学びたい方にはUdemyの以下の講座がおすすめです。

Raspberry Pi Picoで作る!USBショートカットキーデバイス。Pythonで手軽に電子工作しよう! icon Raspberry PiとPythonでIoTはじめの一歩~IoTキッチンガーデン講座~ icon



それでは、また次の記事でお会いしましょう。

部品の入手先

VKLSVAN 2個セット L298N DCステッパ モータドライバ コントローラボード モジュール デュアルHブリッジ Arduinoと互換

ウインドアバフト USB 電源用 2芯ケーブル 100cm 2ワイヤ ケーブル電源ケーブル専用 加工用USBケーブル USBワイヤーライト LEDテープ 接続用 電子工作用 USB 2芯ワイヤー

VKLSVAN 3個 40本 10CM 多色40ピン デュポン ワイヤー ジャンパー ブレッドボード 接続ワイヤー (メス-メス) ArduinoとRaspberry piに適用(合計120本)

参考

よかったらシェアしてね!
  • URLをコピーしました!
目次