2015年電子設計大賽-風板控制系統(tǒng)_第1頁
2015年電子設計大賽-風板控制系統(tǒng)_第2頁
2015年電子設計大賽-風板控制系統(tǒng)_第3頁
2015年電子設計大賽-風板控制系統(tǒng)_第4頁
2015年電子設計大賽-風板控制系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、風板控制裝置報告班級:541332 學號:31 姓名:賈好 專業(yè):機電一體化 2015年10月20日摘 要本系統(tǒng)以MSP430單片機為控制核心,通過PID算法,實現(xiàn)了對風板的控制。系統(tǒng)主要由電源模塊、角度測量模塊、電機驅(qū)動模塊、顯示模塊、鍵盤模塊和聲光模塊等構(gòu)成。通過PID反饋輸出PWM來改變直流風機風力大小,使風板轉(zhuǎn)角根據(jù)需求變化。加速度傳感器MPU6050檢測風板位置的變化,并將風板角度在LCD液晶器上顯示,同時單片機對采集的數(shù)據(jù)進行分析,實時調(diào)整PWM輸出,通過驅(qū)動芯片L298N控制風機風速,使風板達到穩(wěn)定的狀態(tài),并帶有相應的聲光提醒功能,使系統(tǒng)人性化,經(jīng)過反復測試,達到了設計要求。關鍵

2、詞:MSP430;PID;PWM;直流風機;MPU60501 系統(tǒng)方案本系統(tǒng)主要由主控模塊、角度檢測模塊、電機驅(qū)動模塊、顯示模塊、電源模塊組成,下面分別論證這幾個模塊的選擇。1.1主控模塊的論證與選擇方案一:采用傳統(tǒng)8位的51單片機作為該系統(tǒng)的控制核心。經(jīng)典51單片機具有價格低廉,使用簡單等特點,但其存在外設I/O端口較少,運算速度低,功能單一,不穩(wěn)定等缺點。方案二:采用 TI 公司所生產(chǎn)的 MSP430F149 單片機為主控制芯片,運算速度快,超低功耗,有非常豐富的片內(nèi)資源,性價比高。 綜合比較以上兩個方案,選擇TI公司生產(chǎn)的430芯片,在低功耗方面有顯著的優(yōu)勢,處理數(shù)據(jù)快,且其片內(nèi)資源豐富

3、,滿足系統(tǒng)設計需求。1.2角度檢測模塊方案論證方案一:采用模擬三軸加速度計MMA7260, MMA7260QT是檢測物件運動和方向的傳感器,它根據(jù)物件運動和方向改變輸出信號的電壓值。通過A/D轉(zhuǎn)換器讀取輸出信號,檢測其運動和方向。 方案二:采用mpu6050傳感器可準確追蹤快速與慢速動作,并且可調(diào)整感測范圍,可快速、直接將檢測信號給控制器 ??刂品褰嵌仁莻€快速處理的過程,方案一還需采集電路對AD進行采集轉(zhuǎn)化為數(shù)字量,綜合考慮選擇方案二。1.3電機驅(qū)動模塊本設計的主要目的在于控制風機的轉(zhuǎn)速,因此電機驅(qū)動模塊是必不可少,其方案有以下兩種。方案一:采用大功率晶體管組合電路構(gòu)成驅(qū)動電路,這種方法結(jié)構(gòu)

4、簡單,成本低、易實現(xiàn),但由于在驅(qū)動電路中采用了大量的晶體管相互連接,使得電路復雜、抗干擾能力差、可靠性下降,我們知道在實際的生產(chǎn)實踐過程中可靠性是一個非常重要的方面。因此此中方案不宜采用。方案二:采用專用的電機驅(qū)動芯片,例如L298N、L297N等電機驅(qū)動芯片,由于它內(nèi)部已經(jīng)考慮到了電路的抗干擾能力,安全、可靠行,所以我們在應用時只需考慮到芯片的硬件連接、驅(qū)動能力等問題就可以了,所以此種方案的電路設計簡單、抗干擾能力強、可靠性好。設計者不需要對硬件電路設計考慮很多,可將重點放在算法實現(xiàn)和軟件設計中,大大的提高了工作效率。基于上述理論分析和實際情況,電機驅(qū)動模塊選用方案二。1.4 顯示模塊方案方

5、案一:選用常見的數(shù)碼管顯示,成本低,只能顯示簡單的字符和數(shù)字。顯示位數(shù)較多時,輪番掃描占用CPU時間。方案二:選用12864顯示屏做顯示。12864的顯示為128x64,顯示面積大,數(shù)字和漢字顯示容易實現(xiàn),程序要求不是很高,更加方便。方案三:用彩屏做顯示。彩屏顯示效果好,但成本高,功耗大,編程設計相對繁瑣。由于系統(tǒng)顯示信息量較多,對比所述方案,選擇12864作為系統(tǒng)顯示器。1.5電源模塊方案電源是任何系統(tǒng)能否運行的能量來源,本系統(tǒng)中電源模塊為主控制器、電機驅(qū)動、角度檢測模塊等提供電源。方案一:通過電阻分壓的形式將整流后的電壓分別降為控制芯片和電機運行所需的電壓,此種方案原理和硬件電路連接都比較

6、簡單,但對能量的損耗大,在實際應用系統(tǒng)同一般不宜采用。方案二:通過固定芯片對整流后的電壓進行降壓、穩(wěn)壓處理(如7812、7805等),此種方案可靠性、安全性高,對能源的利用率高,并且電路簡單容易實現(xiàn)。根據(jù)系統(tǒng)的具體要求,采用方案二作為系統(tǒng)的供電模塊。2.系統(tǒng)理論分析與計算2.1角度確定風板運動過程中需要實時檢測角度的變化,通過計算加速度傳感器傳回的數(shù)據(jù),可以測得風板的角度,加速度與角度存在如下關系:2.2風速控制風速的快慢直接決定了系統(tǒng)風板角度的大小。通過pid調(diào)節(jié),單片機輸出PWM波形,可對風板進行快速、準確的調(diào)整。通過不斷調(diào)整P(比例)、I(積分)、D(微分)值,系統(tǒng)的穩(wěn)定性得到明顯的提高

7、,響應時間也加快了。由各個參數(shù)的控制規(guī)律可知,比例P使反應變快,微分D使反應提前,積分I使反應滯后。在一定范圍內(nèi),P,D值越大,調(diào)節(jié)的效果越好。3.電路與程序設計3.1硬件電路設計系統(tǒng)總體框圖如圖3.1所示。圖 3.1系統(tǒng)總體框圖3.1.1單片機最小系統(tǒng)設計 MSP430F149單片機,其最小系統(tǒng)包括電源電路、復位電路、時鐘電路,具體電路設計如圖3.2所示。圖3.2 最小系統(tǒng)原理圖3.1.2 角度測量設計本系統(tǒng)中要實時監(jiān)控風板的角度,系統(tǒng)采用mpu6050傳感器,通過計算可迅速得出測量的角度,從而反饋給單片機進行相應操作。3.1.3 顯示模塊設計本系統(tǒng)采用LCD12864作為顯示,模塊電路圖如

8、圖 3.3所示。圖 3.3 LCD12864電路圖3.1.4直流風機驅(qū)動電機驅(qū)動芯片L298N內(nèi)部包含4通道邏輯驅(qū)動電路。是一種二相和四相電機的專用驅(qū)動器。L298可驅(qū)動2個電機,OUT1、OUT2和OUT3、OUT4之間分別接2個電動機。5、7、10、12腳接輸入控制電平,控制電機的正反轉(zhuǎn),ENA,ENB接控制使能端,控制電機的停轉(zhuǎn)。利用單片機產(chǎn)生PWM信號接到ENA,ENB端子,對電機的轉(zhuǎn)速進行調(diào)節(jié)。電機驅(qū)動電路如圖3.4所示。圖3.4電機驅(qū)動3.1.5供電系統(tǒng)電路在電子電路及設備中,一般都需要穩(wěn)定的直流電源供電。小功率的穩(wěn)壓電源的組成如圖3.5所示,它由電源變壓器、整流電路、濾波電路和穩(wěn)

9、壓電路四部分組成。直流穩(wěn)壓電源電路如圖3.6所示。圖 3.5直流穩(wěn)壓電路工作原理圖 3.6LM2596可調(diào)電源模塊3.2程序設計3.2.1程序功能描述根據(jù)設計要求,軟件部分主要實現(xiàn)風機轉(zhuǎn)速控制以及聲光報警與液晶顯示。 (1)風機轉(zhuǎn)速控制部分:在鍵盤按下設定風板的角度后,風板15s內(nèi)處于指定位置并穩(wěn)定5秒以上,上下波動不超過5度,根據(jù)傳感器測出的距離通過PID算法調(diào)整風機轉(zhuǎn)速來調(diào)整風板的位置。 (2)鍵盤設置部分:在鍵盤按下后,風機作出相應轉(zhuǎn)速,風板達到指定位置。 (3)液晶顯示部分:液晶器顯示風板位置及維持時間。3.2.2程序設計思路系統(tǒng)程序主要由角度檢測部分,PID調(diào)節(jié)部分和顯示部分組成。設

10、定需求角度,通過獲取測量角度值來反饋給單片機,單片機做出相應的PWM調(diào)節(jié),從而達到需求的角度。同時液晶將對實時采集的角度和按鍵值信息進行顯示。3.2.3程序流程圖程序總體流程圖如圖3.7所示,PWM控制流程圖如圖3.8所示,12864液晶顯示電路流程圖如圖3.9所示。 圖 3.7 程序主流程圖 圖3.8 PWM控制電路 圖3.9 12864液晶程序流程圖4系統(tǒng)測試4.1測試儀器高精度的數(shù)字毫伏表、模擬示波器、數(shù)字示波器、數(shù)字萬用表、指針式萬用表、量角器、秒表。4.2測試方案1、硬件測試對各個模塊進行測試,測試通過后使用。2、軟件仿真測試對程序的錯誤和不能正確實現(xiàn)的部分進行調(diào)節(jié)和改正。3、硬件軟

11、件聯(lián)調(diào)對整體功能的實現(xiàn)進行進一步調(diào)節(jié)。4.3 測試結(jié)果及分析4.3.1測試結(jié)果a. 風板實際角度與角度傳感器角度比較實測角406080100120130150角度傳感器值405981101120131150b.風板角度與pwm關系如表4.2所示。不帶砝碼測試次數(shù)設定角度測試結(jié)果測試誤差完成時間14526538549051156135帶砝碼745865985109011115121354.3.2測試分析與結(jié)論根據(jù)上述測試數(shù)據(jù),隨著PWM的增加,風機的風速逐漸加大,風板設定的角度能維持35s,由此可以得出以下結(jié)論:1、風機的轉(zhuǎn)速可通過PWM調(diào)控且成正比關系。2、風板實際角度與傳感器檢測的角度誤差1

12、度,當穩(wěn)定時,角度誤差小于5度波動,符合系統(tǒng)要求。綜上所述,本系統(tǒng)達到設計要求。5 設計總結(jié)不說我們在電賽中學到的新知識是多么有價值,也不用說它拓寬了多少我們的眼界,只是說它讓我們的能力得到提高就已足以成為我們努力付出的回報。在這四天三夜的奮戰(zhàn)中,遇到過很多困難,搭載硬件時,由于對量角器安裝角度有誤差,導致軟件校準時存在較大誤差,經(jīng)過仔細排查,不斷改變方案,最終解決了問題。軟件調(diào)試時,PID參量設置成了最頭疼的問題,過大調(diào)整系統(tǒng)波動較大,過小調(diào)整風板很難達到預設角度。功夫不負有心人,兩天的幸苦沒有白費,當風機穩(wěn)定的轉(zhuǎn)動到達預設角度時,喜悅之情難以言表。理論與現(xiàn)實總是用通過實踐聯(lián)系起來的,我們在

13、這次比賽中不再是局限于課本或是參考資料中的理論知識,而是把所有的實驗都按部就班的做過,并通過實驗結(jié)果對所理解的知識進行了加強鞏固,更是對原來的理解偏差進行了改正,使我們對平時所學的課程更加透徹。當然,我們自己動手焊接了不少硬件電路,用到了大量的基礎知識,還把實習中學到的焊接技術,對以前的知識進行了一次整合。再來,它增強了我們的溝通能力。合作精神是一個團隊成立成長的根本所在,我們組的隊員從第一個合作項目起就十分的團結(jié),大家各有分工,共同討論,為我們?nèi)蘸蟮墓ぷ髂芰Υ蛳铝嘶A。這次大賽給予了我們很多,通過這次比賽大家一起交流學習,互幫互助,增強了合作意識。老師們的幫助讓我們感覺老師不再僅僅是一個指導

14、者,更像一個家長帶領我們成長,讓我們跟老師之間的關系更加的緊密。最后,我們衷心感謝我們的指導老師,也祝愿此次大賽圓滿成功!附錄1:源程序#include <msp430x14x.h>#include "PID.h"#define P_DATA 0.5#define I_DATA 0#define D_DATA 0typedef struct PID int SetPoint; /設定目標 Desired Value long SumError; /誤差累計 double Proportion; /比例常數(shù) Proportional Const double In

15、tegral; /積分常數(shù) Integral Const double Derivative; /微分常數(shù) Derivative Const int LastError; /Error-1 int PrevError; /Error-2PID;static PID sPID;static PID *sptr = &sPID;void IncPIDInit(int target) sptr->SumError = 0; /誤差的累加 sptr->LastError = 0; /Error-1 sptr->PrevError = 0; /Error-2 sptr->

16、Proportion =P_DATA; /比例常數(shù) Proportional Const sptr->Integral =I_DATA; /積分常數(shù) Integral Const sptr->Derivative =D_DATA; /微分常數(shù) Derivative Const sptr->SetPoint =target; /目標/增量式 PID 控制設計void PID_dat(unsigned int target) sptr->SetPoint =target; /目標int IncPIDCalc(int NextPoint) register int iErro

17、r, iIncpid; /當前誤差 iError = sptr->SetPoint - NextPoint; /增量計算 iIncpid = sptr->Proportion * iError /Ek 項 - sptr->Integral * sptr->LastError /Ek1 項 + sptr->Derivative * sptr->PrevError; /Ek2 項 /存儲誤差,用于下次計算 sptr->PrevError = sptr->LastError; sptr->LastError = iError; /返回增量值 re

18、turn(iIncpid);/位置式 PID 控制設計unsigned int LocPIDCalc(int NextPoint) register int iError,dError; iError = sptr->SetPoint - NextPoint; /偏差 sptr->SumError += iError; /積分 dError = iError - sptr->LastError; /微分 sptr->LastError = iError; return(sptr->Proportion * iError /比例項 + sptr->Integr

19、al * sptr->SumError /積分項 + sptr->Derivative * dError); /微分項#include <msp430x14x.h>#include"IIC.h"#include"lcd12864.h"#include <math.h>#include <stdio.h>int cunt=0;uchar dis5;/顯示數(shù)字(-511至512)的字符數(shù)組int dis_data;float Tvae() int data_xyz3; float Roll,Pitch,zz,Q

20、,T,K; data_xyz0=GetData(ACCEL_XOUT_H); /合成數(shù)據(jù) data_xyz1=GetData(ACCEL_YOUT_H); data_xyz2=GetData(ACCEL_ZOUT_H); Q=(float)data_xyz0*3.9; /分別是加速度X,Y,Z的原始數(shù)據(jù),10位的 T=(float)data_xyz1*3.9; K=(float)data_xyz2*3.9; Roll=(float)(atan2(K,T)*180/3.14159265)-90); /X軸角度值 return ( -Roll);void lcd_printf(uchar *s,i

21、nt temp_data)if(temp_data<0)temp_data=-temp_data;*s='-'else *s=' '*+s =temp_data/100+'0'temp_data=temp_data%100; /取余運算*+s =temp_data/10+'0'temp_data=temp_data%10; /取余運算*+s =temp_data+'0' *+s='0'void InitMPU6050() /Single_WriteI2C(PWR_MGMT_1, 0x80);

22、/復位 Single_WriteI2C(PWR_MGMT_1, 0x00); /解除休眠狀態(tài) Single_WriteI2C(SMPLRT_DIV, 0x07); /陀螺儀采樣率,典型值:0x07(125Hz) Single_WriteI2C(CONFIG, 0x06); /低通濾波頻率,典型值:0x06(5Hz) Single_WriteI2C(GYRO_CONFIG, 0x18); /陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s) Single_WriteI2C(ACCEL_CONFIG, 0x01);/加速計自檢,測量范圍及高通濾波頻率,典型值:0x01(不自檢,2

23、G,5Hz)/*/合成數(shù)據(jù)/*int GetData(uchar REG_Address)char H,L;H=Single_ReadI2C(REG_Address);L=Single_ReadI2C(REG_Address+1);return (H<<8)+L; /合成數(shù)據(jù)/*/在12864上顯示10位數(shù)據(jù)/*int Display10BitData(int value) value/=64;/轉(zhuǎn)換為10位數(shù)據(jù) lcd_printf(dis, value);/轉(zhuǎn)換數(shù)據(jù)顯示 /csj(y,x,dis); return value; void I2C_Start() SDA1; /拉

24、高數(shù)據(jù)線 SCL1; /拉高時鐘線 delayus(5); /延時 SDA0; /產(chǎn)生下降沿 delayus(5); /延時 SCL0; /拉低時鐘線/*/I2C停止信號/*void I2C_Stop() SDA0; /拉低數(shù)據(jù)線 SCL1; /拉高時鐘線 delayus(5); /延時 SDA1; /產(chǎn)生上升沿 delayus(5); /延時/*/I2C發(fā)送應答信號/入口參數(shù):ack (0:ACK 1:NAK)/*void I2C_SendACK(uchar ack) SDAOUT; if(ack) SDA1; else SDA0;/ SDA = ack; /寫應答信號 SCL1; /拉高時

25、鐘線 delayus(5); /延時 SCL0; /拉低時鐘線 delayus(5); /延時/*/I2C接收應答信號/*uchar I2C_RecvACK() uchar cy; SCL1; /拉高時鐘線 SDAIN; delayus(5); /延時 if(SDADATA) cy=1; else cy=0; / cy = SDA; /讀應答信號 SCL0; /拉低時鐘線 delayus(5); /延時 SDAOUT; return cy; /*/向I2C總線發(fā)送一個字節(jié)數(shù)據(jù)/*void I2C_SendByte(uchar dat) uchar i; for (i=0; i<8; i+) /8位計數(shù)器 if(dat<<i)&0x80) SDA1; else SDA0; / SDA = cy; /送數(shù)據(jù)口 SCL1; /拉高時鐘線 delayus(5); /延時 SCL0;

溫馨提示

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

評論

0/150

提交評論