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

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

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

目次

Raspberry Pi(ラズベリーパイ)とは

Raspberry Pi(ラズベリーパイ)はイギリスのラズベリーパイ財団が教育用に開発したボードコンピュータです。

\最大8%ポイントアップ!/
Amazon
\楽天ポイント4倍セール!/
楽天市場

最新のRaspberry Pi 4では、ARMアーキテクチャを採用したBroadcom製の高性能SoC BCM2711を搭載しており、1.5GHzで動作するARM Cortex-A72が4コアとマイコンボードの中では非常に高速な処理能力を持っています。また、ユーザーがアクセス可能な40ピンのGPIOも搭載しており、外部ハードウェアを制御することが可能です。

詳細なスペック等は以下の記事で解説していますので、あわせてご覧ください。

モータドライバ 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

#GPIO初期化
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のデューティー比に応じて回転速度が変化しています。

\ Pythonを自宅で好きな時に学べる! /

まとめ

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

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

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

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。

スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

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

著:山内 直, 著:大久保 竣介, 著:森本 梨聖, 監修:太田 昌文
¥2,618 (2024/04/15 16:31時点 | Amazon調べ)
\最大8%ポイントアップ!/
Amazon
\楽天ポイント4倍セール!/
楽天市場
\最大8%ポイントアップ!/
Amazon
\楽天ポイント4倍セール!/
楽天市場

部品の入手先

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をコピーしました!

コメント

コメントする

CAPTCHA


目次