基于ATmega8的直流電機(jī)PWM調(diào)速控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3、控制程序
以下是ATmega8單片機(jī)實(shí)現(xiàn)電機(jī)控制的部分程序:
PWM控制器的初始化:
voidtimer1_init(void)
{ OCR1A=0; //初始化為0,電機(jī)停止
OCR1B=0; //初始化為0,電機(jī)停止
TCCR1A=(1TCCR1B=(1 TCNT1=1;
CLR_IN1;
SET_IN2;
CLR_IN3;
SET_IN4;
}
定時(shí)器0中斷服務(wù)函數(shù),用于控制PWM1A的時(shí)間:
SIGNAL(SIG_OVERFLOW0)
{ if(Timer0_TickPWM1A_counter)
{ Timer0_Tick++;}
else{printf(ACK:);
SET_IN3;
SET_IN4;
OCR1A=0;
TIMSK=~_BV(TOIE0);
}
}
電機(jī)正轉(zhuǎn),speed為速度(0-255可調(diào)),choose為電機(jī)通道選擇(R為右、L為左):
voidfor_ward(ucharspeed,charchoose)
{ if(ch=='R')
{ OCR1B=speed; //PWM1B_EN;
SET_IN1;
CLR_IN2; }
Else
{ OCR1A=speed;//PWM1A_EN;
SET_IN3;
CLR_IN4; }
}
五、結(jié)語(yǔ)
利用ATmega8單片機(jī)產(chǎn)生的PWM信號(hào),加入數(shù)字PID算法實(shí)現(xiàn)對(duì)電機(jī)速度的控制,提高了系統(tǒng)的控制精度,保證了電機(jī)轉(zhuǎn)速的穩(wěn)定性;電機(jī)的啟動(dòng)、停止、左右轉(zhuǎn)和速度都由程序定義,調(diào)試時(shí)只需修改PWM信號(hào)占空比即可實(shí)現(xiàn)速度控制,改變輸出口電平即可實(shí)現(xiàn)電機(jī)正反轉(zhuǎn),無(wú)須改變系統(tǒng)硬件電路,即可實(shí)現(xiàn)各種控制,能有效縮短開(kāi)發(fā)周期,提高效率;結(jié)合了受限倍頻單極性可逆PWM電機(jī)驅(qū)動(dòng)電路,增強(qiáng)了系統(tǒng)的驅(qū)動(dòng)能力,提高了系統(tǒng)的可靠性和性價(jià)比。電路設(shè)計(jì)簡(jiǎn)單,電機(jī)控制方便,有利于廣泛推廣。本文引用地址:http://www.ex-cimer.com/article/162036.htm
pid控制器相關(guān)文章:pid控制器原理
pwm相關(guān)文章:pwm原理
脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理
評(píng)論