使用RPi控制直流電機
我們的下一個任務是使用樹莓派上的python腳本和GPIO頭控制直流電動機,這將在我們的腦海中產(chǎn)生一幅“機器人如何工作”的圖景。您可以根據(jù)外面的天氣來控制房間的風扇(因為您知道rpi會使用傳感器)。完成所有這些操作將使您了解機器人技術的基本規(guī)則。
我們將控制一個直流電動機,該電動機至少需要400mA的電流才能正常工作,但我們的RPi只能提供接近20mA的電流。這意味著我們必須在外部連接直流電源。這不成問題!我們在市場上有6V和9V的小型電池。
警告:請勿將電機直接連接到Raspberry Pi,否則會損壞Raspberry Pi。
顯然,我們將需要一個電動機控制器IC來控制電動機的功能(順時針或逆時針旋轉)。最好從L293D電機控制器IC開始。
要求:
·預先裝有Raspbian的SD卡的Raspberry Pi
·面包板
·跳線(公對公,母對公)
·一臺額定電壓為6v的直流電動機
·一塊6V或9V電池。
L293D
這是一個電機驅動器IC,我們可以一次控制2個電機。其引腳配置如下所示。它是一個16針I(yè)C,在一側包括一個Vcc(上電),一個GND針,一個Enable針(用于打開和關閉電動機),兩個輸入對應兩個輸出。
連接:
·首先將L293D的Vcc引腳連接到5V(也可以使用3.3V)
·現(xiàn)在連接地線
·使用GPIO-2、3、4來控制IC。(分別將GPIO-02和GPIO-03分別作為輸入1和2)
·將GPIO-04連接到IC的相應使能引腳。
·現(xiàn)在終于將輸出1和2連接到電動機的兩個連接上,如圖所示。
Python代碼:-
導入RPi.GPIO作為GPIO
從導入睡眠時間開始
GPIO.setmode(GPIO.BCM)
Motor1A = 02
Motor1B = 03
Motor1E = 04
的 GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)
打印“電動機要啟動“
GPIO.output(Motor1A,GPIO.HIGH)#以順時針方向運行電動機
GPIO.output (Motor1B,GPIO.LOW)#將其設置為高電平以使電動機沿逆時針方向旋轉
GPIO.output(Motor1E,GPIO.HIGH)#啟動時應始終為高電機
睡眠(5)
打印“停止電機”
GPIO.output(Motor1E,GPIO.LOW)#停止電動機后
GPIO.cleanup()
上面的代碼,您的電動機將開始沿順時針方向旋轉5秒鐘。通過修改以上代碼,您可以將其反轉。現(xiàn)在我們可以用兩個或四個電動機來制造汽車。
使用RPi控制直流電動機的速度
您知道在某些地方我們需要也可以控制電動機的速度。通過以上主題,您了解了電動機的ON-OFF控制,但這還不夠嗎?現(xiàn)在您應該在腦海中思考一個問題,即我們如何從RPi的GPIO引腳產(chǎn)生模擬電壓。沒問題,因為我們可以通過PWM(脈沖寬度調制)從中產(chǎn)生電壓脈沖并控制GPIO引腳的輸出電壓。
脈沖寬度調制
這是一個非常簡單的過程,我們可以控制電源的電壓頻率。我們知道,PWM模塊可用于RPi中的GPIO。
時間段= 1/頻率
因此,如果我選擇100Hz的頻率,則意味著時間段為10m sec。 (電壓被觸發(fā)為“高”持續(xù)10m秒)。我們的電池為電動機提供9V的電壓,為了降低速度,我們必須降低此電壓。因此,如果要將速度降低一半,而不必將占空比(電壓為高電平的時間段的百分比)更改為50。
由于供應給電動機的電壓由電機驅動器IC-L293N的使能引腳,因此我們僅需將PWM應用于使能引腳即可改變速度。貝婁是理解PWM的python代碼,需要上一主題中的上述連接(通過RPi控制直流電動機)。
》》》導入RPi.GPIO為GPIO#導入GPIO庫。
》》從時間導入睡眠開始
》》》 GPIO.setmode(GPIO.BCM)
》》》 Motor1A = 02#將GPIO-02設置為控制器IC的輸入1
》》》 Motor1B = 03#設置GPIO- 03作為控制器IC的輸入2
》》》 Motor1E = 04#將GPIO-04設置為控制器IC的使能引腳1
》》》 GPIO.setup(Motor1A,GPIO.OUT)
》》》 GPIO.setup(Motor1B,GPIO.OUT)
》》》GPIO.setup(Motor1E,GPIO.OUT)
》》》pwm=GPIO.PWM(04,100)#配置啟用引腳表示用于PWM的GPIO-04
》》》 pwm.start(50)#以50%的占空比啟動它
》》》打印“前進”
》》》 GPIO.output(Motor1A,GPIO.HIGH)
》》》 GPIO.output(Motor1B,GPIO.LOW)
》》》 GPIO.output(Motor1E,GPIO.HIGH)
》》》 sleep(2)
##這將使電動機以50%的速度向前運行2秒。
》》》 pwm.ChangeDutyCycle(80)#將占空比增加到80
》》》打印“后退”
》》》 GPIO.output(Motor1A,GPIO.HIGH)
》》》 GPIO.output(Motor1B,GPIO.LOW)
》》》 GPIO.output(Motor1E,GPIO.HIGH)
》》》睡眠(2)
##通過提供80%的電池電壓,電動機將以80%的速度反向運行2秒
》》》打印“立即停止”
》》》 GPIO.output(Motor1E,GPIO.LOW)
》 》》 pwm.stop()#從GPIO輸出中停止PWM是必要的
》》》 GPIO.cleanup()
-
直流電機
+關注
關注
36文章
1712瀏覽量
70469 -
樹莓派
+關注
關注
117文章
1711瀏覽量
105941
發(fā)布評論請先 登錄
相關推薦
如何使用MOS管進行直流電機控制
有刷直流電機是什么?有刷直流電機的工作原理是什么?
直流電機的應用原理及控制原理是什么?
直流電機有哪些型號?如何分類的?
直流電機主要種類有哪些?直流電機的勵磁方式有哪些?
直流電機是什么?具有什么特點?
直流電機是什么 直流電機介紹及其工作原理
直流電機的轉速與線圈的關系
直流電機調速器的工作原理和結構
PWM如何調節(jié)直流電機轉速
直流電機正反轉的控制方式
永磁無刷直流電機的控制方法
基于PSpice System Option接口的直流電機控制系統(tǒng)設計
![基于PSpice System Option接口的<b class='flag-5'>直流電機</b><b class='flag-5'>控制</b>系統(tǒng)設計](https://file.elecfans.com/web2/M00/27/37/poYBAGHBmA2AD7e7AAAahjWuYP4250.jpg)
評論