freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)控制直流電機(jī)調(diào)速系統(tǒng)設(shè)計正文-資料下載頁

2024-11-12 14:58本頁面

【導(dǎo)讀】快速正反向的電力拖動系統(tǒng)中得到了廣泛的應(yīng)用。近年來,交流調(diào)速系統(tǒng)發(fā)展很快,然而???,它又是交流拖動控制系統(tǒng)的基礎(chǔ),所以直流調(diào)速系統(tǒng)在生活中有著舉足輕重的作用。步被交流電機(jī)拖動所取代的趨勢,但在中、小功率場合,常采用永磁直流電動機(jī)。及少量的數(shù)字電路組成,控制自通的硬件部分非常復(fù)雜,功能單一,而且系統(tǒng)非常不靈活,隨著單片機(jī)技術(shù)的不斷進(jìn)步,使得許多控制功能及算法可以采用軟件技術(shù)來完。還具有軟特性好,過載能力強(qiáng),可進(jìn)行PID調(diào)節(jié),調(diào)速穩(wěn)定等優(yōu)勢。因此,本課題的研究。具有很好的實(shí)際意義。其設(shè)計思路為:以AT89S52單片機(jī)為控制核心,產(chǎn)生占空比受PID算法??刂频腜WM脈沖實(shí)現(xiàn)對直流電機(jī)轉(zhuǎn)速的控制。同時利用光電傳感器將電機(jī)速度轉(zhuǎn)換成脈沖。頻率反饋到單片機(jī)中,構(gòu)成轉(zhuǎn)速閉環(huán)控制系統(tǒng),達(dá)到轉(zhuǎn)速無靜差調(diào)節(jié)的目的。節(jié)轉(zhuǎn)速,通過Labview實(shí)時檢測轉(zhuǎn)速大小。轉(zhuǎn)速監(jiān)測與反饋系統(tǒng)的分析:以往我們會使用測速發(fā)電機(jī)來進(jìn)行轉(zhuǎn)速的測量與分析,

  

【正文】 s 時,調(diào)用串口中斷子程序,單片機(jī)開始發(fā)送數(shù)據(jù),模擬 I/O 口輸出 PWM,此時 PWM 波的頻率為 ,周期為 ,然后調(diào)用 PID 函數(shù),計算出PWM 波輸出的占空比,最后上位機(jī)顯示轉(zhuǎn)速。 這個設(shè)計的幾大模塊比較明確,在編寫程序時,我選擇先編寫出每一個模塊,讓每一個模塊實(shí)現(xiàn)其基本的功能,然后再逐步合并模塊,來實(shí)現(xiàn)設(shè)計的要求。在編寫程序的過程中遇到了一些問題,通過解決這些問題,我也有了一些收獲。 在 本次設(shè)計 中,我遇到的最大的困難時單片機(jī)與上位機(jī)之間的通信 和 PID 算法的編寫。 在編寫串口時,需要了解單片機(jī)串行口的基礎(chǔ)知識,串行口的結(jié)構(gòu)、有關(guān)的寄存器、串行口的工作方式、波特率等。 PID 的參數(shù)是通過試測法確定的。 總之,通過本次設(shè)計不僅進(jìn)一步強(qiáng)化了專業(yè)知識,還掌握了設(shè)計系統(tǒng)的方法、步驟等,為今后的工作和學(xué)習(xí)打下了堅實(shí)的基礎(chǔ)。 智能儀器綜合設(shè)計用紙 41 蔣瑞騏: 本次課程設(shè)計主要是圍繞著轉(zhuǎn)動源開展的,實(shí)時監(jiān)測轉(zhuǎn)動源的轉(zhuǎn)速,并調(diào)節(jié)至設(shè)定的初始值,一開始轉(zhuǎn)速會有個躍變,通過數(shù)字 PID 算法,調(diào)節(jié) PWM 波的占空比,使得轉(zhuǎn)速能很快地調(diào)節(jié)到設(shè)定值。這就是 PID 算法的優(yōu)越性。 本次實(shí)驗最重 要的困難就是串口通信和 C 語言的設(shè)計,設(shè)計過程中遇到了很多困難,比如監(jiān)測顯示中老是出現(xiàn)亂碼,導(dǎo)致前面的波形圖躍變得很厲害,這是 C 代碼程序部分出現(xiàn)了問題,經(jīng)過不斷的改進(jìn),終于發(fā)現(xiàn)了問題的所在,經(jīng)過修改后,沒出現(xiàn)亂碼,轉(zhuǎn)速很快就調(diào)節(jié)到了預(yù)設(shè)的值。 還有就是數(shù)字 PID 算法,因為這是關(guān)鍵的一步,位置型和增量型都是數(shù)字型 PID 算法,但是兩者都有自己的優(yōu)缺點(diǎn)。經(jīng)過不斷地嘗試,位置型 PID 更適合本次實(shí)驗要求,效果也是比較好的。 此次的設(shè)計并不奢望一定能成功,但一定要對已學(xué)的各種電子知識能有一定的運(yùn)用能力,我做設(shè)計的目的是希 望能檢查下對所學(xué)知識的運(yùn)用能力的好壞,并且開始慢慢走上創(chuàng)造的道路,這是非??少F的一點(diǎn)。 這次的課程設(shè)計終于順利完成了,在設(shè)計中遇到了很多編程問題,最后在 老師的辛勤指導(dǎo)下,終于迎刃而解。同事,在 老師的身上我學(xué)得到很多實(shí)用的知識,在此我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示衷心的感謝。 智能儀器綜合設(shè)計用紙 42 參考文獻(xiàn) [ 1] Labview 寶典/陳樹學(xué),劉萱編著 .—— 北京:電子工業(yè)出版社, [ 2]單片機(jī)的 C 語言程序設(shè)計與應(yīng)用/姜志海編著 .—— 北京:電子工業(yè)出版社, [ 3]測控系統(tǒng)原理與設(shè)計/孫傳勇編著 .—— 北京:北京航空航天大學(xué)出版社, [4] 現(xiàn)代傳感器集成電路/趙負(fù)圖編著 .—— 北京:人民郵電出版社, [5] 測控電路 /張國雄 編著 .—— 北京: 機(jī)械工業(yè)出版社 , 智能儀器綜合設(shè)計用紙 43 附錄 1: include 預(yù)處理命令, 是一個庫文件 include define uchar unsigned char define uint unsigned int uchar code xianshi[12]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xbE,0xE0,0xFE,0xF6,0x9c,0x00}。 sbit PWM=P1^7。 定義位變量 sbit key1=P1^0。 sbit key2=P1^1。 sbit key3=P1^2。 uint wide=100。 //脈寬計數(shù) uint t1=0。 //低電平脈寬 uint t2=0。 //一個周期 uint time_low=0。 uint time_high=100。 bit a=2。 bit high_flag=0。 bit low_flag=0。 bit state_flag=0。 uint set_count=100。//設(shè)定轉(zhuǎn)速值 uint run_count=0。//實(shí)際頻率的讀取 uint stop_count=0。 //電機(jī)轉(zhuǎn)速存儲變量 uint time=0。 int en=0,en_1=0,en_2=0。 //定義 三個時刻的誤差存儲變量 float a0=,a1=,a2 =,un=0。 //定義 PID 計算參公式的參數(shù) 智能儀器綜合設(shè)計用紙 44 void delay(uint time)。 定義延時子函數(shù) void delay1(uint num)。 void delay1_ms(uint time)。 void display_num1(uint dat,uchar num1)。 void display_num4(uint num)。 void pid(void)。 void main() 主函數(shù) { P1=0x00。 SCON=0x40。 PCON=0x80。 TMOD=0x21。 TL1=0xfa。TH1=0xfa。TH0=0XFE。TL0=0X33。//計數(shù)器 0 賦初值 ES=0。ET0=1。EX0=1。 TR1=1。TR0=1。EA=1。 while(1) { while (key1==0||key2==0||key3==0||a==0) { if(key1==0amp。amp。key2==1amp。amp。key3==1) //判斷系統(tǒng)的運(yùn)行模式,如果 KEY1 鍵 按下 //且 state_flag 為 1則系統(tǒng)處于運(yùn)行模式,如果 state__flag 為 0則為設(shè)置模式 { while(key1==0)。 state_flag=~state_flag。 if(state_flag==1) { 智能儀器綜合設(shè)計用紙 45 EX0=1。TR0=1。 en =0。en_1 =0。en_2 =0。un =0。 wide=150。 a=1。 //wide = set_count。 } if(state_flag==0) //如果系統(tǒng)處于設(shè)置模式,則關(guān)閉定時器中斷和外部中斷,同時初始化部分變量 { PWM = 0。 EA=0。TR0=0。 run_count=0。stop_count=0。 time=0。t1=0。t2=0。 display_num4(set_count)。 a=0。 } } if(key1==1amp。amp。key2==0amp。amp。key3==1amp。amp。state_flag==0) //KEY2 為按鍵加 { while(key2==0)。 delay1(20)。 set_count+=1。 if(set_count300) set_count=100。 } if(key1==1amp。amp。key2==1amp。amp。key3==0amp。amp。state_flag==0) //KEY3 為按鍵減 { while(key3==0)。 delay1(20)。 if(set_count100) set_count=1。 智能儀器綜合設(shè)計用紙 46 if(set_count==100) set_count=300。 } else //如果系統(tǒng)處于運(yùn)行模式則顯示電機(jī)的實(shí)際轉(zhuǎn)速值 display_num4(stop_count)。 } while(key1==1amp。amp。key2==1amp。amp。key3==1amp。amp。a==1) { if(time==400) //定時 2s 到,讀取到的值 run_count 即為電機(jī) 2秒的轉(zhuǎn)速值 { time=0。stop_count=run_count/2。 run_count=0。 pid()。 //調(diào)用 PID 算法 } } } } void pid(void) //PID 計算輸出量 { en=set_countstop_count。 un=a0*ena1*en_1+a2*en_2。//計算輸出量 if(un 400)un = 400。 else if(un 400)un = 400。 en_2=en_1。en_1=en。 //更新誤差 wide += un/4。 //計算 wide,用于調(diào)節(jié) PWM 的占空比,計算周期為 100ms if(wide900)wide=900。 //防止超 限,確保計算餓 wide 值有效 else if(wide10)wide=10。 } 智能儀器綜合設(shè)計用紙 47 void delay(uint time) { uint i。 for(i=0。itimeamp。amp。key1==1。i++) display_num4(stop_count)。 } void delay1_ms(uint time) //1ms 延時函數(shù) { uint i,j。 for(i=0。itime。i++) for(j=0。j123。j++)。 } void delay1(uint num) { uint i。 for(i=0。inum。i++) display_num4(set_count)。 } void display_num1(uint dat,uchar num1) //指定的位上顯示 指定的一位數(shù)據(jù) { P0=xianshi[dat]。 //段顯 switch(num1) { case 1: P2=0x01。break。 case 2: P2=0x02。break。 case 3: P2=0x04。break。 case 4: P2=0x08。break。 default: break。 } 智能儀器綜合設(shè)計用紙 48 delay1_ms(2)。 } void display_num4(uint num) //四位數(shù)據(jù)顯示函數(shù) { uint qian,bai,shi,ge。 qian=num/1000。 if(qian==0)qian=11。 display_num1(qian,4)。 bai=(num%1000)/100。 if(qian==11amp。amp。bai==0)bai=11。 display_num1(bai,3)。 shi=(num%100)/10。 if(qian==11amp。amp。bai==11amp。amp。shi==0)shi=11。 display_num1(shi,2)。 ge=num%10。 display_num1(ge,1)。 } void int0() interrupt 0 //外部中斷 0 用于電機(jī)轉(zhuǎn)速測量 { EX0=0。run_count++。EX0=1。 } void time0() interrupt 1 //定時器 0用于產(chǎn)生 PWM ,占空比通過 PID 計算獲得 {// SBUF=39。a39。 //while(TI) {TI=0。} TR0=0。 time++。 TH0=0XFF。TL0=0X9c。//計數(shù)器 0 賦初值 100us if(low_flag==0)t1++。//低電平時間計時 t2++。 if(t2==1000) //用于確定 PWM 的周期 , t2 乘以定時器的中斷周期即為 PWM 的周期 智能儀器綜合設(shè)計用紙 49 {PWM=1。 t2=0。 low_flag=0。} if(t1==wide)//wide 的值即為低電平的時間 {PWM=0。t1=0。low_flag=1。} TR0=1。 /**/ }
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1