http://www.geekfan.net/9786/
本文由 極客范 - Boyd Wang 翻譯自 Adafruit.com。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。
概覽
這節課我們來學習如何使用Python和L293D芯片控制直流電機的速度和轉向。
在第八課裡,我們學習了如何使用小派產生脈沖來控制伺服馬達的位置。這節課我們將使用脈沖和L293D馬達控制芯片來控制一個直流電機的轉速並交替變換它的旋轉方向。
你需要的:
要完成這個項目,你需要下面一些東西。
Adafruit Occidentalis 0.2及之後的操作系統
PWM
PWM(Pulse Width Modulation,脈沖寬度調制)是一項用於控制電力的技術。在這裡我們使用它來控制供給直流電機的電量及它的轉速。
PWM針每1/500秒產生一次脈沖。脈沖的長度控制了直流電機所能獲得的電量。沒有脈沖電機就不會轉動,一次短脈沖會使電機以很慢的速度轉動。如果脈沖持續總長度一半的時間,那麼它就會獲得總電量一半的電量。
PWM核心模塊
Adafruit與Sean Cross一起編寫了一個核心模塊被包含在了Occidentalis發行版裡。更多的細節請參照這篇教程。如果你想在Raspbian或者其他發行版上使用這個模塊,參考這裡來把模塊安裝到你的環境裡。
你已經在第八課裡使用過了PWM與伺服馬達核心模塊,用於控制伺服馬達。這一次,你將使用相同的模塊來控制電機的轉速。
這個模塊使用文件類型的接口,你可以通過讀寫這些特定的文件來控制針腳輸出進一步控制伺服電機的行為。這使得使用Python或者其他語言來編寫該接口十分容易。
文件 – 描述
active – 1為激活,0為未激活。你可以通過讀取它來查找輸出針是否被激活,或者通過改寫控制它的激活或未激活。
delayed – 如果設置為1,你對其他文件的改動不會起作用直到你使用上面的active來激活輸出針。
mode – 改寫文件來設置針腳是pwm,servo(伺服馬達)還是audio(音頻)。顯然這裡我們要設置為servo。注意這些針也會被小派的音頻輸出使用,所以你不能在使用聲音的同時控制一個伺服馬達。
frequency – 每秒產生的脈沖次數。
duty – 這個值應該介於0到100之間,代表了脈沖長度的百分比。數值越大,轉速越快。
L293D
這是一個非常有用的芯片。它實際上可以獨立控制兩個電機。這節課我們將只使用芯片的一半針腳,在芯片右手邊的大多數針腳用於控制第二個電機,但在樹莓派上只有一個PWM輸出針腳。
L293D有兩個+V的針腳(8和16)。+Vmotor(8)針為電機提供電力,+V(16)針作為芯片的邏輯針腳。我們將把第16針接到樹莓派上然後把第8針接到電池盒上。
硬件部分
為什麼我們要在這個項目裡使用L293D芯片?有兩個原因。第一個原因是小派似乎還沒有強大到能夠直接驅動一個電機並且這樣做可能會損壞樹莓派。
第二個原因是,在這篇教程裡,我們即要控制電機的轉速,也要控制電機的轉向。要達到這一點,需要反轉電機的電流方向,而L239D恰好就是被設計用來達到這一目的的,我們可以通過兩個電機控制針腳實現。
一小塊面包板的大小很適合這篇教程。
軟件部分
因為我們需要使用控制針腳(連接GPIO的第4針和第17針),所以我們也需要用到GPIO庫。更多細節請參考第四課。
有很多種方法能把下面的展示的代碼弄到你的樹莓派裡。最簡單的方法可能是使用SSH連接到小派上(參見第六課)然後使用下面的命令打開一個編輯器:
粘貼下面的代碼,然後用Ctrl+X保存。
代碼在這:
這個Python程序首先把兩個GPIO針設置為輸出針。然後定義了一個與第八課裡面一樣的為了使用方便的方法(「set」),用於寫入PWM核心模塊。後面我們將會用它設置PWM參數。
另外我們定義了兩個方法,」clockwise」和」counter_clockwise」,它們通過控制輸出針達到改變電機轉向的目的。
如果兩個輸出針都置為高或者置為低,那麼電機將會停止。如果一針為高一針為低那麼電機將朝一個方向轉動,如果兩針的電平反轉,那麼電機的轉向也將反轉。程序循環等待用戶輸入一個字母(「f」或」r」)以及一個0到9之間的數字。字母設置了電機的轉向數字設置了轉速,數字將會乘以11然後變成一個0到99之間PWM庫所期望的百分比值。
測試&配置
要運行這個程序,你需要超級用戶權限,所以使用下面的命令吧:
原文鏈接: Adafruit.com 翻譯: 極客范 - Boyd Wang
譯文鏈接: http://www.geekfan.net/9786/
[ 轉載請保留原文出處、譯者和譯文鏈接。 ]