風板控制裝置論文_第1頁
風板控制裝置論文_第2頁
風板控制裝置論文_第3頁
風板控制裝置論文_第4頁
風板控制裝置論文_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2015年全國大學生電子設計競賽風板控制裝置(I題)【高職高專組】2015年8月15日摘 要 本系統(tǒng)通過對直流小風扇風速的調(diào)節(jié)實現(xiàn)對風板轉(zhuǎn)角的控制,使風板轉(zhuǎn)角能夠隨風速變化而改變,且能快速達到設定角度并穩(wěn)定。IAP15F2K61S2單片機為控制核心,通過鍵盤設定風板板角度,1602實時顯示角度。單片機輸出PWM波控制風扇的風速,通過GY521mpu-6050測量風板的傾角反饋至單片機,采用PID控制經(jīng)典算法,使系統(tǒng)實現(xiàn)精確控制,然后微調(diào)風速的大小使風板角度達到穩(wěn)定。并且在達到設定范圍時進行聲光提示。通過調(diào)試與測試,實現(xiàn)了基本部分與發(fā)揮部分,最終實現(xiàn)在懸掛重物的情況下風板能達到設定角度控制,且最

2、終絕對值誤差不超過5度. 關(guān)鍵字:1602; GY521mpu-6050;PWM;PID算法 2 目 錄1系統(tǒng)方案11.1 角度測量方案選擇11.2 風扇控制方案選擇21.3顯示方案選擇21.4控制器方案選擇22系統(tǒng)理論分析與計算32.1 風扇調(diào)試原理32.2角度測量原理32.3 PID控制算法的分析33電路與程序設計43.1電路的設計43.1.1系統(tǒng)總體框圖43.1.2角度檢測電路43.1.3 風扇驅(qū)動電路53.1.4按鍵及顯示電路53.1.5電源電路63.2程序的設計63.2.1程序功能描述與設計思路63.2.2程序流程圖64測試方案與測試結(jié)果74.1測試方法與儀器74.2測試過程及數(shù)據(jù)7

3、4.3測試分析與結(jié)論8附錄1:電路原理圖10附錄2:實物圖11 1系統(tǒng)方案 根據(jù)題目要求,本系統(tǒng)可以分為控制部分和信號檢測部分.控制部分則包括顯示模塊、按鍵模塊、聲光報警模塊、風扇驅(qū)動模塊四個基本部分。信號檢測部分為角度測量模,測量風板的角度。下面分別論證這幾個模塊的選擇。1.1 角度測量方案選擇 方案一:采用MMA7260重力加速度傳感器,由于加速度傳感器在靜止放置時受到重力作用,因此會有 1g的重力加速度。利用這個性質(zhì),通過測量重力加速度在加速度傳感器的 X 軸和 Y 軸上的分量,可以計算出其在垂直平面上的傾斜角度。根據(jù)如圖1.1所示,有Ax = gsin,Ay =gcos 。則=tan即

4、 =arctan().這樣,根據(jù)以上原理一個2 軸加速度傳感器可以測量在X-Y 平面上的傾斜角度。該方案原理簡單,操作方便,但使用起來運算量較大,程序較為復雜,對于單片機來說,會顯得有點吃力,因此我們放棄選用該方案。 圖1.1加速度傳感器角度測量原理 方案二:MPU-6000為全球首例整合性6軸運動處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時之軸間差的問題,減少了大量的包裝空間。MPU-6000能以數(shù)字輸出6軸或9軸的旋轉(zhuǎn)矩陣、四元數(shù)(quaternion)、歐拉角格式(Euler Angle forma)的融合演算數(shù)據(jù)。內(nèi)建之運作時間偏差與磁力感測器校正演算技術(shù),免除了客戶須另外進

5、行校正的需求。符合設計要求,同時也是我們平時有接觸的模塊。故綜合考慮實際中選擇方案二。1.2 風扇控制方案選擇方案一:采用可控硅控制調(diào)速,通過控制雙向可控硅的導通角,使輸出端電壓發(fā)生改變,從而使施加在電風扇的輸入電壓發(fā)生改變,以調(diào)節(jié)風扇的轉(zhuǎn)速,實現(xiàn)各檔位風速的無級調(diào)速。但可控硅控制控制原理決定了只能滯后觸發(fā),因此,晶閘管可控制整流器對交流電源來說相當于一個感性負載,吸取滯后的無功電流,因此功率因素低。并且晶閘管整流裝置的輸出電壓是脈動的,而且脈波數(shù)總是有限的。如果主電路電感不是非常大,則輸出電流總存在連續(xù)和斷續(xù)兩種情況,因而機械特性也有連續(xù)和斷續(xù)兩段,因此功率因素低,故我們不選用該方案。方案二

6、:采用直流斬波控制,改變電壓輸出開關(guān)斷時間,將直流電源電壓斷續(xù)加到負載上,即可實現(xiàn)風扇調(diào)速控制,它具有效率高、體積小、成本低等優(yōu)點。我們可以采用單片機由軟件來實現(xiàn)PWM波,簡化系統(tǒng)硬件設計,通過改變PWM波的占空比的值即可改變電樞端電壓的平均值從而達到調(diào)速的目的。再加上PID算法控制,而整個系統(tǒng)的PWM波形的產(chǎn)生是通過PID算法調(diào)節(jié) ,這樣提高了系統(tǒng)的穩(wěn)定性和可靠性,讓系統(tǒng)控制更加精確。故綜合考慮實際中選擇方案二。1.3顯示方案選擇 方案一:使用數(shù)碼管顯示,通過數(shù)碼管顯示被測角度和設定角度。該方案程序簡單,但硬件占用單片機I/O口較多,對于盡量節(jié)約端口,讓線路簡單來說不是好方法,而且顯示也不夠

7、直觀靈活,只能顯示數(shù)字,不能顯示漢字顯示功能提示, 故不適合本次設計應用。 方案二:使用液晶屏LCD1602,具有體積小,使用方便等特點。并且可以顯示字母,數(shù)字等功能,觀察顯示很直觀,通過字幕顯示各種菜單界面 、設定角度、測量角度等。該方案程序較復雜,但顯示觀察清晰,顯示直接明白,完全符合本系統(tǒng)設計功能。故為最佳方案,我們選擇方案二。1.4控制器方案選擇 方案一:采用FPGA(現(xiàn)場可編程門陣列)作為系統(tǒng)的控制器;將所有的器件集成在一塊芯片上,這樣外圍電路較少,控制板的體積小,穩(wěn)定性高,擴展性能好;而且FPGA采用并行的輸入/輸出方式,系統(tǒng)處理速度快,再加上FPGA有方便的開發(fā)環(huán)境和豐富的開發(fā)工

8、具等資源可利用,易于調(diào)試;但是FPGA得成本偏高,算術(shù)運算能力不強,而本設計系統(tǒng)的設計會用到較多算術(shù)運算,所以FPGA的高速處理的優(yōu)勢得不到充分體現(xiàn)。 方案二:采用STC公司的IAP15F2K61S2單片機作為系統(tǒng)的控制器。單片機算術(shù)運算功能強,軟件編程靈活,可用軟件較簡單的實現(xiàn)各種算術(shù)和邏輯控制,并且由于其成本低,體積小和功耗低等優(yōu)點,使其在各個領域應用廣泛;另外,由于本設計中會用到較多的算術(shù)運算,所以對本系統(tǒng)來說非常適合利用單片機作為控制器。 基于以上分析,選擇方案二。2系統(tǒng)理論分析與計算2.1 風扇調(diào)試原理 單片機控制的小型直流電機的一般采用PWM脈沖調(diào)制方式實現(xiàn)速度的控制。 PWM基本

9、原理: PWM即脈沖寬度調(diào)制(定義),是直流電源電壓基本不變的情況下通過電子開關(guān)的通斷,改變施加到電機電樞端得直流電壓脈沖寬度(即所謂的占空比),以調(diào)節(jié)輸入電機電樞的電壓平均值的調(diào)速方式。 通過改變固定周期內(nèi)直流電壓的占空比來改變電機兩端的直流平均電壓,進而達到控制風力大小的一種方法。PWM可以應用在許多方面,如電機調(diào)速、溫度控制、壓力控制等。 通過改變直流電機電樞上電壓的"占空比"來改變平均壓的大小,從而控制電動機的轉(zhuǎn)速。只要按一定規(guī)律,改變通、斷電的時間,即可讓電機轉(zhuǎn)速得到控制。設電機始終接通電源時,電機轉(zhuǎn)速最大為Vmax, 設占空比為D=t1T,則電機的平均速度為式中

10、,Vd - 電機的平均速度; Vmax- -電機全通電時的速度(最大); D=t1T -占空比。 由此可見,當我們改變占空比D:t1T時,就可以得到不同的電機平均速度Vd ,嚴格地講,平均速度 Vd與占空比 D并不是嚴格的線性關(guān)系,在一般的應用中,可以將其近似地看成線性關(guān)系。2.2角度測量原理 mpu6050工作原理:作為一款物理傳感器,其工作原理是利用物理效應,諸如壓電效應,將被測信號量的微小變化轉(zhuǎn)換成電信號。MPU6050是一款9軸運動處理傳感器。它集成了3軸MEMS陀螺儀,3軸MEMS加速度計,以及一個可擴展的數(shù)字運動處理器DMP(Digital Motion Processor),可用

11、I2C接口連接一個第三方的數(shù)字傳感器,比如磁力計。擴展之后就可以通過其I2C或SPI接口輸出一個9軸的信號(SPI接口僅在MPU-6000可用)。MPU-6050也可以通過其I2C接口連接非慣性的數(shù)字傳感器,比如壓力傳感器。極大提高系統(tǒng)最小精度,符合題目要求。2.3 PID控制算法的分析 PID控制算法是控制理論中應用很廣泛的一種算法,對于一般控制系統(tǒng)來說,PID算法從某種意義來說具有通用性,對各種系統(tǒng)具有廣泛的適用性,通過現(xiàn)場的參數(shù)調(diào)試,可以達到很好的控制效果。對于我們這次風板控制系統(tǒng)的設計,我們同樣也可以使用PID控制算法,具體算法如下: e(i)=t測-t設 E= (2) 算法中,u(i

12、)為當時的功率輸出。T為采樣時間,E為誤差積累,KP為比例常數(shù),Ti為積分常數(shù),Td為微分常數(shù)。根據(jù)實際系統(tǒng),調(diào)節(jié)這三個常數(shù),可以達到更好的效果。3電路與程序設計3.1電路的設計3.1.1系統(tǒng)總體框圖系統(tǒng)總體框圖如圖3.1所示:單片機LCD1602聲光系統(tǒng)角度傳感器風板調(diào)速裝置電機(風扇)獨立鍵盤 圖3.1系統(tǒng)總體框圖3.1.2角度檢測電路 采用GY-52角度傳感器,免除了組合陀螺儀與加速器時之軸間差的問題,減少了大量的包裝空間。MPU-6000整合了3軸陀螺儀、3軸加速器,可以直接輸出角度轉(zhuǎn)換為數(shù)字信號傳遞給單片機進行調(diào)速控制。其電路圖如圖3.2所示: 圖3.2角度檢測電路3.1.3 風扇驅(qū)

13、動電路 采用單片機產(chǎn)生PWM波,簡化硬件電路設計,實現(xiàn)性價比高特點,改變PWM波的占空比的值即可改變電樞端電壓的平均值從而達到調(diào)速的目的。外加LM298驅(qū)動電路,即可完全實現(xiàn)調(diào)速控制。LM298N它采用單片集成塑裝, 是一個高電壓、大電流全雙橋驅(qū)動器,由標準的TTL電平控制。L298N支持50V以內(nèi)的電機控制電壓,在直流運轉(zhuǎn)條件下,可以通過高達2A的電流,因此它滿足了一般小型電機的控制要求。接法見圖3.3,圖中二極管的作用是消除電機的反向電動勢,保護電路,因此采用整流二極管比較合適。PWM控制信號由in1、in2輸入。如果in1為高電平,in2為低電平時電機為正向轉(zhuǎn)速,反之in1為低電平,in

14、2為高電平時,電機為反向轉(zhuǎn)速。本設計將in2直接接地,即采用單向制動的方式。圖3.3 L298N模塊實物圖3.1.4按鍵及顯示電路 圖3.4 1602顯示電路本設計采用1個鍵作為鍵盤,分別為選擇2種模式。按是一種,不按又是一種。圖3.5 按鍵輸入電路3.1.5電源電路電源由變壓部分、濾波部分、穩(wěn)壓部分組成。為整個系統(tǒng)提供5V或者12V電壓,確保電路的正常穩(wěn)定工作。我們采取的是單電源供電,把12v的直流電供給電機,用降壓芯片把電壓穩(wěn)定到5V,提供給單片機工作,并實現(xiàn)了互不干擾。同時單片機可以間接控制電機的調(diào)速。LM337可調(diào)穩(wěn)壓3.2程序的設計3.2.1程序功能描述與設計思路1、 程序功能描述:

15、可以輸出精確的角度信息,并利用PWM來高速調(diào)節(jié)電機的開關(guān)從而實現(xiàn)對電機速度控制,使得角度傳感器,風板,電機,單片機,LCD1602,形成了一個簡單的系統(tǒng)。2、程序設計思路:先是利用角度傳感器對風板的角度進行精確的實時顯示,利用角度傳感器傳輸?shù)臄?shù)據(jù)對pwm進行控制,使得電機的風速得到控制,最后風速來反饋給角度傳感器,形成了一個封閉的反饋使的閉環(huán)系統(tǒng)。4測試方案與測試結(jié)果4.1測試方法與儀器測試方法:先通過Keil C軟件實現(xiàn)程序調(diào)試和進行初步仿真,再通過protues仿真軟件搭建電理圖,實現(xiàn)對程序功能的實現(xiàn)仿真,并且用虛擬仿真軟件Multisim對硬件電路實現(xiàn)功能仿真,確保電路無誤后,在制作硬質(zhì)

16、電路板,焊接電路,實現(xiàn)軟硬件聯(lián)合調(diào)試。測試儀器:量角器、秒表、直尺、模擬示波器、數(shù)字示波器、數(shù)字萬用表、指針式萬用表。4.2測試過程及數(shù)據(jù) 1.測試基本功能一:用手搬動風板時,數(shù)字顯示風板的轉(zhuǎn)角。實際測試時,風板角度能夠從45-135度變化,符合題目要求。 2.測試基本功能二:當懸掛10克重物時,使風板角度 能夠在45-135度范圍變化,并實時顯示角度。在完成要求的同時,要求誤差不超過5度,反應時間15秒,測試如下: 風力大小(%)角度(°)403044454750506553805595601056512073135 表1 基本功能二測試 3.測試基本功能三:當間距為10cm時,通

17、過控制按鍵控制風力大小,在 45°±5°范圍內(nèi)。要求控制過程在10 秒內(nèi)完成,實時顯示,并由聲光提示,以便進行測試。測試數(shù)據(jù)如表2所示: 風力大?。?)角度(°)用時(s)52486.351483.143443.1 表2. 基本功能測試三 4. 測試發(fā)揮功能一: 當間距掛10克重物時,通過鍵盤設定風板轉(zhuǎn)角,其范圍為45-135要在 15秒內(nèi)達到設定值,并實時顯示。最大誤差的絕對值不超過5°測試數(shù)據(jù)如 表3所示:設定角度(°)實際角度(°)風力大小(%)調(diào)整時間(s)303000501412137024171690282213

18、110364312130547611150180800 5測試發(fā)揮功能二:在功能一的基礎上,通過鍵盤設定模式,要求在兩個預設角度間擺動四次,擺動周期不超過5秒,最大誤差的絕對值不超過 5°。測試數(shù)據(jù)達到要求4.3測試分析與結(jié)論根據(jù)上述測試數(shù)據(jù),系統(tǒng)完全符合要求,誤差在允許范圍內(nèi),實現(xiàn)全部功能,有些指標還很高精度。由此可以得出以下結(jié)論:綜上所述,本設計達到設計要求。26附錄1:電路原理圖角度傳感器電路原理圖附錄2:實物圖附錄3:系統(tǒng)程序#include <stc15f2k60s2.H>#include <math.h> /Keil library #includ

19、e <stdio.h> /Keil library#include <INTRINS.H>typedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned int uint;/*/ 定義51單片機端口/*#define DataPort P0/LCD1602數(shù)據(jù)端口sbit SCL=P24;/IIC時鐘引腳定義sbit SDA=P23;/IIC數(shù)據(jù)引腳定義sbit LCM_RS=P22;/LCD1602命令端口sbit LCM_RW=P21;/LCD1602命令端口sbit LCM_EN

20、=P20;/LCD1602命令端口 /*/ 定義MPU6050內(nèi)部地址/*#defineSMPLRT_DIV0x19/陀螺儀采樣率,典型值:0x07(125Hz)#defineCONFIG0x1A/低通濾波頻率,典型值:0x06(5Hz)#defineGYRO_CONFIG0x1B/陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s)#defineACCEL_CONFIG0x1C/加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)#defineACCEL_XOUT_H0x3B#defineACCEL_XOUT_L0x3C#defineACCEL_YOU

21、T_H0x3D#defineACCEL_YOUT_L0x3E#defineACCEL_ZOUT_H0x3F#defineACCEL_ZOUT_L0x40#definePWR_MGMT_10x6B/電源管理,典型值:0x00(正常啟用)#defineWHO_AM_I0x75/IIC地址寄存器(默認數(shù)值0x68,只讀)#defineSlaveAddress0xD0/IIC寫入時的地址字節(jié)數(shù)據(jù),+1為讀取/*/定義類型及變量/*uchar dis4;/顯示數(shù)字(-511至512)的字符數(shù)組intdis_data;/變量/intTemperature,Temp_h,Temp_l;/溫度及高低位數(shù)據(jù)/*

22、/函數(shù)聲明/*void delay(unsigned int k);/延時/LCD相關(guān)函數(shù)void InitLcd();/初始化lcd1602void lcd_printf(uchar *s,int temp_data);void WriteDataLCM(uchar dataW);/LCD數(shù)據(jù)void WriteCommandLCM(uchar CMD,uchar Attribc);/LCD指令void DisplayOneChar(uchar X,uchar Y,uchar DData);/顯示一個字符void DisplayListChar(uchar X,uchar Y,uchar *

23、DData,L);/顯示字符串/MPU6050操作函數(shù)void InitMPU6050();/初始化MPU6050void Delay5us();void I2C_Start();void I2C_Stop();void I2C_SendACK(bit ack);bit I2C_RecvACK();void I2C_SendByte(uchar dat);uchar I2C_RecvByte();void I2C_ReadPage();void I2C_WritePage();void display_ACCEL_x();void display_ACCEL_y();void display_

24、ACCEL_z();uchar Single_ReadI2C(uchar REG_Address);/讀取I2C數(shù)據(jù)void Single_WriteI2C(uchar REG_Address,uchar REG_data);/向I2C寫入數(shù)據(jù)/*/整數(shù)轉(zhuǎn)字符串/*void lcd_printf(uchar *s,int temp_data)*+s =temp_data/100+0x30;temp_data=temp_data%100; /取余運算*+s =temp_data/10+0x30;temp_data=temp_data%10; /取余運算*+s =temp_data+0x30; /

25、*/延時/*void delay(unsigned int k)unsigned int i,j;for(i=0;i<k;i+)for(j=0;j<121;j+);/*/LCD1602初始化/*void InitLcd()WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);DisplayOneChar(0,0,'A');DisplayOneChar(0,1,'G')

26、;/*/LCD1602寫允許/*void WaitForEnable(void)DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPort&0x80);LCM_EN=0;/*/LCD1602寫入命令/*void WriteCommandLCM(uchar CMD,uchar Attribc)if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();L

27、CM_EN=0;/*/LCD1602寫入數(shù)據(jù)/*void WriteDataLCM(uchar dataW)WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*/LCD1602寫入一個字符/*void DisplayOneChar(uchar X,uchar Y,uchar DData)Y&=1;X&=15;if(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);

28、/*/LCD1602顯示字符串/*void DisplayListChar(uchar X,uchar Y,uchar *DData,L)uchar ListLength=0; Y&=0x1; X&=0xF; while(L-) DisplayOneChar(X,Y,DDataListLength);ListLength+; X+; /*/延時5微秒(STC90C52RC12M)/不同的工作環(huán)境,需要調(diào)整此函數(shù)/當改用1T的MCU時,請調(diào)整此延時函數(shù)/*void Delay5us()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

29、_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*/I2C起始信號/*void I2C_Start() SDA = 1; /拉高數(shù)據(jù)線 SCL = 1; /拉高時鐘線 Delay5us(); /延時 SDA = 0; /產(chǎn)生下降沿 Delay5us(); /延時 SCL = 0; /拉低時鐘線/*/I2C停止信號/*void I2C_Stop() SDA

30、= 0; /拉低數(shù)據(jù)線 SCL = 1; /拉高時鐘線 Delay5us(); /延時 SDA = 1; /產(chǎn)生上升沿 Delay5us(); /延時/*/I2C發(fā)送應答信號/入口參數(shù):ack (0:ACK 1:NAK)/*void I2C_SendACK(bit ack) SDA = ack; /寫應答信號 SCL = 1; /拉高時鐘線 Delay5us(); /延時 SCL = 0; /拉低時鐘線 Delay5us(); /延時/*/I2C接收應答信號/*bit I2C_RecvACK() SCL = 1; /拉高時鐘線 Delay5us(); /延時 CY = SDA; /讀應答信號

31、SCL = 0; /拉低時鐘線 Delay5us(); /延時 return CY;/*/向I2C總線發(fā)送一個字節(jié)數(shù)據(jù)/*void I2C_SendByte(uchar dat) uchar i; for (i=0; i<8; i+) /8位計數(shù)器 dat <<= 1; /移出數(shù)據(jù)的最高位 SDA = CY; /送數(shù)據(jù)口 SCL = 1; /拉高時鐘線 Delay5us(); /延時 SCL = 0; /拉低時鐘線 Delay5us(); /延時 I2C_RecvACK();/*/從I2C總線接收一個字節(jié)數(shù)據(jù)/*uchar I2C_RecvByte() uchar i; uc

32、har dat = 0; SDA = 1; /使能內(nèi)部上拉,準備讀取數(shù)據(jù), for (i=0; i<8; i+) /8位計數(shù)器 dat <<= 1; SCL = 1; /拉高時鐘線 Delay5us(); /延時 dat |= SDA; /讀數(shù)據(jù) SCL = 0; /拉低時鐘線 Delay5us(); /延時 return dat;/*/向I2C設備寫入一個字節(jié)數(shù)據(jù)/*void Single_WriteI2C(uchar REG_Address,uchar REG_data) I2C_Start(); /起始信號 I2C_SendByte(SlaveAddress); /發(fā)送

33、設備地址+寫信號 I2C_SendByte(REG_Address); /內(nèi)部寄存器地址, I2C_SendByte(REG_data); /內(nèi)部寄存器數(shù)據(jù), I2C_Stop(); /發(fā)送停止信號/*/從I2C設備讀取一個字節(jié)數(shù)據(jù)/*uchar Single_ReadI2C(uchar REG_Address)uchar REG_data;I2C_Start(); /起始信號I2C_SendByte(SlaveAddress); /發(fā)送設備地址+寫信號I2C_SendByte(REG_Address); /發(fā)送存儲單元地址,從0開始I2C_Start(); /起始信號I2C_SendByte

34、(SlaveAddress+1); /發(fā)送設備地址+讀信號REG_data=I2C_RecvByte(); /讀出寄存器數(shù)據(jù)I2C_SendACK(1); /接收應答信號I2C_Stop(); /停止信號return REG_data;/*/初始化MPU6050/*void InitMPU6050()Single_WriteI2C(PWR_MGMT_1, 0x00);/解除休眠狀態(tài)Single_WriteI2C(SMPLRT_DIV, 0x07);Single_WriteI2C(CONFIG, 0x06);Single_WriteI2C(GYRO_CONFIG, 0x18);Single_Wr

35、iteI2C(ACCEL_CONFIG, 0x01);/*/合成數(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ù)/*/在1602上顯示10位數(shù)據(jù)/*void Display10BitData(int value,uchar x,uchar y)lcd_printf(dis, value);/轉(zhuǎn)換數(shù)據(jù)顯示DisplayListChar(x,y,dis,4);/啟始列,行,顯示數(shù)組,

36、顯示長度/* /sbit mac1=P10;sbit mac=P11;void pwm_init()CMOD=0X02;CH=0;CL=0;CCAPM0=0X42;CCAP0L=0X9a;CCAP0H=0X9a;Delay5us();CCAPM1=0X42;CCAP1L=0X9a;CCAP1H=0X9a;Delay5us();CR=1;sbit key=P25;sbit key1=P26;sbit key2=P27;sbit key3=P17;sbit led=P16;uint flag=0,flag1=0;uchar flag3=0;uint temp;uint cnt=0,cnt1=0;u

37、char code angl13="060"uchar code angl210="100 090"void Delay50ms(uint r)/11.0592MHzunsigned char i, j, k;uint t;for(t=0;t<r;t+)_nop_();_nop_();i = 3;j = 26;k = 223;dodowhile (-k); while (-j); while (-i);uint jd()int v10,i; int y,z;uint te;for(i=0;i<10;i+)y=GetData(ACCEL_YOU

38、T_H);Delay5us(); z=GetData(ACCEL_ZOUT_H);Delay5us(); y/=64;z/=64;if(y<0)y=-y;vi=(float)(atan2(z,y)*180)/3.14159265);vi=90-vi;te=v0+v1+v2+v4+v4+v5+v6+v7+v8+v9;te=(te/10)+(te%10);Display10BitData(te,2,0);return te;void ang1_93() /需要進一步優(yōu)化基本的第一問if(temp<140)CCAP0L=150-36;CCAP0H=150-36;CCAP1L=150-30

39、;CCAP1H=150-30;if(temp=105)led=0;/調(diào)整時間,if(temp>94)&&(temp<101)&&(led=0)Delay50ms(1);flag+; if(flag=90)led=1;flag1=1;if(flag1=1)CCAP0L=150;CCAP0H=150;CCAP1L=150-36;CCAP1H=150-36;Delay50ms(10);CCAP0L=0x9a;CCAP0H=0x9a;CCAP1L=0x9a;CCAP1H=0x9a;void ang2_70_105()uint flag2=0;int j,t2

40、;int pwm_counter0=0,pwm_counter1=0;for(j=0;j<2;j+)tj=jd();delay(15);if(t1-t0)>0)flag2=1;else if(t1-t0)<0)flag2=2;/負數(shù)if(temp<85)if(flag2=2)pwm_counter1+;pwm_counter1+;delay(1);CCAP1L=150-pwm_counter1;CCAP1H=150-pwm_counter1;if(pwm_counter1>=51)pwm_counter1=51;if(flag2=1)pwm_counter1+;p

41、wm_counter1+;delay(1);CCAP1L=150-pwm_counter1;CCAP1H=150-pwm_counter1;pwm_counter0-;delay(1);CCAP0L=150-pwm_counter0;CCAP0H=150-pwm_counter0;if(pwm_counter1>=51)pwm_counter1=51;if(pwm_counter0<=0)pwm_counter0=0;if(temp>95)if(flag2=1) pwm_counter0+;pwm_counter0+;delay(1);CCAP0L=150-pwm_counter0;CCAP0H=150-pwm_counter0;pwm_counter1-;delay(1);CCAP1L=150-pwm_counter1;CCAP1H=150-pwm_counter1;if(pwm_counter0>=47)pwm_counter0=48;if(pwm_counter1<=0)pwm_counter1=0;if(flag2=2)pwm_counter0+;pwm_counter

溫馨提示

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

評論

0/150

提交評論