微機(jī)原理課程設(shè)計無刷直流風(fēng)扇調(diào)速與測速_第1頁
微機(jī)原理課程設(shè)計無刷直流風(fēng)扇調(diào)速與測速_第2頁
微機(jī)原理課程設(shè)計無刷直流風(fēng)扇調(diào)速與測速_第3頁
微機(jī)原理課程設(shè)計無刷直流風(fēng)扇調(diào)速與測速_第4頁
微機(jī)原理課程設(shè)計無刷直流風(fēng)扇調(diào)速與測速_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 工 學(xué) 院微機(jī)原理(3級)項目報告項目名稱: 微機(jī)原理課程設(shè)計 項目題目: 無刷直流風(fēng)扇調(diào)速與測速 指導(dǎo)教師: 系 別: 機(jī)電系 專 業(yè): 機(jī)械設(shè)計制造及其自動化 組員信息 學(xué)號: 姓 名: 王 組員信息 學(xué)號: 姓 名: 郭 完成時間: 2014 年 12 月 01 日至 2016 年 1 月 3 日 成績: 評閱人:目錄1、 學(xué)習(xí)目標(biāo).(1)2、 項目要求.(1)3、 轉(zhuǎn)速測量和調(diào)節(jié)系統(tǒng)的硬件構(gòu)成.(1)4、 程序流程圖并說明方案思路.(3)5、 風(fēng)扇轉(zhuǎn)速與占空比之間的關(guān)系表格和曲線.(4)6、 設(shè)計程序.(5)7、 分析設(shè)計過程出現(xiàn)的問題.(12)8、 方案總結(jié).(13)一、 學(xué)習(xí)目標(biāo)

2、本次系統(tǒng)作業(yè)的目的在于:通過脈沖寬度調(diào)節(jié)實現(xiàn)無刷直流風(fēng)扇轉(zhuǎn)速的改變;借助風(fēng)扇轉(zhuǎn)動時產(chǎn)生的脈沖信號,測量風(fēng)扇的轉(zhuǎn)速并顯示;比較每組風(fēng)扇從某一轉(zhuǎn)速(600r/min)到另一轉(zhuǎn)速(2000r/min)穩(wěn)定運轉(zhuǎn)的所需要的時間。通過比較試驗結(jié)果的估算結(jié)果并討論結(jié)果差異的主要原因,讓學(xué)生展示對無刷直流風(fēng)扇數(shù)學(xué)模型建立和調(diào)節(jié)方法局限性有深入理解。二、 項目要求檢查項目要求轉(zhuǎn)速顯示風(fēng)扇轉(zhuǎn)速能夠顯示在led上,轉(zhuǎn)速單位是r/min,刷新周期為1秒鐘左右風(fēng)扇轉(zhuǎn)速可調(diào)風(fēng)扇轉(zhuǎn)速可以改變,根據(jù)要求轉(zhuǎn)速在700-1400r/min風(fēng)扇轉(zhuǎn)速與顯示通過簡單方法給風(fēng)扇加負(fù)載,隨著轉(zhuǎn)速的下降應(yīng)該看到轉(zhuǎn)速變化的顯示轉(zhuǎn)速指令輸入環(huán)節(jié)

3、通過串口或鍵盤輸入給定轉(zhuǎn)速給定某一轉(zhuǎn)速,1200-1500之間,看顯示轉(zhuǎn)速的穩(wěn)定性轉(zhuǎn)速調(diào)節(jié)功能在穩(wěn)定轉(zhuǎn)動條件下1500r/min,在30cm處加載一個外加一個風(fēng)扇,對照加載前后的穩(wěn)態(tài)轉(zhuǎn)速回答問題隨機(jī)提出有關(guān)轉(zhuǎn)速測量、pwm輸出和轉(zhuǎn)速控制方面的問題,要有針對性,檢查設(shè)計過程中的付出。三、 系統(tǒng)硬件構(gòu)成風(fēng)扇電路:接線:黃線接vcc,黑線接地,綠線接p32,藍(lán)線接p25。輸出:oc輸出,如下圖4、 畫程序流程圖并說明方案思路開始初始化中斷產(chǎn)生pwm波顯示轉(zhuǎn)速和占空比查詢是否需要反饋調(diào)整查詢是否收到串口數(shù)據(jù)查詢風(fēng)扇轉(zhuǎn)速是否更新查詢有無按鍵操作調(diào)整占空比更新目標(biāo)轉(zhuǎn)速刷新數(shù)碼管緩存數(shù)據(jù)計算需要的占空比yy

4、yynnnn 程序主要用查詢法判斷需要執(zhí)行的操作,并且利用中斷處理函數(shù)來產(chǎn)生各種對應(yīng)的標(biāo)志位來通知主循環(huán),在主循環(huán)中進(jìn)行要求的運算。其中t0定時約500us,它的每次中斷相當(dāng)于輸出一個載波脈沖,實際上是用載波脈沖數(shù)為200個,載波周期為500us的方式構(gòu)成周期為100ms的pwm波。t1用做波特率發(fā)生器。t2定時60ms。每次t2中斷能重置一次按鍵處理標(biāo)志位,這個標(biāo)志位能保證每60ms內(nèi)只允許處理一次按鍵操作,讓按鍵處理既能高速增減,也能準(zhǔn)確;此外當(dāng)有合計25次t2的中斷發(fā)生時,它能保存當(dāng)前的轉(zhuǎn)速值并且通知主循環(huán)刷新數(shù)碼管顯示請況,因此我們計算轉(zhuǎn)速的方式是“統(tǒng)計1.5s內(nèi)風(fēng)扇的轉(zhuǎn)動圈數(shù)”。利用

5、在t2中斷的定時判斷,也能把當(dāng)前數(shù)碼管的顯示請況發(fā)回pc機(jī)。串口通訊方面,也是利用一個標(biāo)志位來申明是否接受了數(shù)據(jù)。使用“操作符+操作數(shù)據(jù)”的5字節(jié)字符串?dāng)?shù)據(jù)格式,例如用“a0980”代表需要風(fēng)扇按n=980r/min的速度運行。通知標(biāo)志被主循環(huán)檢測到的時候,會將串口數(shù)據(jù)檢查并且保存成整數(shù)形式,方便后續(xù)函數(shù)的調(diào)用。當(dāng)串口數(shù)據(jù)不合理時,會發(fā)送信息到pc機(jī)。五、風(fēng)扇轉(zhuǎn)速與占空比之間的關(guān)系表格和曲線編程實現(xiàn)單片機(jī)給pc定時發(fā)送轉(zhuǎn)速與占空比數(shù)據(jù)后,取對應(yīng)的數(shù)據(jù)制表如下。占空比(%)10095908580757065605550轉(zhuǎn)速n/(r/min)2140196018201740168016001500

6、1420130011801060占空比(%)454035302520151050轉(zhuǎn)速n/(r/min)90074058044010000000將500個轉(zhuǎn)速與占空比數(shù)據(jù)擬合成關(guān)系曲線如下可以發(fā)現(xiàn),在風(fēng)扇正常轉(zhuǎn)動時,轉(zhuǎn)速與占空比有著正相關(guān)的關(guān)系,占空比越大,風(fēng)扇的轉(zhuǎn)速越高。此外,當(dāng)占空比小于26%時,風(fēng)扇停轉(zhuǎn)。六、設(shè)計程序1、主程序:#include #define jingzhen 11059200ul /*使用11.0592m晶體*/ #define botelv 9600ul /*波特率定義為9600*/volatile unsigned char sending;sbit dula =p

7、26;/段選信號的鎖存器控制sbit wela =p27;/位選信號的鎖存器控制sbit pwmout=p25;/pwm輸出位置 藍(lán)線sbit need_steady=p34;/接地后開始調(diào)整sbit hidevalue =p35;/接地后顯示目標(biāo)轉(zhuǎn)速sbit k3 =p36;/增加占空比按鈕sbit k4 =p37;/減少占空比按鈕unsigned char code wei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/數(shù)碼管各位的碼表unsigned char code duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0

8、x07,0x7f,0x6f;/0-9的碼表 unsigned char speed,speed_temp,count_time,count_send,wait;unsigned char pwm_count,pwm_turn,pwm_max;/控制pwm波的計數(shù),轉(zhuǎn)變值,周期個數(shù),unsigned char number8=0,value6=0;/數(shù)碼管顯示緩存和串口字符串?dāng)?shù)據(jù)緩存int target;bit flag=0,flag_k=0,flag_send=0,flag_direct=0;/通知標(biāo)志void timer0init(void);/初始化函數(shù)void timer2init(vo

9、id);void ext0init(void);void uartinit(void);void check();void value_to_num(int num,unsigned char d); /數(shù)據(jù)填入數(shù)碼管函數(shù)void direct();/直接與反饋調(diào)節(jié)pwm函數(shù)void adjust();void display();void send(unsigned char d);void sendc(unsigned char * pd);void sendc_num(unsigned char * pd);void main()flag_direct=0;flag_send=0;wai

10、t=5;pwm_count=0,pwm_turn=170,pwm_max=200;timer0init();timer2init();ext0init() ;uartinit() ;need_steady=1;/接地后開始調(diào)整hidevalue =1;/接地后顯示目標(biāo)轉(zhuǎn)速k3 =1;/增加占空比按鈕k4 =1;/減少占空比按鈕while(1)/主循環(huán)if(flag_k)/控制每60ms允許通過按鍵調(diào)整一次pwm_turnif(!k3&pwm_turn10 ) pwm_turn-;flag_k=0;if(flag_direct)check();direct();flag_direct=0;wai

11、t=4;/傳送了直接值后不能馬上進(jìn)行反饋調(diào)整,誤差太大了if(flag)/控制約1.5s允許調(diào)整數(shù)碼管顯示值value_to_num(500*(speed_temp)/25),4);if(wait0) wait-;/減緩約4.56s才允許反饋調(diào)整if(0=wait)&(!need_steady)/滿足條件時啟用轉(zhuǎn)速反饋調(diào)整adjust();flag=0;value_to_num(pwm_turn,0);if(!hidevalue) value_to_num(target,0);/直接按下k2顯示當(dāng)前的目標(biāo)轉(zhuǎn)速的值,可以檢查有沒有收到串口數(shù)據(jù)if(flag_send)sendc_num(numb

12、er);flag_send=0;display();2、 初始化子程序void timer0init(void)tmod |= 0x01;/t0 16位定時tl0 = 0x33;/設(shè)置定時初值th0 = 0xfe;/設(shè)置定時初值tf0 = 0;/清除tf0標(biāo)志ea = 1; /總中斷打開et0 = 1; /定時器0中斷打開tr0 = 1;/定時器0開始計時void timer2init(void)rcap2h = 0x28;rcap2l = 0x00;/定時60msea=1;/打開總中斷et2=1;/打開定時器2中斷tr2=1;/定時器2開始計時void ext0init(void)int0=

13、1;/置高接收口p3.2px0=1;/設(shè)置高中斷優(yōu)先級ea=1;/全局中斷開it0=1;/邊沿觸發(fā)ex0=1;/外部中斷0開 void uartinit(void)/9600bps11.0592mhzea=0;/暫時關(guān)閉中斷tmod|=0x20;/定時器1工作在模式2,自動重裝模式scon=0x50;/串口工作在模式1th1=256-jingzhen/(botelv*12*16); /計算定時器重裝值tl1=256-jingzhen/(botelv*12*16);pcon|=0x80;/串口波特率加倍ps=1;/給串口中斷高優(yōu)先級es=1;/串行中斷允許tr1=1;/啟動定時器1ren=1;/

14、允許接收 ea=1;/允許中斷3、 中斷操作程序/* 外部中斷0統(tǒng)計轉(zhuǎn)速脈沖*/void ext0(void) interrupt 0 /負(fù)責(zé)統(tǒng)計速度值,信號下降沿產(chǎn)生中斷speed+;/* 定時器0負(fù)責(zé)調(diào)控pwm波*/void time0(void) interrupt 1 using 1/負(fù)責(zé)產(chǎn)生pwm波tl0 = 0x33;/設(shè)置定時初值th0 = 0xfe;/設(shè)置定時初值pwmout=pwm_count=pwm_max)/pwm_count達(dá)到頂端時回到初始pwm_count=0;/* 串行中斷服務(wù)函數(shù)接受速度控制命令*/void serial() interrupt 4static

15、unsigned char write_point=0;static bit read_able=0;unsigned char temp;if(ri)/判斷是接收中斷產(chǎn)生ri=0;/標(biāo)志位清零temp=sbuf;/讀入緩沖區(qū)的值if(read_able)valuewrite_point=temp;write_point+;if(write_point4)/只讀入4個字節(jié) flag_direct=1;/通知主函數(shù)可以調(diào)節(jié)pwm了read_able=0;write_point=0;wait=4;/立即暫停反饋調(diào)整if(temp=a)/a作為特征碼檢測,也可以使用其他的字母來規(guī)定控制代碼write

16、_point=0;/一旦收到a_ _ _ _,指針回到開頭并且允許接受數(shù)據(jù)read_able=1;if(ti) /如果是發(fā)送標(biāo)志位,清零ti=0;sending=0; /清正在發(fā)送標(biāo)志/* 定時器2調(diào)節(jié)數(shù)碼管的刷新速度*/void time2(void) interrupt 5 using 1 /定時器2中斷tf2=0;/必要的軟件清中斷標(biāo)志count_time+;flag_k=1;if (count_time=25)flag=1;speed_temp=speed;speed=0;count_time=0;count_send+;if (count_send=5)flag_send=1;cou

17、nt_send=0;4、 輔助處理程序/* 檢查串口數(shù)據(jù)*/void check()unsigned char i;for(i=0;i4;i+)if(valuei9)valuei=0;target=(value0-0)*1000+(value1-0)*100+(value2-0)*10+(value3-0);if(target2180|target3;i-)numberi-d=num%10;num=num/10;/* 直接調(diào)節(jié)pwm函數(shù)*/void direct()if(target2180|target280)/禁止不可調(diào)節(jié)范圍的pwm return;if(target200) pwm_tu

18、rn=200;/* 反饋調(diào)節(jié)pwm函數(shù)*/void adjust()double num;num=speed_temp*20;if(target2180|target280)/禁止不可調(diào)節(jié)范圍的pwm return;if(target1520)pwm_turn=pwm_turn+( 0.00006*target + 0.01311)*(target-num);/原理是dy=f(x)*dxelse /屬于比例調(diào)節(jié)pwm_turn=pwm_turn+(-0.00018*target + 0.4299)*(target-num);if(num200) pwm_turn=200;/* 數(shù)碼管顯示程序*

19、/void display()unsigned char num;unsigned int m;for(num=0;num0;m-); /時間間隔短,利用人眼的余輝效應(yīng),覺得每個數(shù)碼管都一直在亮。/*- 發(fā)送一個字節(jié)-*/void send(unsigned char d) /發(fā)送一個字節(jié)的數(shù)據(jù),形參d即為待發(fā)送數(shù)據(jù)。sbuf=d; /將數(shù)據(jù)寫入到串口緩沖sending=1; /設(shè)置發(fā)送標(biāo)志while(sending); /等待發(fā)送完畢/*- 發(fā)送一個字符串-*/void sendc(unsigned char * pd)while(*pd)!=0) /發(fā)送字符串,直到遇到0才結(jié)束send(*pd); /發(fā)送一個字符pd+; /移動到下一個字符void sendc_num(unsigned char * pd)unsigned char t;for(t=0;t8;t+)if(t=4) send( );send(*pd)+0); /發(fā)送一個字符pd+; /移動到下一個字符send(n);7、 分析設(shè)計過程出現(xiàn)的問題1.在設(shè)計pwm的調(diào)控方式的過程中,我們遇到了一個選擇pwm波周期的問題。查閱資料后發(fā)現(xiàn),pwm波的周期大小能直接影響小風(fēng)扇的輸出轉(zhuǎn)矩。在實際測試過程中,第一次選用載波脈沖數(shù)為200個,載波周期為250us的方式構(gòu)成周期為50ms的pwm。我們發(fā)現(xiàn),此時使風(fēng)扇恰好

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論