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

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  1引言3</b></p><p>  2單片機控制系統(tǒng)硬件組成3</p><p><b>  2.1微控制器3</b></p><p>  2.2電機驅(qū)動芯片4</p><p&g

2、t;  2.3按鍵輸入和顯示模塊5</p><p>  2.3.1按鍵輸入5</p><p>  2.3.2顯示模塊5</p><p>  2.4直流伺服電動機5</p><p>  3.單片機控制系統(tǒng)軟件設(shè)計5</p><p><b>  3.1主程序6</b></p>

3、<p>  3.2鍵盤處理子程序7</p><p>  4.控制系統(tǒng)原理圖及仿真7</p><p>  4.1控制系統(tǒng)方框圖7</p><p>  4.2控制系統(tǒng)電路原理圖8</p><p>  5.Simulink組件對直流伺服控制系統(tǒng)的仿真8</p><p>  5.1直流伺服電機數(shù)學模型8

4、</p><p>  5.2系統(tǒng)Simulink模型及時域特性仿真9</p><p>  5.2.1 Simulink建模及仿真9</p><p>  5.2.2單位負反饋系統(tǒng)Simulink建模及仿真10</p><p>  5.3 PID校正11</p><p>  5.3.1 PID參數(shù)的湊試法確定11

5、</p><p>  5.3.2比例控制器校正12</p><p>  5.3.3比例積分控制器校正14</p><p>  5.3.4 PID控制器校正16</p><p><b>  5.小結(jié)19</b></p><p><b>  引用文獻19</b><

6、/p><p><b>  1引言</b></p><p>  本設(shè)計的直流伺服電機控制系統(tǒng)是一個隨動控制系統(tǒng)。以STM32核心板為控制器,通過按鍵將設(shè)定值輸入到單片機,采用超聲波傳感器采集小車前方物體的距離,單片機對設(shè)定值與測量距離求差后輸出控制信號,雙BTN7971大電流H橋驅(qū)動伺服電機工作,進而控制電機向著減小差值的方向轉(zhuǎn)動。同時單片機處理的數(shù)字信號通過LCD來顯示,

7、實時顯示超聲波傳感器的測量值。</p><p>  另外本設(shè)計還利用了MATLAB軟件,利用Simulink構(gòu)造直流電機控制系統(tǒng)模型,通過對各個單元部件的參數(shù)進行設(shè)定,進而對直流伺服電機系統(tǒng)控制進行仿真,就其仿真結(jié)果對系統(tǒng)進行時域分析。</p><p>  2單片機控制系統(tǒng)硬件組成</p><p>  本系統(tǒng)是由一片單片機、矩陣式鍵盤、超聲波模塊HC-SR04、顯示

8、模塊和一輛帶有直流伺服電機的車模組成,另外通過Altinum Designer軟件進行電路設(shè)計。</p><p><b>  2.1微控制器</b></p><p>  STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARMCortex-M3內(nèi)核。按性能分成兩個不同的系列:STM32F103“增強型”系列和STM32F101“基本型”系列。增強型

9、系列時鐘頻率達到72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;基本型時鐘頻率為36MHz,以16位產(chǎn)品的價格得到比16位產(chǎn)品大幅提升的性能,是16位產(chǎn)品用戶的最佳選擇。兩個系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場上功耗最低的產(chǎn)品。</p><p>  以下是STM32系列的內(nèi)部結(jié)構(gòu)圖:</p>

10、<p><b>  2.2電機驅(qū)動芯片</b></p><p>  模塊上的EN端為H橋的使能端,需要外接5V電壓,EN不可懸空,當EN都為高電平時電機驅(qū)動模塊開始工作,EN端為低電平時,電機驅(qū)動停止工作。</p><p>  2.3按鍵輸入和顯示模塊</p><p><b>  2.3.1按鍵輸入</b><

11、;/p><p>  采用自己設(shè)計的形如4×4矩陣式按鍵,按鍵用于設(shè)定某一數(shù)值。通過程序設(shè)置延時環(huán)節(jié)來消除按鈕的抖動問題,這樣做使矩陣式按鈕硬件連線簡單,同時按鈕的軟件設(shè)計也變的簡單。</p><p><b>  2.3.2顯示模塊</b></p><p>  系統(tǒng)采用傳統(tǒng)點陣式1602顯示器,顯示傳感器的測量值以及鍵盤的輸入設(shè)定值。<

12、;/p><p>  2.4直流伺服電動機</p><p>  直流伺服電動機在伺服系統(tǒng)中控制機械元件轉(zhuǎn)動.是一種補助馬達間接變速裝置。又稱執(zhí)行電動機,在自動控制系統(tǒng)中,用作執(zhí)行元件,把所收到的電信號轉(zhuǎn)換成電動機軸上的角位移或角速度輸出。其主要特點是,當信號電壓為零時無自轉(zhuǎn)現(xiàn)象,轉(zhuǎn)速隨著轉(zhuǎn)矩的增加而勻速下降。其作用可使控制速度、位置精度非常準確。</p><p>  直流

13、伺服電動機的結(jié)構(gòu)與直流電動機基本相同。只是為減小轉(zhuǎn)動慣量,電機做得細長一些。所不同的是電樞電阻大,機械特性軟、線性(電阻大,可弱磁起動、可直接起動)。供電方式是他勵供電,即勵磁繞組和電樞分別兩個獨立的電源供電??刂品绞桨姌锌刂坪痛艠O控制,其中改變電樞電壓U調(diào)速范圍較大,直流伺服電機常用此方法調(diào)速。</p><p>  直流伺服電動機轉(zhuǎn)速的計算公式如下:</p><p>  式中:n為轉(zhuǎn)

14、速;Φ為磁通;U為外加電壓;I、R為電樞電流和電阻;Ke為電勢系數(shù)。</p><p>  3.單片機控制系統(tǒng)軟件設(shè)計</p><p>  軟件設(shè)計采用模塊化設(shè)計,由主程序模塊和功能實現(xiàn)模塊兩大部分組成。主程序通過讀取鍵值與超聲波傳感器測量距離進行求差,結(jié)合PID控制算法輸出至驅(qū)動模塊以達到控制電機的目的;功能實現(xiàn)模塊主要由主函數(shù)模塊、鍵盤處理子程序和屏幕顯示模塊、PID控制算法子程序等組成

15、。</p><p><b>  3.1主程序</b></p><p>  主程序首先對鍵盤和顯示模塊的程序進行初始化,通過讀取鍵值處理后與超聲波傳感器測量距離進行求差以達到控制電機的目的。主程序流程圖如圖3-1所示。</p><p>  圖3-1主程序流程圖</p><p>  3.2鍵盤處理子程序</p>

16、<p>  鍵盤采用程序掃描的工作方式,即在特定的程序位置段上安排鍵盤掃描程序讀取鍵盤狀態(tài)。鍵盤處理子程序的程序掃描法流程圖如圖3-2所示。</p><p>  圖3-2鍵盤處理子程序的程序掃描法流程圖</p><p>  4.控制系統(tǒng)原理圖及仿真</p><p>  4.1控制系統(tǒng)方框圖</p><p>  控制系統(tǒng)是以單片機為

17、控制器,通過鍵盤輸入設(shè)定值,經(jīng)單片機處理后送到電機驅(qū)動器,電機驅(qū)動器將收到的信號進行放大,最終電機按照減小設(shè)定值與測量值的方式轉(zhuǎn)動。圖4-1即為控制系統(tǒng)方框圖</p><p>  圖4-1控制系統(tǒng)方框圖</p><p>  4.2控制系統(tǒng)電路原理圖</p><p>  圖4-2控制系統(tǒng)電路原理圖</p><p>  5.Simulink組件對

18、直流伺服控制系統(tǒng)的仿真</p><p>  5.1直流伺服電機數(shù)學模型</p><p>  直流伺服電機閉環(huán)系統(tǒng)結(jié)構(gòu)圖如圖5-1所示</p><p>  圖5-1直流伺服電機閉環(huán)系統(tǒng)結(jié)構(gòu)圖</p><p>  其中直流伺服電機的傳遞函數(shù)為</p><p>  5.2系統(tǒng)Simulink模型及時域特性仿真</p&g

19、t;<p>  對于單輸入單輸出系統(tǒng),在經(jīng)典控制理論中可用傳遞函數(shù)來描述系統(tǒng),獲得系統(tǒng)的動態(tài)響應(yīng)。同樣,Simulink仿真軟件也有傳遞函數(shù)模塊,可方便地描述系統(tǒng)的特性,且簡化了仿真模型。從模塊庫窗口創(chuàng)建系統(tǒng)模型如圖1所示,選信號源模塊組中的階躍信號模塊為輸入信號,以輸出模塊組中的示波器模塊作為顯示器來觀察系統(tǒng)階躍響應(yīng)。在模型窗口設(shè)置傳遞函數(shù)模塊的參數(shù)和特性,運行仿真模型,得系統(tǒng)階躍響應(yīng)曲線。</p><

20、;p>  5.2.1 Simulink建模及仿真</p><p>  圖5-2直流伺服電機開環(huán)系統(tǒng)Simulink模型</p><p>  端口Step為直流伺服電機的輸入電壓,輸出端口為驅(qū)動信號。</p><p>  圖5-3是開環(huán)系統(tǒng)的仿真結(jié)果,即開環(huán)系統(tǒng)的階躍響應(yīng)曲線,也即直流伺服電機輸入1V單位階躍電壓時。電機的轉(zhuǎn)軸輸出呈線性變化。</p>

21、<p>  圖5-3開環(huán)系統(tǒng)仿真圖</p><p>  由圖5-3響應(yīng)曲線可知,系統(tǒng)沒有在可視范圍內(nèi)達到穩(wěn)態(tài)值“1”,但從理論上分析知此系統(tǒng)屬穩(wěn)定系統(tǒng),在足夠時間內(nèi)是能夠達到穩(wěn)定狀態(tài)的。上述分析說明:系統(tǒng)的響應(yīng)速度較慢,系統(tǒng)性能較差,從而可能不具備使用價值。結(jié)果表明,該系統(tǒng)沒有達到預(yù)期的設(shè)計要求。</p><p>  5.2.2單位負反饋系統(tǒng)Simulink建模及仿真<

22、/p><p>  圖5-4是在圖5-3的基礎(chǔ)上加一個單位負反饋環(huán)節(jié),構(gòu)成直流伺服電機的單位負反饋系統(tǒng),單位負反饋系統(tǒng)Simulink模型如圖5-4所示</p><p>  圖5-4直流伺服電機單位負反饋系統(tǒng)Simulink模型</p><p>  圖5-5是單位負反饋系統(tǒng)的仿真結(jié)果</p><p>  圖5-5單位負反饋系統(tǒng)仿真圖</p&g

23、t;<p>  系統(tǒng)超調(diào):40%,調(diào)節(jié)時間:2s。由圖5-5和開環(huán)階躍響應(yīng)曲線相比較知:系統(tǒng)應(yīng)經(jīng)可以達到較快達到穩(wěn)態(tài)值。說明閉環(huán)單位負反饋系統(tǒng)對系統(tǒng)性能有很大改善。</p><p><b>  5.3 PID校正</b></p><p>  為了使系統(tǒng)能夠達到設(shè)計要求,我們可以在圖5-4前向通道上設(shè)置一個控制器構(gòu)成閉環(huán)系統(tǒng)來校正直流伺服電機?;赑ID控

24、制(閉環(huán))的直流伺服電機系統(tǒng)框圖如圖5-6所示。</p><p><b>  +</b></p><p><b>  -</b></p><p>  圖5-6基于PID控制(閉環(huán))的直流伺服電機系統(tǒng)框圖</p><p>  其控制過程為比較超聲波傳感器的測量值與鍵盤設(shè)定值,即輸入信號,通過反饋后與系

25、統(tǒng)輸入信號進行比較,得到偏差信號。偏差信號作為PID控制器的輸入信號根據(jù)設(shè)定的PID控制規(guī)律計算后輸出信號U,作為控制量輸入給直流電機,從而實現(xiàn)整個直流電機調(diào)速系統(tǒng)的閉環(huán)負反饋PID控制。</p><p>  5.3.1 PID參數(shù)的湊試法確定</p><p>  增大比例系數(shù)Kp系統(tǒng)響應(yīng)有利于減小靜差,但是過大會增大超調(diào),并產(chǎn)生震蕩,使穩(wěn)定性變壞。增大Ti可以減小超調(diào),減小震蕩,是系統(tǒng)更

26、穩(wěn)定,但靜差消除變慢。增大微分Td有利于加快系統(tǒng)響應(yīng)時間,使超調(diào)減小,穩(wěn)定性增加,但對擾動的抑制能力減弱,對擾動有較敏感的響應(yīng)。</p><p>  在湊試時,對參數(shù)實行下述先比例,后積分,再微分的整定步驟。</p><p>  (1)首先只整定比例部分。即將比例部分由小變大,并觀察相應(yīng)的系統(tǒng)響應(yīng),直到得到反應(yīng)快,超調(diào)小的響應(yīng)曲線。如果系統(tǒng)沒有靜差或靜差已小到允許范圍內(nèi),那么只需用比例控制

27、器即可,最優(yōu)比例系數(shù)可由此確定。</p><p>  (2)如果在比例調(diào)節(jié)的基礎(chǔ)下系統(tǒng)的靜差不能滿足設(shè)計要求,則須加入積分環(huán)節(jié)。整定時首先置積分時間Ti為一較大值,并將經(jīng)第一步整定得到的比例系數(shù)略微縮小,然后減小積分時間,并在保持系統(tǒng)良好動態(tài)性能的情況下,靜差得到消除。在此過程中,可根據(jù)響應(yīng)曲線的好壞反復改變比例系數(shù)與積分時間,以期得到滿意的控制過程與整定參數(shù)。</p><p>  (3)

28、若使用比例積分控制器消除了靜差,但動態(tài)過程經(jīng)反復調(diào)整仍不能滿意,則可加入微分環(huán)節(jié),構(gòu)成比例積分微分控制器。在整定時,可先置微分時間Td為零。在第二步整定的基礎(chǔ)上,增大Td,同時相應(yīng)的改變比例系數(shù)和積分時間,逐步湊試,以獲得滿意的調(diào)節(jié)效果和控制參數(shù)。</p><p>  5.3.2比例控制器校正</p><p>  比例控制系統(tǒng)Simulink模型及仿真</p><p&g

29、t;  圖5-7 比例控制系統(tǒng)Simulink模型</p><p><b>  Kp=1時仿真圖</b></p><p><b>  Kp=3時</b></p><p><b>  Kp=5時仿真圖</b></p><p>  由以上三個比例控制的仿真圖可知,增大比例系數(shù)KP一

30、般系統(tǒng)響應(yīng)利于減小靜差,但是過大會增大超調(diào),并產(chǎn)生震蕩,使穩(wěn)定性變壞。</p><p>  5.3.3比例積分控制器校正</p><p>  積分控制的作用是只要系統(tǒng)存在誤差,積分控制作用就不斷地積累,輸出控制量以消除誤差,因而,只要有足夠的時間,積分控制將能完全消除誤差。在比例環(huán)節(jié)基礎(chǔ)上加入積分環(huán)節(jié),只要參數(shù)設(shè)置合適就能完全消除系統(tǒng)偏差。</p><p>  比例

31、積分控制系統(tǒng)Simulink模型</p><p>  圖5-8 比例積分控制系統(tǒng)Simulink模型</p><p>  Kp=1、Ki=1時仿真圖</p><p>  Kp=1、Ki=3時仿真圖</p><p>  Kp=5、Ki=3時仿真圖</p><p>  由以上三個比例積分控制的仿真圖可知,增大TI有減小超調(diào)

32、,減小震蕩,使系統(tǒng)更穩(wěn)定,但靜差消除變慢。PI控制參數(shù)設(shè)置適當可使系統(tǒng)靜差為零。經(jīng)多次試湊,選KI=1.</p><p>  5.3.4 PID控制器校正</p><p>  比例積分作用雖能是系統(tǒng)誤差為零,但系統(tǒng)動態(tài)性能不能得到滿足。積分作用太強可能會使系統(tǒng)出現(xiàn)震蕩。微分控制具有超前控制能力,可抑制最大動態(tài)偏差,改善系統(tǒng)動態(tài)性能,提高系統(tǒng)的穩(wěn)定性。為此,在PI作用基礎(chǔ)上引入微分控制,構(gòu)成

33、PID控制器,以使系統(tǒng)滿足穩(wěn)、準、快的要求。</p><p>  PID控制控制系統(tǒng)Simulink模型如圖</p><p>  圖5-9 PID控制系統(tǒng)Simulink模型</p><p>  Kp=1、Ki=1、Kd=0.1時仿真圖</p><p>  和PI控制閉環(huán)響應(yīng)曲線相比較可知:系統(tǒng)響應(yīng)時間變短,超調(diào)變小,但仍不符合要求;<

34、/p><p>  Kp=5、Ki=1、Kd=0.1時仿真圖</p><p>  與KP=1、KI=1、KD=0.1時的仿真圖相比,系統(tǒng)超調(diào)和調(diào)節(jié)時間都變小,仍然不符合要求,繼續(xù)校正。需加大Kp及Ki。</p><p>  Kp=12、Ki=1、Kd=0.5時仿真圖</p><p>  由上曲線知此時系統(tǒng)有微量的超調(diào),進一步加大Ki時超調(diào)為零。&l

35、t;/p><p>  Kp=12、Ki=1、Kd=0.9時仿真圖</p><p>  經(jīng)過多次校正參數(shù),此時當Kp=12、Ki=1、Kd=0.9時系統(tǒng)超調(diào)量為0,穩(wěn)態(tài)誤差為0,性能滿足設(shè)計要求,穩(wěn)定、準確、快速得到了完滿的統(tǒng)一。</p><p><b>  5.小結(jié)</b></p><p>  控制系統(tǒng)特點是以單片機為控制器

36、,通過鍵盤輸入設(shè)定值,使得系統(tǒng)消除測量值與實際值的偏差方便快捷。但在proteus中沒能實現(xiàn)閉環(huán)系統(tǒng)的PID控制。此缺點通過軟件彌補,在MATLAB軟件中的SIMULINK中進行了直流伺服電機的開環(huán)控制系統(tǒng)仿真,單位閉環(huán)控制系統(tǒng)仿真,閉環(huán)PI控制系統(tǒng)仿真,閉環(huán)PD控制仿真,閉環(huán)PID控制仿真能夠更好的測試和控制系統(tǒng)的性能,從而為系統(tǒng)設(shè)計提供了更準確的性能指標。</p><p><b>  參考文獻<

37、;/b></p><p>  [1]李正軍.計算機控制系統(tǒng).北京:機械工業(yè)出版社,2010.6</p><p>  [2]周荷琴等.微型計算機原理及接口技術(shù)[M].合肥:中國科技大學出版社,2008.6</p><p>  [3]張毅剛等.單片機原理與應(yīng)用設(shè)計[M].北京:電子工業(yè)出版社</p><p>  [4]計算機控制技術(shù)實驗指導

38、書</p><p><b>  部分程序如下:</b></p><p>  #include "stm32f10x.h" </p><p>  #include "user_Config.h" </p><p> 

39、 #include "TFT28.h" </p><p>  #include "GUI.h"</p><p>  #include <stdio.h></p><p>  #include "key.h"</p><p>  #include &

40、lt;math.h></p><p>  int overflow=0; </p><p>  #define module_interval 25 </p><p>  #define object_distance 100.0 </p><p>  void NVIC_Configuration(void);</p>

41、;<p>  void TIM_Configuration(void);</p><p>  void GPIO_Configuration(void);</p><p>  void RCC_Configuration(void);</p><p>  float Sensor_using(void);</p><p>  v

42、oid delay(void);</p><p>  unsigned long lastTime;</p><p>  double Input, Output, Setpoint,dErr;</p><p>  double errSum, lastErr;</p><p>  unsigned int Device_code;

43、 </p><p>  GPIO_InitTypeDef GPIO_InitStructure;//定義一個結(jié)構(gòu)變量,用于初始化GPIO</p><p>  ErrorStatus HSEStartUpStatus;</p><p>  void Delay(vu32 nCount)</p><p><b>  

44、{</b></p><p>  for(; nCount != 0; nCount--);</p><p><b>  }</b></p><p>  void delay_ms(unsigned int nCount)</p><p><b>  {</b></p>&l

45、t;p>  int i,j; </p><p>  for(i=0;i<nCount;i++) </p&g

46、t;<p><b>  {</b></p><p>  for(j=0;j<0x3000;j++);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void RCC_Configuration(void)

47、</p><p><b>  {</b></p><p>  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);</p><p>  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |</p>

48、<p>  RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);</p><p><b>  }</b></p><p>  void GPIO_Config(void)</p><p><b>  {</b></p><p>  RC

49、C_APB2PeriphClockCmd(RCC_GPIO_TFT, ENABLE); </p><p>  GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN|DS5_PIN|DS6_PIN|DS7_PIN|DS8_PIN;</p><p><b>  //工作在輸出模式</b><

50、;/p><p>  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//GPIO¹¤×÷ÔÚÊä³öģʽ</p><p>  GPIO_InitStructure.GPIO_Speed = GPI

51、O_Speed_10MHz;</p><p>  GPIO_Init(GPIO_TFT_DATA, &GPIO_InitStructure); </p><p>  RCC_APB2PeriphClockCmd(RCC_GPIO_CTRA, ENABLE); </p><p>  GPIO_InitStructure.GPIO_Pin = G

52、PIO_Pin_0 | GPIO_Pin_1; //使用PA0、PA1</p><p>  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;</p><p>  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;</p><p>  GPIO_Init(GPIO_

53、CTRA, &GPIO_InitStructure); </p><p>  RCC_APB2PeriphClockCmd(RCC_GPIO_CTRB, ENABLE); </p><p>  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2 |GPIO_Pin_8 ; //使

54、用PB0.1.2.8</p><p>  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;</p><p>  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;</p><p>  GPIO_Init(GPIO_CTRB, &GPIO_InitStruc

55、ture); </p><p>  GPIO_ResetBits(GPIO_CTRB,GPIO_Pin_8);</p><p><b>  }</b></p><p>  void NVIC_Configuration(void)</p><p><b>  {</b></p&g

56、t;<p>  NVIC_InitTypeDef NVIC_InitStructure;</p><p>  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;</p><p>  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;</p><p&g

57、t;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;</p><p>  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;</p><p>  NVIC_Init(&NVIC_InitStructure);</p><p><b>  }</

58、b></p><p>  void TIM_Configuration(void)</p><p><b>  {</b></p><p>  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;</p><p>  RCC_APB1PeriphClockCmd(RCC_

59、APB1Periph_TIM2, ENABLE);</p><p>  TIM_DeInit(TIM2);</p><p>  TIM_TimeBaseStructure.TIM_Period=10000;</p><p>  TIM_TimeBaseStructure.TIM_Prescaler=0;</p><p>  TIM_TimeB

60、aseStructure.TIM_ClockDivision=TIM_CKD_DIV1;</p><p>  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;</p><p>  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);</p><p> 

61、 TIM_PrescalerConfig(TIM3,359,TIM_PSCReloadMode_Immediate);</p><p>  TIM_ARRPreloadConfig(TIM3, DISABLE);</p><p>  TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);</p><p>  TIM_Cmd(TIM3, DI

62、SABLE);</p><p><b>  }</b></p><p>  void delay(void)</p><p><b>  {</b></p><p><b>  u32 i;</b></p><p><b>  i=3000;&

63、lt;/b></p><p>  while(i--);</p><p><b>  }</b></p><p>  //超聲波傳感器模塊</p><p>  float Sensor_using(void)</p><p><b>  {</b></p>

64、<p>  float distance=0;</p><p>  u16 TIM=0;</p><p>  GPIO_SetBits(GPIOC,GPIO_Pin_12);</p><p><b>  delay();</b></p><p>  GPIO_ResetBits(GPIOC,GPIO_Pin_

65、12);</p><p>  TIM_Cmd(TIM3, ENABLE);</p><p>  while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11) && overflow==0);</p><p>  TIM3->CNT=0;</p><p>  while(GPIO_Read

66、InputDataBit(GPIOC,GPIO_Pin_11) && overflow==0);</p><p>  TIM_Cmd(TIM3, DISABLE);</p><p>  if(overflow!=0)</p><p><b>  {</b></p><p>  overflow=0;<

67、;/p><p>  return 0.0;</p><p><b>  }</b></p><p>  TIM=TIM_GetCounter(TIM2);</p><p>  distance=(float)sqrt((TIM/20.0*17)*(TIM/20.0*17)-module_interval*module_int

68、erval/4.0)+12.0; </p><p>  return(distance);</p><p><b>  }</b></p><p>  void TIM3_PWM_Init(u16 arr,u16 psc)//PWM output</p><p><b>  { </b></

69、p><p>  GPIO_InitTypeDef GPIO_InitStructure;</p><p>  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;</p><p>  TIM_OCInitTypeDef TIM_OCInitStructure;</p><p>  RCC_APB1Per

70、iphClockCmd(RCC_APB1Periph_TIM3, ENABLE);</p><p>  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); </p><p>  GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);

71、 </p><p><b>  //啟用定時器三</b></p><p>  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9

72、; </p><p>  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; </p><p>  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;</p><p>  GPIO_Init(GPIOC, &GPIO_InitStructure);</p>

73、;<p>  GPIO_ResetBits(GPIOC,GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);</p><p>  TIM_TimeBaseStructure.TIM_Period = arr; </p><p>  TIM_TimeBaseStructure.TIM_Prescaler =psc; </p

74、><p>  TIM_TimeBaseStructure.TIM_ClockDivision = 0; </p><p>  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; </p><p>  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

75、 </p><p>  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; </p><p>  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; </p><p>  TIM_OCInitStructure.TIM_Pulse = 0; <

76、;/p><p>  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; </p><p>  TIM_OC1Init(TIM3, &TIM_OCInitStructure); </p><p>  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

77、 </p><p>  TIM_OC2Init(TIM3, &TIM_OCInitStructure); </p><p>  TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); </p><p>  TIM_OC3Init(TIM3, &TIM_OCInitStructure); </p&

78、gt;<p>  TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); </p><p>  TIM_OC4Init(TIM3, &TIM_OCInitStructure); </p><p>  TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); </p>

79、<p>  TIM_ARRPreloadConfig(TIM3, ENABLE); </p><p>  TIM_Cmd(TIM3, ENABLE); </p><p><b>  }</b></p><p>  Compute(double kp,double ki,double kd)//PID control</p&

80、gt;<p><b>  {</b></p><p>  double dErr;</p><p>  unsigned long now;</p><p>  double timeChange = (double)(now - lastTime);</p><p>  double error = Se

81、tpoint - Input;</p><p>  errSum += (error * timeChange);</p><p>  dErr = (error - lastErr)/timeChange;</p><p>  Output = kp * error + ki * errSum + kd * dErr;</p><p>  

82、lastErr = error;</p><p>  lastTime = now;</p><p><b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p>  float result=0;</

83、p><p><b>  int x;</b></p><p>  RCC_Configuration;//系統(tǒng)時鐘初始化</p><p>  NVIC_Configuration();//中斷初始化</p><p>  TIM_Configuration();//定時器初始化</p><p>  GP

84、IO_Config();</p><p>  Device_code=0x9320; </p><p>  TFT_Initial(); </p><p>  LED_Init();</p><p>  KEY_Init();</p><p>

85、  Compute(2.3,3.5,4.7);</p><p>  while(1) </p><p><b>  {</b></p><p>  CLR_Screen(Black); </p><p>  LCD_Put

86、String24(35,40,"the set length: ",Yellow,Black); </p><p>  delay_ms(1000); </p><p>  result=Sensor_using();</p><p>  if(result>=object_distance)</p>

87、<p><b>  {</b></p><p>  GPIO_SetBits(GPIOC,GPIO_Pin_6);</p><p>  GPIO_ResetBits(GPIOC,GPIO_Pin_7);</p><p><b>  }</b></p><p>  else if (re

88、sult<object_distance && result!=0.0)</p><p><b>  {</b></p><p>  GPIO_SetBits(GPIOC,GPIO_Pin_7);</p><p>  GPIO_ResetBits(GPIOC,GPIO_Pin_6);</p><p>

89、;<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  GPIO_ResetBits(GPIOC,GPIO_Pin_6);</p><p>  GPIO_ResetBits(GPIOC,GPIO_Pin

90、_7);</p><p><b>  }</b></p><p>  x=KEY_Scan(); //¼üÅÌÏÔʾ³ÌÐò</p><p><b>  switch(x)</b></p>

91、<p><b>  {</b></p><p><b>  case 0:</b></p><p>  // LED0=0;</p><p>  printf("D\n");</p><p><b>  break;</b></p&

92、gt;<p><b>  case 1:</b></p><p>  printf("C\n");</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  printf(&quo

93、t;B\n");</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  printf("A\n");</p><p><b>  break;</b></p><

94、;p><b>  case 4:</b></p><p>  printf("#\n");</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  printf("9\n&qu

95、ot;);</p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  printf("6\n");</p><p><b>  break;</b></p><p>&l

96、t;b>  case 7:</b></p><p>  printf("3\n");</p><p><b>  break;</b></p><p><b>  case 8:</b></p><p>  printf("0\n");<

97、;/p><p><b>  break;</b></p><p><b>  case 9:</b></p><p>  printf("8\n");</p><p><b>  break;</b></p><p><

98、b>  case 10:</b></p><p>  printf("5\n");</p><p><b>  break;</b></p><p><b>  case 11:</b></p><p>  printf("2\n");

99、</p><p><b>  break;</b></p><p><b>  case 12:</b></p><p>  printf("*\n");</p><p><b>  break;</b></p><p><

100、;b>  case 13:</b></p><p>  printf("7\n");</p><p><b>  break;</b></p><p><b>  case 14:</b></p><p>  printf("4\n")

101、;</p><p><b>  break;</b></p><p><b>  case 15:</b></p><p>  printf("1\n");</p><p><b>  break;</b></p><p><b

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論