步驟1:材料和工具
材料
Raspberry Pi 3(RPi)
L293D控制IC
面包板
跳線電線,公對公(M/M)和母對公(F/M)
直流電動機
9v電池
**在此項目中,必須訪問Raspberry Pi桌面。可以通過將監視器,鍵盤和鼠標插入RPi或使用SSH連接來完成。**
該項目無需任何工具,因為這些連接都不是永久性的,無需使用跳線和面包板。如果要制作永久的,更耐用的版本,只需用烙鐵和一些導線進行相同的連接即可。
步驟2:背景信息。
**這是所有背景信息。如果您不關心如何完成此操作,而只是想在不學習的情況下進行操作,請跳至第3步。**
在此項目中,我們使用的是python腳本Raspberry Pi可將GPIO輸出設置為L293D電機控制器IC,并以任意速度在任一方向上運行DC電機。
首先, Raspberry Pi是具有40個GPIO引腳的開源信用卡大小的計算機。 GPIO代表“通用輸入/輸出”,這意味著這些引腳可以發送電信號來驅動硬件或接收它們并讀取傳感器數據。我們將它們用作輸出,以將信號發送到L293D IC芯片,該芯片只是用于控制直流電動機的芯片。沒什么特別的。
Python是一種計算機編程語言,可與Javascript或C ++相提并論。我們將使用非常簡單的python命令,不需要任何計算機編程知識。
控制電動機速度的方法是使用稱為PWM的python模塊。代表脈沖寬度調制。 PWM的意思是通過在高電平和低電平之間切換設定的時間量來控制電壓接通的時間量。電壓高的時間稱為“占空比”或“占空比”,無論該百分比是電動機運行的功率百分比。
要查看PWM作為輸出的外觀,請參考上圖。
L293D電機IC使用兩個引腳(稱為輸入)感測所需的輸出方向,以及另一個引腳(使能)感測開/關。因此,在我們的代碼中,在使能引腳為ON的情況下,如果我們希望電動機正轉,則將輸入1設置為“ True”或“ HIGH”,將輸入2設置為“ False”或“ LOW”。如果希望它向后旋轉,我們將輸入1設置為“ False”或“ LOW”,將輸入2設置為“ True”或“ HIGH”。如果兩個輸入均為True或均為False,則電動機將不會運行。
這就是我們控制方向的方式,但是速度呢?我們說的是PWM對嗎?因此,我們將僅對兩個輸入進行脈寬調制,對嗎?我們可以,但是太復雜了。由于IC具有一個使能引腳來控制其開/關狀態的Enable引腳,因此我們可以將兩個輸入都保持為運行狀態,而僅調制Enable引腳,并且IC只會根據我們在Enable引腳中設置的占空比來輸出功率。這樣,我們可以簡化代碼,減少出錯的地方。
因此,在Raspberry Pi上,我們將在GPIO板上使用3個GPIO輸出引腳,一個3.3V電源和一個一根接地針。輸出引腳中的2個用于IC上的輸入,一個用于使能。
現在我們知道會發生什么,現在該開始進行接線了。
步驟3:硬件設置
上面的圖片可能看起來像是混亂的電線,但不要擔心。
首先要做的是將L293D芯片放在試驗板上。面包板的中間應有一個縫隙,如一個縫隙,并且IC芯片應將其一半左右的引腳很好地跨在上面,因此它與板平行。
接下來,這很重要將電線插入正確的面包板插槽,因此我建議對電線進行顏色編碼。我將紅色用于正極電源連接,將黑色用于負極電源連接(接地),將藍色用于RPi的輸入,將橙色用于電動機的輸出。
您可能會注意到有兩套電源線。這是因為直流電動機應至少在9V和400mA的電流下運行,而電動機控制IC的電壓應在5V或3.3V且小于20mA。因此,在這種設置中,IC芯片需要3.3V的電源,并通過接地(負電源插頭)連接到RPI。然后它還具有9V的電源和來自電池的接地,然后通過芯片將其路由到電動機。 重要提示:請勿嘗試從RPi汲取9V和400mA電流或通過IC芯片運行9V。這可能會損壞RPi和/或L293D。為確保將電壓路由到正確的引腳,請使用上圖。
要知道IC芯片的哪一端,請在與上圖相對應的一端尋找一個小半圓缺口。
現在,您擁有L293D IC在面包板上,首先我們將M/F跳線連接到RPi。因此,在面包板上,將跳線的公端放入旁邊的插槽中:Vss,Enable 1,Input 1,Input 2和左側的GND引腳。應該有5根電線準備連接到RPi。有關引腳號,請參見上圖。現在,將電線從Vss(我希望您將其變成紅色)連接到Pi或1號針上的5V電源。接下來,將GND跳線(再次希望是黑色的)連接到GND引腳或引腳6。之后,將輸入1跳線連接到GPIO2或引腳#3。然后將跳線從輸入2連接到GPIO3或引腳5。最后,將Enable 1跳線連接到GPIO4或引腳7。到了,再也沒有M/F跳線了!到一半了!
所以,現在抓住M/M跳線。其中之一應從IC的Vs引腳到9V的正端。有很多方法可以將其保留在電池上,但是只要金屬兩端牢固接觸,膠帶就可以使用。用黑色M/M跳線將電池的負極端連接到IC的另一個GND引腳。最后,只需將IC上的兩個輸出引腳連接到電動機的兩端即可!而已!現在,一切都按照所需的方式進行了布線,不再需要任何硬件工作。上軟件。
步驟4:軟件設置
首先,我們需要在Pi上打開一個程序來編寫代碼。我們將使用IDLE 2,因此請轉到桌面的左上角,依次單擊“菜單”,“編程”和“ Python 2(IDLE)”。您應該看到帶有未命名文檔的空白文本編輯器。
我們需要做的第一件事是導入GPIO模塊。因此,在第一行中,準確鍵入對CaSe敏感的
import RPi.GPIO as GPIO
這將導入GPIO模塊
下一步,我們需要一個名為“ sleep”的命令,因此編寫
from time import sleep
下一步,我們需要命名所有引腳,因此通過寫入設置命名模式
GPIO.setmode(GPIO.BOARD)
,這會將名稱設置為電路板模式,從而只需根據上圖中間的數字命名引腳。
現在我們需要將引腳設置為輸出,所以現在寫
GPIO.setup(03, GPIO.OUT) GPIO.setup(05, GPIO.OUT) GPIO.setup(07, GPIO.OUT)
現在設置pwm命令類型
pwm=GPIO.PWM(07, 100)
下一步以0占空比啟動脈沖寬度調制,因此它尚未運行
pwm.start(0)
其余代碼根據我們想要的方式而變化運行馬達。對于第一遍,我們將在代碼中設置預定義的指令。稍后,我將說明如何編寫代碼,讓您輸入所需的方向,任務和持續時間。
因此,到目前為止,我們將編寫一個代碼,該代碼以50%的功率向前運行2秒,然后以75%的功率向后運行3秒。
首先,要設置向前寫入的方向
GPIO.output(03, True) GPIO.output(05, False)
現在,我們將PWM占空比設置為50%。寫入
pwm.ChangeDutyCycle(50)
然后打開使能引腳
GPIO.output(07, True)
然后將代碼休眠2秒鐘,以便電動機運行
sleep(2)
現在關閉使能引腳
GPIO.output(07, False)
然后反轉輸入以將其設置為反轉
GPIO.output(03, False) GPIO.output(05, True)
然后將PWM占空比更改為75%
pwm.ChangeDutyCycle(75)
,然后重新啟用啟用功能
GPIO.output(07, True)
使代碼休眠3秒鐘
sleep(3)
然后再關閉使能引腳
GPIO.output(07, False)
停止脈沖
pwm.stop()
并清除所有GPIO通道。
GPIO.cleanup()
就是這樣!現在,您有了一個代碼,它將使電動機以50%的速度向前運轉2秒,然后以75%的速度向后運轉3秒。按F5,然后保存以測試您的代碼!
*注意:您可能會收到一條錯誤消息,指出所選的GPIO通道已在使用中。這不會影響您的項目,您可以通過在代碼中寫入“ GPIO.setwarnings(False)”來使警告停止出現。*
-
直流電動機
+關注
關注
7文章
196瀏覽量
22843 -
L293D
+關注
關注
4文章
50瀏覽量
20086 -
樹莓派
+關注
關注
116文章
1706瀏覽量
105610
發布評論請先 登錄
相關推薦
評論