1本課題設(shè)計的目的和要求
1. 直流電機PWM調(diào)速系統(tǒng)的目的:
(1) 熟悉直流電機PWM調(diào)速系統(tǒng)的整體運行過程和總體布局
(2) 掌握該硬件電路的設(shè)計方法
(3) 掌握電機PWM調(diào)速系統(tǒng)程序的設(shè)計和調(diào)試
2. 直流電機PWM調(diào)速系統(tǒng)的要求
(1)可輸入0~1范圍的占空比,占空比可用電位器輸入、撥碼開關(guān)輸入或鍵盤輸入。
(2)設(shè)計電機驅(qū)動電路,根據(jù)輸入的占空比控制電機轉(zhuǎn)速。
(3)檢測電機轉(zhuǎn)速,并用LED或LCD顯示。
(4)在PROTUES下仿真。
二、系統(tǒng)總體框圖與原理說明
2.1 總體方案原理及設(shè)計框圖
本設(shè)計是基于AT89c51為核心的直流調(diào)速器,由單片機控制和產(chǎn)生適合要求的PWM信號,該PWM信號通過驅(qū)動芯片電路進行直流調(diào)速,使輸出電壓平均值和功率可以按照PWM信號的占空比而變化,從而達到對直流電機調(diào)速的目的。撥碼開關(guān)輸入0~1范圍的占空比,用LCD1602作為主液晶顯示器,顯示輸入的占空比控制電機轉(zhuǎn)速,能夠?qū)崿F(xiàn)較好的人機交互。
總體方案設(shè)計框圖
三、硬件電路圖
3.1 PWM產(chǎn)生方式
(1)PWM(脈沖寬度調(diào)制)是通過控制固定電壓的直流電源開關(guān)頻率,改變負載兩端的電壓,從而達到控制要求的一種電壓調(diào)整方法。PWM可以應用在很多方面,比如:電機調(diào)速、溫度控制、壓力控制等等。
在PWM驅(qū)動控制的調(diào)整系統(tǒng)中,按一個固定的頻率來接通和斷開的電源,并且根據(jù)需要改變一個周期內(nèi)“接通”和“斷開”時間的長短。通過改變直流電機電樞上電壓的“占空比”來達到改變平均電壓大小的目的,從而來控制電動機的轉(zhuǎn)速。正因為如此,PWM又被稱為“開關(guān)驅(qū)動裝置”。PWM波形如圖所示:
PWM波形圖
設(shè)電機始終接通電路時,電機轉(zhuǎn)速最大為,設(shè)占空比為:
則電機的平均轉(zhuǎn)速為
其中指的是電機的平均速度,
是指電機在全通電時最大速度,D指的是占空比。
由上面的公式可見,當改變占空比D時,就可以得到不同電機平均速度,從而達到調(diào)速的目的。
(2)單片機片內(nèi)軟件生成PWM信號
PWM信號采用延時的方式產(chǎn)生,這樣實現(xiàn)比較容易,可以節(jié)約硬件成本。
if(Flag0)
{
for(a=0;a<N*PWM_percent;a++)
{
if(flag) k1=1;
else k2=1;
}
for(a=0;a<N*(1-PWM_percent);a++)
{
k1=k2=0;
}
}
else
{
k1=k2=1;
}
3.2撥碼開關(guān)模塊的設(shè)計
本設(shè)計輸入用4位的撥碼開關(guān),能產(chǎn)生16數(shù)值,每一種數(shù)值對應于一個占空比的值,當輸入為16時,最大的占空比為100%,能調(diào)節(jié)到最大的電機轉(zhuǎn)速。
3.3顯示模塊的設(shè)計
本設(shè)計用LCD1602作為顯示模塊,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,可以顯示兩行,提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能。
在進行寫入數(shù)據(jù)時,我們設(shè)計了一個函數(shù)將要輸入的字符串整個寫入,減少了代碼量,也使程序看起來更加簡潔
void lcd_show_str(unsigned char *str)
{
while (*str != '\0')
{
LED_data(*str++); //同一優(yōu)先級,先取內(nèi)容后自增
}
}
因為要顯示測得的速度,而速度又是一個不止1位的整數(shù),所以必須分離速度的各個位數(shù)值并寫入LCD1602中。程序?qū)崿F(xiàn)如下。
void display()
{
LED_start(0x86);
if(speed/10000==0)
{
s[0]=' ';
}
else
{
s[0]=speed/10000+0x30;
}
if(speed/1000==0)
{
s[1]=' ';
}
else
{
s[1]= speed%10000/1000+0x30;
}
if(speed/100==0)
{
s[2]= ' ';
}
else
{
s[2]=speed%10000%1000/100+0x30;
}
if(speed/10==0)
{
s[3]=' ';
}
else
{
s[3]=speed%10000%1000%100/10+0x30;
}
s[4]=speed%10000%1000%100%10+0x30;
lcd_show_str(s);
}
3.4直流電機驅(qū)動模塊
本設(shè)計采用L298芯片來驅(qū)動電機,內(nèi)部含有四通道邏輯驅(qū)動電路,是一種二相和四相的專用驅(qū)動器,PWM配合橋式L298可以較為容易的實現(xiàn)電機的調(diào)速,其中還用到了二極管對電機進行保護作用。電路圖如下。
3.3模擬直流電機測速模塊
利用MOTOR-ENCODER每轉(zhuǎn)一圈1/2引腳輸出一次高電平的性能,我們將1/2引腳接入異或門的兩個輸入端,再將輸出端接到外部中斷1處,外部中斷1每次收到一個高電平則進入中斷,中斷內(nèi)是將speed加一,另外定時器0中斷控制1s中記一次數(shù),因此可以得到電動機每秒的轉(zhuǎn)速,另外設(shè)置定時器1中斷,使得T1計數(shù)十次的時候也就是1s時Speed清零。程序如下,電路圖也如下
MORTOR-ENCODER電機 中斷引腳設(shè)置
3.4 電動機調(diào)速功能實現(xiàn)模塊
電動機調(diào)速功能分為以下四種:
1.加速模塊利用增加PWM波的占空比增加電機速度,每按一次按鍵加速5%。程序設(shè)計是利用對按鍵按下的判斷處理占空比變量加一。代碼如下
剎停功能的實現(xiàn)同樣利用L298芯片實現(xiàn),同時也將占空比變?yōu)?。同樣設(shè)置一個剎停標志位Flag0,當剎停按鍵按下時Flag0置零并將占空比變量置零,而在PWM波形輸出模塊中,F(xiàn)lag0為1是輸出PWM波輸出的條件,因此不輸出PWM波且,IN1和IN2都為高電平因此達到剎停效果。
自定義速度功能通過設(shè)置占空比實現(xiàn),這里將PWM波的占空比分為了16檔,用到了撥碼開關(guān),共4位二進制數(shù)也就是=16種情況。最高占空比為100%,低電平有效,而這些利用單片機P1引腳的高四位實現(xiàn),具體代碼如下。
if(P1_2==0) //自定義速度(15個檔)
{
delay(5); //消抖
PWM_percent=(((0xf0)&(~P1))*100)/(0xf0);
PWM_percent=PWM_percent*0.01; //將輸入的二進制數(shù)轉(zhuǎn)換成為占空比
}
3.5按鍵設(shè)計模塊
在設(shè)計過程中,我們利用外部中斷0,將接了五個按鍵的引腳連線同時接入一個與門,與門的輸出則接到外部中斷0,使得每次按下按鍵都會進入中斷0函數(shù),執(zhí)行相應的功能代碼。
題目要求實現(xiàn)五種功能,
四、仿真說明
(1)初始界面時,撥碼開關(guān)沒有設(shè)置PWM,直流電機處于停止狀態(tài),LCD1602顯示PWM為0%,電機速度也為0,示波器顯示波形也為低電平。
(2)按一次加速按鍵,占空比增加5%
按一次減速按鍵,速度減小5%(之前占空比為20%)
按剎停按鍵,速度減小至0,占空比為0
調(diào)節(jié)撥碼開關(guān)設(shè)置自定義占空比
按反轉(zhuǎn)鍵,電機反轉(zhuǎn)并在LCD中由Z變?yōu)镕
測速模塊
利用encode電機的轉(zhuǎn)一圈上方兩側(cè)引腳輸出高電平接一個異或門從而通過上升沿反映電機轉(zhuǎn)一圈,并給中斷1送信號speed+1,記出一秒內(nèi)speed表轉(zhuǎn)速。
P3.1口輸出PWM波形
六、心得體會
51hei.png (48.91 KB, 下載次數(shù): 28)
51hei.png (29.81 KB, 下載次數(shù): 24)
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |