1. 程式人生 > >零基礎玩轉樹莓派(五)—控制直流電機

零基礎玩轉樹莓派(五)—控制直流電機

前面教程學會如何使用樹莓派來控制LED燈,接下來主要講如何控制直流電機,這樣就可以做小車等可以運動的專案,可玩性更高。

一、硬體介紹

直流電機控制主要用到的硬體為:
1、燒寫好系統的樹莓派控制板·········1塊
2、L298N電機驅動板模組···············1個
3、直流電機·································2個
4、外接電源·································1個
5、杜邦線···································若干
注:由於樹莓派自身沒有電機驅動模組,因此控制電機時要配合L298N電機驅動板模組,一起來使用。
在這裡插入圖片描述

二、硬體連線

連線原理圖:
在這裡插入圖片描述
連線實物圖:
在這裡插入圖片描述

三、程式啟動電機轉

1、硬體按照上述連線好後,將樹莓派上電,使用SSH遠端連線樹莓派
在這裡插入圖片描述
2、輸入nano motor.py,建立一個名為motor的python檔案

nano motor.py

在這裡插入圖片描述
3、檔案編輯介面輸入以下內容:注意#後面為註釋(# – coding: utf-8 – 除外),不參與程式執行,可以省略


# -*- coding: utf-8 -*-                 #通過宣告可以在程式中書寫中文
import RPi.GPIO as GPIO                 #引入RPi.GPIO庫函式命名為GPIO
import time #引入計時time函式 # BOARD編號方式,基於插座引腳編號 GPIO.setmode(GPIO.BOARD) #將GPIO程式設計方式設定為BOARD模式 #介面定義 INT1 = 11 #將L298 INT1口連線到樹莓派Pin11 INT2 = 12 #將L298 INT2口連線到樹莓派Pin12 INT3 = 13 #將L298
INT3口連線到樹莓派Pin13 INT4 = 15 #將L298 INT4口連線到樹莓派Pin15 #輸出模式 GPIO.setup(INT1,GPIO.OUT) GPIO.setup(INT2,GPIO.OUT) GPIO.setup(INT3,GPIO.OUT) GPIO.setup(INT4,GPIO.OUT) GPIO.output(INT1,GPIO.HIGH) GPIO.output(INT2,GPIO.LOW) GPIO.output(INT3,GPIO.HIGH) GPIO.output(INT4,GPIO.LOW)

程式主要通過控制電機驅動模組INT1-4介面來實現電機的運動
在這裡插入圖片描述
4、儲存退出編輯介面,直行程式,會看到兩電機開始轉動

sudo python motor.py

四、控制電機轉速

樹莓派3B+的PWM控制可以參考一下文件:https://www.jianshu.com/p/775b4fb2c98d 。此處直接使用相關知識。
1、接線原理圖
在這裡插入圖片描述
將L298的ENA與ENB分別接到樹莓派的Pin16,Pin18介面。ENA與ENB分別為左右電機的使能介面,通過樹莓派PWM輸出,可以用來控制電機轉速。(注:連線時需要將ENA、ENB上的跳帽拔掉)
2、連線成功後,開啟motor.py檔案

nano motor.py

修改檔案如下

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)

INT1 = 11
INT2 = 12
INT3 = 13
INT4 = 15
ENA = 16
ENB = 18

GPIO.setup(INT1,GPIO.OUT)
GPIO.setup(INT2,GPIO.OUT)
GPIO.setup(INT3,GPIO.OUT)
GPIO.setup(INT4,GPIO.OUT)
GPIO.setup(ENA,GPIO.OUT)
GPIO.setup(ENB,GPIO.OUT)

pwma = GPIO.PWM(16,80)
pwmb = GPIO.PWM(18,80)
pwma.start(90)
pwmb.start(90)
GPIO.output(INT1,GPIO.HIGH)
GPIO.output(INT2,GPIO.LOW)
GPIO.output(INT3,GPIO.HIGH)
GPIO.output(INT4,GPIO.LOW)

while 1:
        pwma.ChangeDutyCycle(90)
        pwmb.ChangeDutyCycle(90)
        time.sleep(3)
        pwma.ChangeDutyCycle(10)
        pwmb.ChangeDutyCycle(10)
        time.sleep(3)

3、儲存退出檔案並且執行程式,會看到兩電機快轉3秒,慢轉3秒依次迴圈

sudo python motor.py