專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
PWM在控制中使用非常廣泛,可以以數(shù)字量對(duì)模擬電路進(jìn)行控制。這里對(duì)PWM的原理進(jìn)行講述,并舉例說(shuō)明PWM的重要應(yīng)用。
1、PWM簡(jiǎn)介
采樣控制理論中有一個(gè)重要結(jié)論:沖量相等而形狀不同的窄脈沖加在具有慣性的環(huán)節(jié)上時(shí),其效果基本相同。PWM控制技術(shù)就是以該結(jié)論為理論基礎(chǔ),對(duì)半導(dǎo)體開(kāi)關(guān)器件的導(dǎo)通和關(guān)斷進(jìn)行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來(lái)代替正弦波或其他所需要的波形。按一定的規(guī)則對(duì)各脈沖的寬度進(jìn)行調(diào)制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率。
PWM控制的基本原理很早就已經(jīng)提出,但是受電力電子器件發(fā)展水平的制約,在上世紀(jì)80年代以前一直未能實(shí)現(xiàn)。直到進(jìn)入上世紀(jì)80年代,隨著全控型電力電子器件的出現(xiàn)和迅速發(fā)展,PWM控制技術(shù)才真正得到應(yīng)用。隨著電力電子技術(shù)、微電子技術(shù)和自動(dòng)控制技術(shù)的發(fā)展以及各種新的理論方法,如現(xiàn)代控制理論、非線性系統(tǒng)控制思想的應(yīng)用,PWM控制技術(shù)獲得了空前的發(fā)展。通俗的說(shuō)PWM是采用數(shù)字量對(duì)模擬量進(jìn)行合成的方法。
數(shù)字量是怎么樣對(duì)模擬量進(jìn)行合成的呢?請(qǐng)看下例:
用PWM波代替正弦沖半波:
上圖中用一系列等幅不等寬的脈沖來(lái)代替一個(gè)正弦半波,正弦半波N等分,看成N個(gè)相連的脈沖序列,寬度相等,但幅值不等;用矩形脈沖代替,等幅,不等寬,中點(diǎn)重合,面積(沖量)相等,寬度按正弦規(guī)律變化。這兩種波作用于電路時(shí),所產(chǎn)生的效果基本相同。
2、PWM的應(yīng)用
基于面積相等的原理實(shí)際上可以對(duì)任意波形進(jìn)行合成,再如下圖:
圖中a波形作用于LED上,表現(xiàn)為光強(qiáng)的遞增變化,b波形采用PWM對(duì)a進(jìn)行合成。在某一段時(shí)間內(nèi)兩種波形的面積是相同的,因此b作用于LED上時(shí),效果與a是相同的。b波以一定頻率的等幅不等寬的脈沖序列出現(xiàn),脈沖寬度遞增。
PWM的單片機(jī)實(shí)現(xiàn)如下:
#include
#define uchar unsigned char
/*—————————————————————————————-
以程序用于說(shuō)明PWM的實(shí)現(xiàn)
——————————————————————————————-*/
/**
程序思路說(shuō)明:
關(guān)于頻率和占空比的確定,對(duì)于12M晶振,
假定PWM輸出頻率為1KHZ,這樣定時(shí)中斷次數(shù) *
設(shè)定為C=10,即0.01MS中斷一次,則TH0=FF,TL0=F6;
由于設(shè)定中斷時(shí)間為0.01ms,這樣*
可以設(shè)定占空比可從1-100變化。即0.01ms*100=1ms
*/
/**
TH0和TL0是計(jì)數(shù)器0的高8位和低8位計(jì)數(shù)器,
計(jì)算辦法:TL0=(65536-C)%256;
TH0=(65536-C)/256,其中C為所要計(jì)數(shù)的次數(shù)即多長(zhǎng)時(shí)間產(chǎn)生一次中斷;
TMOD是計(jì)數(shù)器*
工作模式選擇,0X01表示選用模式1,它有16位計(jì)數(shù)器,
最大計(jì)數(shù)脈沖為65536,最長(zhǎng)時(shí) 間
為1ms*65536=65.536ms
**/
#define V_TH0 0XFF
#define V_TL0 0XF6
#define V_TMOD 0X01
void init_sys(void); /系統(tǒng)初始化函數(shù)/
void Delay5Ms(void);
unsigned char ZKB1,ZKB2;
void delay(unsigned int time)
{
while(time—);
}
void main (void)
{
init_sys();
ZKB1=40; /占空比初始值設(shè)定/
ZKB2=60; /占空比初始值設(shè)定/
while(1)
{
if (!P1_1) //如果P1.1為低電平,增加占空比
{
delay(50000);
if(!P1_1)
{
ZKB1++;
ZKB2=100-ZKB1;
}
}
if(!P1_2) //如果P1.2為低電平,減少占空比
{
delay(50000);
if (!P1_2)
{
ZKB1--;
ZKB2=100-ZKB1;
}
}
/對(duì)占空比值限定范圍/
if (ZKB1>99) ZKB1=1;
if (ZKB1<1) ZKB1=99;
}
}
/系統(tǒng)初始化函數(shù)/
void init_sys(void)
{
/定時(shí)器初始化/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
/中斷函數(shù)/
void timer0(void) interrupt 1 using 2
{
static uchar click=0; /中斷次數(shù)計(jì)數(shù)器變量/
TH0=V_TH0; /恢復(fù)定時(shí)器初始值/
TL0=V_TL0;
++click;
if (click>=100) click=0;
if (click<=ZKB1)
/當(dāng)小于占空比值時(shí)輸出低電平,高于時(shí)是高電平,從而實(shí)現(xiàn)占空比的調(diào)整/
P1_3=0;
else
P1_3=1;
if (click<=ZKB2)
P1_4=0;
else
P1_4=1;
}
以上是PWM的簡(jiǎn)單應(yīng)用,用得更多的是采用它進(jìn)行直流電機(jī)調(diào)速,其實(shí)就是把波形作用于電機(jī)驅(qū)動(dòng)電路的使用端,有必要對(duì)電機(jī)驅(qū)動(dòng)電路進(jìn)行介紹。
1)H橋式電機(jī)驅(qū)動(dòng)電路:
上圖所示為一個(gè)典型的直流電機(jī)控制電路。電路得名于“H橋式驅(qū)動(dòng)電路”是因?yàn)樗男螤羁崴谱帜窰。4個(gè)三極管組成H的4條垂直腿,而電機(jī)就是H中的橫杠(上圖及隨后的兩個(gè)圖都只是示意圖,而不是完整的電路圖,其中三極管的驅(qū)動(dòng)電路沒(méi)有畫(huà)出來(lái))。電路中,H橋式電機(jī)驅(qū)動(dòng)電路包括4個(gè)三極管和一個(gè)電機(jī)。要使電機(jī)運(yùn)轉(zhuǎn),必須導(dǎo)通對(duì)角線上的一對(duì)三極管。根據(jù)不同三極管對(duì)的導(dǎo)通情況,電流可能會(huì)從左至右或從右至左流過(guò)電機(jī),從而控制電機(jī)的轉(zhuǎn)向。
要使電機(jī)運(yùn)轉(zhuǎn),必須使對(duì)角線上的一對(duì)三極管導(dǎo)通。例如,如上圖所示,當(dāng)Q1管和Q4管導(dǎo)通時(shí),電流就從電源正極經(jīng)Q1從左至右穿過(guò)電機(jī),然后再經(jīng)Q4回到電源負(fù)極。按圖中電流箭頭所示,該流向的電流將驅(qū)動(dòng)電機(jī)順時(shí)針轉(zhuǎn)動(dòng)。當(dāng)三極管Q1和Q4導(dǎo)通時(shí),電流將從左至右流過(guò)電機(jī),從而驅(qū)動(dòng)電機(jī)按特定方向轉(zhuǎn)動(dòng)(電機(jī)周圍的箭頭指示為順時(shí)針?lè)较颍?/p>
上圖所示為另一對(duì)三極管Q2和Q3導(dǎo)通的情況,電流將從右至左流過(guò)電機(jī)。 當(dāng)三極管Q2和Q3導(dǎo)通時(shí),電流將從右至左流過(guò)電機(jī),從而驅(qū)動(dòng)電機(jī)沿另一方向轉(zhuǎn)動(dòng)(電機(jī)周圍的箭頭表示為逆時(shí)針?lè)较颍?/p>
2)使能控制與方向邏輯
驅(qū)動(dòng)電機(jī)時(shí),保證H橋上兩個(gè)同側(cè)的三極管不會(huì)同時(shí)導(dǎo)通非常重要。如果三極管Q1和Q2同時(shí)導(dǎo)通,那么電流就會(huì)從正極穿過(guò)兩個(gè)三極管直接回到負(fù)極。此時(shí),電路中除了三極管外沒(méi)有其他任何負(fù)載,因此電路上的電流就可能達(dá)到最大值(該電流僅受電源性能限制),甚至燒壞三極管?;谏鲜鲈?,在實(shí)際驅(qū)動(dòng)電路中通常要用硬件電路方便地控制三極管的開(kāi)關(guān)。上圖所示就是基于這種考慮的改進(jìn)電路,它在基本H橋電路的基礎(chǔ)上增加了4個(gè)與門和2個(gè)非門。4個(gè)與門同一個(gè)“使能”導(dǎo)通信號(hào)相接,這樣,用這一個(gè)信號(hào)就能控制整個(gè)電路的開(kāi)關(guān)。而2個(gè)非門通過(guò)提供一種方向輸人,可以保證任何時(shí)候在H橋的同側(cè)腿上都只
有一個(gè)三極管能導(dǎo)通。(與前面的示意圖一樣,上圖所示也不是一個(gè)完整的電路圖,特別是圖中與門和三極管直接連接是不能正常工作的。)
具有使能控制和方向邏輯的H橋電路采用以上方法,電機(jī)的運(yùn)轉(zhuǎn)就只需要用三個(gè)信號(hào)控制:兩個(gè)方向信號(hào)和一個(gè)使能信號(hào)。如果DIR-L信號(hào)為0,DIR-R信號(hào)為1,并且使能信號(hào)是1,那么三極管Q1和Q4導(dǎo)通,電流從左至右流經(jīng)電機(jī)(如上圖所示);如果DIR-L信號(hào)變?yōu)?,而DIR-R信號(hào)變?yōu)?,那么Q2和Q3將導(dǎo)通,電流則反向流過(guò)電機(jī)。
實(shí)際使用的時(shí)候,用分立件制作H橋式是很麻煩的,好在現(xiàn)在市面上有很多封裝好的H橋集成電路,接上電源、電機(jī)和控制信號(hào)就可以使用了,在額定的電壓和電流內(nèi)使用非常方便可靠。比如常用的L293D、L298N、TA7257P、SN754410等。
3)L298電機(jī)驅(qū)動(dòng)芯片介紹
L298是一種高電壓,高電流電機(jī)驅(qū)動(dòng)集成電路,內(nèi)置雙路全橋驅(qū)動(dòng),可以同時(shí)驅(qū)動(dòng)兩個(gè)直流電機(jī),通過(guò)外部控制信號(hào)與PWM,可以實(shí)現(xiàn)電機(jī)的調(diào)向與調(diào)速,也可以驅(qū)動(dòng)一個(gè)步進(jìn)電機(jī)。
芯片封裝
引腳定義
編號(hào)
名稱
功能描述
1,15
Sense A Sense B
在此引腳與地之間接采樣電阻,用來(lái)調(diào)節(jié)負(fù)載電流
2,3
Out1 Out2
橋式電路A的的輸出端,接電機(jī)
4
Vs
輸出端電源供給
5,7
Input 1 Input2
橋式電路A的控制端
6,11
Enable A Enable B
橋式電路A與B的使能端
8
GND
地
9
VSS
邏輯控制地
10,12
Input 3 Input4
橋式電路B的控制端
13,14
Out3 Out4
橋式電路B的的輸出端,接電機(jī)
-
NC
不接
將上面的PWM例程產(chǎn)生的波形作用于電機(jī)的使能端上,就可以實(shí)現(xiàn)電機(jī)的調(diào)速。至于方向的控制,只需兩個(gè)IO接于控制端即可。