電子設計大賽報告_第1頁
電子設計大賽報告_第2頁
電子設計大賽報告_第3頁
電子設計大賽報告_第4頁
電子設計大賽報告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2013年全國大學生電子設計競賽設 計 報 告 【本科組】2013年9月7日26 / 27文檔可自由編輯打印摘 要 本系統(tǒng)以單片機為控制核心,采用角度傳感器(ADXL345)實時采集自由擺旋轉角度及方向,通過直流電機開環(huán)控制旋轉角度,以實現(xiàn)控制要求。此外,為方便實驗和調(diào)試,專門有1602液晶顯示旋轉角度模塊和按鍵模塊。本設計以PWM調(diào)速來控制角度的調(diào)整,這種外部事件驅動的程序設計方法能夠及時響應擺桿角度的變化,總體程序設計簡潔,響應時間快,控制精度高。由于直流電機速度大,且不易控制,因此我們根據(jù)單擺在運動過程中的狀態(tài),實時調(diào)節(jié)單擺的速度,使其在運動過程中,更加平穩(wěn)。關鍵字: 角度傳感器(ADX

2、L345) 單擺平穩(wěn)運動 直流電機 AbstractThis design by STC15F2K60S2 microcontroller as the control core, system variable is obtained by Angle sensor, the application of PID control algorithm, PWM motor speed to control level inverted pendulum, realize stand in certain Angle range of dynamic balance. At the same t

3、ime can be set by keyboard operation mode and the related point of value, has a good man-machine interface. System design has simple structure, low production cost, high control precision, has the high cost performance.Key words: single chip microcomputer; Level 1 inverted pendulum; The PID目 錄一、系統(tǒng)方案

4、分析31.1 主控制器件的選擇41.2 角度測量獲取模塊的選擇5二、系統(tǒng)理論分析與計算52.1 電機驅動模塊的選擇52.2倒立擺的控制分析52.2.1 簡易旋轉倒立擺及控制裝置62.2.2 倒立擺旋轉角度分析72.3角度測量分析以及功能介紹7三、電路與程序設計93.1電路的設計9系統(tǒng)總體框圖如圖6所示。9電路原理圖詳見附錄1。93.2程序設計103.2.1程序功能描述103.2.2具體的程序分析設計103.2.3源程序11部分源程序見附錄2。11四、測試方案與測試結果11五、總結11附錄1:電路原理圖13附錄2:部分源程序15簡易旋轉倒立擺及控制裝置(C題) 一、系統(tǒng)方案分析設計并制作一套簡易

5、旋轉倒立擺及其控制裝置。旋轉倒立擺的結構如后面文中的圖2所示。電動機A固定在支架B上,通過轉軸F驅動旋轉臂C旋轉。擺桿E通過轉軸D固定在旋轉臂C的一端,當旋轉臂C在電動機A驅動下作往復旋轉運動時,帶動擺桿E在垂直于旋轉臂C的平面作自由旋轉。在實時控制時,對自由擺的擺角、擺速及擺動方向的測量十分關鍵,傳感器的的精度和單擺相應速度也直接決定著最終的控制效果。據(jù)此,本系統(tǒng)采用以單片機為核心的倒立擺控制系統(tǒng)主要由以下幾個功能模塊構成:1、單片機控制模塊2、角度測量獲取模塊 3、傳感器平衡控制模塊4、電機驅動模塊5、角度值顯示模塊系統(tǒng)框圖如圖1所示。單片機控制角度測量獲取控制平穩(wěn)運動驅動 角度值顯示 圖

6、1 系統(tǒng)組成框圖1.1 主控制器件的選擇方案一:采用在面包板上搭建簡易單片機系統(tǒng)在面包板上搭建單片機系統(tǒng)可以方便的對硬件做隨時修改,也易于搭建,但是系統(tǒng)連線較多,不僅相互干擾,使電路雜亂無章,而且系統(tǒng)可靠性低,不適合本系統(tǒng)使用。方案二:自制單片機印刷電路板自制印刷電路實現(xiàn)較為困難,實現(xiàn)周期長,此外也會花費較多的時間,影響整體設計進程。不宜采用該方案。方案三:采用單片機最小系統(tǒng)。單片機最小系統(tǒng)包含了、A/D、D/A以及獨立鍵盤等模塊,能明顯減少外圍電路的設計,降低系統(tǒng)設計的難度,非常適合本系統(tǒng)的設計。綜合以上三種方案,我們最終選擇方案三。簡單易行,又能鍛煉我們自身的能力。我們選用STC15F2K

7、60S2單片機作為控制核心。1.2 角度測量獲取模塊的選擇方案一:采用加速度傳感器加速度傳感器采用模擬量輸出,需要放大電路及A/D完成角度的測量,并在1602上顯示出來。方案二:采用電位器作為角度傳感器自由擺系統(tǒng)的角度測量也可采用可變電阻器。精密的可變電阻器具易獲得、價格低廉、重復性高、分辨率高、高頻響應特性好、易使用等特點。但是可變電阻器也是模擬信號輸出,需要A/D信號的轉換,增加系統(tǒng)復雜性,而且安裝要求較高,帶來了硬件設計的不便。方案三:采用增量式光電旋轉編碼器光電編碼器是一種角度(角速度)檢測裝置,它將輸入給軸的角度量,利用光電轉換原理轉換成相應的電脈沖。旋轉編碼器具有體積小,精度高,工

8、作可靠,接口數(shù)字化等優(yōu)點。但是旋轉編碼器操作較為麻煩,實現(xiàn)條件較高。綜合以上三種方案,我們最終選擇方案一。我們選擇角度傳感器ADXL345作為量化角度的器件,精度達到0.1度。ADXL345是一款小而薄的超低功耗3軸加速度計,分辨率高(13位),測量范圍達±16g。數(shù)字輸出數(shù)據(jù)為16位二進制補碼格式,可通過SPI(3或4線)或I2C數(shù)字接口訪問。ADXL345非常適合移動設備應用。它可以在傾檢測應用中測量靜態(tài)重力加速度,還可以測量運動或沖擊導致的動態(tài)加速度。其高分辨率(3.9mg/LSB),能夠測量不到1.0°的傾斜角度變化。二、系統(tǒng)理論分析與計算2.1 電機驅動模塊的選擇

9、步進電動機的速率較慢,對本題的部分功能例如倒立等動作的實現(xiàn)是十分困難的。所以我們采用PWM方式控制的直流電機。直流電機速度大,便于實現(xiàn)題目中旋轉一周,倒立等動作,同時可以通過實時控制單擺的速率來使單擺運行更平穩(wěn),且直流電機較步進電機控制較為簡單,對本系統(tǒng)來說較為合適。采用L298直流電機驅動模塊:最大可提供2A驅動電流和24V驅動電壓,可驅動小車直流電機作精確運動。2.2倒立擺的控制分析2.2.1 簡易旋轉倒立擺及控制裝置(1) 建立倒立擺運動模型,由于系統(tǒng)是由輕桿和直流電機等組成,相較于直流電機,輕桿質量很小,可以近似認為旋轉臂重心在直流電機中心即支架的中心附近,擺桿在沿一定半徑自由擺動。(

10、2) 示意圖如圖2所示:圖2 旋轉倒立擺結構示意圖 (1)在最低位置時單擺將達到最大速度,因此在不計空氣阻力及固定點摩擦力的情況下利用能量守恒定律有:,得出在不超過60°,l=1.0m的情況下。計算得v=2.236m/s,由角速度與線速度之間的關系,得出= =2.236rad/s=128/s(2)自由擺周期計算根據(jù)單擺的周期計算公式;得單擺周期T=1.986ms(3)使單擺左右轉擺角達到或超過-60° +60°的模型分析在自由擺在一個小角度時擺動時,自由擺運動模型便是一個物理單擺模型。本系統(tǒng)由于受直流電機控制,速度變化較大,不易控制,在實驗初期發(fā)現(xiàn)單擺基本是在旋轉

11、臂慣性的作用下機械的移動,于是我們通過軟件控制,使其在上升過程中通過增加占空比加速,下降過程中減小占空比減速,通過不斷調(diào)試,最終單擺可以平滑的運動。 在做圓周運動時,先給單擺一個較大的初速度,等到轉到最高點時,給它一個反向的速度,使其反方向做圓周運動。2.2.2 倒立擺旋轉角度分析對于基礎部分(1),為使擺桿從處于自然下垂狀態(tài)(擺角0°)開始,驅動電機帶動旋轉臂作往復旋轉使擺桿擺動,并盡快使擺角達到或超過-60° +60°;需要保持C旋轉臂始終垂直于自由擺臂E。本實驗倒立擺的圓周運動,以及角度的顯現(xiàn)是通過該角度傳感器的角度特性,比較容易實現(xiàn)。2.3角度測量分析以及

12、功能介紹ADXL345是加速度傳感器,根據(jù)重力在xyz軸上的分量,有反正弦以及反正切函數(shù)可以求得各個面或者各個軸上偏轉的夾角。本系統(tǒng)偏轉角為-180+180,由于單擺的變化始終在一個面內(nèi),所以選擇X軸的偏轉角,作為采樣以及處理的數(shù)據(jù)。原理圖如圖3所示:圖3 ADXL345原理圖ADXL345測得的精度為0.1度,能夠靈敏的檢測到單擺的移動,根據(jù)傳感器的返回值可以準確的控制單擺的動作。以下圖4為ADXL345的功能框圖,圖5為引腳配置圖,表1為功能描述。圖4 ADXL的功能框圖圖5 ADXL345引腳圖表1 ADXL345功能描述表三、電路與程序設計3.1電路的設計系統(tǒng)總體框圖如圖6所示。圖6

13、系統(tǒng)總體框圖電路原理圖詳見附錄1。3.2程序設計3.2.1程序功能描述主程序根據(jù)不同的要求設定不同的控制模式,在各個模式間切換。根據(jù)設計要求,我們把程序歸為幾個模式,由按鍵切換模式。具體分配如下:模式一對應為基本要求一,即擺桿從處于自然下垂狀態(tài)(擺角0°)開始,驅動電機帶動旋轉臂作往復旋轉使擺桿擺動,并盡快使擺角達到或超過-60° +60°。模式二對應為基本要求二,即使擺盡快的旋轉做圓周運動。模式三對應基本要求三,倒立擺在外力的作用下,通過角度傳感器以一定的方式倒立狀態(tài)不小于5秒鐘,且保證擺臂C旋轉角度不大于90度。3.2.2具體的程序分析設計 (1)主程序分析設

14、計圖7 主程序流程圖主程序流程圖如圖7所示,主程序由三個按鍵控制三個模式的選擇。當系統(tǒng)啟動時,S1按下選擇模式一,S2按下選擇模式二;若S3按下,那么執(zhí)行模式三。(2)模式三的角度測量分析論證模式三的角度測量中斷服務判斷程序。選擇模式三后,擺桿緩慢拉到一定的角度,同時單片機獲得送來的脈沖并記錄下來,拉到一定角度后擺桿停止,此時,單片機就獲得了最后的角度值。按鍵開始后,單片機根據(jù)獲取的角度值,換算為電機的轉動脈沖數(shù),送給電機,電機立即開始轉動,保持平板對擺桿的垂直。最后,電機鎖定,避免電機的抖動。3.2.3源程序部分源程序見附錄2。四、測試方案與測試結果1測量驗證擺臂帶動自由擺轉動角度測試方法:

15、在最低點處保持擺臂水平,啟動電機開始轉動,同時單擺擺動,用量角器測出擺臂偏離水平的角度是否符合模式一的要求。 2完成圓周運動測試方法:從擺桿處于自然下垂狀態(tài)開始,啟動電機并啟動定時器,盡快增大運轉速度,直至完成圓周運動。如果在30秒內(nèi)仍然沒有完成完美的圓周運動,則要調(diào)節(jié)電機驅動的加速模塊,在30秒內(nèi)盡快完成圓周運動。3外力撤除同時,啟動控制旋轉臂使擺桿保持倒立狀態(tài)時間不少于5s;期間旋轉臂的轉動角度不大于90°。測試方法:將擺桿推至一個角度165度,在旋轉桿上綁定角速度傳感器,啟動系統(tǒng)后,利用定時器達到這一目的。五、總結此次基于自由擺的平板控制系統(tǒng)設計,以STC15F2K60S2單片

16、機為控制核心,采用直流電機開環(huán)控制旋轉臂E轉動,利用加速度傳感器ADXL345,以實現(xiàn)控制要求。通過不斷地調(diào)試程序,不斷地用自己的方法制作精美的裝置,雖然很辛苦,但感受到了有史以來最大的滿足感,不僅鍛煉了我們堅持不懈的品質,還培養(yǎng)了我們敢于吃苦的精神。通過這次大賽,讓我們懂得了團隊合作無比的重要,讓我們學到了以前沒有有學到的知識,更鍛煉了我們的自學能力。在此表示深深地謝意。 參考文獻1全國大學生電子設計競賽組委會.全國大學生電子設計競賽獲獎作品選編M.北京:北京理工大學出版社,2007.2劉寶延.步進電機直流電機及其驅動控制系統(tǒng)M.哈爾濱:哈爾濱工業(yè)大學出版社,1972.3周航慈.單片機應用程

17、序設計技術M.北京:北京航空航天大學出版社,1991.4 郁有文.傳感器原理及工程應用M.西安:西安電子科技大學出版社,2008.5 吳建平.傳感器原理及應用M.北京:機械工業(yè)出版社,2009.6 宋戈.51單片機應用開發(fā)范例大全M.北京:人民郵電出版社,2010.7 唐繼賢.51單片機工程應用實例M.北京:北京航空航天大學出版社,2009.附錄1:電路原理圖附錄2:部分源程序ADXL345 模塊#include<IAP15F2K61S2.h>#include<function.h>#include<stdio.h>#include<math.h>

18、;#include"PWM.h"#define slaveaddress_I2C 0xa6double xtemp,ytemp,ztemp;float x,y,z;uchar date_xyz6;int xyz_value3;uchar xtab8,ytab8,ztab8;bit w1byte_ADXL345_I2C(uchar regaddress,uchar date)start_I2C();w1byte_I2C(slaveaddress_I2C);if(ack=0)return 0;w1byte_I2C(regaddress);if(ack=0)return 0;w1

19、byte_I2C(date);if(ack=0)return 0;stop_I2C();return 1;uchar r1byte_ADXL345_I2C(uchar regaddress)uchar temp;start_I2C();w1byte_I2C(slaveaddress_I2C);w1byte_I2C(regaddress);start_I2C();w1byte_I2C(slaveaddress_I2C+1);temp=r1byte_I2C();ack_I2C(1);stop_I2C();return temp;void readxyz_ADXL345_I2C()uchar i;s

20、tart_I2C();w1byte_I2C(slaveaddress_I2C);w1byte_I2C(0x32);start_I2C();w1byte_I2C(slaveaddress_I2C+1);for(i=0;i<6;i+)date_xyzi=r1byte_I2C();if(i=5)ack_I2C(1);else ack_I2C(0);stop_I2C();delayms(5);void get_xyz_value()readxyz_ADXL345_I2C();xyz_value0=(date_xyz1<<8)|date_xyz0;xyz_value1=(date_xy

21、z3<<8)|date_xyz2;xyz_value2=(date_xyz5<<8)|date_xyz4;void init_ADXL345()uchar i;int tempx=0,tempy=0,tempz=0; char x,y,z; w1byte_ADXL345_I2C(0x31,0x2B); /測量范圍,正負16g,13位模式 w1byte_ADXL345_I2C(0x2C,0x0a); /速率設定為12.5 參考pdf13頁 w1byte_ADXL345_I2C(0x2D,0x08); /選擇電源模式 參考pdf24頁 w1byte_ADXL345_I2C(

22、0x2E,0x80); /不使能 DATA_READY 中斷 w1byte_ADXL345_I2C(0x1E,0x06); /X 偏移量 根據(jù)測試傳感器的狀態(tài)寫入pdf29頁 w1byte_ADXL345_I2C(0x1F,0x00); /Y 偏移量 根據(jù)測試傳感器的狀態(tài)寫入pdf29頁 w1byte_ADXL345_I2C(0x20,0x00); /Z 偏移量 根據(jù)測試傳感器的狀態(tài)寫入pdf29頁for(i=0;i<50;i+)get_xyz_value();tempx+=xyz_value0;tempy+=xyz_value1;tempz+=xyz_value2;x=-(tempx/

23、50/4+0.5);y=-(tempy/50/4+0.5);z=-(tempz/50-256)/4+0.5); w1byte_ADXL345_I2C(0x1E,x); /X 偏移量 根據(jù)測試傳感器的狀態(tài)寫入pdf29頁 w1byte_ADXL345_I2C(0x1F,y); /Y 偏移量 根據(jù)測試傳感器的狀態(tài)寫入pdf29頁 w1byte_ADXL345_I2C(0x20,z); /Z 偏移量 根據(jù)測試傳感器的狀態(tài)寫入pdf29頁 void getdate()get_xyz_value();x=xyz_value0*3.9/1000.0;y=xyz_value1*3.9/1000.0;z=xy

24、z_value2*3.9/1000.0;void getangle()xtemp=atan2(y,x);xtemp=xtemp/3.1415926*180;ytemp=atan2(sqrt(x*x+y*y+z*z),y);ytemp=ytemp/3.1415926*180;/ztemp=atan2(z,sqrt(y*y+x*x);/ztemp=ztemp/3.1415926*180-180;void xianshi() init_I2C();init_1602();init_ADXL345(); writestring_1602(0,0,"ADXL345:");if(r1b

25、yte_ADXL345_I2C(0)!=0xe5)writestring_1602(1,0,"no found");while(1);elsewhile(1)getdate();getangle();sprintf(xtab,"x:%3.1fxdf",xtemp);writestring_1602(0,8,xtab);delayms(10);/sprintf(ytab,"y:%3.1fxdf",ytemp);writestring_1602(1,0,ytab);/delayms(10);/sprintf(ztab,"z:%3

26、.1fxdf",z);writestring_1602(1,9,ztab);/delayms(300); 定義函數(shù)#define uchar unsigned char#define uint unsigned intsbit scl=P16;sbit sda=P17;/sbit lcdrs=P45;/sbit lcdwr=P55;/sbit lcden=P54;/extern bit ack;extern void init_I2C();extern void start_I2C();extern void stop_I2C();extern void ack_I2C(bit a)

27、;extern void w1byte_I2C(uchar date);extern uchar r1byte_I2C();extern void delayms(uint ms);extern void init_1602();extern void writestring_1602(uchar hang,uchar lie,uchar *string);/extern uchar date_xyz6;extern int xyz_value3;extern void init_ADXL345();extern void getdate();extern void getangle();ex

28、tern void xianshi();extern void _165_();extern void readxyz_ADXL345_I2C();extern uchar r1byte_ADXL345_I2C(uchar regaddress);extern bit w1byte_ADXL345_I2C(uchar regaddress,uchar date);extern void get_xyz_value();#ifndef _PWM_H_#define _PWM_H_#define uchar unsigned char #define uint unsigned int#defin

29、e full_speed 80/#define correct_speed 0sbit IN1=P10; sbit IN2=P11;sbit ENA=P12;sbit key1=P25;sbit key2=P26;sbit key3=P27;extern void delay(uint xms);extern void init();extern void zheng();extern void zhengjia();extern void zhengjian();extern void fan();extern void fanjia();extern void fanjian();exte

30、rn void stop();extern void tiyi();extern void tier();#endifIIC函數(shù)#include<IAP15F2K61S2.h>#include<function.h>#include<intrins.h>bit ack;void delay_I2C()uchar i;_nop_();_nop_();i = 12;while (-i);void init_I2C()sda=1;scl=1;delay_I2C();void start_I2C()sda=1;scl=1;delay_I2C();sda=0;dela

31、y_I2C();scl=0;void stop_I2C()sda=0;scl=1;delay_I2C();sda=1;delay_I2C();/sda=0;/scl=0;void ack_I2C(bit a)/a=1是非應答位,0是應答位if(a=0)sda=0;else sda=1;scl=1;delay_I2C();scl=0;if(a=0)sda=1;else sda=0;void w1byte_I2C(uchar date)uchar i2cnt,wtemp;wtemp=date;for(i2cnt=0;i2cnt<8;i2cnt+)wtemp=wtemp<<1;sd

32、a=CY;scl=1;delay_I2C();scl=0; sda=1;scl=1;if(sda=0)ack=1;else ack=0;scl=0;uchar r1byte_I2C()uchar i2cnt,retc;for(i2cnt=0;i2cnt<8;i2cnt+)sda=1;scl=1;retc=(retc<<1)|sda;scl=0; return (retc);1602液晶串口顯示#include<IAP15f2K61S2.h>#include<intrins.h>#define uint unsigned int#define uchar

33、 unsigned charsbit SCL=P07;sbit SDA=P06;/uchar num1;void delay();void delayms(uchar i)uchar j;while(i-)for(j=110;j>0;j-);void IIC_init()SCL=1;delay(); SDA=1;delay(); void IIC_start()SDA=1;delay(); SCL=1;delay(); SDA=0;delay(); void IIC_stop()SDA=0;delay(); SCL=1;delay(); SDA=1;delay(); void IIC_r

34、espons()uchar i;SCL=1;delay();while(SDA=1)&&(i<255) i+;SCL=0;delay(); void Writebyte(uchar byte)uchar i,temp;temp=byte;for(i=0;i<8;i+)temp=temp<<1;SCL=0;delay(); SDA=CY;delay(); SCL=1;delay(); SCL=0;delay(); SDA=1;delay(); void Write_add(uchar address)IIC_start();Writebyte(0x4e);IIC_respons();Writebyte(address);IIC_respons();

溫馨提示

  • 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

提交評論