1、直流電機簡介
2、設計中的三個關注點
3、H橋電路
4、驅動芯片選擇時考慮的問題
5、L298芯片及驅動模塊
6、電機正反轉程序
7、雙電機差速轉向的原理
8、利用差速實現小原原地打轉程序
1、直流電機簡介
直流電機是智能小車及機器人制作必不可少的組成部分,它主要作用是為系統提供必須的驅動力,用以實現其各種運動。目前市面的直流電機主要分為普通電機和帶動齒輪傳動機構的直流減速電機。如圖1和圖2所示。
圖1 日本馬步奇高速電機RS380 圖2 N20減速直流電機
對于不太追求速度的場合應優先選用減速直流電機,如足球機器和滅火機器人等追求功能而對速度要求不高的場合,如圖3,此車的傳動比通常為幾十到幾百左右。一般對同一型號的減速電機,廠家都會提供多種傳動比的產品提供給用戶,應根據需要加以選擇。
而對于普通直流電機,由于轉速比較高,具體應用時應加齒輪傳動機構,當然也可以直接選擇減速直流電機,但如果對于一些速度要求比較高的應用,如飛思卡爾智能車車模,由于該比賽屬于競速賽,對速度要求比較高,市面上一般很難找到合適的減速電機,此時就需要自己設計減速機構,如圖4為飛思卡爾的電機和減速機構圖,此傳動機構傳動比為1:10左右,使得小車在空載的情況下可達到上千轉。
無論是普通直流電機還是減速電機,其電機部分目前基本都是無刷直流電機,關于什么叫無電機以及內部結構如何,這里我們不去深究,下面重點介紹一下直流電機在實際使用過程在硬件的設計及軟件的編寫中應當關注的三個方面,這里的前提是你已經根據需要選擇好了合適傳動比的電機。
2、設計中的三個關注點
1) 如何增大驅動
2) 如何實現換向
3) 如何實現調速
對于第一個問題,主要原因是電機屬于大功率的器件,而單片機的I/O口所提供的電流往往十萬有限,所以必須外加驅動電路,比如說由三極管組成放大電路。
對于第二個問題,直流電機的方向改變需要改變電機的極性,即正負反接,但目前大多數機器人制作中使用的是直流無刷電機,由于沒有電刷,而供電電源通常又為單電源,所以需要設計一個電子開關以實現換向功能。
對于第三個問題,機器人是一個需適應不同環境的智能體,其運動速度需要不斷的改變,此時就需要想法設計相應電路以實現調速度。
上面的三個問題是電機控制中必須要考慮的問題,可以通過硬件的方法實現,也可以通過軟件的方法實現,當然也可以采取硬軟結合的方法解決。目前比較通用的方法是,設計H橋電路和利用單片機產生PWM波信號。
H橋電路是用硬件的方法設計一個電路,它可以解決前面兩個問題。而第三個問題速度的調節則是通過軟件的方法,利用單片機I/O口生產PWM波信號加以實現。
這一節我們主要介紹H橋電路,后面的章節我們會專門介紹到PWM調速問題。
3、H橋電路
電機做好后后引出兩個極,如圖5所示,給兩個極能電就能夠實現其轉動,而改變其電源極性剛可以實現換向。
前面我們說過必須要解決驅動力不足和換向問題,設計一般會采用兩種方法,一是設計由分離元件組成的驅動電路實現,另一種方法則是采用專用的驅動芯片加以實現。由于專用的驅動芯片由于結構簡單、價格便宜、可靠性高等特點,因而被廣泛的應用實現電機的驅動。電機的驅動芯片很多如L298N、BST7970、MC33886等,這里我們介紹智能機器人中比較常用的LM298N驅動模塊,BST7970、MC33886一般在電機功率比較大的場合適用。在介紹LM298N驅動模塊之前,我們先介紹一下H橋電路,需要說明的是時,在下面的電路由于內部采用了三極管,三極管本身起到放大的作用,即增大了驅動電流,所以在下面的講解中我們主要側重講解如何實現換向功能。
H橋電路可以用如圖6來表示其原理:
從圖中可以看出,其形狀類似于字母“H”,作為負載的直流電機像“橋”一樣架在上面,所以稱為“H橋驅動”,4個開關所在的位置就稱為“橋臂”。
從圖中可以看出,假設開關A、D接通,電機正向轉動,而開關B、C接通時,直流電機將反向轉動,從而實現了電機的正反控制。當然實際應用中我們還可以得到其它兩種狀態:
1)剎車,即將A、C或B、D接通,則電機慣性轉動產生的電動勢將被短路,形成阻礙運動的感應電流,開成“剎車”作用。
2)惰行,4個開關全部斷開,則電機慣性所產生的電動勢將無法開成電路,從而也就不會產生阻礙運動的感應電流,電機將慣性轉動較長時間。
以上電路只是說明的原理,實際電路中我們通常將來四個開關換成三極管。如圖7所示,H橋式電機驅動電路包括4個三極管和一個電機。要使電機運轉,必須導通對角線上的一對三極管。根據不同三極管對的導通情況,電流可能會從左至右或從右至左流過電機,從而控制電機的轉向。由于H橋電路可以很方便的實現電機的正反轉的驅動因而得到了廣泛應用。
要使電機運轉,必須使對角線上的一對三極管導通。例如,如圖圖8所示,當Q1管和Q4管導通時,電流就從電源正極經Q1從左至右穿過電機,然后再經Q4回到電源負極。按圖中電流箭頭所示,該流向的電流將驅動電機順時針轉動。當三極管Q1和Q4導通時,電流將從左至右流過電機,從而驅動電機按特定的方向轉動。
圖9所示為另一對三極管Q2和Q3導通的情況,電流從右至左流過電機。當三極管Q2和Q3導通時,電流將從右至左流過電機,從而驅動電機沿另一方向轉動。
這里需要注意的是,電機一般會引出兩個極,但并無正負之分,所謂的正反轉也只是我們人為定義,具體要看實際的應用和安裝情況。
驅動電機時,保證H橋上兩個同側的三極管不會同時導通非常重要,如果三極管Q1和Q2同時導通,那么電流就會從正極穿過兩個三極管直接回到負極,此時電路中除了三極管外沒有其它任何負載,因此電路上的電流就可能達到最大值(該電流僅受電源性能限制),甚至燒壞三極管。基于上述原因,在實際驅動電路中通常要用硬件電路方便地控制三極管的開關。
圖10所示就是基于這種考慮的改進電路,它在基本的H橋電路的基礎上增加了4個與門和2個非門。4個與門同一個使能導通信號相接,這樣,用這一個信號就能控制整個電路的開關。而2個非門通過提供一種方向輸入,可以保證任何時候在H橋的同側都只有一個三極管導通。
采用以上方法,電機的運轉只需要三個信號控制,如圖11:兩個方向信號和一個使能信號。如果DIR-L信號為0,DIR-R信號為1,并且使能信號是1,那么三極管Q1和Q4導通,電流從左至右流經電機,如圖6 所示;如果DIR-L信號變為1,而DIR-R信號變為0。那么Q2和Q3將導通,電流則反向流過電機。
4、驅動芯片選擇時考慮的問題
H橋電路雖然有著許多的優點,但是在實際的制作過程中,由于元件較多,電路和搭建也較為麻煩,增加了硬件設計的復雜度。所絕大多數制作中通常直接選用專用的驅動芯片。目前市面上專用的驅動芯片很多,如上面提到的L298N、BST7970、MC33886等,但到底我們應該選用哪咱芯片呢,當然每種芯片有自己的優勢,我們應該根據設計需要從價格和性能上綜合考慮才行,這里談三個方面。
1)驅動效率的轉化
所謂驅動效率高,就是要將輸入的能量盡量多的輸出給負載,而驅動電路本身最好不消耗或少消耗能量,具體到H橋上,也就是4個橋臂在導通時最好沒有壓降,越小越好。從電路上看,這主要取決于“開關”上的壓降,其消耗為流過的電流乘以壓降,電流大小主要取決于負載電機的需要,所以對于設計來說重點應考慮盡量減小開關上的電阻從而提高效率,而在選用驅動芯片時應當考慮所選用的芯片壓降是否滿足電機驅動力的需要,像參加過飛思卡爾智能車的朋友應該清楚,一般很少有人選擇L298N芯片的,究其原因就是298N的自身壓降太大造成功率消耗太大而不滿足電機驅動需要造成的。
2)能夠通過的驅動電流
每個芯片都有自身承受的最大電流,在設計時應保證電機的工作電流不會造成芯片的燒毀,像智能車制作過程中,電機的電流可以達到4-5A,而L298最大承受的電流不能超過2A,所以這也是一般不采用298N作為驅動芯片的另一個原因。
3)芯片的價格
對于器件的價格,一般在業余的制作基本不會考慮太多,但真正在產品的設計中,價格卻是除了性能外必須考慮的另一個關鍵因素,像剛剛上面提到了L298N由于自身壓降太大,所承受的電流太少,所以不滿足智能車電機的需要,所以有的朋友會說,298N芯片不好,不能說不好,要知道從價格上7970是298的3倍之多,像做一般速度比較低的機器人,298芯片完全能夠滿足要求。
綜上所述,在選擇驅動芯片應從價格、驅動電流及壓降等方面給合考慮。
5、L298芯片及驅動模塊
L298N內部的組成其就是上面講的H橋驅動電路,所以工作原理我以上介紹的H橋相同,這里我們不在敘述,在使用時重點要了解其引腳的功能和主要的性能參數。引腳圖如圖12所示。
L298N是ST公司生產的一種高電壓,大電流的電機驅動芯片。該芯片采用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V,輸出電流大,瞬間峰值可達3A,持續工作電流為2A;額定功率為25W。內含兩個H橋的高電壓大電流全橋式驅動器,可以用來驅動直流電機和步進電機、繼電器線圈等感性負載;采用標準邏輯電平信號控制;具有兩個用控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用L298N芯片驅動電機,該芯片可以驅動一臺兩相步進電機和四相步進電機,也可以兩臺直流電機。L298N模塊的驅動電路圖如圖13所示。
對于以上電路圖有以下幾點說明:
1)電路圖中有兩個電流,一路為L298工作需要的5V電源VCC,一路為驅動電機用的電池電源VSS。
2)1腳和15腳有的電路在中間串接了大功率的電阻,可以不加
3)八個續流二極管是為了消除電機轉動時的尖峰電壓保護電機而設計,簡化電路可以不加。
4)6腳和11腳為兩路電機通道的使能開關,高電平使能所以可以直接接高電平,也可以交由單片機控制。
5)由于工作時L298的功率較大,可以適當加裝散熱片。
L298模塊的的外形圖如圖14所示:
6、電機正反轉程序
下面寫一個程序讓小車上一個電機正轉。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit PWM1=P2^0;//接IN1 控制正轉
sbit PWM2=P2^1;//接IN2 控制反轉
void main()
{
while(1)
{
PWM1=1;
PWM2=0;
}
}
下面寫一個程序讓小車上兩個個電機正轉,實現小車的前行。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit PWM1=P2^0;//接IN1 控制正轉
sbit PWM2=P2^1;//接IN2 控制反轉
sbit PWM3=P2^2;//接IN1 控制正轉
sbit PWM4=P2^3;//接IN2 控制反轉
sbit PWM5=P2^4;//接IN1 控制正轉
sbit PWM6=P2^5;//接IN2 控制反轉
sbit PWM7=P2^6;//接IN1 控制正轉
sbit PWM8=P2^7;//接IN2 控制反轉
void main()
{
while(1)
{
PWM1=1;
PWM2=0;
PWM3=1;
PWM4=0;
PWM5=1;
PWM6=0;
PWM7=1;
PWM8=0;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=500;y>0;y--);
}
7、雙電機差速轉向的原理
ZN-1A智能小車有兩種轉向的方式,差速轉向和舵機轉向。由于差速轉向目前市面上的資料和相關程序比較多,所以本教程絕大部分程序采用后輪驅動,前輪舵機實現轉向的控制方式。這里簡要介紹一下差速轉向的原理及方法,并給出一個簡單的程序,更復雜的程序請大家參考相關的資料,如可以利用ZN-1A智能小車實現小車的直立運動,即兩輪直立前行,目前世界上比較風行的兩輪直代步車就是利用這種形式實現,不過要要做兩輪直立時涉及到平衡的問題,需對加速度計和陀螺儀的知道有所了解,有興趣 朋友可以利用本小車實現直立的功能,這里不多作介紹。
所謂的差速,是指左右兩車輪的速度差,假如左邊車輪比右邊的快,則小車會偏向右。同時,左的的車輪轉速比右的慢,那么小車會向左邊轉動。目前主要有以下兩種方式。
(1)小車向左轉,可是是左輪停止,左輪繼續轉動,這樣可實現左轉,這種方式實現小角度的轉彎,在角度不大時可采用此種方式。
(2)小車向左轉,可以是左輪反轉,右輪正轉,這樣可以實現大角度的左轉,甚至可以進行原地打轉。
同理可推出小車如何向右轉向。
下面給出一個利用后輪電機差事運動實現小車原地打轉的程序。
8、利用差速實現小原原地打轉程序