树莓派控制电机转速_怎样用树莓派控制直流电机的方向和速度
步驟1:DC的控制方向通過(guò)RPi電機(jī)
使用RPi控制直流電機(jī)
我們的下一個(gè)任務(wù)是使用樹(shù)莓派上的python腳本和GPIO頭控制直流電動(dòng)機(jī),這將在我們的腦海中產(chǎn)生一幅“機(jī)器人如何工作”的圖景。您可以根據(jù)外面的天氣來(lái)控制房間的風(fēng)扇(因?yàn)槟纑pi會(huì)使用傳感器)。完成所有這些操作將使您了解機(jī)器人技術(shù)的基本規(guī)則。
我們將控制一個(gè)直流電動(dòng)機(jī),該電動(dòng)機(jī)至少需要400mA的電流才能正常工作,但我們的RPi只能提供接近20mA的電流。這意味著我們必須在外部連接直流電源。這不成問(wèn)題!我們?cè)谑袌?chǎng)上有6V和9V的小型電池。
警告:請(qǐng)勿將電機(jī)直接連接到Raspberry Pi,否則會(huì)損壞Raspberry Pi。
顯然,我們將需要一個(gè)電動(dòng)機(jī)控制器IC來(lái)控制電動(dòng)機(jī)的功能(順時(shí)針或逆時(shí)針旋轉(zhuǎn))。最好從L293D電機(jī)控制器IC開(kāi)始。
要求:
·預(yù)先裝有Raspbian的SD卡的Raspberry Pi
·面包板
·一個(gè)L293D電機(jī)驅(qū)動(dòng)器集成電路
·跳線(公對(duì)公,母對(duì)公)
·一臺(tái)額定電壓為6v的直流電動(dòng)機(jī)
·一塊6V或9V電池。
L293D
這是一個(gè)電機(jī)驅(qū)動(dòng)器IC,我們可以一次控制2個(gè)電機(jī)。其引腳配置如下所示。它是一個(gè)16針I(yè)C,在一側(cè)包括一個(gè)Vcc(上電),一個(gè)GND針,一個(gè)Enable針(用于打開(kāi)和關(guān)閉電動(dòng)機(jī)),兩個(gè)輸入對(duì)應(yīng)兩個(gè)輸出。
連接:
·首先將L293D的Vcc引腳連接到5V(也可以使用3.3V)
·現(xiàn)在連接地線
·使用GPIO-2、3、4來(lái)控制IC。(分別將GPIO-02和GPIO-03分別作為輸入1和2)
·將GPIO-04連接到IC的相應(yīng)使能引腳。
·現(xiàn)在終于將輸出1和2連接到電動(dòng)機(jī)的兩個(gè)連接上,如圖所示。
Python代碼:-
導(dǎo)入RPi.GPIO作為GPIO
從導(dǎo)入睡眠時(shí)間開(kāi)始
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)
打印“電動(dòng)機(jī)要啟動(dòng)“
GPIO.output(Motor1A,GPIO.HIGH)#以順時(shí)針?lè)较蜻\(yùn)行電動(dòng)機(jī)
GPIO.output (Motor1B,GPIO.LOW)#將其設(shè)置為高電平以使電動(dòng)機(jī)沿逆時(shí)針?lè)较蛐D(zhuǎn)
GPIO.output(Motor1E,GPIO.HIGH)#啟動(dòng)時(shí)應(yīng)始終為高電機(jī)
睡眠(5)
打印“停止電機(jī)”
GPIO.output(Motor1E,GPIO.LOW)#停止電動(dòng)機(jī)后
GPIO.cleanup()
上面的代碼,您的電動(dòng)機(jī)將開(kāi)始沿順時(shí)針?lè)较蛐D(zhuǎn)5秒鐘。通過(guò)修改以上代碼,您可以將其反轉(zhuǎn)。現(xiàn)在我們可以用兩個(gè)或四個(gè)電動(dòng)機(jī)來(lái)制造汽車(chē)。
使用RPi控制直流電動(dòng)機(jī)的速度
您知道在某些地方我們需要也可以控制電動(dòng)機(jī)的速度。通過(guò)以上主題,您了解了電動(dòng)機(jī)的ON-OFF控制,但這還不夠嗎?現(xiàn)在您應(yīng)該在腦海中思考一個(gè)問(wèn)題,即我們?nèi)绾螐腞Pi的GPIO引腳產(chǎn)生模擬電壓。沒(méi)問(wèn)題,因?yàn)槲覀兛梢酝ㄟ^(guò)PWM(脈沖寬度調(diào)制)從中產(chǎn)生電壓脈沖并控制GPIO引腳的輸出電壓。
脈沖寬度調(diào)制
這是一個(gè)非常簡(jiǎn)單的過(guò)程,我們可以控制電源的電壓頻率。我們知道,PWM模塊可用于RPi中的GPIO。
時(shí)間段= 1/頻率
因此,如果我選擇100Hz的頻率,則意味著時(shí)間段為10m sec。 (電壓被觸發(fā)為“高”持續(xù)10m秒)。我們的電池為電動(dòng)機(jī)提供9V的電壓,為了降低速度,我們必須降低此電壓。因此,如果要將速度降低一半,而不必將占空比(電壓為高電平的時(shí)間段的百分比)更改為50。
由于供應(yīng)給電動(dòng)機(jī)的電壓由電機(jī)驅(qū)動(dòng)器IC-L293N的使能引腳,因此我們僅需將PWM應(yīng)用于使能引腳即可改變速度。貝婁是理解PWM的python代碼,需要上一主題中的上述連接(通過(guò)RPi控制直流電動(dòng)機(jī))。
》》》導(dǎo)入RPi.GPIO為GPIO#導(dǎo)入GPIO庫(kù)。
》》從時(shí)間導(dǎo)入睡眠開(kāi)始
》》》 GPIO.setmode(GPIO.BCM)
》》》 Motor1A = 02#將GPIO-02設(shè)置為控制器IC的輸入1
》》》 Motor1B = 03#設(shè)置GPIO- 03作為控制器IC的輸入2
》》》 Motor1E = 04#將GPIO-04設(shè)置為控制器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%的占空比啟動(dòng)它
》》》打印“前進(jìn)”
》》》 GPIO.output(Motor1A,GPIO.HIGH)
》》》 GPIO.output(Motor1B,GPIO.LOW)
》》》 GPIO.output(Motor1E,GPIO.HIGH)
》》》 sleep(2)
##這將使電動(dòng)機(jī)以50%的速度向前運(yùn)行2秒。
》》》 pwm.ChangeDutyCycle(80)#將占空比增加到80
》》》打印“后退”
》》》 GPIO.output(Motor1A,GPIO.HIGH)
》》》 GPIO.output(Motor1B,GPIO.LOW)
》》》 GPIO.output(Motor1E,GPIO.HIGH)
》》》睡眠(2)
##通過(guò)提供80%的電池電壓,電動(dòng)機(jī)將以80%的速度反向運(yùn)行2秒
》》》打印“立即停止”
》》》 GPIO.output(Motor1E,GPIO.LOW)
》 》》 pwm.stop()#從GPIO輸出中停止PWM是必要的
》》》 GPIO.cleanup()
打開(kāi)APP精彩內(nèi)容
點(diǎn)擊閱讀全文
總結(jié)
以上是生活随笔為你收集整理的树莓派控制电机转速_怎样用树莓派控制直流电机的方向和速度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 信用卡呆账会影响信用吗?不及时处理后果很
- 下一篇: 信用卡逾期了怎么办?千万不要跑路!