這段時間一直忙著開發基于 .NET Micro Framwork 系統的遠程醫療系統(參見: http://space.cnblogs.com/group/topic/41835/ ),所以隔了近一個禮拜的時間,才有精力繼續研究 PWM 驅動智能小車的問題。
以前對步進電機和直流電機的控制了解不深,以為僅對步進電機而言,才能進行 PWM 控制,及到購買相關的驅動板和步進電機后,才發現由于驅動板的原因,控制步進電機的方向、速度只能通過 IO 控制,相關內容請參見我以前寫的博文《 步進電機控制(非 PWM 模式) 》。
在介紹具體的控制代碼之前,為了便于更深入的了解 PWM 控制直流電機的機制,我們先粗略了解一下 H 橋驅動直流電機的原理。
( 1 )、 H 橋式電機驅動電路包括 4 個三極管和一個電機;
( 2 )、導通 Q1 和 Q4 ,電流從 Q1 經電機流到 Q4 ,電機順時針轉動;
( 3 )、導通 Q3 和 Q2 ,電流從 Q3 經電機流到 Q2 ,電機逆時針轉動;
( 4 )、電流的大小,決定了電機的轉速,通過 PWM 的占空比(電流通斷比)來決定電流的大小,從而間接控制了電機的轉速。
當然為了提高驅動能力三級管會換為 MOS 管,不過其原理都是一樣的。但是實際使用的時候,用分立元件制作 H 橋是很麻煩的,現在都是采用封裝了 H 橋的集成電路芯片,如比較常用芯片有 L293B 、 L293D 、 L298N 、 TA7257P 、 SN754410 等。
更多關于 H 橋的相關知識,請參見如下文章:
( 1 )、《 關于直流電機 H 橋驅動方案的選擇 》
( 2 )、《 H 橋及直流電機驅動電路詳述文檔信息 》
( 3 )、《 直流電機的 PWM 沖調速控制技術 》
我們目前所選用的四路直流電機驅動器,其核心芯片就是 L293B 芯片,每個芯片集成了兩個 H 橋電路,可以同時控制兩路直流電機。
L293B 芯片的原理圖如上圖所示,內含兩路 H 橋,四路輸入,兩路方向控制,兩路 PWM 控制。
實際應用發現,讓直流電機正反轉有如下組合控制(僅以 A 路示例)
( 1 )、 A 向 高電平輸入 PWMA 輸入 PWM 方波 直流電機正向旋轉
( 2 )、 A 向 低電平輸入 PWMA 輸入 PWM 方波 直流電機反向旋轉
( 3 )、 A 向和 PWMA 交換, A 向輸入 PWM 方波, PWMA 保持高電平或低電平
不同的組合,不同的控制方式,則直流電機的運轉方向不同,并且有的組合 PWM 占空比高,反而轉速低,而有的就是占空比高,則轉速也高。
M1_S – PA6 (TIM3_CN1)
M1_D – PA4
M2_S – PA7 (TIM3_CN2)
M2_D – PA5
智能小車,我們選用相對低價,且比較容易安裝紅牛開發板的小車底盤,共有兩種組裝方案,如下圖所示,我比較傾向推薦第二種組裝方案。
( 1 )、小車底盤散件;
( 2 )、安裝后的小車;
( 3 )、 .NET Micro Framework 開發板固定到小車底盤上(藍色區為安裝固定位置)
( 4 )、不用小車上層板,直接用銅軸固定開發板;
驅動板供電,可以直接選擇 9V 的電池,不過開發板也需要另行購買 5V 左右的電池。此外也可以購買 6 節普通的 5 號充電電池( 3 節給開發板供電, 3+3 節給驅動板供電),通過電池盒給驅動板和開發板供電。
由于底層我已經封裝了 PWM 驅動庫,所以用 C# 開發小車的控制代碼,將非常的容易,本示例的代碼如下:
public static void Main()
{
PWM pwm = new PWM ( PWM . Timer .T3, 1000, 100);
OutputPort Lc = new OutputPort (( Cpu . Pin ) GPIO_NAMES .PA4, false );
pwm.Start( PWM . Channels .CH1, 50, PWM . Mode .PWM1); //PA6
OutputPort Rc = new OutputPort (( Cpu . Pin ) GPIO_NAMES .PA5, false );
pwm.Start( PWM . Channels .CH2, 90, PWM . Mode .PWM1); //PA7
while ( true )
{
Thread .Sleep(1000);
}
}
我們選用 Timer3 進行 PWM 輸出,查看開發板原理圖, Timer3 的第一路 PWM 輸出的管腳為 PA6 ,第二路為 PA7 ,我們選擇 PA4 和 PA5 作為方向控制。
函數簡介:
( 1 )、 PWM 聲明
public PWM( PWM . Timer timer, uint f, ushort count);
timer – 芯片時鐘,可選 Timer2 , Timer3 , Timer4 , Timer5 ;
f – PWM 輸出頻率,一般建議 1000 以上,不過幾百也可以,網友可以自行測試。
Count – 計數(可看成占空比的分母)
( 2 )、 PWM 開始輸出
public int Start( PWM . Channels ch, ushort dutyCycle, PWM . Mode mode);
ch – PWM 通道,可有四路通道
dutyCycle – 可看成占空比的分子
mode – pwm 輸出方式,可以是方波,也可以強制為高或低;
( 3 )、 PWM 停止輸出
public int Stop( PWM . Channels ch);
(運行時的截圖)
小車的運行視頻: http://video.sina.com.cn/v/b/37930017-1804832611.html
由于目前還沒有考慮添加遙控設備,所以我們只能先讓智能小車進行轉圈了,后續文章我會考慮添加無線控制設備,使我們可以遠程控制小車的行進及快慢。
附:網友寫的相關文章《 MF 控制小車 (PWM 驅動直流電機 ) 》:
http://blog.csdn.net/fangyuantdy/archive/2010/08/29/5848506.aspx
【本文相關模塊或組件】
( 1 )、小車底盤
http://item.taobao.com/item.htm?id=7218838776
( 2 )、四路直流電機驅動器
http://item.taobao.com/item.htm?id=7218717808
( 3 )、 .NET Micro Framework 開發板
http://item.taobao.com/item.htm?id=7117999726
( 4 )、雙排陣
http://item.taobao.com/item.htm?id=7167440992
( 5 )、電池盒
http://item.taobao.com/item.htm?id=7234239692
http://item.taobao.com/item.htm?id=7233955466
( 6 )、電源插頭
http://item.taobao.com/item.htm?id=7254102440
( 7 )、杜邦線
http://item.taobao.com/item.htm?id=7233742386
此外尤值得一提的是,目前微軟官方越來越凸顯對 .NET Micro Framework 的重視,在 MSDN 微軟中文技術論壇 專門開辟了 .NET Micro Framework 欄目。
Windows Embedded 嵌入式技術論壇鏈接地址如下:
http://social.msdn.microsoft.com/Forums/zh-CN/category/embeddedtechnologycn
注: 需要紅牛開發板固件在 V0.9.9 以上
本文源碼: http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/PWMCar.rar
MF 快速參考: .NET Micro Framework 快速入門
MF 中文討論組: http://space.cnblogs.com/group/MFSoft/
微軟官方論壇: MSDN 微軟中文技術論壇 (.NET Micro Framework)
開發板簡明手冊: http://blog.sina.com.cn/s/blog_6b938f630100kh0k.html
【低價開發板】 http://item.taobao.com/item.htm?id=7117999726
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
