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

正文內(nèi)容

基于單片機控制的步進(jìn)電機的畢業(yè)論文(編輯修改稿)

2025-07-24 20:01 本頁面
 

【文章內(nèi)容簡介】 的物理意義是當(dāng)調(diào)節(jié)器積分調(diào)節(jié)作用與比例調(diào)節(jié)作用的輸出相等時所需的調(diào)節(jié)時間稱為積分常數(shù)。積分常數(shù)的大小決定了積分作用強弱程度,選擇的越小,積分的調(diào)節(jié)作用越強,但系統(tǒng)振蕩的衰減速度越慢。當(dāng) 過小時,甚至?xí)斐上到y(tǒng)的持續(xù)振蕩,使調(diào)節(jié)器的輸出波動不定,給生產(chǎn)過程帶來嚴(yán)重的危害。相反地當(dāng)選擇的越大,積分的調(diào)節(jié)作用越弱,雖然過渡過程中不容易出現(xiàn)振蕩現(xiàn)象,但消除偏差e的時間卻很長。積分調(diào)節(jié)對偏差有累積作用,所以,只要有偏差e存在積分的調(diào)節(jié)作用就會不斷地增強,直至消除比例調(diào)節(jié)器無法消除的靜差值。 比例積分微分調(diào)節(jié)(PID)加入積分調(diào)節(jié)后,雖可消除靜差,使控制系統(tǒng)靜態(tài)特性得以改善,但由于積分調(diào)節(jié)器輸出值的大小是與偏差值e的持續(xù)時間成正比的,這樣就會使系統(tǒng)消除靜差的調(diào)節(jié)過程變慢,由此帶來的是系統(tǒng)的動態(tài)性能變差.尤其是當(dāng)積分常數(shù)很大時,情況更為嚴(yán)重。另外,當(dāng)系統(tǒng)受到?jīng)_激式偏差沖擊時,由于偏差的變化率很大,而PI調(diào)節(jié)器的調(diào)節(jié)速度又很慢,這樣勢必會造成系統(tǒng)的振蕩,給生產(chǎn)過程帶來很大的危害.改善的方法是在比例積分調(diào)節(jié)的基礎(chǔ)上再加人微分調(diào)節(jié),構(gòu)成比例積分微分調(diào)節(jié)器(PID)。其調(diào)節(jié)規(guī)律可用(3)式表示。 (3)式中: 為微分常數(shù),它的物理意義是當(dāng)調(diào)節(jié)器微分調(diào)節(jié)作用與比例調(diào)節(jié)作用的輸出相等時所需的調(diào)節(jié)時間稱為微分常數(shù). PID控制算法單片機控制系統(tǒng)通過A/D電路檢測輸出值s,并計算偏差e和控制變量y,再經(jīng)D/A轉(zhuǎn)換后輸出給執(zhí)行機構(gòu),從而實現(xiàn)縮小或消除輸出偏差的目的,使系統(tǒng)輸出值s穩(wěn)定在給定值區(qū)域內(nèi)。在計算機控制過程中,整個計算過程采用的是數(shù)值計算方法,當(dāng)采樣周期足夠小時,這種數(shù)值近似計算相當(dāng)誰確,使離散的被控過程與連續(xù)過程相當(dāng)接近。圖2為單片機閉環(huán)控制系統(tǒng)框圖 J。PID算法是將描述連續(xù)過程的微分方程轉(zhuǎn)化為差分方程,然后,根據(jù)差分方程編制計算程序來進(jìn)行控制計算的。另外在PID控制中,由于PID算式選擇的不同,最終所得到的控制效果是不同的。下面進(jìn)行PID控制算法的研究。圖5 單片機閉環(huán)控制系統(tǒng)框圖 位置式PID的控制算法 如前所述PID調(diào)節(jié)的微分方程為:將此微分方程寫成對應(yīng)的差分方程形式. (4)式中:第n次采樣周期內(nèi)所獲得的偏差信號;第n1次采樣周期內(nèi)所獲得的偏差信號;T采樣周期;調(diào)節(jié)器第rt次控制變量的輸出;為了編寫計算機程序的方便,現(xiàn)將算式(4)寫成下列形式 (5)式中:,因為采樣周期T,積分常數(shù)和微分常數(shù)選定后皆為常數(shù),因此及必為常。當(dāng)調(diào)整參數(shù)改善控制性能時,也只須調(diào)整、和的大小即可。 增量式PID的控制算法在位置式PID控制算法中,每次的輸出與控制偏差e過去整個變化過程相關(guān),這樣由于偏差的累加作用很容易產(chǎn)生較大的累積偏差,使控制系統(tǒng)出現(xiàn)不良的超調(diào)現(xiàn)象。由算式(4)可得: (6)用(4)式減去(6)式,可得增量式PID的算式: (7)其中,為了編寫程序方便,將(7)式改寫成下列形式: (8)式中:,從增量式PID的算式中可知,只要知道了現(xiàn)時以前的三次采樣周期內(nèi)的偏差信號,即可計算出本次采樣周期內(nèi)的控制變量y的增量。 綜合以上分析,我們采用增量式PID算法,本系統(tǒng)的軟件控制算法主要采用了增量式PID 控制算法。其控制算法的流程圖為: 步進(jìn)電機控制流程圖如下:六、數(shù)據(jù)處理和分析PWM的設(shè)定我們通過設(shè)定PWM來控制步進(jìn)電機的轉(zhuǎn)速。當(dāng)T=6S時,我們通過試湊的方法了解到,當(dāng)PWM=1/300時,所給步進(jìn)電機剛好啟動,當(dāng)PWM=1/17時,步進(jìn)電機速度達(dá)到最大。步進(jìn)電機的測速我們通過用軟件設(shè)定一個轉(zhuǎn)速,然后與用光電開關(guān)采集回來的速度相比較,采用閉環(huán)的PID控制來達(dá)到步進(jìn)電機穩(wěn)定調(diào)速的目的。我們在程序中設(shè)定轉(zhuǎn)速為72 rpm,當(dāng)采集回來的數(shù)據(jù)小于72rpm時,我們通過改變PID的相應(yīng)的參數(shù)(=,= ,=)來調(diào)節(jié)電機的轉(zhuǎn)速,讓步進(jìn)電機的轉(zhuǎn)速加起來,使之與72 rpm相吻合。同樣,當(dāng)采集回來的數(shù)據(jù)大于72rpm時,也改變PID的相應(yīng)的參數(shù)來調(diào)節(jié)電機的轉(zhuǎn)速,讓步進(jìn)電機的轉(zhuǎn)速加起來,使之與72 rpm相吻合。七、實驗心得及體會通過本次課程設(shè)計我們學(xué)習(xí)到了許多書本上沒有的知識,通過自己查資料和互相討論,對系統(tǒng)進(jìn)行整體設(shè)計后基本達(dá)到了要求,實現(xiàn)步進(jìn)電機速度閉環(huán)控制并通過對系統(tǒng)控制算法的比較,綜合考慮,選用了閉環(huán)的PID控制,使我們對PID的控制有了更深刻的認(rèn)識,使自己將理論與實際相結(jié)合起來同時對51系列的單片機的設(shè)計及編程有了更深的了解,學(xué)會了很多。同時衷心感謝老師的指導(dǎo)。 附錄 include include define uchar unsigned chardefine uint unsigned int float f=0。bit F_in=0,truer。 sbit P10=P3^0 。sbit P12=P3^2。//sbit P14=P1^4。sbit LCD_RS = P2^0。 sbit LCD_RW = P2^1。sbit LCD_EN = P2^2。//sbit BEEP = P3^7。 uchar code cdis1[ ] = {motorspeed: }。 uchar code cdis2[ ] = { number: }。define delayNOP()。 {_nop_()。_nop_()。_nop_()。_nop_()。}。uchar key_buf。 //顯示緩存uchar temp。uchar key,key_num=0。 uchar LCD0_data,LCD1_data,LCD2_data,LCD3_data。 //鍵順序嗎uchar data testdata[] = {0x00,0x00,0x00,0x00}。uchar data in_data[] = {0x01,0x02}。uchar shift 。uint i。uint q。uint j。/********************************************************/void initime(){ TMOD=0x51。 //T1計數(shù)器,T0定時器,方式1 TL0=(6553610000)%256。 TH0=(6553610000)/256。 //定時10000us TL1=0。 TH1=0。 ET0=1。 EA=1。}void delay(uint ms) { uchar t。 while(ms) { for(t = 0。 t 120。 t++)。 }} void mydelay() { for(i=0。i100。i++) for(j=0。j1000。j++)。}/*************************************************************//* *//* 延時 x* *//* *//*************************************************************/void delay0(uchar x) { unsigned char i。 while(x) { for (i = 0。 i13。 i++) {} }}bit lcd_busy() { bit result。 LCD_RS = 0。 LCD_RW = 1。 LCD_EN = 1。 delayNOP()。 result = (bit)(P0amp。0x80)。 LCD_EN = 0。 return(result)。 }void lcd_wdat(uchar dat){ while(lcd_busy())。 LCD_RS = 1。 LCD_RW = 0。 LCD_EN = 0。 P0 = dat。 delayNOP()。 LCD_EN = 1。 delayNOP()。 LCD_EN = 0。 }void lcd_wcmd(uchar cmd){ while(lcd_busy())。 LCD_RS = 0。 LCD_RW = 0。 LCD_EN = 0。 _nop_()。 _nop_()。 P0 = cmd。 delayNOP()。 LCD_EN = 1。 delayNOP()。 LCD_EN = 0。 }void lcd_pos(uchar pos){ lcd_wcmd(pos | 0x80)。 //數(shù)據(jù)指針=80+地址變量}void dectobit(int dec){ LCD3_data=dec/1000+0x30。 dec=dec % 1000。 LCD2_data=dec/100。 dec=dec % 100。LCD1_data=dec/10+0x30。dec=dec % 10+0x30。LCD0_data=dec。 }void display1(){lcd_pos(0x0b)。lcd_wdat(LCD3_data)。 lcd_pos(0x0c)。lcd_wdat(LCD2_data)。 lcd_pos(0x0d)。lcd_wdat(LCD1_data)。 lcd_pos(0x0e)。lcd_wdat(LCD0_data)。 lcd_pos(0x4b)。lcd_wdat(0x31)。 } void lcd_init(){ delay(15)。 lcd_wcmd(0x38)。 //16*2顯示,5*7點陣,8位數(shù)據(jù) delay(5)。 lcd_wcmd(0x38)。 delay(5)。 lcd_wcmd(0x38)。 delay(5)。 lcd_wcmd(0x0c)。 //顯示開,關(guān)光標(biāo) delay(5)。 lcd_wcmd(0x06)。 //移動光標(biāo) delay(5)。 lcd_wcmd(0x01)。 //清除LCD的顯示內(nèi)容 delay(5)。}/*************************************************************/ Void main(){ uchar m。 lcd_init()。 initime()。 TR0=1。 TR1=1。 //初始化LCD P10=1。 P12=0。 lcd_pos(0x00)。 //設(shè)置顯示位置為第一行 for(m=0。m16。m++) lcd_wdat(cdis1[m])。 lcd_pos(0x40)。 //設(shè)置顯示位置為第二行 for(m=0。m16。m++) lcd_wdat(cdis2[m])。 //TMOD=0x21。 //將T1設(shè)置為8位自動重裝工作方式。 // TH1=175。 //對T1定時常數(shù)進(jìn)行預(yù)置。 //TL1=175。 // TR1=1。 //啟動T1。 while(1) {dectobit(f)。// key_buf=key_buf+0x30。 } } timer()interrupt 1 using 2{ i=i+1。 if(i==600) { i=0。 f=TH1*256+TL1。 TL1=0。 TH1=0。 } TL0=(6553610000)
點擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1