2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘要</b></p><p>  本文主要設(shè)計一個基于單片機的直流電機 PWM 控制系統(tǒng)。PWM 控制提高了調(diào)速 范圍,提高了調(diào)速精度,改善了快速性能、功率和功率因數(shù)。系統(tǒng)在設(shè)計中被控對象采用 5V 的直流電機,以 MCS-51 單片機為控制核心,采用 LCD12864 液晶作為顯示元件,進行軟硬件的設(shè)計。硬件電路由 protel 設(shè)計制作,主要設(shè)計了液晶顯示電

2、路、鍵盤控制電路、復(fù)位電路、測速電路和驅(qū)動電路。軟件設(shè)計在 Keil 開發(fā)平臺用 C 語言編寫,程序采用模塊化設(shè)計方案,包括液初始化程序、晶顯示程序、鍵盤控制程序。 本系統(tǒng) PWM 控制直流電機采用調(diào)壓調(diào)速的方法,整體設(shè)計包括軟件和硬件兩個部 分。通過利用單片機產(chǎn)生 PWM 控制信號控制直流電機,詳細介紹脈寬調(diào)制 ( PWM) 控 制原理,直流電機的工作原理和數(shù)學(xué)模型以及用 H型橋電路基本原理設(shè)計的驅(qū)動電路。 通過硬件電路的模擬

3、情況,說明系統(tǒng)運行正常,各個功能模塊實現(xiàn)是可行的,控制精度 比較高,能夠滿足系統(tǒng)的基本要求。</p><p>  關(guān)鍵詞: 單片機;PWM;直流電機;L298N;</p><p><b>  目錄</b></p><p><b>  一、 設(shè)計任務(wù)5</b></p><p><b> 

4、 二、 設(shè)計方案5</b></p><p><b>  1、 任務(wù)分析5</b></p><p><b>  2、 方案設(shè)計6</b></p><p>  3、 方案流程圖6</p><p>  三、 系統(tǒng)硬件設(shè)計7</p><p>  1、 STC12

5、最小系統(tǒng)7</p><p> ?。?) STC12C5A60S2芯片7</p><p> ?。?) 系統(tǒng)時鐘電路11</p><p> ?。?) 復(fù)位電路11</p><p> ?。?) 最小系統(tǒng)原理圖12</p><p>  2、 電機模塊12</p><p>  3、 L298N

6、模塊13</p><p>  4、 測速模塊15</p><p>  5、 測壓模塊16</p><p>  6、 液晶模塊17</p><p>  7、 按鍵模塊19</p><p>  8、 燈光信號模塊20</p><p>  四、 系統(tǒng)軟件設(shè)計21</p>&

7、lt;p>  1、 軟件流程圖21</p><p>  2、 PWM程序設(shè)計22</p><p>  3、 測壓程序設(shè)計22</p><p>  4、 測速程序設(shè)計23</p><p> ?。?)1S定時程序23</p><p>  (2) 光電開關(guān)信號采樣程序23</p><p&

8、gt; ?。?) 電機速度計算程序23</p><p>  5、 液晶驅(qū)動程序設(shè)計24</p><p>  6、 菜單程序設(shè)計25</p><p>  7、 按鍵程序設(shè)計27</p><p>  8、 電機反電動勢系數(shù)計算程序28</p><p>  9、 電機力矩系數(shù)計算程序29</p>&

9、lt;p>  10、 逼近算法控制程序29</p><p>  11、 比例控制程序29</p><p>  12、 PID控制程序30</p><p>  五、直流調(diào)速系統(tǒng)動態(tài)數(shù)學(xué)模型的建立32</p><p><b>  六、調(diào)速數(shù)據(jù)36</b></p><p>  1、 比例

10、調(diào)速數(shù)據(jù)36</p><p>  2、 PID調(diào)速數(shù)據(jù)37</p><p>  3、 逼近算法調(diào)速數(shù)據(jù)37</p><p>  4、 反電動勢系數(shù)和電機力矩系數(shù)數(shù)據(jù)38</p><p><b>  七、心得體會38</b></p><p><b>  參考文獻40</b

11、></p><p>  附錄一 硬件原理圖41</p><p>  附錄二 硬件PCB圖42</p><p>  附錄三 程序清單43</p><p><b>  設(shè)計任務(wù)</b></p><p>  本課題設(shè)計主要的目的是為了能夠準確及時的控制直流電動機的正轉(zhuǎn)、反轉(zhuǎn)、停止、加速

12、和減速功能可以準確調(diào)節(jié)控制直流電機的轉(zhuǎn)速。同時,本設(shè)計可以自動測量計算直流電機的反電動勢系數(shù)以及馬達的力矩系數(shù)。直流電機的轉(zhuǎn)速控制分別采用三種可選擇的調(diào)速方案:逼近算法調(diào)速、比例控制調(diào)速和PID控制調(diào)速。本系統(tǒng)采取了菜單式選擇界面,方便了使用者對系統(tǒng)各項功能的使用與選擇,同時加入了大量圖片設(shè)計和動畫效果,使人機交流界面更加人性化。</p><p><b>  設(shè)計方案</b></p&g

13、t;<p><b>  任務(wù)分析</b></p><p>  本設(shè)計要求中央控制芯片具有定時計數(shù)的功能,一定的程序存儲空間,還要有足夠的IO外接端口。由于本設(shè)計以LCD12864作為人機交流的顯示界面,所以要求中央控制芯片具有一定的電流驅(qū)動能力。LCD、電機控制信號、LED指示燈、獨立按鈕,電壓采集這些都需要占用大量IO接口,所以要求中央控制芯片要有足夠多的外部接口以滿足需要。

14、本設(shè)計將采用菜單界面設(shè)計方面,涉及大量圖片和文字,所以要求控制芯片要有足夠大的內(nèi)存空間。大量變量標志將實現(xiàn)各項菜單的切換,所以要求控制芯片要有足夠的RAM空間來存儲臨時變量。</p><p>  本設(shè)計要求能準確控制電機的轉(zhuǎn)向以及轉(zhuǎn)速,所以要求電機的控制芯片就有較強的調(diào)速控制功能以及轉(zhuǎn)向控制功能。</p><p>  本設(shè)計要求所采用的的直流電機轉(zhuǎn)速具有一定的可調(diào)空間以及足夠的靈敏度。&l

15、t;/p><p>  本設(shè)計涉及直流電機轉(zhuǎn)速的采集,電機輸出電壓的測量,所以要求本系統(tǒng)具有測量電機轉(zhuǎn)速和采集電壓的功能。</p><p><b>  方案設(shè)計</b></p><p>  由于STC12c5a60s2單片機具有1280B的RAM,60KROM,P0-P4數(shù)量眾多的IO口,高達20MA的電流驅(qū)動能力和1T的運行速度,具有片上PWM模塊

16、和ADC模塊,滿足本課題的設(shè)計要求,所以本設(shè)計采用STC12c5a60s2芯片作為中央主控芯片。</p><p>  帶41線碼盤測速碼盤日本三美直流電機轉(zhuǎn)速可調(diào)范圍寬,響應(yīng)迅速,并且?guī)в袑ι涫焦怆婇_關(guān)測速模塊,只需接上相應(yīng)的信號放大電路就可以被單片機所識別。所以本系統(tǒng)采用了帶41線碼盤測速碼盤日本三美直流電機。</p><p>  本系統(tǒng)采用了LCD12864作為人機交流界面,滿足了控制

17、項目多,控制信息多,顯示信息完整等要求。</p><p><b>  方案流程圖</b></p><p><b>  系統(tǒng)硬件設(shè)計</b></p><p><b>  STC12最小系統(tǒng)</b></p><p>  STC12C5A60S2芯片</p><p

18、>  STC12C5A60S2不但和8051指令、管腳完全兼容,而且速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對電機控制,強干擾場合,其片內(nèi)的具有大容量程序存儲器60K FLASH ROM,用戶可以用電的方式瞬間擦除、改寫。STC系列單片機支持串口程序燒寫,對開發(fā)設(shè)備的要求很低,開發(fā)時間也大大縮短。以下是STC12C5A60S2的功能:</p><

19、;p>  1.增強型8051 CPU,1T,單時鐘/機器周期,指令代碼完全兼容傳統(tǒng)8051; 2.工作電壓:STC12C5A60S2系列工作電壓:5.5V-3.3V(5V單片機)STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機); </p><p>  3.工作頻率范圍:0 - 35MHz,相當于普通8051的 0~420MH

20、z; </p><p>  4.用戶應(yīng)用程序空間8K /16K / 20K / 32K / 40K</p><p>  / 48K/ 52K / 60K / 62K字節(jié); </p><p>  5.片上集成1280字節(jié)

21、RAM; </p><p>  6.通用I/O口(36/40/44個),復(fù)位后為:準雙向口/弱上拉(普通8051傳統(tǒng)I/O口),可設(shè)置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏,每個I/O口驅(qū)動能力均可達到20mA,但整個芯片最大不要超過55Ma; </p><p>  7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器

22、,無需專用仿真器  可通過串口(P3.0/P3.1)直接下載用戶程序,數(shù)秒即可完成一片; </p><p>  8.有EEPROM功能(STC12C5A62S2/AD/PWM無內(nèi)部EEPROM);</p><p><b>  9. 看門狗; </b></p><p>  10.內(nèi)部集成MAX81

23、0專用復(fù)位電路(外部晶體12M以下時,復(fù)位腳可直接1K電阻到地); </p><p>  11.外部掉電檢測電路:在P4.6口有一個低壓門檻比較器,5V單片機為1.32V,誤差為+/-5%,3.3V單片機為1.30V,誤差為+/-3%; </p><p>  12.時鐘源:外部高精度晶體/時鐘,內(nèi)部R/C振蕩器(溫漂為+/-5%到+/-10%以內(nèi)) 1用戶在下

24、載用戶程序時,可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時鐘,常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機為:11MHz~15.5MHz,3.3V單片機為:8MHz~12MHz,精度要求不高時,可選擇使用內(nèi)部時鐘,但因為有制造誤差和溫漂,以實際測試為準; </p><p>  13.共4個16位定時器   兩個與傳統(tǒng)8051兼容的定時器/計數(shù)器,16位定時器T0和T1,沒有

25、定時器2,但有獨立波特率發(fā)生器   做串行通訊的波特率發(fā)生器   再加上2路PCA模塊可再實現(xiàn)2個16位定時器; </p><p>  14. 2個時鐘輸出口,可由T0的溢出在P3.4/T0輸出時鐘,可由T1的溢出在P3.5/T1輸出時鐘; </p><p>  15.外部中斷I/O口7路,傳統(tǒng)的下降

26、沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊, Power Down模式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, RxD/P3.0,CCP0/P1.3(也可通過寄存器設(shè)置到P4.2 ), CCP1/P1.4 (也可通過寄存器設(shè)置到P4.3); </p><p>  16.

27、 PWM(2路)/PCA(可編程計數(shù)器陣列,2路)</p><p>  ——也可用來當2路D/A使用 </p><p>  ——也可用來再實現(xiàn)2個定時器 </p><p>  ——也可用來再實現(xiàn)2個外部中斷(上升沿中斷/下降沿中斷均可分別或同時支持); </p><p>  A/D轉(zhuǎn)換, 10位精度ADC,共8路,轉(zhuǎn)換速度可達25

28、0K/S(每秒鐘25萬次)</p><p>  18.通用全雙工異步串行口(UART),由STC12</p><p>  系列是高速的8051,可再用定時器或PCA軟件實現(xiàn)多 串口; </p><p>  19. STC12C5A60S2系列有雙串口,后綴有S2標志 的才有雙串口,RxD2/P1.2(可通過寄存器設(shè)置到P4.2

29、), TxD2/P1.3(可通過寄存器設(shè)置到P4.3); </p><p>  20.工作溫度范圍:-40 - +85℃(工業(yè)級) / 0 - 75 ℃(商 業(yè)級)21.封裝:PDIP-40,LQFP-44,LQFP-48 I/O 口不夠時,可用2到3根普通I/O口線外接 74HC164/165/595(均可級聯(lián))來擴展I/

30、O口, 還可用 A/D做按鍵掃描來節(jié)省I/O口,或用雙CPU,三線通信, 還多了串口。</p><p>  STC12C5A60S2的引腳如圖1所示</p><p>  圖1 STC12c5a60s2引腳圖</p><p><b>  系統(tǒng)時鐘電路</b></p><p>  本系統(tǒng)采用

31、11.0592MKZ的外部石英晶振作為單片機的時鐘脈沖輸入。電路圖如圖2所示。</p><p><b>  圖2 時鐘電路</b></p><p><b>  復(fù)位電路</b></p><p>  本系統(tǒng)采用的是上電復(fù)位方式。如圖3所示。</p><p><b>  圖3 復(fù)位電路<

32、/b></p><p><b>  最小系統(tǒng)原理圖</b></p><p>  最小系統(tǒng)包括系統(tǒng)時鐘電路,復(fù)位電路、單片機芯片引腳借口,保證了單片機能夠正常的工作。如圖4所示.</p><p>  圖4 STC12最小系統(tǒng)</p><p><b>  電機模塊</b></p>&

33、lt;p>  直流電機是指能將直流電能轉(zhuǎn)換成機械能(直流電動機)或?qū)C械能轉(zhuǎn)換成直流電能(直流發(fā)電機)的旋轉(zhuǎn)電機。它是能實現(xiàn)直流電能和機械能互相轉(zhuǎn)換的電機。當它作電動機運行時是直流電動機,將電能轉(zhuǎn)換為機械能;作發(fā)電機運行時是直流發(fā)電機,將機械能轉(zhuǎn)換為電能。本系統(tǒng)采用帶41線碼盤測速碼盤日本三美直流電機。其實物圖如圖5所示。</p><p><b>  圖5 電機</b></p&g

34、t;<p><b>  L298N模塊</b></p><p>  圖10 ADC的結(jié)構(gòu)</p><p><b>  液晶模塊</b></p><p>  本系統(tǒng)設(shè)計了6個獨立按鍵,低電平有效。分別用作主菜單按鍵、電機正轉(zhuǎn)按鍵/菜單向上按鍵、電機反轉(zhuǎn)按鍵/菜單向下按鍵、電機加速按鍵/菜單加按鍵、電機減速按鍵/

35、菜單減按鍵,電機停止按鍵/菜單確定鍵。其電路原理圖如圖12所示。</p><p><b>  圖12 按鍵電路圖</b></p><p><b>  燈光信號模塊</b></p><p>  本系統(tǒng)采用三個發(fā)光二級管作為電機運行狀態(tài)提示燈。分別表示電機正轉(zhuǎn)提示燈、電機反轉(zhuǎn)提示燈、電機停止提示燈。其電路原理圖如圖13所示。&

36、lt;/p><p>  圖13 LED電路圖</p><p><b>  系統(tǒng)軟件設(shè)計</b></p><p><b>  軟件流程圖</b></p><p><b>  器高8位</b></p><p>  ADC_RESL=0; //清零轉(zhuǎn)換結(jié)果寄存器低

37、2位</p><p>  ADC_CONTR=0x80;//開啟AD電源</p><p>  Delay(2);//等待1ms,讓AD電源穩(wěn)定</p><p>  讀取相關(guān)通道的電壓數(shù)據(jù):U16 AD_get(U8 channel);</p><p>  轉(zhuǎn)化電壓數(shù)據(jù):float AD_work(U8 channel);</p>

38、<p><b>  測速程序設(shè)計</b></p><p>  本系統(tǒng)開去外部中斷0來計算對射式光電開關(guān)輸入單片機的高電平次數(shù),采用定時器0以1秒的頻率計算電機一分鐘的轉(zhuǎn)速,并采用平均法減小誤差。</p><p><b> ?。?)1S定時程序</b></p><p>  TMOD=0x21;//設(shè)置定時器0為工

39、作方式1</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256; //計算初值并將其寫入TH0、TL0</p><p>  EA=1;//開總中斷</p><p>  ET0=1;//開T0中斷允許位</p><p>  TR0=1; //

40、啟動</p><p>  光電開關(guān)信號采樣程序</p><p>  void int0() interrupt 0</p><p><b>  {</b></p><p>  ExinNum++;</p><p><b>  }</b></p><p>

41、;<b>  電機速度計算程序</b></p><p>  SpeedV[SpeedVnum]=(int)(ExinNum*60.0/41.0);</p><p>  for(i=0;i<5;i++)</p><p>  speedvel+=SpeedV[i];</p><p>  CurrentSpeed=spe

42、edvel/5;</p><p><b>  液晶驅(qū)動程序設(shè)計</b></p><p>  LCD12864驅(qū)動除了集成基本的讀寫函數(shù)、空閑檢測等基本函數(shù)外,本系統(tǒng)還字符輸出、圖形繪制、畫點、畫直線、畫圓等方便于界面顯示的功能函數(shù),并且采取了多個函數(shù)實現(xiàn)參數(shù)化,這有利于在其他文件中進行調(diào)用,傳入不同參數(shù)可以出現(xiàn)不同效果。</p><p>  在

43、這些功能函數(shù)中,運用了大量的數(shù)學(xué)算法,在畫任意直線中,我們采用了Bresenham算法進行坐標點的計算,在畫圓形圖片的功能函數(shù)中,則運用了數(shù)學(xué)上的正八邊形確定一個圓的方法。</p><p>  在其他清屏函數(shù)、反白函數(shù)、畫框函數(shù)等效果功能函數(shù)里,我們大量采用子函數(shù)包含運用,大大提高了代碼的利用率,介紹了代碼的重復(fù)編寫。</p><p><b>  液晶驅(qū)動函數(shù):</b>

44、;</p><p>  void Lcd2Init(void);</p><p>  void Lcd2TextOut(uchar x,uchar y,uchar *adata);</p><p>  void Lcd2DrawPoint(uchar x,uchar y,uchar color);</p><p>  void Lcd2Dr

45、awRowLine(uchar x0,uchar y0,uchar x1,uchar color);</p><p>  void Lcd2DrawCollumLine(uchar x0,uchar y0,uchar y1,uchar color);</p><p>  void Lcd2DrawAnyLine(uchar x0,uchar y0,uchar x1,uchar y1,uch

46、ar color);</p><p>  void Lcd2DrawUpImg(uchar *img); //</p><p>  void Lcd2DrawDownImg(uchar *img);//</p><p>  void Lcd2DrawFullImg(uchar *img);//</p><p>  void Lcd2Draw

47、HalfPic(uchar x,uchar y,uchar PicW,uchar PicH,uchar *Pic);</p><p>  void Lcd2DelayMs(uint n);</p><p>  void Lcd2CheckBusy(void);</p><p>  void Lcd2ClrGDRAM(void);</p><p&g

48、t;  void Lcd2Clear(void);</p><p>  uchar Lcd2ReadData(void);</p><p>  void Lcd2WriteCom(uchar cmd);</p><p>  void Lcd2WriteData(uchar adata);</p><p>  void LcdShowNum(u

49、char x,uchar y,char n);</p><p>  void Lcd2ShowNums(uchar x,uchar y,uint num);</p><p>  void Lcd2ShowVin(uchar x,uchar y,uint num);</p><p>  void Lcd2ShowCe(uchar x,uchar y,uint num)

50、;</p><p>  void Lcd2ShowSureNum(uchar x,uchar y,int num);</p><p>  void LcdShowChar(uchar x,uchar y,uchar* english,uchar count);</p><p>  void LcdDrawCircle(uchar x0,uchar y0,uchar

51、r,uchar colour);</p><p>  void LcdInverse(int low);</p><p>  void Lcd2Sleep(uchar Flage);</p><p>  ut);flage=5;}}</p><p><b>  //Key6</b></p><p&g

52、t;  if(KeyEnter==0){Delay(10);</p><p>  if(KeyEnter==0){while(!KeyEnter);flage=6;}}</p><p>  return flage;}</p><p>  電機反電動勢系數(shù)計算程序</p><p>  float CalutCe(float Vin,int S

53、peed)</p><p>  {float M_Ce,Iin;</p><p>  Iin=(Vin-Speed*KCO)/MOTOR_RES;</p><p>  M_Ce=(Vin-Iin*MOTOR_RES)/(float)Speed;</p><p>  return M_Ce;}</p><p>  電機力

54、矩系數(shù)計算程序</p><p>  float CalutMc(float Vin,int Speed)</p><p>  {float M_mc,Iin;</p><p>  Iin=(Vin-Speed*KCO)/MOTOR_RES;</p><p>  M_mc=9550.0*Iin*Iin/(float)Speed;</p&g

55、t;<p>  return M_mc;}</p><p><b>  逼近算法控制程序</b></p><p>  采用微調(diào)PWM的占空比不斷改變電機的轉(zhuǎn)速,使其逐步接近設(shè)定的轉(zhuǎn)速。</p><p>  void SpeedAdjust(void)</p><p>  if(CurrentCap>1

56、.0)CurrentCap=0.85;</p><p>  if(CurrentCap<0.40)CurrentCap=0.45; if(MotorStatue==FORWARD_RUN)PwmCap(CurrentCap,PWM0_ENABLE);else if(MotorStatue==ROLLBACK_RUN)PwmCap(CurrentCap,PWM1_ENABLE);</p>

57、;<p>  else {} } }}</p><p><b>  PID控制程序</b></p><p>  PID(比例-積分-微分)控制器作為最早實用化的控制器已有70多年歷史,現(xiàn)在仍然是應(yīng)用最廣泛的工業(yè)控制器。PID控制器簡單易懂,使用中不需精確的系統(tǒng)模型等先決條件,因而成為應(yīng)用最為廣泛的控制器。</p><p><

58、b>  態(tài)數(shù)學(xué)模型的建立</b></p><p>  轉(zhuǎn)速反饋直流調(diào)速系統(tǒng)的功率主電路是電力電子變換器和直流電動機,其中PWM控制器和變換器的近似傳遞函數(shù)如下:</p><p><b> ?。?-1)</b></p><p>  他勵直流電動機在額定勵磁下的等效電路如下:</p><p><b&g

59、t;  圖(5-1)</b></p><p>  假定主電路電流連續(xù),動態(tài)電壓方程為:</p><p><b> ?。?-2)</b></p><p>  忽略粘性摩擦及彈性轉(zhuǎn)矩,電動機軸上的動力學(xué)方程式為</p><p><b> ?。?-3)</b></p><p

60、>  式中 ——包括電動機空載轉(zhuǎn)矩在內(nèi)的負載轉(zhuǎn)矩;</p><p>  ——電力拖動裝置折算到電動機軸上的飛輪慣量;</p><p>  額定勵磁下的感應(yīng)電動勢和電磁轉(zhuǎn)矩分別為</p><p><b>  (5-4)</b></p><p><b> ?。?-5)</b></p>

61、<p>  式中 ——電動機額定勵磁下的轉(zhuǎn)矩系數(shù)(), </p><p><b> ?。?-5)</b></p><p>  再定義下列時間常數(shù):</p><p>  ——電樞回路電磁時間常數(shù)(s),</p><p> ??; (5-6)</p><p>  ——電力拖動

62、系統(tǒng)機電時間常數(shù)(s),</p><p><b> ?。?-7)</b></p><p>  代入(5-2)和(5-3)式中,并考慮到(5-4)和(5-5)式,整理得</p><p><b> ?。?-8)</b></p><p><b>  (5-9)</b></p&g

63、t;<p>  式中 ——負載電流(A), (5-10)</p><p>  在零初始條件下,取等式兩側(cè)的拉普拉斯變換,得到電壓和電流間的傳遞函數(shù)為</p><p><b>  (5-11)</b></p><p><b>  動態(tài)結(jié)構(gòu)圖為</b></p><p><b

64、>  圖(5-2)</b></p><p>  電流與電動勢間的傳遞函數(shù)為</p><p><b> ?。?-12)</b></p><p><b>  動態(tài)結(jié)構(gòu)圖為</b></p><p><b>  圖(5-3)</b></p><p&

65、gt;  將圖 (5-2)和圖(5-3)合并,考慮到 ,即得額定勵磁下的直流電動機的動態(tài)結(jié)構(gòu)圖</p><p><b>  圖(5-4)</b></p><p>  將擾動量 的綜合點移前,進行等效變換,得直流電動機的動態(tài)結(jié)構(gòu)框圖的變換</p><p><b>  圖(5-5)</b></p><p&

66、gt;  考慮到系統(tǒng)中的比例放大器和測速反饋環(huán)節(jié),它們的響應(yīng)都可以認為是瞬時的,因此它們的傳遞函數(shù)如下</p><p>  放大器: (5-13)</p><p>  測速反饋: (5-14)</p><p>  綜合上面,可得轉(zhuǎn)速反饋控制直流調(diào)速系統(tǒng)的動態(tài)結(jié)構(gòu)框圖如下</p><p&g

67、t;<b>  圖(5-6)</b></p><p><b>  其開環(huán)傳遞函數(shù)是</b></p><p><b>  (5-15)</b></p><p>  設(shè) =0,從給定輸入作用上看,閉環(huán)傳遞函數(shù)是</p><p><b> ?。?-16)</b>

68、</p><p><b>  六、調(diào)速數(shù)據(jù)</b></p><p><b>  比例調(diào)速數(shù)據(jù)</b></p><p>  設(shè)置轉(zhuǎn)速:1000R/MIN</p><p><b>  PID調(diào)速數(shù)據(jù)</b></p><p>  設(shè)置轉(zhuǎn)速:1000R/MIN&

69、lt;/p><p><b>  1035</b></p><p><b>  逼近算法調(diào)速數(shù)據(jù)</b></p><p>  設(shè)置轉(zhuǎn)速:1000R/MIN</p><p>  反電動勢系數(shù)和電機力矩系數(shù)數(shù)據(jù)</p><p><b>  七、心得體會</b>&l

70、t;/p><p>  經(jīng)過兩周的課程設(shè)計,有很多新的感受和體會。這次采用的STC12C5A60S2單片機,程序存儲空間達到了60KB,如此龐大的存儲空間給了我們在程序上盡情發(fā)揮的空間。所以這次液晶顯示屏采用了LCD12864,并且大量引用了圖片對界面進行裝飾。特別是在屏幕刷屏上,我們下了很大功夫。為了避免頻繁刷屏造成的閃爍現(xiàn)象,我們采用了局部區(qū)域更新的方法,這是我們更加深入的了解LCD12864的驅(qū)動原理,特別是在屏

71、幕上隨意畫圖的技術(shù)上。</p><p>  當然,在這次課程設(shè)計中也出現(xiàn)了不少問題。隨著我們編寫的程序越來越大,最終我們的程序接近20KB,于是對文件的組織,變量的應(yīng)用,以及編程的結(jié)構(gòu)都提出了很大的挑戰(zhàn)。于是我們采取了模塊化編程解決了多文件系統(tǒng)問題,在變量用于多個文件的問題上,我們采取了頭文件聲明全局變量的方法。</p><p>  這次課程設(shè)計,既是對以往所學(xué)的單片機編程知識和電力拖動自

72、動控制系統(tǒng)的一次總結(jié),也是一次考驗!</p><p><b>  參考文獻</b></p><p>  [1] 李慶亮. C語言程序設(shè)計實用教程. 機械工業(yè)出版社</p><p>  [2] 王新穎. 單片機原理及應(yīng)用設(shè)計. 北京大學(xué)出版社</p><p>  [3] 陳伯時. 電力拖動自動控制系統(tǒng)——運動控制系統(tǒng)機械工

73、業(yè)出版社</p><p>  [4] 王兆安. 電力電子技術(shù). 機械工業(yè)出版社</p><p>  [5] 胡學(xué)鋼. 數(shù)據(jù)結(jié)構(gòu)算法設(shè)計指導(dǎo). 北京:清華大學(xué)出版社</p><p>  [6] 馬全喜. 電子元器件與電子實習(xí). 北京:機械工業(yè)出版社</p><p>  [7] 曾曉宏. 數(shù)字電子技術(shù). 北京:機械工業(yè)出版社</p>

74、<p>  [8] 江曉安 模擬機電子技術(shù). 西安電子科技大學(xué)出版社</p><p>  [9] 江 力. 單片機原理與應(yīng)用設(shè)計. 北京:清華大學(xué)出版社</p><p>  [10] 王新穎. 電力電子技術(shù). 北京:中國鐵道出版社</p><p>  [11] 王志良. 電力電子新器件及其應(yīng)用技術(shù). 國防工業(yè)出版社</p><p&g

75、t;  附錄一 硬件原理圖</p><p>  附錄二 硬件PCB圖</p><p><b>  附錄三 程序清單</b></p><p>  #include "Common.h"</p><p>  #include "PwmLib.h"</p><p

76、>  #include "Lcd12864Library.h"</p><p>  #include "ItLib.h"</p><p>  #include "Menu.h"</p><p>  double ExinNum;</p><p>  int KeyFlage;&

77、lt;/p><p>  int miao_one;</p><p>  int Timer_Pic;</p><p>  int SpeedV[5]={2000,2000,2000,2000,2000};</p><p>  int SpeedVnum;</p><p>  int MainMenu;//菜單頁標志 0-

78、</p><p>  int MenuInfo;//菜單頁的菜單項標志 0-</p><p>  int MotorStatue;</p><p>  int BufMotorStatue;</p><p>  int OldMotorStatue;</p><p>  float CurrentCap;</p

79、><p>  float BufCap;</p><p>  U16 CurrentSpeed;</p><p>  U16 OldSpeed;</p><p>  U16 SetSpeed;</p><p>  U16 BufSetSpeed;</p><p>  int CapStep;//占空

80、比加減步伐大小</p><p>  U16 SpeedStep;//轉(zhuǎn)速加減步伐大小</p><p>  int PIDEnable;//PID開關(guān)標志</p><p>  int BufPIDEnable;</p><p>  int PicStep;//繪圖曲線步伐</p><p>  float Kp,Ki,Kd

81、;</p><p>  int Speed_Error;</p><p>  int Pre_Error;</p><p>  int Two_Error;</p><p>  int Old_Error;</p><p>  float P_Kp;</p><p>  int TimeSure

82、;</p><p>  int SureStatue;</p><p>  void ValueInit(void);</p><p>  int KeysCan(void);</p><p>  void OnKeys(void);</p><p>  void PID(void);</p><p

83、>  void P_Com(void);</p><p>  void SpeedAdjust(void);</p><p>  void main()</p><p><b>  {</b></p><p>  ValueInit();P4M0 &=0xf7;P4M1 &=0xf7;</p&

84、gt;<p>  ItInit();PwnInit();Lcd2Init();</p><p>  Menu_Main(MenuInfo);MotorRun(FORWARD_RUN,CurrentCap);LedGo=0;while(1)</p><p>  {OnKeys();}}</p><p>  void ValueInit(void)&l

85、t;/p><p>  {KeyFlage=0;ExinNum=0;miao_one=0;MotorStatue=FORWARD_RUN;OldMotorStatue=FORWARD_RUN;CurrentCap=0.75;CurrentSpeed=0;OldSpeed=0;SetSpeed=1000;MainMenu=MENU_MAIN;</p><p>  MenuInfo=0;CapSte

86、p=1;SpeedStep=50;</p><p>  PicStep=200;PIDEnable=0;Timer_Pic=0;Speed_Error=50;</p><p>  Kp=0.005;Ki=0.50;Kd=0.0025;P_Kp=0.50;</p><p>  Old_Error=20;Pre_Error=20;SpeedVnum=0;BufPIDE

87、nable=PIDEnable;BufSetSpeed=SetSpeed;ureStatue=0;}</p><p>  void PID(void)</p><p>  { Speed_Error=SetSpeed-CurrentSpeed;Pre_Error=Old_Error Old_Error=Speed_Error;Two_Error=Speed_Error-Pre_Error

88、;</p><p>  if(MotorStatue==FORWARD_RUN)PwmCap(CurrentCap,PWM0_ENABLE);if(Speed_Error!=0)</p><p>  { if(MotorStatue==FORWARD_RUN) CurrentCap=ReadPwm(PWM0_ENABLE)+(Kp*(float)Pre_Error+Ki*(float)

89、Speed_Error+Kd*(float)Two_Error)/10000.0;</p><p>  else if(MotorStatue==ROLLBACK_RUN) CurrentCap=ReadPwm(PWM1_ENABLE)+(P_Kp*(float)Speed_Error)/10000.0; else{</p><p>  CurrentCap=ReadPwm(PWM0_

90、ENABLE)+(P_Kp*(float)Speed_Error)/10000.0;}if(CurrentCap>1.0)CurrentCap=0.9;</p><p>  if(CurrentCap<0.40)CurrentCap=0.37; if(MotorStatue==FORWARD_RUN)PwmCap(CurrentCap,PWM0_ENABLE); else if(MotorS

91、tatue==ROLLBACK_RUN)PwmCap(CurrentCap,PWM1_ENABLE);else {} }}</p><p>  void P_Com(void)</p><p>  {Speed_Error=SetSpeed-CurrentSpeed;if(MotorStatue!=STOP_RUN){if(Speed_Error!=0){ if(MotorStatue==

92、FORWARD_RUN) CurrentCap=ReadPwm(PWM0_ENABLE)+(P_Kp*(float)Speed_Error)/10000.0; else if(MotorStatue==ROLLBACK_RUN) CurrentCap=ReadPwm(PWM1_ENABLE)+(P_Kp*(float)Speed_Error)/10000.0;else {CurrentCap=ReadPwm(PWM0_ENABLE)

93、+(P_Kp*(float)Speed_Error)/10000.0;}if(CurrentCap>1.0)CurrentCap=0.85;</p><p>  if(CurrentCap<0.40)CurrentCap=0.45; if(MotorStatue==FORWARD_RUN)PwmCap(CurrentCap,PWM0_ENABLE); else if(MotorStatue=

94、=ROLLBACK_RUN)PwmCap(CurrentCap,PWM1_ENABLE);else {}}}}</p><p>  void SpeedAdjust(void)</p><p>  {float SpeedAjtSiep=0.01;Speed_Error=SetSpeed-CurrentSpeed;</p><p>  if(Speed_Error

95、>0){ CurrentCap+=SpeedAjtSiep;}</p><p>  else {CurrentCap-=SpeedAjtSiep; }if(CurrentCap>1.0)CurrentCap=0.85;if(CurrentCap<0.40)CurrentCap=0.45; if(MotorStatue==FORWARD_RUN)PwmCap(CurrentCap,PWM0_EN

96、ABLE);else PwmCap(CurrentCap,PWM1_ENABLE);}</p><p>  int KeysCan(void)</p><p>  {int flage=0;if(KeyMenu==0){Delay(10);</p><p>  if(KeyMenu==0){while(!KeyMenu);flage=1;}}</p>

97、<p>  if(KeyGo==0){Delay(10);if(KeyGo==0)</p><p>  {while(!KeyGo);flage=2;}}</p><p>  if(KeyBack==0){Delay(10);if(KeyBack==0){while(!KeyBack);flage=3;}}</p><p>  if(KeyAdd==0

98、){Delay(10);if(KeyAdd==0)</p><p>  {while(!KeyAdd);flage=4;}}</p><p>  if(KeyCut==0){Delay(10);if(KeyCut==0)</p><p>  {while(!KeyCut);flage=5;}}</p><p>  if(KeyEnter==0

99、)</p><p>  {Delay(10);if(KeyEnter==0){while(!KeyEnter);flage=6;}</p><p>  }return flage;}</p><p>  void OnKeys(void)</p><p>  {float v,ce,mc;int i;</p><p>

100、  KeyFlage=KeysCan();if(KeyFlage==1)</p><p>  {if(MainMenu!=MENU_MAIN)</p><p>  {MenuInfo=0;MainMenu=MENU_MAIN;</p><p>  Timer_Pic=0;TimeSure=0;</p><p>  SureStatue=0;E

101、S=0;</p><p>  Menu_Main(MenuInfo);}}</p><p>  if(KeyFlage==2)//Go</p><p>  {if(MainMenu==MENU_MAIN)</p><p>  {if(MenuInfo<3){</p><p>  SetMainMenuInfo(

102、MenuInfo,0);</p><p>  MenuInfo++;SetMainMenuInfo(MenuInfo,1);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

103、<p>  if(MenuInfo==3)Menu_Main1(MenuInfo);</p><p>  else SetMainMenuInfo(MenuInfo-4,0);</p><p>  MenuInfo++;</p><p>  if(MenuInfo==8)</p><p><b>  {</b&g

104、t;</p><p>  MenuInfo=0;</p><p>  Menu_Main(MenuInfo); }</p><p><b>  else</b></p><p>  SetMainMenuInfo(MenuInfo-4,1);}}</p><p>  else if(MainMen

105、u==MENU_MOTORCTORL)//MENU_MOTORCTORL菜單下功能</p><p><b>  {</b></p><p>  if(MotorStatue!=FORWARD_RUN)</p><p><b>  {</b></p><p>  EnablePwm(PWM_CLO

106、SE);</p><p>  Delay(250);Delay(250);</p><p>  CurrentCap=ReadPwm(PWM0_ENABLE);</p><p>  MotorStatue=FORWARD_RUN;</p><p>  MotorRun(FORWARD_RUN,CurrentCap);</p>&

107、lt;p><b>  LedGo=0;</b></p><p>  LedBack=1;</p><p>  LedStop=1;</p><p>  ChangeRun(FORWARD_RUN);}}</p><p>  else if(MainMenu==MENU_SYSSET)</p><

108、p><b>  {</b></p><p>  ChangeSysSetSelect(MenuInfo,0);</p><p>  MenuInfo++;</p><p>  if(MenuInfo==3)MenuInfo=0;</p><p>  ChangeSysSetSelect(MenuInfo,1);&l

109、t;/p><p><b>  }</b></p><p>  else if(MainMenu==MENU_SPEEDCOMMODE)</p><p><b>  {</b></p><p>  if(SureStatue==0){</p><p>  ChangeAdjustM

110、odeSelect(MenuInfo,0);</p><p>  MenuInfo++;</p><p>  if(MenuInfo==2)MenuInfo=0; </p><p>  ChangeAdjustModeSelect(MenuInfo,1);}}</p><p><b>  else{}}</b></

111、p><p>  if(KeyFlage==3)//Back</p><p><b>  {</b></p><p>  if(MainMenu==MENU_MAIN)</p><p><b>  {</b></p><p>  if(MenuInfo>0&&

112、;MenuInfo<4)</p><p>  {SetMainMenuInfo(MenuInfo,0);</p><p>  //if(MenuInfo==0)MenuInfo=4;</p><p>  MenuInfo--;</p><p>  SetMainMenuInfo(MenuInfo,1);}</p><

113、p><b>  else</b></p><p>  {if(MenuInfo==0)</p><p>  {MenuInfo=7;Menu_Main1(MenuInfo);}</p><p>  else if(MenuInfo==4)</p><p>  {MenuInfo=3;Menu_Main(MenuIn

114、fo);}</p><p><b>  else</b></p><p>  {SetMainMenuInfo(MenuInfo-4,0);</p><p>  MenuInfo--;</p><p>  SetMainMenuInfo(MenuInfo-4,1);}}}</p><p>  el

115、se if(MainMenu==MENU_MOTORCTORL)//MENU_MOTORCTORL菜單下功能</p><p>  {if(MotorStatue!=ROLLBACK_RUN)</p><p><b>  {</b></p><p>  EnablePwm(PWM_CLOSE);</p><p>  D

116、elay(250);Delay(250);</p><p>  CurrentCap=ReadPwm(PWM1_ENABLE);</p><p>  MotorStatue=ROLLBACK_RUN;</p><p>  MotorRun(ROLLBACK_RUN,CurrentCap);</p><p><b>  LedGo=1

117、;</b></p><p>  LedBack=0;</p><p>  LedStop=1;</p><p>  ChangeRun(ROLLBACK_RUN);}}</p><p>  else if(MainMenu==MENU_SYSSET)</p><p>  {ChangeSysSetSelec

118、t(MenuInfo,0);</p><p>  if(MenuInfo==0)MenuInfo=3;</p><p>  MenuInfo--;</p><p>  ChangeSysSetSelect(MenuInfo,1);}</p><p>  else if(MainMenu==MENU_SPEEDCOMMODE)</p>

119、;<p>  {if(SureStatue==0)</p><p>  {ChangeAdjustModeSelect(MenuInfo,0);</p><p>  if(MenuInfo==0)MenuInfo=2;</p><p>  MenuInfo--; </p><p>  ChangeAdjustModeSelect

120、(MenuInfo,1);}}</p><p><b>  els{}}</b></p><p>  if(KeyFlage==4)//Add</p><p><b>  {</b></p><p>  if(MainMenu==MENU_MOTORCTORL)</p><p&g

121、t;  {if(MotorStatue==FORWARD_RUN)PwmCapAdd(10,PWM0_ENABLE);else PwmCapAdd(10,PWM1_ENABLE);}</p><p>  else if(MainMenu==MENU_PWMCTROL)</p><p><b>  {</b></p><p>  if(Motor

122、Statue==FORWARD_RUN)PwmCap(CurrentCap,PWM0_ENABLE);</p><p>  BufCap+=((float)CapStep/100.0);</p><p>  if(BufCap>1.0)BufCap=0.01;</p><p>  if(MotorStatue==FORWARD_RUN)PwmCap(Curre

123、ntCap,PWM0_ENABLE);</p><p>  ChangeSetPwm(BufCap);}</p><p>  else if(MainMenu==MENU_SPEEDCTROL)</p><p><b>  {</b></p><p>  SetSpeed+=SpeedStep;</p>&

124、lt;p>  if(CurrentCap>2500)CurrentCap=0;</p><p>  ChangeSpeedComSet(SetSpeed);</p><p><b>  }</b></p><p>  else if(MainMenu==MENU_SYSSET)</p><p><b&g

125、t;  {</b></p><p>  if(MenuInfo==0)</p><p>  {CapStep++;</p><p>  if(CapStep>100)CapStep=0;</p><p>  ChangeSysSetCap(CapStep);</p><p><b>  }&

126、lt;/b></p><p>  else if(MenuInfo==1)</p><p><b>  {</b></p><p>  SpeedStep++;</p><p>  if(SpeedStep==200)SpeedStep=1;</p><p>  ChangeSysSetSp

溫馨提示

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

最新文檔

評論

0/150

提交評論