Adafruit的樹莓派教程第九課:控制一個直流電機

http://www.geekfan.net/9786/


本文由 極客范 - Boyd Wang 翻譯自 Adafruit.com。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。

概覽

這節課我們來學習如何使用Python和L293D芯片控制直流電機的速度和轉向。

lesson9_1

在第八課裡,我們學習了如何使用小派產生脈沖來控制伺服馬達的位置。這節課我們將使用脈沖和L293D馬達控制芯片來控制一個直流電機的轉速並交替變換它的旋轉方向。

你需要的:

要完成這個項目,你需要下面一些東西。

1個樹莓派
lesson9_2

1個樹莓派擴展板
lesson9_3

一把公對公跳線
lesson9_4

1個小塊面包板
lesson9_5

1個6V直流電機
lesson9_6

L293D馬達控制芯片
lesson9_7

Adafruit Occidentalis 0.2及之後的操作系統
lesson9_8

4節5號或7號電池盒及電池
lesson8_8

PWM

PWM(Pulse Width Modulation,脈沖寬度調制)是一項用於控制電力的技術。在這裡我們使用它來控制供給直流電機的電量及它的轉速。

下面的圖表展示了從樹莓派的PWM針腳產生的脈沖信號。
lesson9_10

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輸出針腳。

lesson9_11

L293D有兩個+V的針腳(8和16)。+Vmotor(8)針為電機提供電力,+V(16)針作為芯片的邏輯針腳。我們將把第16針接到樹莓派上然後把第8針接到電池盒上。

硬件部分

為什麼我們要在這個項目裡使用L293D芯片?有兩個原因。第一個原因是小派似乎還沒有強大到能夠直接驅動一個電機並且這樣做可能會損壞樹莓派。

第二個原因是,在這篇教程裡,我們即要控制電機的轉速,也要控制電機的轉向。要達到這一點,需要反轉電機的電流方向,而L239D恰好就是被設計用來達到這一目的的,我們可以通過兩個電機控制針腳實現。

lesson9_12

一小塊面包板的大小很適合這篇教程。

軟件部分

因為我們需要使用控制針腳(連接GPIO的第4針和第17針),所以我們也需要用到GPIO庫。更多細節請參考第四課

有很多種方法能把下面的展示的代碼弄到你的樹莓派裡。最簡單的方法可能是使用SSH連接到小派上(參見第六課)然後使用下面的命令打開一個編輯器:

粘貼下面的代碼,然後用Ctrl+X保存。

lesson9_13

代碼在這:

這個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/

轉載請保留原文出處、譯者和譯文鏈接。 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值