直流電機控制實驗_第1頁
直流電機控制實驗_第2頁
直流電機控制實驗_第3頁
直流電機控制實驗_第4頁
直流電機控制實驗_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗一 直流、步進電機綜合控制系統(tǒng)設計一、 實驗目的1. 初步熟悉實驗GPIO口的初始化設置,并熟悉實驗箱各個模塊的功能2. 掌握步進機的控制原理及利用延時脈沖來改變步進電機速度3. 掌握直流電機的控制原理及利用pwm占空比控制來改變速度4. 學習IIC總線讀取和寫數(shù)據原理,并掌握對CAT1025 E2PROOM操作方法5. 學會控制數(shù)碼管的顯示UART串口函數(shù),并初步掌握中斷處理函數(shù)的寫法二、 實驗要求以MagicARM2410為實驗平臺,設計一個通過串口通信交互控制的綜合型控制系統(tǒng)。具體來說,可在啟動時,自動列出一些選項,通過鍵盤選擇某個選項而實現(xiàn)其功能;考慮到實時性,再按某個控制鍵能立刻

2、停止當前功能而回到初始的待選狀態(tài)。具體功能要求如下:1. 實現(xiàn)四個LED燈按照十六進制的規(guī)則依次亮滅;2. 在超級終端上輸入兩個兩位數(shù),實現(xiàn)兩位數(shù)的加減乘除并顯示運算結果;3. 顯示當前的年月日、星期、時分秒;4. 實現(xiàn)步進電機的調速和正反轉;可用旋轉按鈕W1或按鍵控制調速,在超級終端和數(shù)碼管上同步顯示其正反轉和轉速信息;三、 實驗基本原理1. S3C 2410A具有117個通用I/O口,分為AH等8個端口,由于每個I/O口都有第2功能,甚至第3功能,所以需要通過設置GPxCON寄存器來選擇GPx口I/O口功能,其中x可以為A、B、C、D、E、F、G表示相應的I/O端口。當I/O口設置為GPI

3、O輸出模式(Output模式)時,可以通過寫GPxDAT控制相應I/O口輸出高電平或低電平,GPxDAT為1的位對應I/O輸出高電平,為0的位對應輸出低電平。2. 工程模板中包含有串口軟件包UART.C,用戶可以調用相應的接口函數(shù)】進行串口數(shù)據發(fā)送和接收,串口的波特率需要在config.h文件中進行設置,本實驗使用默認的115200波特率。對串口進行初始化時,首先要設置相應I/O口為TXD0,TRD0功能引腳,然后通過ULCON0來設置通訊波特率。3. S3C2410A具有實時時鐘(RTC)功能,能夠提供時、分、秒,年、月、日的計時功能,還具有定時報警功能。RTC單元采用獨立的后備電池供電,獨

4、立是時鐘源(采用32.768KHz晶振),即使系統(tǒng)關閉電源,RTC還可以正常工作。要初始化RTC的時間值,首先要給RTCON寄存器寫為0x01,使能RTC接口(即允許寫RTC操作),然后對年寄存器BCDYEAR、月寄存器BCDMON、日寄存器BCDDATE、時寄存器BCDHOUR、分寄存器BCDMIN、秒寄存器BCDSEC、星期寄存器BCDDAY進行初始化,時間值為BCD格式。初始化完成,將RTCCON寄存器寫為0x00,禁能RTC接口(即禁止寫RTC操作),接下來就可以直接讀取RTC時間寄存器的值來使用了。4. 步進電機是一種將電脈轉化為角位移的數(shù)據控制電機,即給它一個脈沖信號,它就按設定的

5、方向轉動一個固定的角度。用戶可以通過設置脈沖的個數(shù)來控制角位移量,從而實現(xiàn)準確的定位操作;另外,通過控制脈沖頻率來控制電機轉動速度和加速度,從而實現(xiàn)調速的目的。當然,對于步進電機各組繞組(即內部線圈)的控制脈沖要有一定的順序,否則電機無法正常旋轉。MagicARM2410試驗箱上的步進電機為四項步進電機,電機驅動為18°。S3C2410A的GPIO驅動能力有限,必須通過ULCN2003達林頓集成驅動芯片驅動步進電機,在步進電機和驅動電路之間連接了電阻,防止控制紊亂造成電機的損壞。四、 主要儀器設備及耗材 硬件:PC機一臺, MagicARM2410教學實驗開發(fā)平臺 一套 軟件:Win

6、dows98/XP/2000系統(tǒng),ADS 1.2集成開發(fā)環(huán)境,超級終端程序,JTAG仿真器五、 實驗步驟1. 安裝Wiggler JTAG仿真器并打開;2. 運行超級終端,新建一個連接;3. 啟動ADS 1.2,建立工程,在src組中的main.c中編寫主程序代碼;4. 選用DebugRel生成目標,編譯鏈接工程,選擇【Debug】,進行JTAG仿真;5. 按照超級終端上的提示信息操作;6. 根據實驗箱及超級終端上的反饋結果調試程序。7. 主要參考程序如下int main(void)uint8 g_getch ;int i = 0;UART_Select(0); /選擇UART0UART_In

7、it(); /UART0初始化LED_init(); /LED相關初始化EINT_init(); /外部中斷初始化while(1)fun_test();switch(g_getch = UART_GetKey()case '1':UART_SendByte(g_getch);UART_SendStr("n");for(i = 0; i < 16 ; i+)LED_DispNum(i); /以二進制形式顯示十六進制DelayNS(5);if(i = 15)i =0; if(UART_GetFlag() = 0x1B) /檢測是否按下'Esc

8、9;鍵break;UART_SendStr("nTest LED_DispNum test is Over!n");break;case '2':UART_SendByte(g_getch);UART_SendStr("n"); Addsubmuldiv(); /加減乘除測試模塊 UART_SendStr("nTest Addsubmuldiv_Test is Over!n");break;case '3':UART_SendByte(g_getch);UART_SendStr("n"

9、;); DateWeekTime_Test();UART_SendStr("nTest DateWeekTime_Test is Over!n"); break;case '4':UART_SendByte(g_getch);UART_SendStr("n");StepMOTO_Test();UART_SendStr("nTest StepMOTO_Test is Over!n");break;default: break;六、 實驗數(shù)據及處理結果1、 選擇Debug進行JTAG仿真后進入選擇操作情況界面選擇1,可看到

10、實驗箱上4個LED燈按16進制數(shù)閃亮,最左邊的燈為最低位,最右邊的燈為最高位。按esc鍵返回。2、 輸入2,可觀察到能實現(xiàn)兩位數(shù)的加減乘除,按esc鍵返回。其超級終端顯示如下圖:加法減法,結果為正值減法,結果為負值除法乘法3、 輸入3,按提示信息,按任意鍵輸出當前時間,超級終端顯示如下圖:4、 輸入4,觀察步進電機的轉動情況,可通過旋轉W1調節(jié)電機的正反轉方向和轉速情況。按esc鍵返回。超級終端顯示如下圖:轉速可調七、 實驗心結 由于這是第一次自己設計程序做實驗,剛開始總不知道如何下手。之后,我們冷靜分析,先用基礎實驗中的簡單實驗實現(xiàn)了超級終端的正確顯示。之后,又用基礎實驗中相關的程序,先實現(xiàn)

11、了16進制的顯示。加減乘除就按照C語言編寫,然后步進機通過延遲控制轉速。其實,最難的是把上面實現(xiàn)的各個功能輸入到超級終端,通過超級終端顯示。我們通過向其他同學請教,并且自己上網查到了相關的實現(xiàn)程序,之后經過多次修改最終得出正確顯示。 通過這第一個自己設計的實驗,學到了程序的編寫,跟MagicARM2410實驗箱硬件的實現(xiàn),受益匪淺,為以后的實驗打下了基礎。八、參考資料S3C2410實驗實驗手冊嵌入式系統(tǒng)開發(fā)與實驗教程附錄:#include "config.h"#include "main.h"/功能測試選擇數(shù)組char select_test50 =&q

12、uot;nn Please input 14 to select test:n","1 LED_DispNumen","2 Addsubmuldiv_Testn","3 Dateweektime_Displayn","4 StepMOTO_Testn","Please input a num you want to test:",;void DelayNS(uint32 dly) uint32 i;for(; dly>0; dly-) for(i=0; i<50000; i

13、+);/ 串口接收字符臨時變量void fun_test(void)int i = 0;for(i = 0; i < 14; i+)UART_SendStr(select_testi);int main(void)uint8 g_getch ;int i = 0;UART_Select(0); /選擇UART0UART_Init(); /UART0初始化LED_init(); /LED相關初始化EINT_init(); /外部中斷初始化while(1)fun_test();switch(g_getch = UART_GetKey()case '1':UART_SendBy

14、te(g_getch);UART_SendStr("n");for(i = 0; i < 16 ; i+)LED_DispNum(i); /以二進制形式顯示十六進制DelayNS(5);if(i = 15)i =0; if(UART_GetFlag() = 0x1B) /檢測是否按下'Esc'鍵break;UART_SendStr("nTest LED_DispNum test is Over!n");break;case '2':UART_SendByte(g_getch);UART_SendStr("n"); Addsubmuldiv(); /加減乘除測試模塊 UART_SendStr("nTest Addsubmuldiv_Test is Over!n");break;case '3':UART_SendByte(g_getch);UART_SendStr("n"); DateWeekTime_Test();UART_S

溫馨提示

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

評論

0/150

提交評論