步驟1:材料和工具





材料
Raspberry Pi 3(RPi)
L293D控制IC
面包板
跳線電線,公對(duì)公(M/M)和母對(duì)公(F/M)
直流電動(dòng)機(jī)
9v電池
**在此項(xiàng)目中,必須訪問(wèn)Raspberry Pi桌面??梢酝ㄟ^(guò)將監(jiān)視器,鍵盤(pán)和鼠標(biāo)插入RPi或使用SSH連接來(lái)完成。**
該項(xiàng)目無(wú)需任何工具,因?yàn)檫@些連接都不是永久性的,無(wú)需使用跳線和面包板。如果要制作永久的,更耐用的版本,只需用烙鐵和一些導(dǎo)線進(jìn)行相同的連接即可。
步驟2:背景信息。

**這是所有背景信息。如果您不關(guān)心如何完成此操作,而只是想在不學(xué)習(xí)的情況下進(jìn)行操作,請(qǐng)?zhí)恋?步。**
在此項(xiàng)目中,我們使用的是python腳本Raspberry Pi可將GPIO輸出設(shè)置為L(zhǎng)293D電機(jī)控制器IC,并以任意速度在任一方向上運(yùn)行DC電機(jī)。
首先, Raspberry Pi是具有40個(gè)GPIO引腳的開(kāi)源信用卡大小的計(jì)算機(jī)。 GPIO代表“通用輸入/輸出”,這意味著這些引腳可以發(fā)送電信號(hào)來(lái)驅(qū)動(dòng)硬件或接收它們并讀取傳感器數(shù)據(jù)。我們將它們用作輸出,以將信號(hào)發(fā)送到L293D IC芯片,該芯片只是用于控制直流電動(dòng)機(jī)的芯片。沒(méi)什么特別的。
Python是一種計(jì)算機(jī)編程語(yǔ)言,可與Javascript或C ++相提并論。我們將使用非常簡(jiǎn)單的python命令,不需要任何計(jì)算機(jī)編程知識(shí)。
控制電動(dòng)機(jī)速度的方法是使用稱(chēng)為PWM的python模塊。代表脈沖寬度調(diào)制。 PWM的意思是通過(guò)在高電平和低電平之間切換設(shè)定的時(shí)間量來(lái)控制電壓接通的時(shí)間量。電壓高的時(shí)間稱(chēng)為“占空比”或“占空比”,無(wú)論該百分比是電動(dòng)機(jī)運(yùn)行的功率百分比。
要查看PWM作為輸出的外觀,請(qǐng)參考上圖。
L293D電機(jī)IC使用兩個(gè)引腳(稱(chēng)為輸入)感測(cè)所需的輸出方向,以及另一個(gè)引腳(使能)感測(cè)開(kāi)/關(guān)。因此,在我們的代碼中,在使能引腳為ON的情況下,如果我們希望電動(dòng)機(jī)正轉(zhuǎn),則將輸入1設(shè)置為“ True”或“ HIGH”,將輸入2設(shè)置為“ False”或“ LOW”。如果希望它向后旋轉(zhuǎn),我們將輸入1設(shè)置為“ False”或“ LOW”,將輸入2設(shè)置為“ True”或“ HIGH”。如果兩個(gè)輸入均為T(mén)rue或均為False,則電動(dòng)機(jī)將不會(huì)運(yùn)行。
這就是我們控制方向的方式,但是速度呢?我們說(shuō)的是PWM對(duì)嗎?因此,我們將僅對(duì)兩個(gè)輸入進(jìn)行脈寬調(diào)制,對(duì)嗎?我們可以,但是太復(fù)雜了。由于IC具有一個(gè)使能引腳來(lái)控制其開(kāi)/關(guān)狀態(tài)的Enable引腳,因此我們可以將兩個(gè)輸入都保持為運(yùn)行狀態(tài),而僅調(diào)制Enable引腳,并且IC只會(huì)根據(jù)我們?cè)贓nable引腳中設(shè)置的占空比來(lái)輸出功率。這樣,我們可以簡(jiǎn)化代碼,減少出錯(cuò)的地方。
因此,在Raspberry Pi上,我們將在GPIO板上使用3個(gè)GPIO輸出引腳,一個(gè)3.3V電源和一個(gè)一根接地針。輸出引腳中的2個(gè)用于IC上的輸入,一個(gè)用于使能。
現(xiàn)在我們知道會(huì)發(fā)生什么,現(xiàn)在該開(kāi)始進(jìn)行接線了。
步驟3:硬件設(shè)置






上面的圖片可能看起來(lái)像是混亂的電線,但不要擔(dān)心。
首先要做的是將L293D芯片放在試驗(yàn)板上。面包板的中間應(yīng)有一個(gè)縫隙,如一個(gè)縫隙,并且IC芯片應(yīng)將其一半左右的引腳很好地跨在上面,因此它與板平行。
接下來(lái),這很重要將電線插入正確的面包板插槽,因此我建議對(duì)電線進(jìn)行顏色編碼。我將紅色用于正極電源連接,將黑色用于負(fù)極電源連接(接地),將藍(lán)色用于RPi的輸入,將橙色用于電動(dòng)機(jī)的輸出。
您可能會(huì)注意到有兩套電源線。這是因?yàn)橹绷麟妱?dòng)機(jī)應(yīng)至少在9V和400mA的電流下運(yùn)行,而電動(dòng)機(jī)控制IC的電壓應(yīng)在5V或3.3V且小于20mA。因此,在這種設(shè)置中,IC芯片需要3.3V的電源,并通過(guò)接地(負(fù)電源插頭)連接到RPI。然后它還具有9V的電源和來(lái)自電池的接地,然后通過(guò)芯片將其路由到電動(dòng)機(jī)。 重要提示:請(qǐng)勿嘗試從RPi汲取9V和400mA電流或通過(guò)IC芯片運(yùn)行9V。這可能會(huì)損壞RPi和/或L293D。為確保將電壓路由到正確的引腳,請(qǐng)使用上圖。
要知道IC芯片的哪一端,請(qǐng)?jiān)谂c上圖相對(duì)應(yīng)的一端尋找一個(gè)小半圓缺口。
現(xiàn)在,您擁有L293D IC在面包板上,首先我們將M/F跳線連接到RPi。因此,在面包板上,將跳線的公端放入旁邊的插槽中:Vss,Enable 1,Input 1,Input 2和左側(cè)的GND引腳。應(yīng)該有5根電線準(zhǔn)備連接到RPi。有關(guān)引腳號(hào),請(qǐng)參見(jiàn)上圖。現(xiàn)在,將電線從Vss(我希望您將其變成紅色)連接到Pi或1號(hào)針上的5V電源。接下來(lái),將GND跳線(再次希望是黑色的)連接到GND引腳或引腳6。之后,將輸入1跳線連接到GPIO2或引腳#3。然后將跳線從輸入2連接到GPIO3或引腳5。最后,將Enable 1跳線連接到GPIO4或引腳7。到了,再也沒(méi)有M/F跳線了!到一半了!
所以,現(xiàn)在抓住M/M跳線。其中之一應(yīng)從IC的Vs引腳到9V的正端。有很多方法可以將其保留在電池上,但是只要金屬兩端牢固接觸,膠帶就可以使用。用黑色M/M跳線將電池的負(fù)極端連接到IC的另一個(gè)GND引腳。最后,只需將IC上的兩個(gè)輸出引腳連接到電動(dòng)機(jī)的兩端即可!而已!現(xiàn)在,一切都按照所需的方式進(jìn)行了布線,不再需要任何硬件工作。上軟件。
步驟4:軟件設(shè)置

首先,我們需要在Pi上打開(kāi)一個(gè)程序來(lái)編寫(xiě)代碼。我們將使用IDLE 2,因此請(qǐng)轉(zhuǎn)到桌面的左上角,依次單擊“菜單”,“編程”和“ Python 2(IDLE)”。您應(yīng)該看到帶有未命名文檔的空白文本編輯器。
我們需要做的第一件事是導(dǎo)入GPIO模塊。因此,在第一行中,準(zhǔn)確鍵入對(duì)CaSe敏感的
import RPi.GPIO as GPIO
這將導(dǎo)入GPIO模塊
下一步,我們需要一個(gè)名為“ sleep”的命令,因此編寫(xiě)
from time import sleep
下一步,我們需要命名所有引腳,因此通過(guò)寫(xiě)入設(shè)置命名模式
GPIO.setmode(GPIO.BOARD)
,這會(huì)將名稱(chēng)設(shè)置為電路板模式,從而只需根據(jù)上圖中間的數(shù)字命名引腳。
現(xiàn)在我們需要將引腳設(shè)置為輸出,所以現(xiàn)在寫(xiě)
GPIO.setup(03, GPIO.OUT) GPIO.setup(05, GPIO.OUT) GPIO.setup(07, GPIO.OUT)
現(xiàn)在設(shè)置pwm命令類(lèi)型
pwm=GPIO.PWM(07, 100)
下一步以0占空比啟動(dòng)脈沖寬度調(diào)制,因此它尚未運(yùn)行
pwm.start(0)
其余代碼根據(jù)我們想要的方式而變化運(yùn)行馬達(dá)。對(duì)于第一遍,我們將在代碼中設(shè)置預(yù)定義的指令。稍后,我將說(shuō)明如何編寫(xiě)代碼,讓您輸入所需的方向,任務(wù)和持續(xù)時(shí)間。
因此,到目前為止,我們將編寫(xiě)一個(gè)代碼,該代碼以50%的功率向前運(yùn)行2秒,然后以75%的功率向后運(yùn)行3秒。
首先,要設(shè)置向前寫(xiě)入的方向
GPIO.output(03, True) GPIO.output(05, False)
現(xiàn)在,我們將PWM占空比設(shè)置為50%。寫(xiě)入
pwm.ChangeDutyCycle(50)
然后打開(kāi)使能引腳
GPIO.output(07, True)
然后將代碼休眠2秒鐘,以便電動(dòng)機(jī)運(yùn)行
sleep(2)
現(xiàn)在關(guān)閉使能引腳
GPIO.output(07, False)
然后反轉(zhuǎn)輸入以將其設(shè)置為反轉(zhuǎn)
GPIO.output(03, False) GPIO.output(05, True)
然后將PWM占空比更改為75%
pwm.ChangeDutyCycle(75)
,然后重新啟用啟用功能
GPIO.output(07, True)
使代碼休眠3秒鐘
sleep(3)
然后再關(guān)閉使能引腳
GPIO.output(07, False)
停止脈沖
pwm.stop()
并清除所有GPIO通道。
GPIO.cleanup()
就是這樣!現(xiàn)在,您有了一個(gè)代碼,它將使電動(dòng)機(jī)以50%的速度向前運(yùn)轉(zhuǎn)2秒,然后以75%的速度向后運(yùn)轉(zhuǎn)3秒。按F5,然后保存以測(cè)試您的代碼!
*注意:您可能會(huì)收到一條錯(cuò)誤消息,指出所選的GPIO通道已在使用中。這不會(huì)影響您的項(xiàng)目,您可以通過(guò)在代碼中寫(xiě)入“ GPIO.setwarnings(False)”來(lái)使警告停止出現(xiàn)。*
-
直流電動(dòng)機(jī)
+關(guān)注
關(guān)注
7文章
198瀏覽量
24031 -
L293D
+關(guān)注
關(guān)注
4文章
50瀏覽量
20681 -
樹(shù)莓派
+關(guān)注
關(guān)注
122文章
2076瀏覽量
110369
發(fā)布評(píng)論請(qǐng)先 登錄
直流電機(jī)的基本工作原理與結(jié)構(gòu)
無(wú)刷直流電動(dòng)機(jī)電流連續(xù)控制方法研究與實(shí)現(xiàn)
基于電感法無(wú)刷直流電動(dòng)機(jī)的起動(dòng)分析
無(wú)刷直流電機(jī)狀態(tài)方程系數(shù)矩陣的動(dòng)態(tài)更新
無(wú)刷直流電機(jī)在電動(dòng)轉(zhuǎn)轍機(jī)中的應(yīng)用
無(wú)刷直流電機(jī)無(wú)位置傳感器控制系統(tǒng)仿真研究
無(wú)刷直流電機(jī)模糊自適應(yīng)PID控制的研究
基于高效DC/DC電源模塊的電動(dòng)車(chē)控制系統(tǒng)設(shè)計(jì)
直流電動(dòng)機(jī)的電磁轉(zhuǎn)矩和電樞電流由什么決定?
樹(shù)莓派和L293D的直流電動(dòng)機(jī)控制
評(píng)論