電力拖動(dòng)課程設(shè)計(jì)--開環(huán)控制的pwm直流調(diào)速系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  拖動(dòng)系統(tǒng)課程設(shè)計(jì)</b></p><p><b>  報(bào)告書</b></p><p><b>  題目:</b></p><p><b>  專業(yè):</b></p><p><b>  姓名:</b>&l

2、t;/p><p><b>  學(xué)號(hào): </b></p><p><b>  指導(dǎo)教師:</b></p><p><b>  任務(wù)書</b></p><p>  課題名稱:開環(huán)控制的PWM直流調(diào)速系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  課程設(shè)

3、計(jì)任務(wù):</b></p><p>  1、查找文獻(xiàn),掌握直流電動(dòng)機(jī)PWM調(diào)速的基本工作原理;</p><p>  2、設(shè)計(jì)直流電動(dòng)機(jī)開環(huán)調(diào)速系統(tǒng),建立系統(tǒng)模型并進(jìn)行仿真試驗(yàn);</p><p>  3、設(shè)計(jì)并調(diào)試基于51單片機(jī)的H橋驅(qū)動(dòng)控制電路;</p><p>  4、設(shè)計(jì)速度調(diào)節(jié)器算法,對(duì)開環(huán)系統(tǒng)進(jìn)行負(fù)載試驗(yàn);</p>

4、;<p><b>  課程設(shè)計(jì)要求:</b></p><p>  1、能獨(dú)立設(shè)置電機(jī)速度(按鍵設(shè)置或滑動(dòng)變阻器設(shè)置或上位機(jī)設(shè)置);</p><p>  2、能顯示當(dāng)前電機(jī)的實(shí)際速度(單位為:r/min);</p><p>  3、能控制電機(jī)啟動(dòng)、停止、正反轉(zhuǎn)、軟啟動(dòng)和軟制動(dòng);</p><p><b&g

5、t;  課程設(shè)計(jì)內(nèi)容:</b></p><p>  1、設(shè)計(jì)直流電動(dòng)機(jī)開閉環(huán)調(diào)速系統(tǒng)總體方案;</p><p>  2、建立系統(tǒng)數(shù)學(xué)模型,并設(shè)計(jì)電流調(diào)節(jié)器和轉(zhuǎn)速調(diào)節(jié)器算法;</p><p>  3、直流電機(jī)的控制電路、驅(qū)動(dòng)電路、保護(hù)電路及其檢測(cè)電路設(shè)計(jì)</p><p>  4、 基于單片機(jī)的開環(huán)調(diào)速系統(tǒng)軟件程序設(shè)計(jì);</p&

6、gt;<p><b>  任務(wù)下達(dá)日期:</b></p><p><b>  2015年6月3日</b></p><p><b>  設(shè)計(jì)日期:</b></p><p><b>  2015年6月9日</b></p><p><b>

7、;  摘要</b></p><p>  本次設(shè)計(jì)先通過上網(wǎng)查找資料,了解直流電機(jī)PWM開環(huán)調(diào)速系統(tǒng)的原理及其特性。再通過PROTUES電路仿真PWM波形控制輸出并設(shè)計(jì)該開環(huán)直流電機(jī)調(diào)速系統(tǒng)硬件電路。此次設(shè)計(jì)的系統(tǒng)可通過按鈕實(shí)現(xiàn)正反轉(zhuǎn)調(diào)節(jié),實(shí)現(xiàn)電機(jī)的7檔調(diào)速,并且在LCD屏幕中實(shí)時(shí)顯示出電機(jī)的狀態(tài),包括正反轉(zhuǎn),檔位以及電機(jī)轉(zhuǎn)速。該系統(tǒng)有如下優(yōu)點(diǎn):需用的大功率可控器件少,線路簡(jiǎn)單;調(diào)速范圍寬:電流波形系數(shù)

8、好,附加損耗小;功率因數(shù)高。</p><p>  關(guān)鍵詞:開環(huán) 直流電機(jī) PWM 51單片機(jī) </p><p><b>  目錄</b></p><p><b>  1 系統(tǒng)概述6</b></p><p>  2 硬件電路設(shè)計(jì)7</p><p>  2.1 主控制

9、模塊7</p><p>  2.1.1 單片機(jī)管腳介紹:7</p><p>  2.1.2 晶振電路與復(fù)位電路8</p><p>  2.2.3矩陣鍵盤9</p><p>  2.2脈沖整形觸發(fā)電路設(shè)計(jì)10</p><p>  2.3 LCD160210</p><p>  2.4電

10、機(jī)參數(shù)11</p><p>  2.5 電機(jī)驅(qū)動(dòng)模塊11</p><p>  2.5.1 模塊描述11</p><p>  2.5.2 模塊接口說明11</p><p>  2.5.3模塊使用說明12</p><p><b>  3 軟件設(shè)計(jì)12</b></p><

11、p>  3.1 操作說明12</p><p>  3.2 c程序設(shè)計(jì)13</p><p>  3.2.1 LCD160213</p><p>  3.2.2 矩陣鍵盤讀取13</p><p>  3.2.3 占空比計(jì)算14</p><p>  3.2.4 PWM信號(hào)產(chǎn)生14</p>&l

12、t;p>  3.2.5 轉(zhuǎn)速計(jì)算14</p><p>  3.2.6 換向14</p><p><b>  4 系統(tǒng)調(diào)試14</b></p><p>  4.1 PWM信號(hào)調(diào)試14</p><p>  4.2 電機(jī)轉(zhuǎn)速測(cè)試14</p><p><b>  5 結(jié)束語15

13、</b></p><p><b>  6 參考文獻(xiàn)15</b></p><p><b>  7 附錄15</b></p><p>  7.1 設(shè)計(jì)圖紙15</p><p>  7.2 元器件清單15</p><p><b>  7.3 程序15

14、</b></p><p><b>  1 系統(tǒng)概述</b></p><p>  該直流電機(jī)調(diào)速系統(tǒng)是以STC89C52單片機(jī)為核心,配以相應(yīng)硬件電路,完成電機(jī)啟動(dòng)停止控制、正反裝控制以及1-7檔電機(jī)轉(zhuǎn)速選擇等功能。實(shí)際運(yùn)用時(shí),用戶可以根據(jù)自己需求來設(shè)置電機(jī)檔位或電機(jī)的正反轉(zhuǎn),起停。</p><p>  PWM直流電機(jī)調(diào)速系統(tǒng)主要由矩

15、陣鍵盤、單片機(jī)、脈沖整形觸發(fā)電路、電機(jī)驅(qū)動(dòng)模塊等部分組成。其中矩陣鍵盤用于控制電機(jī)各種功能的實(shí)現(xiàn)。電機(jī)上裝有41線碼盤,電機(jī)轉(zhuǎn)一周形成41個(gè)脈沖,通過脈沖整形觸發(fā)電路接入52單片機(jī)的I/O口進(jìn)行計(jì)數(shù)并用于計(jì)算電機(jī)轉(zhuǎn)速。電機(jī)PWM控制信號(hào)由52單片機(jī)定時(shí)器定時(shí)觸發(fā),通過I/O口輸入至電機(jī)驅(qū)動(dòng)模塊來進(jìn)行控制電機(jī)轉(zhuǎn)速。</p><p>  圖一:系統(tǒng)功能方塊圖</p><p>  如圖1所示電源

16、輸入電路為STC89C52提供5Vvcc電源。晶振電路的主要作用是提供基準(zhǔn)頻率,在電路產(chǎn)生震蕩電流,發(fā)出時(shí)鐘信號(hào)。復(fù)位電路是使單片機(jī)的CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第—個(gè)單元取指令。鍵盤接口電路實(shí)現(xiàn)PWM直流電機(jī)調(diào)速系統(tǒng)的各種功能。脈沖整形觸發(fā)電路將電機(jī)41線碼盤產(chǎn)生的脈沖輸入至單片機(jī)進(jìn)行電機(jī)轉(zhuǎn)速計(jì)算。電機(jī)驅(qū)動(dòng)模塊接收單片機(jī)PWM控制信號(hào)來驅(qū)動(dòng)電機(jī)。LC

17、D1602液晶屏用來顯示電機(jī)的正反轉(zhuǎn)狀態(tài)、起停狀態(tài)、檔位及實(shí)時(shí)的轉(zhuǎn)速。</p><p><b>  2 硬件電路設(shè)計(jì)</b></p><p><b>  2.1 主控制模塊</b></p><p>  2.1.1 單片機(jī)管腳介紹:</p><p><b>  圖2:?jiǎn)纹瑱C(jī)管腳</b&

18、gt;</p><p>  單VCC(40):供電電壓,其工作電壓為5V。</p><p>  GND(20):接地。</p><p>  P0端口(P0.0-P0.7):P0口為一個(gè)8位漏極開路雙向I/O口,每個(gè)引腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程

19、時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p>  P1端口(P1.0-P1.7):P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p&g

20、t;<p>  P2端口(P2.0-P2.7):P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口,用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器

21、進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。</p><p>  P3端口(P3.0-P3.7):P3口管腳是一個(gè)帶有內(nèi)部上拉電阻的8位的雙向I/O端口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時(shí),由于外部下拉為低電平,P3口將輸出電流(ILL)。</p><p>  P3

22、口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p>  復(fù)位RST(9):復(fù)位輸入。在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)引腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P3.0-P3.7口均置1,引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的00H處開始運(yùn)行程序。復(fù)位操作不會(huì)對(duì)內(nèi)部RAM有

23、所影響。</p><p>  ALE/ (30):當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如果想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有

24、在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,則置位無效。</p><p>  (29):外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指令期間,每個(gè)機(jī)器周期兩次 有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的 信號(hào)將不出現(xiàn)。</p><p>  EA/VPP(31):當(dāng) 保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFF

25、FH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), 將內(nèi)部鎖定為RESET;當(dāng) 端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V的編程電源(VPP)。</p><p>  XTAL1(19):來自反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p>  XTAL2(18):來自反向振蕩器的輸出。片機(jī)的管腳如圖2所示。</p><

26、;p>  2.1.2 晶振電路與復(fù)位電路</p><p>  本系統(tǒng)采用STC系統(tǒng)列單片機(jī),相比其他系列單片機(jī)具有很多優(yōu)點(diǎn)。一般STC單片機(jī)資源比其他單片機(jī)要多,而且執(zhí)行速度快;STC系列單片機(jī)使用串口對(duì)單片機(jī)進(jìn)行燒寫,下載程序較為方便;STC52單片機(jī)內(nèi)部集成了看門狗電路;且具有很強(qiáng)抗干擾能力。</p><p>  本系統(tǒng)采用內(nèi)部方式的時(shí)鐘電路和加電自復(fù)位的復(fù)位電路,如下圖3:&l

27、t;/p><p>  圖3:晶振電路與復(fù)位電路</p><p><b>  2.2.3矩陣鍵盤</b></p><p>  鍵盤是與單片機(jī)進(jìn)行人機(jī)交互的最基本的途徑,其以按鍵的形式來設(shè)置控制功能或輸入數(shù)據(jù),按鍵的輸入狀態(tài)本質(zhì)上是一個(gè)開關(guān)量。對(duì)于簡(jiǎn)單的開關(guān)量的輸入可以采用獨(dú)立式按鍵,這種方法接口簡(jiǎn)單,但占用單片機(jī)I/O端口資源較多。對(duì)于輸入?yún)?shù)較多、

28、功能復(fù)雜的系統(tǒng),需要采用矩陣式鍵盤進(jìn)行輸入控制。本系統(tǒng)采用2*3矩陣式鍵盤,鍵盤連接方式如圖4所示:</p><p><b>  圖4:矩陣鍵盤</b></p><p>  2.2脈沖整形觸發(fā)電路設(shè)計(jì)</p><p>  圖5:脈沖觸發(fā)整形電路</p><p>  脈沖觸發(fā)整形電路如上圖5所示。當(dāng)光透過光柵時(shí),光電門導(dǎo)通

29、,NPN接受到高電壓使三極管也導(dǎo)通,從而使單片機(jī)接受到一個(gè)從高電平到低電平的下降沿信號(hào)。</p><p>  2.3 LCD1602</p><p>  液晶顯示器(LCD)是一種功耗很低的顯示器,它的使用非常廣泛,比如電子表、計(jì)算器、數(shù)碼相機(jī)、計(jì)算機(jī)的顯示器和液晶電視等。電機(jī)調(diào)速過程中所需要顯示的信息比較多,為了能直觀的看到結(jié)果,本設(shè)計(jì)采用液晶顯示屏LCD進(jìn)行顯示,具體連接方式如圖6所示

30、。</p><p>  圖6:LCD1602電路</p><p><b>  2.4電機(jī)參數(shù)</b></p><p>  圖7:電機(jī)實(shí)物圖及參數(shù)</p><p>  電機(jī)的實(shí)物圖及參數(shù)如上圖7所示。電機(jī)的線碼盤為41線,電機(jī)轉(zhuǎn)動(dòng)一周會(huì)發(fā)出41個(gè)脈沖信號(hào)。其一些實(shí)測(cè)數(shù)據(jù)如下表所示:</p><p>

31、  2.5 電機(jī)驅(qū)動(dòng)模塊</p><p>  2.5.1 模塊描述</p><p>  1 雙全新電機(jī)驅(qū)動(dòng)芯片,兼容L9110</p><p>  2 模塊供電電壓:2.5-12V</p><p>  3 適合的電機(jī)范圍:電機(jī)工作電壓2.5v-12V之間,最大工作電流0.8A</p><p>  4 可以同時(shí)驅(qū)動(dòng)2個(gè)直

32、流電機(jī),或者1個(gè)4線2相式步進(jìn)電機(jī)。</p><p>  5 PCB板尺寸:2.8cm*2.1cm 超小體積,適合組裝</p><p>  6設(shè)有固定安裝孔,直徑:3mm</p><p>  2.5.2 模塊接口說明</p><p>  6P黑色彎排針說明:</p><p>  1 VCC 外接2.5V-12V電壓&

33、lt;/p><p>  2 GND 外接GND</p><p>  3 IA1 外接單片機(jī)IO口</p><p>  4 IB1 外接單片機(jī)IO口</p><p>  5 IA2 外接單片機(jī)IO口</p><p>  6 IB2 外接單片機(jī)IO口</p><p><b>  4P

34、綠端子說明:</b></p><p>  1 OA1 OB1 接直流電機(jī)2個(gè)引腳,無方向</p><p>  2 OA2 OB2 接直流電機(jī)2個(gè)引腳,無方向</p><p>  2.5.3模塊使用說明 </p><p>  接通VCC,GND 模塊電源指示燈亮 </p><p>  IA1輸入高電平,IB

35、1輸入低電平,【OA1 OB1】電機(jī)正轉(zhuǎn);</p><p>  IA1輸入低電平,IB1輸入高電平,【OA1 OB1】電機(jī)反轉(zhuǎn);</p><p>  IA2輸入高電平,IB2輸入低電平,【OA2 OB2】電機(jī)正轉(zhuǎn);</p><p>  IA2輸入低電平,IB2輸入高電平,【OA2 OB2】電機(jī)反轉(zhuǎn);</p><p><b>  3

36、軟件設(shè)計(jì)</b></p><p><b>  3.1 操作說明</b></p><p>  矩陣鍵盤3排6個(gè)按鍵分別對(duì)應(yīng)不同的功能。功能如下圖8所示:</p><p>  圖8:矩陣鍵盤按鍵功能</p><p>  電機(jī)默認(rèn)的啟動(dòng)狀態(tài)為3檔速度,方向正轉(zhuǎn)??梢酝ㄟ^不同的功能按鍵來對(duì)電機(jī)的起停、正反轉(zhuǎn)、轉(zhuǎn)速等控

37、制。電機(jī)的實(shí)時(shí)狀態(tài)會(huì)顯示在LCD1602中。電機(jī)轉(zhuǎn)速1s刷新一次。</p><p><b>  3.2 c程序設(shè)計(jì)</b></p><p>  3.2.1 LCD1602</p><p>  圖9:LCD1602寄存器選擇控制表</p><p>  LCD1602的寄存器控制如上圖9所示。當(dāng)寫入數(shù)據(jù)時(shí),令RE=1 R/

38、W=0;使能端E設(shè)置為低電平,單片機(jī)I/O口輸出指令,令使能端為E低電平,此時(shí)E下降沿是LCD1602寫入指令。想LCD1602寫入數(shù)據(jù)用同樣的方法。寫入數(shù)據(jù)或指令程序流程圖如下圖10所示。</p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖10:LCD1602寫入指令/

39、數(shù)據(jù)流程圖</p><p>  3.2.2 矩陣鍵盤讀取</p><p>  矩陣鍵盤讀取數(shù)值的流程如下圖11所示。</p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p>

40、;<p><b>  N</b></p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖11:矩陣鍵盤運(yùn)行流程</p><p>  3.2.3 占空比計(jì)算</p><p>  本單片機(jī)采用的是

41、24M晶振,且設(shè)置PWM周期為10ms。當(dāng)設(shè)定好檔位K時(shí),可以根據(jù)一下公式計(jì)算出PWM占空比的定時(shí)器定時(shí)時(shí)間。</p><p>  低電平信號(hào)TL1=(65536-2000*(10-K))%255;</p><p>  低電平信號(hào)TH1=(65536-2000*(10-K)-TL1)/255;</p><p>  高電平信號(hào)TL1=(65536-2000*K)%25

42、5; </p><p>  高電平信號(hào)TH1=(65536-2000*K-TL1)/255;</p><p>  3.2.4 PWM信號(hào)產(chǎn)生</p><p>  PWM信號(hào)根據(jù)占空比計(jì)算所得的數(shù)值附給定時(shí)器。定時(shí)器1采用方式1定時(shí)。并幾下當(dāng)前 電平的狀態(tài)。當(dāng)狀態(tài)為1時(shí),表示輸出為高電平,計(jì)時(shí)器載入高電平信號(hào)的時(shí)間;當(dāng)狀態(tài)為0時(shí),表示輸出應(yīng)為低電平,計(jì)時(shí)器載

43、入低電平信號(hào)時(shí)間。每進(jìn)入一次中斷,狀態(tài)加一與2取余數(shù)。</p><p>  3.2.5 轉(zhuǎn)速計(jì)算</p><p>  通過T0計(jì)時(shí)器/計(jì)數(shù)器計(jì)數(shù)。本設(shè)計(jì)采用M法測(cè)速。當(dāng)單片機(jī)P3.2口接收到下降沿信號(hào)時(shí),產(chǎn)生中斷,每產(chǎn)生一次中斷,給計(jì)一次數(shù)。直到產(chǎn)生第100個(gè)PWM信號(hào)后,根據(jù)公式speed=(60*下降沿個(gè)數(shù))/(41)計(jì)算出電機(jī)轉(zhuǎn)速并刷新屏幕。每次計(jì)算完成后,重新給PWM信號(hào)和下降沿中

44、斷信號(hào)計(jì)數(shù),以能夠繼續(xù)準(zhǔn)確的測(cè)出電機(jī)轉(zhuǎn)速。</p><p><b>  3.2.6 換向</b></p><p>  當(dāng)電機(jī)高速運(yùn)轉(zhuǎn)時(shí),若直接換向則會(huì)導(dǎo)致過流現(xiàn)象。故在換向時(shí),軟件上要停止PWM信號(hào)產(chǎn)生,并進(jìn)行一段延遲,讓電機(jī)轉(zhuǎn)速降為0時(shí),在定時(shí)器開始工作,輸出PWM信號(hào)換向。當(dāng)PWM1信號(hào)為高電平,PWM2信號(hào)為低電平時(shí),電機(jī)正轉(zhuǎn);PWM1為低電平,PWM2為高電平

45、時(shí),電機(jī)反轉(zhuǎn);當(dāng)PWM1和PWM2信號(hào)都為低電平時(shí),電機(jī)停止。</p><p><b>  4 系統(tǒng)調(diào)試</b></p><p>  4.1 PWM信號(hào)調(diào)試</p><p>  用PROTUES仿真測(cè)量PWM信好的周期與占空比。由于在設(shè)計(jì)中,單片機(jī)采用24MHz的晶振,且定時(shí)器采用方式1的方法進(jìn)行計(jì)時(shí),故應(yīng)設(shè)置一周期定時(shí)器在入值TC=2^16-

46、2000;但在仿真中,實(shí)際測(cè)的PWM的周期約為12.6ms,仿真如下圖12所示:</p><p>  圖12:PWM信號(hào)周期測(cè)試圖1</p><p>  根據(jù)仿真測(cè)得的PWM信號(hào)進(jìn)行對(duì)計(jì)數(shù)器載入值調(diào)整,當(dāng)TC=2^16-1511時(shí),PWM周期約為10ms,測(cè)試結(jié)果如下圖13所示:</p><p>  圖13:PWM信號(hào)周期測(cè)試2</p><p&g

47、t;  4.2 電機(jī)轉(zhuǎn)速測(cè)試</p><p><b>  5 結(jié)束語</b></p><p>  通過此次的課程設(shè)計(jì),讓我對(duì)單片機(jī)的運(yùn)用更加的熟練。對(duì)其定時(shí)器的了解更加深刻。也學(xué)會(huì)了運(yùn)用單片機(jī)產(chǎn)生PWM信號(hào)來控制電機(jī)的運(yùn)行。同樣的也加深了對(duì)開環(huán)電機(jī)調(diào)速的理解,以及提高了我程序的編寫,排序能力。這次課程設(shè)計(jì)讓我對(duì)運(yùn)用單片機(jī)實(shí)際做東西有了更多感觸,如:PWM信號(hào)產(chǎn)生,定時(shí)

48、器設(shè)定的值不一定就是實(shí)際的定時(shí)值,因?yàn)樵谥袛嘀谐绦虻倪\(yùn)行也需要一定的時(shí)間,也造成了單片機(jī)無法產(chǎn)生頻率極高的PWM信號(hào)。</p><p><b>  6 參考文獻(xiàn)</b></p><p>  王兆安 劉進(jìn)軍.電力電子技術(shù) 北京:機(jī)械工業(yè)出版社,2009,5</p><p>  張俊謨 單片機(jī)中級(jí)教程 北京:北京航空航天大學(xué)出版社,2006,10&

49、lt;/p><p>  林瑞光 電機(jī)與拖到基礎(chǔ) 杭州:浙江大學(xué)出版社,2012,7</p><p>  陳伯時(shí) 電力拖動(dòng)自動(dòng)控制系統(tǒng) 北京:機(jī)械工業(yè)出版社,2009,8</p><p><b>  7 附錄</b></p><p><b>  7.1 設(shè)計(jì)圖紙</b></p><p&

50、gt;<b>  7.2 元器件清單</b></p><p><b>  7.3 程序</b></p><p>  #include<reg52.h></p><p>  #include<stdio.h></p><p>  #define uchar unsigne

51、d char</p><p>  #define uint unsigned int </p><p>  #define LCD_FL 0X80 //第一行地址0x80-0xA7</p><p>  #define LCD_SL 0Xc0 //第二行地址0xC0-0xE7</p><p>  #define LCD_S 0X0c /

52、/開顯示 不顯示光標(biāo) 光標(biāo)不閃爍</p><p>  #define LCD_Display_mode 0X38 //設(shè)置16x2顯示 5x7點(diǎn)陣 8位數(shù)據(jù)接口</p><p>  #define LCD_clear 0x01 //清屏指令 數(shù)據(jù)指針清零 所有顯示清零</p><p>  #define COM 0//指令</p><p> 

53、 #define DATE 1 //數(shù)據(jù)</p><p>  sbit PWM1=P2^0;// pwm1信號(hào)</p><p>  sbit PWM2=P2^1; // pwm2信號(hào)</p><p>  sbit RS=P2^4; // LCD1602 寄存器選擇</p><p>  sbit RW=P2^5; //16

54、02讀寫選擇</p><p>  sbit E=P2^6; // 1602使能端</p><p>  int state,direction,rank;//起停1on 0 off 方向 1正2反 檔位</p><p>  int key_in;//按鍵輸入</p><p>  int BG;//輸出高低點(diǎn)評(píng)狀態(tài)<

55、/p><p>  uint RAND,S;int speed;//數(shù)度計(jì)算參數(shù)</p><p>  int PHTH,PHTL,PLTL,PLTH;//定時(shí)器時(shí)間</p><p>  void delay_1ms(int t) // 1ms大致延時(shí)</p><p><b>  {</b></p><p

56、><b>  int i,j;</b></p><p>  for(i=0;i<t;i++)</p><p>  for(j=0;j<120;j++);</p><p><b>  }</b></p><p>  //--------------------------------

57、--------------------------------------------------------------lcd1062</p><p>  void delay(uint a)//小延時(shí)</p><p><b>  {</b></p><p>  while(a--);</p><p><b&g

58、t;  }</b></p><p>  void write(uint x,uchar sth)// 命令或數(shù)據(jù)寫入</p><p><b>  {</b></p><p>  RS=x;RW=0;E=0;</p><p><b>  P0=sth;</b></p&g

59、t;<p><b>  delay(3);</b></p><p><b>  E=1;</b></p><p>  delay(25);</p><p><b>  E=0;</b></p><p><b>  } </b>&

60、lt;/p><p>  void write_string(uint line,uchar *str)// 字符串輸入</p><p><b>  {</b></p><p>  write(COM,line);</p><p><b>  while(1)</b></p><

61、p><b>  {</b></p><p>  if(*str=='\0') break;</p><p>  write(DATE,*str);</p><p><b>  str++;</b></p><p>  delay(50);</p><p>

62、;<b>  }</b></p><p><b>  }</b></p><p>  void lcd_init() // 初始化</p><p><b>  { </b></p><p>  delay_1ms(15);</p><

63、;p>  write(COM,LCD_Display_mode);</p><p>  delay_1ms(5);</p><p>  write(COM,LCD_S);</p><p>  delay_1ms(5);</p><p>  write(COM,LCD_clear);</p><p>  delay

64、_1ms(5);</p><p>  write_string(LCD_FL,"STATE:CW OFF"); //cw順時(shí)針,正轉(zhuǎn) ccw逆時(shí)針</p><p>  delay_1ms(5);</p><p>  write_string(LCD_SL,"RS(rpm):0 ");</p&

65、gt;<p><b>  }</b></p><p>  //-----------------------------------------------------------------------------------------------------</p><p>  //---------------------------------

66、---------------------------------------------------------------------鍵盤輸入</p><p>  void key()</p><p><b>  {</b></p><p>  static int key_sure=0;//避免一直按著一個(gè)鍵的時(shí)候一直讀入 </p&

67、gt;<p>  uint key_flash; </p><p>  key_in=-1;</p><p><b>  P1=0x0f;</b></p><p>  if((P1&0x0f)!=0x0f)</p><p><b>  {</b></p><

68、;p>  delay_1ms(1);</p><p>  if((P1&0x0f)!=0x0f&&key_sure==1)</p><p><b>  {</b></p><p>  key_sure=0;</p><p>  key_flash=P1|0xf0;</p>&l

69、t;p>  P1=key_flash;</p><p>  switch(P1)</p><p><b>  {</b></p><p>  case 0xee: key_in=1;break;//+</p><p>  case 0xed: key_in=2;break;//-</p><p&

70、gt;  case 0xde: key_in=4;break;//正轉(zhuǎn)</p><p>  case 0xdd: key_in=5;break;//反轉(zhuǎn)</p><p>  case 0xbe: key_in=7;break;//啟動(dòng)</p><p>  case 0xbd: key_in=8;break;//停止 </p><p><

71、b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  key_

72、sure=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //---------------------------------------------------</p><p>  //--------------------------

73、----------------- 根據(jù)檔位進(jìn)行占空比計(jì)算</p><p>  void time_calculate()</p><p><b>  {</b></p><p>  PLTL=(65536-1511*(10-rank))%255;</p><p>  PLTH=(65536-1511*(10-rank

74、)-PLTL)/255;</p><p>  PHTL=(65536-1511*rank)%255; //2000,實(shí)際周期12.6ms 1587,10.5ms</p><p>  PHTH=(65536-1511*rank-PHTL)/255;</p><p><b>  }</b></p><p>  //

75、------------------------------------------------</p><p>  //------------------------------------------------pwm信號(hào)產(chǎn)生</p><p>  void pwm_on() </p><p><b>  {</b></p>

76、<p><b>  BG=1;</b></p><p>  time_calculate();</p><p>  if(direction==1)</p><p><b>  {</b></p><p><b>  PWM1=1;</b></p>&

77、lt;p><b>  PWM2=0;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  PWM1=0;</b><

78、;/p><p><b>  PWM2=1;</b></p><p><b>  }</b></p><p>  TR1=1;ET1=1;</p><p><b>  TH1=PHTH;</b></p><p><b>  TL1=PHTL;<

79、/b></p><p>  RAND=0;S=0;</p><p><b>  }</b></p><p>  //-------------------------------------------------------------------</p><p>  //--------------------

80、---------------------------------電機(jī)轉(zhuǎn)速計(jì)算</p><p>  void speed_calculate()</p><p><b>  {</b></p><p>  char yy[4];</p><p>  S=0;speed=0;</p><p>  

81、speed=(60*RAND)/(41);</p><p><b>  RAND=0;</b></p><p>  sprintf(yy,"%d",speed);</p><p>  if(speed%1000==0)</p><p>  {yy[3]='\0';}</p>

82、<p>  delay(5) ;</p><p>  write_string(LCD_SL+8," "); //屏幕清空</p><p>  delay(35);</p><p>  write_string(LCD_SL+8,yy);</p><p><b>  }</b>

83、;</p><p>  //-------------------------------------------------------------------</p><p>  //--------------------------------------------------------------計(jì)時(shí)器1中斷</p><p>  void time0(

84、) interrupt 3 </p><p><b>  { </b></p><p>  time_calculate();</p><p><b>  BG++;S++;</b></p><p><b>  if(BG==1)</b></p><p

85、><b>  {</b></p><p><b>  TH1=PHTH;</b></p><p><b>  TL1=PHTL;</b></p><p><b>  } </b></p><p><b>  else</b>&l

86、t;/p><p><b>  {</b></p><p><b>  BG=0;</b></p><p><b>  TH1=PLTH;</b></p><p><b>  TL1=PLTL;</b></p><p><b>

87、  }</b></p><p>  if(direction==1) {PWM1=~PWM1;PWM2=0;}</p><p>  else {PWM2=~PWM2;PWM1=0;} </p><p><b>  }</b></p><p>  //------------------------------

88、---------------------------------------</p><p>  //--------------------------------------------------------計(jì)數(shù)器中斷</p><p>  void time2() interrupt 0 </p><p><b>  {</b><

89、;/p><p><b>  RAND++;</b></p><p>  if(S==200)</p><p>  {speed_calculate(); } </p><p><b>  }</b></p><p>  //----------------------------

90、---------------------------------</p><p>  //------------------------------------------------------------主程序</p><p>  void main()</p><p><b>  {</b></p><p> 

91、 rank=5; // 設(shè)置默認(rèn)轉(zhuǎn)速</p><p>  state=0; // 電機(jī)停止?fàn)顟B(tài)</p><p>  direction=1; // 電機(jī)轉(zhuǎn)向?yàn)檎较?lt;/p><p>  PWM1=0;// 無PWM信號(hào)</p><p>  PWM2=0; //</p><p&g

92、t;  lcd_init();//初始化屏幕</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  key();</b></p><p>  if(key_in>0)</p><

93、;p><b>  {</b></p><p>  if(key_in==1||key_in==2)</p><p><b>  {</b></p><p>  if(key_in==1&&rank<9)</p><p><b>  {</b><

94、/p><p><b>  rank++;</b></p><p><b>  }</b></p><p>  if(key_in==2&&rank>3)</p><p><b>  {</b></p><p><b>  r

95、ank--;</b></p><p><b>  }</b></p><p>  time_calculate();</p><p><b>  }</b></p><p><b>  else</b></p><p>  if(key_in

96、==7||key_in==8)</p><p><b>  {</b></p><p>  if(key_in==8&&state==1)</p><p><b>  {</b></p><p>  PWM1=0;PWM2=0; TR1=0;ET1=0;state=0; //定時(shí)

97、器和計(jì)數(shù)器中斷設(shè)置</p><p><b>  EX0=0;</b></p><p>  write_string(LCD_SL,"RS(rpm):0 "); </p><p><b>  }</b></p><p><b>  else</b>

98、</p><p>  if(key_in==7&&state==0) </p><p><b>  {</b></p><p>  TR1=1;ET1=1;EA=1;TMOD=0x10;</p><p>  BG=1; state=1;IT0=1;EX0=1;PX1=1; //定時(shí)器和計(jì)數(shù)器中斷設(shè)置

99、</p><p>  //定時(shí)器1以方式1記時(shí)</p><p>  //計(jì)數(shù)器0以下降沿觸發(fā)中斷</p><p>  S=0;RAND=0;</p><p>  pwm_on(); </p><p>  } </p><p><b>  }</b>

100、</p><p><b>  else</b></p><p>  if(key_in==4||key_in==5)</p><p><b>  {</b></p><p>  if(direction==2&&key_in==4)</p><p><b

101、>  {</b></p><p>  direction=1;PWM1=0;PWM2=0;</p><p>  TR1=0;ET1=0;</p><p>  delay_1ms(400);</p><p><b>  }</b></p><p><b>  else&l

102、t;/b></p><p>  if(direction==1&&key_in==5)</p><p><b>  {</b></p><p>  direction=2;PWM1=0;PWM2=0;</p><p>  TR1=0;ET1=0;//換向時(shí)先停止在換向</p>&l

103、t;p>  delay_1ms(400);</p><p><b>  }</b></p><p>  if(state==1)</p><p><b>  {</b></p><p><b>  pwm_on();</b></p><p><

104、;b>  }</b></p><p><b>  }</b></p><p>  key_in=-1;</p><p>  write_string(LCD_FL,"STATE: ");</p><p>  if(state==1)</p><p

105、><b>  {</b></p><p>  char xx[5];int R;</p><p><b>  R=rank-2;</b></p><p>  sprintf(xx, "%d", R);</p><p>  write_string(LCD_FL+13,xx)

106、;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  write_string(LCD_FL+13,"OFF"); //刷新屏幕</p><

107、p><b>  }</b></p><p>  if(direction==1)</p><p>  write_string(LCD_FL+6,"CW");</p><p><b>  else</b></p><p>  write_string(LCD_FL+6,&q

溫馨提示

  • 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ù)僅提供信息存儲(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)論