|
89C52單片機(jī)控制PWM調(diào)速電路實(shí)現(xiàn)小功率直流電機(jī)的轉(zhuǎn)速調(diào)節(jié),并要將其實(shí)時(shí)轉(zhuǎn)速用LED管顯示出來(lái)。而本系統(tǒng)必須符合以下幾點(diǎn)要求:
(1) 在(1000—5500)轉(zhuǎn)/分 內(nèi)對(duì)直流電機(jī)進(jìn)行任意調(diào)速,最小調(diào)速級(jí)差為1轉(zhuǎn)/分。
(2) 電機(jī)能在所設(shè)速度下穩(wěn)定運(yùn)轉(zhuǎn),運(yùn)轉(zhuǎn)速度與設(shè)定速度之差小于±20轉(zhuǎn)/分。
(3) 電機(jī)啟動(dòng)和加減80%額定負(fù)載時(shí),其轉(zhuǎn)速能迅速回到設(shè)定值,轉(zhuǎn)速超調(diào)±5%內(nèi)。
(4) 利用按鍵和LED數(shù)碼管設(shè)置速度,設(shè)置方便,快捷。
(5) 利用LED數(shù)碼管實(shí)時(shí)顯示電機(jī)速度。
(6) 電機(jī)能進(jìn)行正反轉(zhuǎn)控制。
控制方面,本設(shè)計(jì)是采用定時(shí)器控制I/O口輸出PWM信號(hào)驅(qū)動(dòng)斬波電路控制電機(jī)運(yùn)轉(zhuǎn)和調(diào)速;利用單片機(jī)外部中斷引腳的捕獲功能、電機(jī)同軸帶缺口的圓盤、光電耦合器來(lái)測(cè)量轉(zhuǎn)速;并將測(cè)得轉(zhuǎn)速和設(shè)定轉(zhuǎn)速進(jìn)行PI運(yùn)算后輸出,實(shí)現(xiàn)閉環(huán)控制;轉(zhuǎn)向調(diào)節(jié)則是用的橋式電路。顯示是利用8位LED數(shù)碼管,用按鍵進(jìn)行設(shè)定。
下面簡(jiǎn)單介紹下硬件組成和一些軟件原理:
一、硬件電路。
1、單片機(jī)選用的是STC的89C52,20MHz晶振。
2、顯示部分比較簡(jiǎn)單,用的8位7段數(shù)碼管同時(shí)顯示設(shè)定速度和實(shí)時(shí)速度。采用74LS164串行移位輸出,只占用單片機(jī)3個(gè)I/O口,刷新頻率100Hz。
3、PWM驅(qū)動(dòng)電路。使用了9012和8050兩個(gè)三極管來(lái)驅(qū)動(dòng),相信網(wǎng)上很多的,也不用我多說(shuō),只是別忘了加上續(xù)流二極管和兩個(gè)三極管之間的限流電阻就是。

4、測(cè)速電路。測(cè)速電路用的是光耦測(cè)量轉(zhuǎn)動(dòng)圓盤引起的脈沖寬度,從而可得單片機(jī)的實(shí)時(shí)速度,精度很高,可達(dá)千分之一。用的是外部中斷的。。。好像是捕獲模式,忘記了~呵呵!

5、轉(zhuǎn)向調(diào)節(jié)電路。轉(zhuǎn)向調(diào)節(jié),由于是后來(lái)加上去的,所以就沒(méi)有使用單片機(jī)控制,直接用硬件實(shí)現(xiàn),但其實(shí)原理是一樣的。原理是利用開(kāi)關(guān)控制繼電器,然后控制橋路對(duì)電機(jī)實(shí)施轉(zhuǎn)向控制。另外用一個(gè)同軸電機(jī)按正反方向接2個(gè)LED用來(lái)指示方向。PS:因?yàn)檫@是小功率電機(jī),所以就算沒(méi)有制動(dòng)電路,強(qiáng)制轉(zhuǎn)向,也不會(huì)對(duì)電機(jī)造成損壞。

二、軟件方面
中斷方面,本程序一共用了3個(gè)中斷源:定時(shí)器0,定時(shí)器2以及外部中斷1,它們的優(yōu)先級(jí)分別為:定時(shí)器0、外部中斷1為高優(yōu)先級(jí),定時(shí)器2為低優(yōu)先級(jí)。另外還用了計(jì)數(shù)器1,用做計(jì)算脈沖寬度,與外部中斷1一起構(gòu)成測(cè)速系統(tǒng)。
顯示部分程序不多說(shuō),按鍵消抖動(dòng)什么的也是街知巷聞的了。本設(shè)計(jì)中,重點(diǎn)是3個(gè),PWM調(diào)速和測(cè)速,還有PI運(yùn)算。
1、PWM的調(diào)速原理是通過(guò)調(diào)節(jié)一個(gè)斬波周期中的脈沖占空比來(lái)調(diào)節(jié)電機(jī)功率而達(dá)到調(diào)速目的。本設(shè)計(jì)中,PWM的斬波周期為1ms,那也就是說(shuō)斬波頻率為1KHz,在理論上能達(dá)到1‰線性可調(diào),也就是能以0.1%的調(diào)節(jié)精度來(lái)調(diào)節(jié)PWM占空比。程序如下:(放中斷中進(jìn)行)
void time0_int(void) interrupt 1
{ TH0= (time0_tmp/256);
TL0= (time0_tmp%256);
if(cut == 1)
{
time0_tmp = 65536-time0_set*20/12;
cut = 0;
}
else
{
time0_tmp = 65536-(time0 - time0_set)*20/12;
cut = 1;
}
}
2、測(cè)速系統(tǒng)的工作原理為:利用電機(jī)軸上帶的圓盤的缺口,引起光電開(kāi)關(guān)產(chǎn)生高電平脈沖,單片機(jī)就采集此脈沖的寬度,加以計(jì)算,得出其實(shí)時(shí)速度。
獲取脈沖寬度值子函數(shù)如下:
void getwidth_1()
{
TH1 = 0;
TL1 = 0;
n = 0;
n1 = n;
while(INT1==1&&((n-n1)<30))//n為每1MS +2
{}
if(INT1==0)
TR1 = 1; //計(jì)數(shù)器1打開(kāi)
else
goto out;
//IE1 = 0;//中斷請(qǐng)求標(biāo)志
EX1 = 1;//外部中斷1啟動(dòng)
n = 0;
n1 = n;
while(m==0&&((n-n1)<30))
{}
if(m==0)//M=1,則已經(jīng)進(jìn)入out_int1中斷,若等于0,則說(shuō)明30MS延時(shí)已過(guò)
{
TH1_1 = 0;
TL1_1 = 0;
}
out:
IE1 = 0;//中斷請(qǐng)求標(biāo)志
m = 0;
EX1 = 0;//外部中斷允許位
TR1 = 0;
width_1 = (TH1_1*256+TL1_1);//timepr=脈沖寬度 /μS
}
另外為了穩(wěn)定測(cè)得的轉(zhuǎn)速值,在程序中加了一個(gè)取平均值的函數(shù)(幾乎在整個(gè)程序中都有感覺(jué),程序?qū)懙貌痪珶挘悬c(diǎn)累贅,呵呵,但總算功能是能實(shí)現(xiàn)嘛~反正畢業(yè)設(shè)計(jì)對(duì)程序執(zhí)行效率沒(méi)要求。)
void getwidth()
{
int gw,gw1;
width = 0;
gw1 = 0;
for(gw=0;gw<6;gw++)
{
GG: getwidth_1();
if(width_1 != 0)
widthbuf[gw] = width_1;
else
goto GG;
}
width = (widthbuf[0] + widthbuf[1] + widthbuf[2] + widthbuf[3] + widthbuf[4] + widthbuf[5])/6;將測(cè)得的連續(xù)6個(gè)不為零的脈沖寬度取平均值,以消除偶然的不穩(wěn)定因素,使轉(zhuǎn)速顯示更加穩(wěn)定
3、PI調(diào)節(jié)
PI調(diào)節(jié)計(jì)算公式如下[5]:
YK = KP*EK + KI*EK2
YK:要輸出的數(shù)據(jù)增量
EK:設(shè)定值和實(shí)測(cè)值的差值
EK1:上次的EK值
EK2:EK-EK1的差值
KP:比例系數(shù)(本程序中設(shè)KP=1.6)經(jīng)反復(fù)湊試的結(jié)果
KI:積分系數(shù)(本程序中設(shè)KI=1.5)經(jīng)反復(fù)湊試的結(jié)果
當(dāng)KP和KI為以上值時(shí),系統(tǒng)處于最佳運(yùn)行狀態(tài),實(shí)驗(yàn)中表現(xiàn)為:電機(jī)原來(lái)速度為2000,當(dāng)設(shè)置為4500轉(zhuǎn)時(shí),可以在2秒之內(nèi)迅速上升并穩(wěn)定于4500±20,而超調(diào)量也僅為+300轉(zhuǎn)/分,出現(xiàn)在第一次上升的時(shí)候,下來(lái)之后便穩(wěn)定了。
速度變化曲線:
實(shí)物圖:
 

嘿嘿,希望對(duì)廣大單片機(jī)初學(xué)者有那么點(diǎn)幫助~順便再做做廣告,有興趣購(gòu)買的
可以+QQ:54281963(注明畢業(yè)設(shè)計(jì)),或者發(fā)郵件至:upssure@126.com
或者,本人也可代做51單片機(jī)系列的設(shè)計(jì),詳談。
沒(méi)學(xué)其他,呵呵,能把一樣做精也很不錯(cuò)了,反正現(xiàn)在51系列單片機(jī)功能已經(jīng)是今非昔比了,什么看門狗,PWM,AD,EEPROM,雙串口,N外部中斷口的,一應(yīng)俱全。STC剛出一款速度號(hào)稱是經(jīng)典51速度的480倍的單指令周期單片機(jī)呢。
對(duì)研究啊,創(chuàng)新啊什么的,當(dāng)然是AVR,DSP好,但是對(duì)于做產(chǎn)品來(lái)說(shuō),就當(dāng)然是價(jià)格低廉的51系列好啦~只要51能實(shí)現(xiàn)的,就盡量用51,對(duì)產(chǎn)品來(lái)說(shuō),成品很重要啊~^_^!
|