磁懸浮原理實(shí)驗(yàn)儀制作及PID控制實(shí)驗(yàn)報(bào)告_第1頁
磁懸浮原理實(shí)驗(yàn)儀制作及PID控制實(shí)驗(yàn)報(bào)告_第2頁
磁懸浮原理實(shí)驗(yàn)儀制作及PID控制實(shí)驗(yàn)報(bào)告_第3頁
磁懸浮原理實(shí)驗(yàn)儀制作及PID控制實(shí)驗(yàn)報(bào)告_第4頁
磁懸浮原理實(shí)驗(yàn)儀制作及PID控制實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.開放性試驗(yàn):磁懸浮原理實(shí)驗(yàn)儀制作及PID控制試驗(yàn)報(bào)告實(shí)驗(yàn)內(nèi)容:學(xué)生通過磁懸浮有關(guān)知識(shí)的學(xué)習(xí),根據(jù)已有的試驗(yàn)?zāi)P?,設(shè)計(jì)出磁懸浮實(shí)驗(yàn)儀器,并進(jìn)行制作,進(jìn)而在計(jì)算機(jī)上用PID技術(shù)進(jìn)行調(diào)節(jié)和控制。難點(diǎn):PID控制程序的編寫及調(diào)試。創(chuàng)新點(diǎn):該實(shí)驗(yàn)以機(jī)械學(xué)院數(shù)控所得科研成果為依托,以一種新穎的方式,用磁懸浮小球直觀的展示了PID控制理論的應(yīng)用。該儀器構(gòu)造簡(jiǎn)單,成本低廉。此實(shí)驗(yàn)綜合應(yīng)用了電磁場(chǎng)、計(jì)算機(jī)、機(jī)械控制等相關(guān)知識(shí),具有一定的研究創(chuàng)新性特點(diǎn)。該儀器有望成為中學(xué)物理實(shí)驗(yàn)儀器,和高校PID控制實(shí)驗(yàn)儀器。關(guān)鍵問題1. 懸浮線圈的優(yōu)化設(shè)計(jì)2. 磁懸浮小球系統(tǒng)模型3. 磁懸浮小球的PID控制 電磁繞組優(yōu)化設(shè)計(jì)

2、小球質(zhì)量:鋼小球質(zhì)量:1520g小球直徑:15mm懸浮高度:3mm要求:根據(jù)懸浮高度、小球大小、小球重量設(shè)計(jì)懸浮繞組繞組鐵芯尺寸、線圈匝數(shù)、額定電流、線徑。電磁繞組優(yōu)化設(shè)計(jì):由磁路的基爾霍夫定律、畢奧-薩格爾定律和能量守恒定律,可得電磁吸力為: 式中:0空氣磁導(dǎo)率,4X10-7H/m; A鐵芯的極面積,單位m2; N電磁鐵線圈匝數(shù); z小球質(zhì)心到電磁鐵磁極表面的瞬時(shí)氣隙,單位m; i電磁鐵繞組中的瞬時(shí)電流,單位A。功率放大器中放大元器件的最大允許電壓為15V。為了降低功率放大器件上的壓力差,減少功率放大器件的發(fā)熱,設(shè)定懸浮繞組線圈電壓該值為12V。 約束條件:U12V電流、電壓與電阻的關(guān)系 電

3、阻:L漆包線的總長(zhǎng)度/mS漆包線的橫截面積/m2 d線徑的大小/m是漆包線線的電阻率,查表可知:1.5*1.75*e-8,單位:*m根據(jù)線圈的結(jié)構(gòu),可以得出漆包線的總長(zhǎng)度為:線圈的匝數(shù)為:綜上所述,電磁力為:在線圈骨架幾何尺寸和所加的電壓固定的情況下,線圈漆包線線徑d越大,漆包線的長(zhǎng)度L越小,電磁力F越大 。另外,漆包線線徑和電流之間還存在下述關(guān)系:因此,線徑d越大通過線圈的電流也大,線圈發(fā)熱越嚴(yán)重。優(yōu)化漆包線線徑和線長(zhǎng)必須綜合考慮電磁力大小、線圈額定電流。由最優(yōu)的漆包線線徑和線長(zhǎng),就可以得到合理的電磁繞組結(jié)構(gòu)參數(shù)。磁懸浮小球系統(tǒng)模型將鋼質(zhì)小球放入電磁鐵產(chǎn)生的磁場(chǎng)中,用傳感器檢測(cè)鋼球在螺線管磁

4、場(chǎng)中的位置,進(jìn)而用PID方法控制線圈電流以達(dá)到磁力和重力的平衡。 磁懸浮小球系統(tǒng)可由下面方程描述 :當(dāng)被控對(duì)象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時(shí),控制理論的其它技術(shù)難以采用時(shí),系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗(yàn)和現(xiàn)場(chǎng)調(diào)試來確定,這時(shí)應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個(gè)系統(tǒng)和被控對(duì)象或不能通過有效的測(cè)量手段來獲得系統(tǒng)參數(shù)時(shí),最適合用PID控制技術(shù)。 比例控制能迅速反應(yīng)誤差,從而減小穩(wěn)態(tài)誤差。但是,比例控制不能消除穩(wěn)態(tài)誤差。比例放大系數(shù)的加大,會(huì)引起系統(tǒng)的不穩(wěn)定。積分控制的作用是,只要系統(tǒng)有誤差存在,積分控制器就不斷地積累,輸出控制量,以消除誤差。因而,只要有足夠的時(shí)

5、間,積分控制將能完全消除誤差,使系統(tǒng)誤差為零,從而消除穩(wěn)態(tài)誤差。積分作用太強(qiáng)會(huì)使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩。微分控制可以減小超調(diào)量,克服振蕩,使系統(tǒng)的穩(wěn)定性提高,同時(shí)加快系統(tǒng)的動(dòng)態(tài)響應(yīng)速度,減小調(diào)整時(shí)間,從而改善系統(tǒng)的動(dòng)態(tài)性能。PID控制器參數(shù)整定的方法很多,概括起來有兩大類:一是理論計(jì)算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過理論計(jì)算確定控制器參數(shù)。這種方法所得到的計(jì)算數(shù)據(jù)未必可以直接用,還必須通過工程實(shí)際進(jìn)行調(diào)整和修改。二是工程整定方法,它主要依賴工程經(jīng)驗(yàn),直接在控制系統(tǒng)的試驗(yàn)中進(jìn)行,且方法簡(jiǎn)單、易于掌握,在工程實(shí)際中被廣泛采用。PID控制器參數(shù)的工程整定方法,主要有臨界比例法、反應(yīng)

6、曲線法和衰減法。 臨界比例度法進(jìn)行PID控制器參數(shù)的整定步驟: (1)首先預(yù)選擇一個(gè)足夠短的采樣周期TS,一般說TS應(yīng)小于受控對(duì)象純延遲時(shí)間的十分之一。 (2)用選定的TS,僅加入比例控制環(huán)節(jié)使系統(tǒng)工作,逐漸減小比例度,即加大比例放大系數(shù)KP,直至系統(tǒng)對(duì)輸入的階躍信號(hào)的響應(yīng)出現(xiàn)臨界振蕩(穩(wěn)定邊緣),將這時(shí)的比例放大系數(shù)記為Kr,臨界振蕩周期記為Tr。 (3) 以連續(xù)-時(shí)間PID控制器為基準(zhǔn),建立數(shù)字PID的控制度評(píng)價(jià)函數(shù) ,通過公式計(jì)算或查表確定PID控制器的參數(shù)TS,KP,TI和TD 。n 反應(yīng)曲線法(實(shí)驗(yàn)湊試法 )通過閉環(huán)運(yùn)行或模擬,觀察系統(tǒng)的響應(yīng)曲線,然后根據(jù)各參數(shù)對(duì)系統(tǒng)的影響,反復(fù)湊試

7、參數(shù),直至出現(xiàn)滿意的響應(yīng),從而確定PID控制參數(shù)。 實(shí)驗(yàn)湊試法的整定步驟為“先比例,再積分,最后微分”。 (1)整定比例控制 將比例控制作用由小變到大,觀察各次響應(yīng),直至得到反應(yīng)快、超調(diào)小的響應(yīng)曲線。 (2)整定積分環(huán)節(jié) 若在比例控制下穩(wěn)態(tài)誤差不能滿足要求,需加入積分控制。 先將步驟(1)中選擇的比例系數(shù)減小為原來的5080,再將積分時(shí)間置一個(gè)較大值,觀測(cè)響應(yīng)曲線。然后減小積分時(shí)間,加大積分作用,并相應(yīng)調(diào)整比例系數(shù),反復(fù)試湊至得到較滿意的響應(yīng),確定比例和積分的參數(shù)。 (3)整定微分環(huán)節(jié) 若經(jīng)過步驟(2),PI控制只能消除穩(wěn)態(tài)誤差,而動(dòng)態(tài)過程不能令人滿意,則應(yīng)加入微分控制,構(gòu)成PID控制。 先置

8、微分時(shí)間TD=0,逐漸加大TD,同時(shí)相應(yīng)地改變比例系數(shù)和積分時(shí)間,反復(fù)試湊至獲得滿意的控制效果和PID控制參數(shù)。比例十積分十微分(PID)控制器式中    KP比例放大系數(shù);TI積分時(shí)間;  TD微分時(shí)間。PID控制的程序?qū)崿F(xiàn):UpKp*error(k)UiUiKi*error(k)UdKd*(error(k)-error(k-1))U=Up+Ui+Ud在程序中我們采用的是增量是算法磁懸浮控制器介紹1、磁懸浮控制系統(tǒng)原理框圖磁懸浮控制器組成資源配置:*P0.0蜂鳴器,P0.1測(cè)試燈,P0.2、P0.3兩個(gè)按鍵。*P1.0-P1.4五路A/D;*P1.5-

9、P1.7控制LED;*P2.0-P2.7液晶數(shù)據(jù)傳輸;*P3.2-P3.4液晶控制線;*P3.0、P3.1接RS-232;*P3.5、P3.7兩路DA;1、P0口:STC125412AD的P0口只有四個(gè)引腳,資源分配如下: P0.0蜂鳴器,P0.1測(cè)試燈,P0.2、P0.3兩個(gè)按鍵。2、STC125412AD的I/O口資源介紹: *四個(gè)I/O口,共27個(gè)引腳,其中P0口上只有4個(gè)引腳P0.0-P0.3,P3口上只有7個(gè)引腳卻少P3.6腳,P1、P2口和8051一樣有8個(gè)引腳; *所有I/O口都有四種類型:準(zhǔn)雙向口(傳統(tǒng)8051模式)、推挽輸出、僅為輸入和開漏模式,均可由軟件配置成4種工作類型之

10、一; *每個(gè)口由2個(gè)控制寄存器(PxM0和PxM1)中的相應(yīng)位控制每個(gè)引腳工作類型;舉例: P2M0=0xC0;P2M0=0xA0; P2.7為開漏,P2.6為高阻輸入,P2.5為推挽輸出,P2.4-P2.0為弱上拉。1、控制器設(shè)計(jì)了5路AD,都經(jīng)調(diào)理送入單片機(jī),占用P1.0-P1.4五個(gè)I/O引腳,其中P1.4用于采集傳感器送入信號(hào),P1.1-P1.3用于控制PID算法參數(shù),P0.0用于設(shè)置小球浮起高度。2、設(shè)置P1口:設(shè)置:P1M0=0x1F;P1M1=0x00;或者P1M0=0x1F;PIM1=0x1F;傳感器信號(hào)AD轉(zhuǎn)換原理框圖2、控制信號(hào)AD轉(zhuǎn)換原理框圖1、控制器設(shè)計(jì)了兩路DA,占用

11、P3.5和P3.7兩個(gè)引腳,P3.5路DA送往功率放大器,P3.7路DA備用。2、DA電路原理: STC12C5412AD本沒有集成DA轉(zhuǎn)換功能,但是它有4路的PWM(脈沖寬度調(diào)制)信號(hào),PWM信號(hào)可以通過調(diào)理電路轉(zhuǎn)化為DA信號(hào)。3、DA電路原理框圖:4、I/O口設(shè)定:不能設(shè)置為高阻輸入!6、LED模塊1、P1.5-P1.7控制8個(gè)數(shù)碼管(LED) 為了節(jié)省I/O資源,選用了一片MAX7219。2、MAX7219簡(jiǎn)介 *一種高集成化的串行輸入輸出的共陰極LED顯示驅(qū)動(dòng)器; *每片可驅(qū)動(dòng)8位7段加小數(shù)點(diǎn)的共陰極數(shù)碼管,與單片機(jī)相連僅需3根線; *包括BCD譯碼器、多位掃描電路、段驅(qū)動(dòng)器、位驅(qū)動(dòng)器

12、和用于存放每個(gè)數(shù)據(jù)位的8X8靜態(tài)RAM以及數(shù)個(gè)工作寄存器; *可以編程控制工作寄存器,可以使MAX7219進(jìn)入不同的工作狀態(tài)。*控制信號(hào):DIN為串行數(shù)據(jù)輸入端,CIK為串行時(shí)鐘輸入端,LOAD為片選端;*DIGODIG7為吸收顯示器共陰極電流的位驅(qū)動(dòng)線,其最大值可達(dá)500mA;*SEGASEGG,DP 為驅(qū)動(dòng)顯示器7段及小數(shù)點(diǎn)的輸出電流,一般為40mA左右;*DOUT 為串行數(shù)據(jù)輸出端,通常直接接入下一片MAX7219的DIN端。在試驗(yàn)中使用的源程序:/test.c#include <STC12C5410AD.H>#include <intrins.h>#includ

13、e<stdio.h>p0m0=0;p0m1=0x00;sbit p02=P02; sbit p03=P03; sbit p00=P00; sbit p01=P01; extern pid(int kp,ki,kd,spec,yk);extern disp1(unsigned char dat4); /有時(shí)候真的很無奈,就少了一點(diǎn)東西。就是出不來啦,注意extern花了一天的時(shí)間,外加另建了一個(gè)項(xiàng)目。無語了extern disp2(unsigned char dat4); /沒一個(gè)冒號(hào);害了我老半天,特別注意了extern unsigned int ADC_TURNON(unsign

14、ed char speed,chanl);extern void Delayms(void);extern void dac(unsigned char pwm);externvoid disp_kp();externvoid disp_ki();externvoid disp_kd();unsigned char flag=1;void delay(unsigned int x); void main() int kp=0,ki=0,kd=0,spec=0,yk=0; unsigned char da;unsigned char show04=0x00,0x01,0x02,0x03;unsi

15、gned int a=0,b=0; while(1) p03=0;a=ADC_TURNON(3,0); show00=(unsigned char)(a/1000);show01=(unsigned char)(a%1000)/100);show02=(unsigned char)(a%1000)%100)/10);show03=(unsigned char)(a%1000)%100)%10); disp1(show0); Delayms(); b=ADC_TURNON(3,4); show00=(unsigned char)(b/1000);show01=(unsigned char)(b%

16、1000)/100);show02=(unsigned char)(b%1000)%100)/10);show03=(unsigned char)(b%1000)%100)%10); disp2(show0); Delayms(); kp=ADC_TURNON(3,3); ki=ADC_TURNON(3,2); kd=ADC_TURNON(3,1); spec=ADC_TURNON(3,0); yk=ADC_TURNON(3,4); da=pid(kp/100,ki/10,kd/10,spec/10,yk/10); dac(da); if(p02=0&&flag=1) flag

17、+; disp_kp(); delay(20); if(p02=0&&flag=2) flag+; disp_ki(); delay(20); if(p02=0&&flag=3) flag=1; disp_kd(); delay(20); /while的終止 /main的終止 void delay(unsigned int x)unsigned int m,k;for (m=0;m<x;m+)for (k=0;k<0xffff;k+); n=(unsigned char)(b%1000)/100);/disp.c用來led顯示結(jié)果#include &

18、lt;STC12C5410AD.H>#include <intrins.h>sbit P15 =P15;sbit P16 = P16;sbit P17 = P17;#define din P17#define load P16 #define clk P15#define NoOp 0x00 #define Digit0 0x01 #define Digit1 0x02#define Digit2 0x03 #define Digit3 0x04 #define Digit4 0x05 #define Digit5 0x06 #define Digit6 0x07 #defi

19、ne Digit7 0x08 #define DecodeMode 0x09 #define Intensity 0x0a #define ScanLimit 0x0b #define ShutDown 0x0c #define DisplayTest 0x0funsigned char code dispcode_char=0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b, 0x0, 0x1;extern unsigned int ADC_TURNON(unsigned char speed,chanl); void MAX7219_Writ

20、e(unsigned char com, unsigned char dat); void Delayms(void) unsigned int a,b; for(a=0;a<20;a+) for(b=0;b<100;b+);void MAX7219_Write(unsigned char com, unsigned char dat)unsigned char temp,i,j;load=0;clk=0;for(i=0;i<8;i+) temp=com;if(temp&(0x80>>i)!=0)din=1;else din=0;clk=1;for(j=0

21、;j<5;j+);clk=0; for(i=0;i<8;i+) temp=dat;if(temp&(0x80>>i)!=0)din=1;else din=0;clk=1;for(j=0;j<5;j+);clk=0; load=1;void MAX7219_Init() MAX7219_Write(ShutDown ,0x00);Delayms();MAX7219_Write(ShutDown ,0x01); MAX7219_Write(DecodeMode,0xff); MAX7219_Write(Intensity ,0x0a); / Intensity

22、 Register Format MAX7219_Write(ScanLimit,0x07); void MAX7219_Init1() MAX7219_Write(ShutDown ,0x00);Delayms();MAX7219_Write(ShutDown ,0x01); MAX7219_Write(DecodeMode,0x00); MAX7219_Write(Intensity ,0x0a); / Intensity Register Format MAX7219_Write(ScanLimit,0x07); void disp1(unsigned char dat4) load=1

23、; clk=1; din=1; MAX7219_Init(); /設(shè)P1.0/P1.1/P1.2/P1.3/P1.4為高阻輸入,其他為IO P1M0=0x1F; P1M1=0x00; MAX7219_Write(Digit0,dat0);MAX7219_Write(Digit1,dat1);MAX7219_Write(Digit2,dat2);MAX7219_Write(Digit3,dat3); void disp2(unsigned char dat4)load=1; clk=1; din=1; MAX7219_Init();P1M0=0x1F; P1M1=0x00; MAX7219_Wr

24、ite(Digit4,dat0);MAX7219_Write(Digit5,dat1);MAX7219_Write(Digit6,dat2);MAX7219_Write(Digit7,dat3); void disp_kp() /用于顯示kp,ki,kd的值 unsigned int b;unsigned char m,n,x,y;load=1; clk=1; din=1; MAX7219_Init1();P1M0=0x1F; P1M1=0x00;MAX7219_Write(Digit0,0);MAX7219_Write(Digit1,0x0F);MAX7219_Write(Digit2,0x

25、67);MAX7219_Write(Digit3,0); b=ADC_TURNON(3,3); m=(unsigned char)(b/1000); n=(unsigned char)(b%1000)/100); x=(unsigned char)(b%1000)%100)/10); y=(unsigned char)(b%1000)%100)%10); MAX7219_Write(Digit4,dispcode_charm);MAX7219_Write(Digit5,dispcode_charn);MAX7219_Write(Digit6,dispcode_charx);MAX7219_Wr

26、ite(Digit7,dispcode_chary);void disp_ki() /用于顯示kp,ki,kd的值 unsigned int b;unsigned char m,n,x,y;load=1; clk=1; din=1; MAX7219_Init1();P1M0=0x1F; P1M1=0x00;MAX7219_Write(Digit0,0);MAX7219_Write(Digit1,0x0F);MAX7219_Write(Digit2,0x30);MAX7219_Write(Digit3,0); b=ADC_TURNON(3,2); m=(unsigned char)(b/1000

27、); n=(unsigned char)(b%1000)/100); x=(unsigned char)(b%1000)%100)/10); y=(unsigned char)(b%1000)%100)%10); MAX7219_Write(Digit4,dispcode_charm);MAX7219_Write(Digit5,dispcode_charn);MAX7219_Write(Digit6,dispcode_charx);MAX7219_Write(Digit7,dispcode_chary);void disp_kd() /用于顯示kp,ki,kd的值 unsigned char

28、m,n,x,y; unsigned int b;load=1; clk=1; din=1; MAX7219_Init1();P1M0=0x1F; P1M1=0x00;MAX7219_Write(Digit0,0);MAX7219_Write(Digit1,0x0F);MAX7219_Write(Digit2,0x3D);MAX7219_Write(Digit3,0); b=ADC_TURNON(3,1); m=(unsigned char)(b/1000); n=(unsigned char)(b%1000)/100); x=(unsigned char)(b%1000)%100)/10);

29、y=(unsigned char)(b%1000)%100)%10); MAX7219_Write(Digit4,dispcode_charm);MAX7219_Write(Digit5,dispcode_charn);MAX7219_Write(Digit6,dispcode_charx);MAX7219_Write(Digit7,dispcode_chary);/adc.c用來實(shí)現(xiàn)ad轉(zhuǎn)換的子程序#include <STC12C5410AD.H>#include <intrins.h>extern void Delayms(void); unsigned int A

30、DC_TURNON(unsigned char speed,unsigned char chanl) unsigned int x,y,z; /整理SPEED speed&=0x03; speed=speed<<5; /整理通道chanl chanl&=0x07; /ADC_POWER開 ADC_CONTR=0x80; Delayms(); /加入轉(zhuǎn)換速度SPEED1/SPEED0 ADC_CONTR|=speed; /加入通道CHS2/CHS1/CHS0 ADC_CONTR|=chanl; /啟動(dòng)轉(zhuǎn)換 ADC_CONTR|=0x08; Delayms(); /查結(jié)

31、束標(biāo)志位 if(ADC_CONTR&0x10)=0) /while還是if有待商榷 /復(fù)位ADC_FLAG ADC_CONTR&=0xef; x=ADC_DATA; x=x*4; y=ADC_LOW2&0x03; z=x+y; return(z);/da.cda轉(zhuǎn)換子程序#include <STC12C5410AD.H>#include <intrins.h> #include <my.h>void dac(unsigned char pwm) CMOD=0X02; CL=0; CH=0; CCAP0L=0x00-pwm; CCAP0

32、H=0x00-pwm; CCAPM0=0X42; CCAP1L=0x00-pwm; CCAP1H=0x00-pwm; CCAPM1=0X42; CR=1; /pid.c pid算法程序#include <STC12C5410AD.H>#include <intrins.h>#include<math.h>mmul(int x,int y);madd(int x,int y); char change16_8(int wd);/yk=kp【ek-ek_1】+kits*ek+kd/tsek-2*ek_1+ek_2 char pid(int kp,ki,kd,sp

33、ec,yk)/pid的系數(shù),設(shè)定值spec由0通道提供,實(shí)時(shí)的值yk由4通道提供 int p,i,d,ek,ek_1,aek,ts=1,bek,k,ake,ck,ck_1; char iband=0x50; ts=20; yk=k=p=i=d=0; ek=spec-yk;/error bek=ek-ek_1-aek; aek=ek-ek_1; if(abs(ek)>abs(iband) i=0;/判斷積分分離? else i=(ek*ts)*ki; p=kp*ake; d=(kd/ts)*bek/1000;/ts去單位為1ms k=madd(i,p); k=madd(k,d); k=mm

34、ul(k,kp); k=k/10; ck=k+ck_1; ck=change16_8(ck); ck_1=ck; ek_1=ek; ck=ck+0x80; / return ck;int change32_16(int z,int t)int s;if(t=0)if(z&0x8000)=0 )s=z;else s=0x7fff;else if(t&0xffff)=0xffff)if(z&0x8000)=0) s=0x7fff;else s=z;else if (t&0x8000)=0) s=0x7fff;else s=0x8000;return(s);char

35、change16_8(int wd)char z,t,s;z=wd&0x0ff;t=(wd>>8)&0x0ff;if(t=0x00)if(z&0x80)=0) s=z;else s=0x7f;else if (t&0xff)=0xff)if(z&0x80)=0)s=0x80;else s=z;else if (t&0x80)=0) s=0x7f;else s=0x80;return(s);int mmul(int x,int y)int t,z;long s;s=x*y;z=(int)(s&0x0ffff);s=change3

36、2_16(z,t);return(s);int madd(int x,int y)int t; t=x+y;if(x>=0&&y>=0)if(t&0x8000)!=0)t=0x7fff;else if (x<=0&&y<=0)if(t&0x8000)=0)t=0x8000;return(t);試驗(yàn)心得及小結(jié): 當(dāng)初想不就是把一個(gè)小球浮起來嘛,挺簡(jiǎn)單的,可是實(shí)際操作時(shí)才知道要把這么一個(gè)小球扶起來還真是一件不容易的事啊。先不說電路設(shè)計(jì),時(shí)間都花在了程序的調(diào)試上以及PID參數(shù)的調(diào)整上。可是到目前為止還沒有把小球扶起來。還得繼續(xù)努力了。 雖然沒有把小球浮起來,不過在這個(gè)過程中卻是收獲許多課本上學(xué)不到的知識(shí)。首先是電路以及電路板的設(shè)計(jì),雖然電路板不是我們?cè)O(shè)計(jì)的,不過通過別人設(shè)計(jì)的電路板自己也能學(xué)到不

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論