基于單片機(jī)的無刷直流風(fēng)扇轉(zhuǎn)速測量與調(diào)節(jié)_第1頁
基于單片機(jī)的無刷直流風(fēng)扇轉(zhuǎn)速測量與調(diào)節(jié)_第2頁
基于單片機(jī)的無刷直流風(fēng)扇轉(zhuǎn)速測量與調(diào)節(jié)_第3頁
基于單片機(jī)的無刷直流風(fēng)扇轉(zhuǎn)速測量與調(diào)節(jié)_第4頁
基于單片機(jī)的無刷直流風(fēng)扇轉(zhuǎn)速測量與調(diào)節(jié)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于單片機(jī)的無刷直流風(fēng)扇轉(zhuǎn)速測量與調(diào)節(jié)一、 項(xiàng)目設(shè)計(jì)要求1、 實(shí)現(xiàn)無刷直流電機(jī)轉(zhuǎn)速的測量和控制 2、給定轉(zhuǎn)速指令:由pc發(fā)送轉(zhuǎn)速值,經(jīng)單片機(jī)控制器,使得電機(jī)達(dá)到并穩(wěn)定在指定轉(zhuǎn)速上。 二、硬件設(shè)備1、測量風(fēng)扇型號(hào):品牌:臺(tái)達(dá),型號(hào):afb0712hhb 2、51系列單片機(jī)學(xué)習(xí)板 3、pc三、方案設(shè)計(jì)1、硬件電路usb提供+5v電源,可以實(shí)現(xiàn)pc機(jī)與開發(fā)板的數(shù)據(jù)通訊和程序下載。數(shù)碼管顯示速度和占空比風(fēng)扇電路連接:p1.0口接pwm波輸入,p3.2口接測速脈沖輸入風(fēng)扇輸入和輸出信號(hào)圖1、 輸出信號(hào)-轉(zhuǎn)速輸出 每轉(zhuǎn)輸出2個(gè)脈沖oc輸出,如上圖2. oc輸出的特點(diǎn) 外加集電極電源和負(fù)載;輸出幅值任意;注

2、意icmax3. 輸入信號(hào)-pwm輸入2、程序流程圖說明:程序應(yīng)用模塊化進(jìn)行設(shè)計(jì),主要有初始化模塊、顯示模塊、測速模塊和調(diào)速模塊。編程次序可按此先后進(jìn)行。(1)、初始化模塊:t0和t1工作方式、標(biāo)志位狀態(tài)、所用單元初值、中斷設(shè)置以及初始顯示等。(2)、顯示模塊:顯示風(fēng)扇轉(zhuǎn)速的實(shí)測值及其對應(yīng)的pwm占空比。(3)測速模塊:將0.5s測出的脈沖數(shù)即風(fēng)扇每秒的轉(zhuǎn)速。(4)調(diào)速模塊:通過串口通信把風(fēng)扇轉(zhuǎn)速設(shè)定值發(fā)給單片機(jī),通過改變脈沖波的占空比和pi調(diào)節(jié)來控制轉(zhuǎn)速的大小。3. 占空比與轉(zhuǎn)速關(guān)系:占空比000.160.170.180.190.20.220.240.270.290.31轉(zhuǎn)速r/s01234

3、567891011占空比0.350.380.420.460.510.540.610.740.840.941轉(zhuǎn)速r/s1213141516171819202122四、設(shè)計(jì)程序:1、主程序:#include #include #include extern unsigned char set_value;/占空比設(shè)定/主函數(shù)void main()ps=1; /串行口中斷優(yōu)先級(jí)別設(shè)為高t0_init();/定時(shí)器0初始化t1_init(); /定時(shí)器1初始化ext0_init();/外部中斷0初始化usart_init();/串口初始化set_value=22;while(1)2、初始化子程序#in

4、clude #include /tc0初始化/設(shè)為定時(shí)器、模式2(自動(dòng)重裝) void t0_init() ea=1;et0=1;tmod |= 0x02;th0=tl0 = 0x00;tr0=1;/tc1初始化/設(shè)為定時(shí)器、模式2(自動(dòng)重裝)void t1_init()ea=1;et1=0;/中斷關(guān)tmod |= 0x20;th1=tl1=0xfd;tr1=1;/ext0初始化/負(fù)跳變沿有效、int0(p3.2)輸入脈沖void ext0_init()it0=1;ex0=1;ea=1;/usart初始化/波特率 9600bpsvoid usart_init() pcon=0x40; scon

5、=0x50;/模式1,允許接收 es=1;3、數(shù)碼管顯示子程序#include #include /硬件連接sbit dat = p02;sbit sck = p00;sbit rck = p01;/數(shù)碼管驅(qū)動(dòng)xdata num=0xf5,0x05,0xb3,0x97,0x47,0xd6,0xf6,0x85,0xf7,0xd7;/0-9數(shù)字xdata bit=0xdf,0xbf,0x7f,0xef,0xfd,0xfb,0xf7,0xfe; /位選void dis_bit(unsigned char pos,unsigned char data)unsigned char i;pos=bitpo

6、s-1;data=numdata;rck = 0;for(i=0;i8;i+) sck = 0;if(pos & 0x80)dat = 1;elsedat = 0;pos =1;sck = 1;delay();for(i=0;i8;i+) sck = 0;if(data & 0x80)dat = 1;elsedat = 0;data 0;i-);4、測速、調(diào)速子程序#include #include it.h#include display.h/硬件連接sbit fan =p10;/風(fēng)扇脈沖輸入sbit h = p06;/led,測試/全局變量xdata unsigned char f=0,0

7、,16,17,18,19,20,22,24,27,29,31,35,38,42,46,51,54,61,74,84,94,100,100,100;/轉(zhuǎn)速與占空比關(guān)系對照表/int0參數(shù)volatile unsigned char n;/轉(zhuǎn)速volatile unsigned char p;/脈沖數(shù)/usart參數(shù)static unsigned char flag; /串口相關(guān)unsigned char usart_buf2=00;/接收緩沖區(qū)/pid參數(shù)unsigned char kp=5,ki=1;/pid參數(shù) (pi)static unsigned int error,error_re,s

8、um_e;/當(dāng)前偏差,上一次的偏差,積分累加器 /t0參數(shù)static unsigned char time;/測速計(jì)時(shí)器unsigned char set_value;/pwm設(shè)定值/tc0中斷void t0it()interrupt 1 using 1 unsigned char temp; time+;if(time150)/0.5s,由于中斷處理的程序過于龐大,以至于定時(shí)的理論值不能精確的算出。time=0;n=p;p=0;flag=0;/若串口的兩位數(shù)據(jù)不是連續(xù)發(fā)送,則在下一次接收時(shí)全部刷新 temp=pid();if(1) pwm_generater(temp);/pid調(diào)節(jié)dis

9、_word(1,n);dis_word(5,set_value);/顯示占空比/dis_word(3,error);/dis_word(7,temp);/tc1中斷void t1it()interrupt 3 using 1/ext0中斷void ex0_it()interrupt 0 using 1p+;/脈沖計(jì)數(shù)/usart中斷void usart_it()interrupt 4 using 1unsigned char temp;usart_bufflag=sbuf;flag+;if(flag1)flag=0;temp=(usart_buf0-48)*10+usart_buf1-48;i

10、f(temp23) set_value=ftemp;ri=0;ti=0;/pwm生成程序/輸入:duty_cycle:占空比高電平持續(xù)值void pwm_generater(unsigned char duty_cycle)static unsigned char com_value;com_value+;if(com_valueduty_cycle)fan=1;else if(com_valuefn)/error為正值的情況 error=set_value-fn;/偏差 sum_e=sum_e+error;/積分 feedback=kp*error/2+ki*sum_e; /pid計(jì)算 el

11、se/error為負(fù)值的情況 error=fn-set_value;/偏差/積分部分if(sum_eerror)/積分為正 sum_e=sum_e-error; else/積分為負(fù)sum_e=0;proportion=kp*error/2;/比例計(jì)算integral=ki*sum_e;/積分if(integralproportion)/pid計(jì)算feedback=integral-proportion;elsefeedback=0; return(feedback); /返回結(jié)果 五、方案總結(jié)本方案基本能完成風(fēng)扇轉(zhuǎn)速測量與控制,達(dá)到了設(shè)計(jì)任務(wù)的要求。通過測試,本控制系統(tǒng)可以根據(jù)氣流和通風(fēng)條件等

12、環(huán)境對運(yùn)行的影響,比較及時(shí)調(diào)整pwm波形。但是,本方案也存在一些不足之處:1. 由于本程序的中斷處理比較復(fù)雜,定時(shí)的理論值不能精確的算出,以至測量的轉(zhuǎn)速不是很精確2. 由于時(shí)間關(guān)系,我們的pid控制模塊只完成了pi調(diào)節(jié),缺乏了微分調(diào)節(jié),系統(tǒng)的動(dòng)態(tài)性能有所下降。六、感想 通過該項(xiàng)目的實(shí)踐,我們加深了對單片機(jī)的定時(shí)器、計(jì)數(shù)器、中斷等模塊的理解。但是萬事開頭難,一開始,我們只是學(xué)了相關(guān)的理論知識(shí),對實(shí)體的單片機(jī)并不了解,遇到各種問題,比如缺乏硬件電路的了解,風(fēng)扇該如何接線如何輸出信號(hào),pwm波如何輸出和調(diào)節(jié),在調(diào)試過程中難以調(diào)到穩(wěn)定速度等問題。后來結(jié)合書本,通過摸索,得出了上述程序。盡管時(shí)間緊迫、壓力大,但是我們還是靈活運(yùn)用并掌握微機(jī)測控裝置的經(jīng)典設(shè)計(jì)過程,即

溫馨提示

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

評(píng)論

0/150

提交評(píng)論