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

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