周首杰


摘 要:PWM變頻調速是目前應用最多的一種交流異步電機變頻調速方法。隨著新能源汽車的大量推向市場,通過變頻調速來控制汽車行駛速度已經成為新能源汽車的最大特點及亮點。文中從實際應用出發,討論交流異步電機PWM調速的軟件、硬件設計,并給出較為詳細的參考設計。
關鍵詞:直流電源電路;單相變頻電路;PWM;定時設置;自動重裝載;變頻調速軟件
中圖分類號:TP211文獻標識碼:A文章編號:2095-1302(2019)10-00-03
0 引 言
PWM變頻調速是應用非常廣泛的一種交流電機調速方法,采用單片機進行頻率控制。本文設計將51系列加強型方法STC12C5024AD單片機作為主控制器,單片機電源采用5 V供電,交流輸入電源由50 Hz,AC 220/15 V電源提供,經過PWM變頻器后輸出15 V可調頻交流電源。
1 硬件設計
1.1 電源設計
系統采用變壓器變頻后,為變頻器提供16 V交流電源輸入,經D1半波整流及電容C2,C4濾波,通過電阻限流保護,為ST7805提供電源,再經7805穩壓電源后輸出+5 V直流電,為單片機提供電源。二極管D2整流后提供一個負電源。電源電路如圖1所示。
1.2 單片機控制電路設計
單片機控制電路如圖2所示,主控制器采用51系列的擴展芯片STC12C5201。STC12C5201是宏晶公司設計生產的一款加強型51系列單片機,采用24C02作為頻率儲存,停電后再次啟動時,可按上次記憶的頻率繼續運行,24C02與單片機之間采用I2C方式通信。K1按鍵用于上調頻率,K2按鍵用于下調頻率,每按下一次分別變化0.1 Hz。PWM信號經P3.7輸出(P3.7管腳的第二功能是CCP0輸出)。STC12C5201管腳封裝如圖3所示,采用20腳雙列直插封裝。
1.3 輸出電路設計,
輸出電路如圖4所示,通過阻容電路與NE5532將PWM信號轉換成正弦波信號進行輸出,再經Q1,Q2,Q3,Q4,Q8,Q9,Q10,Q11組成的功放電路進行放大輸出。
2 軟件設計
單極PWM輸出波形如圖5所示,改變脈沖寬度可得到正弦波的不同點電壓。改變t1的長度,在一個周期T內產生脈沖個數不變的情況下,t1發生變化,那么T也會相應地發生變化,T的變化即電源頻率的變化。單片機輸出的PWM信號實測波形如圖6所示,經過調制后輸出的波形如圖7所示。
本文設計采用定時器1進行頻率控制,對定時器1的操作即對頻率的操作。定時器1采用模式1即16位定時計數器模式,由定時器1控制t1。脈沖寬度用Timer0控制,將Timer0設置為自動重裝載狀態。定時器1的初始化程序如下:
void TIMER1_init(void)
{
//Set timer1 to mode 1
TMOD &= 0x0f;
TMOD |= 0x10;
}//初始化定時器1
定時器0用來控制輸出可變脈沖寬度的電壓信號,決定脈沖占空比,程序如下:
void Pwm_init(void)
{
CMOD = 0x80; //Set PCA timer,PCAfosc = fosc/12
CMOD = 0x2a; //Set PCA timer,PCAfosc = fosc/2
CL = 0x00; //PCA counter low 8 bit
CH= 0x00; //PCA counter high 8 bit
CCAPM0 = 0x42;
//0100,0010 Setup PCA module 0 in PWM mode
PwmWidthPointer = 0;
CCAP0L = PWM_width_array[PwmWidthPointer];
CCAP0H = PWM_width_array[PwmWidthPointer];
PCA_PWM0 = 0x00;
CR = 1; //Start PCA timer
}
void Pwm_no_output(void)
{
CCAP0L = 0xff;
CCAP0H = 0xff;
}
code Uint8 PWM_width_array[] = {
0x80,0x7a,0x72,0x6a,0x62,0x5b,0x53,0x4b,0x45,0x3c,0x37,0x30,0x2b,0x25,0x1f,0x1a,0x16,0x12,0x0c,0x0b,0x08,0x05,0x04,0x02,0x01,0x01,0x01,0x02,0x04,0x05,0x08,0x0b,0x0c,0x12,0x16,0x1a,0x1f,0x25,0x2b,0x30,0x37,0x3c,0x45,0x4b,0x53,0x5b,0x62,0x6a,0x72,0x7a,0x80,0x86,0x8e,0x96,0x9e,0xa5,0xad,0xb5,0xbb,0xc4,0xc9,0xd0,0xd5,0xdb,0xe1,0xe6,0xea,0xee,0xf4,0xf5,0xf8,0xfb,0xfc,0xfe,0xff,0xff,0xff,0xfe,0xfc,0xfb,0xf8,0xf5,0xf4,0xee,0xea,0xe6,0xe1,0xdb,0xd5,0xd0,0xc9,0xc4,0xbb,0xb5,0xad,0xa5,0x9e,0x96,0x8e,0x86,
};
通過定時器1的定時中斷控制頻率及占空比,程序如下:
static void TIMER1_interrupt_server(void) interrupt 3
{
Timer1_disable();
TH1 = FreqHighArray[bFreq1Step];
TL1 = FreqLowArray[bFreq1Step];
PwmWidthPointer ++;
if(PwmWidthPointer> 99)
PwmWidthPointer = 0;
if(Sys_state == SYS_STANDBY)
{
CCAP0L = 0xff;
CCAP0H = 0xff;
}
else
{
CCAP0L = PWM_width_array[PwmWidthPointer];
CCAP0H = PWM_width_array[PwmWidthPointer];
}
Timer1_enable();
}
code Uint8 FreqHighArray[] =
{
0xf8/*57.4000Hz*/,0xf8/*57.5325Hz*/,0xf8/*57.6650Hz*/,0xf8/*57.7975Hz*/,0xf8/*57.9300Hz*/,0xf8/*58.0625Hz*/,0xf8/*58.1950Hz*/,0xf8/*58.3275Hz*/,0xf8/*58.4600Hz*/,0xf8/*58.5925Hz*/,0xf8/*58.7250Hz*/,0xf8/*58.8575Hz*/,0xf8/*58.9900Hz*/,0xf8/*59.1225Hz*/,0xf8/*59.2550Hz*/,0xf8/*59.3875Hz*/,0xf8/*59.5200Hz*/,0xf8/*59.6525Hz*/,0xf8/*59.7850Hz*/,0xf8/*59.9175Hz*/,0xf8/*60.0500Hz*/,0xf8/*60.1825Hz*/,0xf8/*60.3150Hz*/,0xf8/*60.4475Hz*/,0xf8/*60.5800Hz*/,0xf8/*60.7125Hz*/,0xf8/*60.8450Hz*/,0xf8/*60.9775Hz*/,0xf8/*61.1100Hz*/,0xf8/*61.2425Hz*/,0xf8/*61.3750Hz*/,0xf8/*61.5075Hz*/,0xf8/*61.6400Hz*/,0xf8/*61.7725*Hz/,0xf8/*61.9050Hz*/,0xf8/*62.0375Hz*/,0xf8/*62.1700Hz*/,0xf8/*62.3025Hz*/,0xf8/*62.4350Hz*/,0xf8/*62.5675Hz*/,0xf9/*62.7000Hz*/
};
code Uint8 FreqLowArray[] = {
0x53/*57.4000Hz*/,0x57/*57.5325Hz*/,0x5b/*57.6650Hz*/,0x60/*57.7975Hz*/,0x64/*57.9300Hz*/,0x68/*58.0625Hz*/,0x6d/*58.1950Hz*/,0x72/*58.3275Hz*/,0x76/*58.4600Hz*/,0x7a/*58.5925Hz*/,0x7e/*58.7250Hz*/,0x83/*58.8575Hz*/,0x86/*58.9900Hz*/,0x8a/*59.1225Hz*/,0x8f/*59.2550Hz*/,0x93/*59.3875Hz*/,0x99/*59.5200Hz*/,0x9f/*59.6525Hz*/,0xa4/*59.7850Hz*/,0xa9/*59.9175Hz*/,0xac/*60.0500Hz*/,0xb0/*60.1825Hz*/,0xb5/*60.3150Hz*/,0xba/*60.4475Hz*/,0xbf/*60.5800Hz*/,0xc4/*60.7125Hz*/,0xc7/*60.8450Hz*/,0xca/*60.9775Hz*/,0xcf/*61.1100Hz*/,0xd3/*61.2425Hz*/,0xd8/*61.3750Hz*/,0xdd/*61.5075Hz*/,0xe2/*61.6400Hz*/,0xe6/*61.7725Hz*/,0xea/*61.9050Hz*/,0xf0/*62.0375Hz*/,0xf4/*62.1700Hz*/,0xf8/*62.3025Hz*/,0xfb/*62.4350Hz*/,0xff/*62.5675Hz*/,0x04/*62.7000Hz*/
}
3 結 語
本文設計也適用于其他領域PWM變頻調速的應用,雖然只討論了單相調速的設計,未涉及三相變頻調速,但本文給出的程序中包含不少C語言及單片機應用技巧,為研究PWM變頻調速硬件與軟件的實操提供了借鑒。
參 考 文 獻
[1]張毅剛.單片機原理及接口技術(C51編程) [M].北京:人民郵電出版社,2011.
[2]鄒益民.單片機C語言教程[M].北京:中國石化出版社,2010.
[3]深圳市宏晶科技.STC單片機應用手冊[EB/OL].[2018-03-28]. https://max.book118.com/html/2015/0305/12986480.shtm.
[4]朱小春.驅動電機及控制技術[M].北京:清華大學出版社,2017.
[5]章程.三相異步電動機調速方式研究[J].機電信息,2019(8):12-13.
[6]孫磊.PWM整流在變頻調速系統中的應用研究[D].西安:西安科技大學,2018.
[7]吳波.PWM整流器前饋解耦控制策略[J].物聯網技術,2017,7(11):40-41.
[8]王高高,李景忠,陳猛.一種基于SVPWM的三相逆變器[J].物聯網技術,2018,8(1):35-37.
[9]宋平崗,朱維昌,戈旺.基于微分平坦理論的單相PWM整流器直接功率控制 [J].電力系統保護與控制,2017,45(5):38-44.
[10]方亦超,唐雄民.基于參數估計的單相PWM整流器功率預測控制策略[J].工業控制計算機,2018,31(4):152-154.