基于嵌入式ARM+Linux平臺(tái)的直流電機(jī)調(diào)速控制系統(tǒng)_第1頁
基于嵌入式ARM+Linux平臺(tái)的直流電機(jī)調(diào)速控制系統(tǒng)_第2頁
基于嵌入式ARM+Linux平臺(tái)的直流電機(jī)調(diào)速控制系統(tǒng)_第3頁
基于嵌入式ARM+Linux平臺(tái)的直流電機(jī)調(diào)速控制系統(tǒng)_第4頁
基于嵌入式ARM+Linux平臺(tái)的直流電機(jī)調(diào)速控制系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

裝訂線2012--2013學(xué)年第二學(xué)期物電學(xué)院期末考試卷裝訂線嵌入式系統(tǒng)與應(yīng)用學(xué)號(hào):姓名:班級(jí):成果:評(píng)語:(考試題目及要求)嵌入式大作:采納試驗(yàn)箱上的電位器作為信號(hào)輸入器件,限制直流電機(jī)的運(yùn)轉(zhuǎn)方向和運(yùn)轉(zhuǎn)速度。電位器處于中間值時(shí),電機(jī)停止不轉(zhuǎn),電位器順時(shí)針轉(zhuǎn)動(dòng)時(shí)電機(jī)順時(shí)針旋轉(zhuǎn),且速度隨著電位器的旋轉(zhuǎn)而增加。電位器向逆時(shí)針轉(zhuǎn)動(dòng)時(shí),電機(jī)逆時(shí)針旋轉(zhuǎn),且速度隨著電位器旋轉(zhuǎn)的角度增加。電位器轉(zhuǎn)到最大或最小值時(shí),電機(jī)的速度應(yīng)當(dāng)達(dá)到最高速度。電位器在中間位置時(shí),電機(jī)不應(yīng)當(dāng)出現(xiàn)抖動(dòng)狀況。

目錄一、設(shè)計(jì)要求 1二、開發(fā)環(huán)境及設(shè)計(jì)工具 1三、設(shè)計(jì)思路 11.總體設(shè)計(jì) 12.AD轉(zhuǎn)換 23.平滑濾波 24.限制電機(jī)轉(zhuǎn)速 2四、試驗(yàn)過程 31.創(chuàng)建工作書目 32.編譯連接 33.設(shè)置共享書目 44.加載電機(jī)驅(qū)動(dòng) 45.運(yùn)行程序 5五、結(jié)果顯示 5六、總結(jié) 6七、附錄 7直流電機(jī)調(diào)速源程序 7基于嵌入式ARM+Linux平臺(tái)的直流電機(jī)調(diào)速限制系統(tǒng)一、設(shè)計(jì)要求采納試驗(yàn)箱上的電位器作為信號(hào)輸入器件,限制直流電機(jī)的運(yùn)轉(zhuǎn)方向和運(yùn)轉(zhuǎn)速度。電位器處于中間值時(shí),電機(jī)停止不轉(zhuǎn),電位器順時(shí)針轉(zhuǎn)動(dòng)時(shí)電機(jī)順時(shí)針旋轉(zhuǎn),且速度隨著電位器的旋轉(zhuǎn)而增加。電位器向逆時(shí)針轉(zhuǎn)動(dòng)時(shí),電機(jī)逆時(shí)針旋轉(zhuǎn),且速度隨著電位器旋轉(zhuǎn)的角度增加。電位器轉(zhuǎn)到最大或最小值時(shí),電機(jī)的速度應(yīng)當(dāng)達(dá)到最高速度。電位器在中間位置時(shí),電機(jī)不應(yīng)當(dāng)出現(xiàn)抖動(dòng)狀況。二、開發(fā)環(huán)境及設(shè)計(jì)工具UP-tech2410s試驗(yàn)箱,S3c2410處理器,Linux操作系統(tǒng),VI編譯器,armv4l-unknown-linux-gcc編譯器。三、設(shè)計(jì)思路1.總體設(shè)計(jì)電位器的值可以通過AD模塊轉(zhuǎn)換成數(shù)字值,將采集來的電位器值經(jīng)算法濾波處理后用于電機(jī)調(diào)速,這樣就實(shí)現(xiàn)了通過電位器限制電機(jī)轉(zhuǎn)速和方向。PWM調(diào)速PWM調(diào)速AD轉(zhuǎn)換電位器ARM處理器電機(jī)驅(qū)動(dòng)程序直流電機(jī)PC機(jī)顯示電機(jī)轉(zhuǎn)動(dòng)狀況圖3-1總體設(shè)計(jì)框圖2.AD轉(zhuǎn)換轉(zhuǎn)動(dòng)電位器變更的是模擬信號(hào),須要轉(zhuǎn)換成數(shù)字信號(hào)用來處理電機(jī)轉(zhuǎn)速,利用AD模塊采集電位器的值。選擇試驗(yàn)箱上最左邊的電位器(0通道)。以下為采集模擬量并轉(zhuǎn)為數(shù)字量的程序。//sets3c44b0ADregisterandstartAD if(init_ADdevice()<0) return-1; /*Createthethreads*/ pthread_create(&th_com,NULL,comMonitor,0); printf("\nPressEnterkeyexit!\n");for(i=0;i<20;i++)d[i]=((float)GetADresult(0)*3.3)/1024.0;//為d[i]賦初值3.平滑濾波為使響應(yīng)速度和數(shù)據(jù)穩(wěn)定度達(dá)到最佳效果,對(duì)采集來的數(shù)據(jù)進(jìn)行平滑濾波處理。代碼如下:while(stop==0){ d[19]=((float)GetADresult(0)*3.3)/1024.0;//采集數(shù)據(jù)for(i=1;i<20;i++)d[i-1]=d[i];//滑動(dòng)賦值,舍去最舊的一個(gè)值sum=0;for(i=0;i<20;i++)sum=sum+d[i];ave=sum/20;//求平均值}4.限制電機(jī)轉(zhuǎn)速對(duì)電機(jī)的限制有轉(zhuǎn)速和方向兩個(gè)方面。采集來的d值得范圍是0.0~3.0,假如干脆用來限制電機(jī)轉(zhuǎn)速,速度太小,方向也不能變更。所以引用d值,乘以200將其值擴(kuò)大,再減去一固定值,分成正負(fù)兩部分,當(dāng)轉(zhuǎn)速stepwm為正值時(shí),電機(jī)順時(shí)針轉(zhuǎn)動(dòng),當(dāng)stepwm為負(fù)值時(shí),電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)。詳細(xì)程序代碼如下:a=ave*200;setpwm=a-330;printf(“setpwm=%d\t\t”,setpwm);if(setpwm==0)printf(“stop ”);elseif(setpwm<0)printf(“anticlockwise”);elseprintf(“clockwise”);printf(“\r”);ave為采集電位器的值經(jīng)平滑濾波處理后的值,ave的范圍是0~3,a=ave*200,a的范圍是0~600,再對(duì)a減去300,則得到一個(gè)范圍為-300~300的整數(shù)值,這個(gè)整數(shù)值可作為電機(jī)的轉(zhuǎn)速setpwm。當(dāng)setpwm為-300和300分別是電機(jī)逆時(shí)針?biāo)俣茸畲蠛晚槙r(shí)針?biāo)俣茸畲?。?jīng)試驗(yàn)發(fā)覺,setpwm最小為-300,最大為359,正負(fù)值不對(duì)稱,所以改為setpwm=a-330,則setpwm得范圍為-330~329。當(dāng)電位器順時(shí)針旋轉(zhuǎn)到最右端時(shí),電機(jī)順時(shí)針旋且轉(zhuǎn)速度最大(329);電位器逆時(shí)針旋轉(zhuǎn)到最左端時(shí),電機(jī)逆針旋轉(zhuǎn)且速度最大(-330);電位器在中間時(shí),電機(jī)停止轉(zhuǎn)動(dòng)。四、試驗(yàn)過程1.創(chuàng)建工作書目進(jìn)入自己的書目\home\zyx\,新建新建project書目,拷貝04_AD下的全部文件,拷貝10_dcmotor中的driver文件夾,此時(shí)project中包含以下文件:adbinhardware.hmain.cmain.oMakefilereadme.txts3c2410-adc.hsrcdriver2.編譯連接修改project下文件的屬性,用吩咐“chmod777*”將全部文件改為可讀可寫可執(zhí)行的。然后修改Makefile內(nèi)容,修改后的Makefile見下圖4-1。CC=armv4l-unknown-linux-gcc,定義編譯器為armv4l-unknown-linux-gcc,即arm試驗(yàn)箱;EXEC=ad,編譯后生成名為“ad”的可執(zhí)行程序;OBJS=main.o,編譯后生成main.o的二進(jìn)制文件。圖4-1Makefile輸入吩咐vimain.c,進(jìn)入main.c程序的編輯界面,修改完成后保存退出,main.c程序詳見附錄。輸入吩咐m(xù)akeclean和make,編譯勝利后有以下提示:圖4-2編譯源程序輸入吩咐gcc–lpthread–oadmain.c連接。3.設(shè)置共享書目新建另一個(gè)終端,輸入:minicom,打開試驗(yàn)箱電源。輸入:mount–t–onolock192.168.0.117:/home/zyx//host,若無任何提示,則說明掛載勝利。4.加載電機(jī)驅(qū)動(dòng)在/home/zyx/書目下輸入吩咐:cp–rfs3c2410s-dc-motor.o/home/zyx/project/,把驅(qū)動(dòng)拷貝到project書目。然后在minicom中/host/書目下輸入:insmods3c2410s-dc-motor.o加載驅(qū)動(dòng)。5.運(yùn)行程序Makefile中定義了編譯器為armv4l-unknown-linux-gcc,所以應(yīng)在試驗(yàn)箱上運(yùn)行程序,在minicom終端的/host/project/書目下,輸入“./ad”運(yùn)行程序。則電機(jī)起先轉(zhuǎn)動(dòng)。五、結(jié)果顯示運(yùn)行程序,電機(jī)轉(zhuǎn)動(dòng),電腦屏幕上顯示電機(jī)轉(zhuǎn)速和轉(zhuǎn)向。旋轉(zhuǎn)電位器,電機(jī)轉(zhuǎn)速變更。當(dāng)電位器順時(shí)針旋轉(zhuǎn)到最右端時(shí),電機(jī)順時(shí)針旋且轉(zhuǎn)速度最大(329);電位器逆時(shí)針旋轉(zhuǎn)到最左端時(shí),電機(jī)逆針旋轉(zhuǎn)且速度最大(-330);電位器在中間時(shí),電機(jī)停止轉(zhuǎn)動(dòng)。將電位器從最右端旋轉(zhuǎn)至最左端的過程中,電機(jī)轉(zhuǎn)動(dòng)狀況如下:1.順時(shí)針最大值2.順時(shí)針減速3.逆時(shí)針加速順時(shí)針?biāo)俣葴p為0后,逆時(shí)針轉(zhuǎn)動(dòng)。4.逆時(shí)針最大值六、總結(jié)本次課程設(shè)計(jì)結(jié)合了之前做過的試驗(yàn)AD和電機(jī)調(diào)速內(nèi)容,總體來說,完成狀況還算順當(dāng)。在學(xué)嵌入式以前,我沒有接觸過Linux操作系統(tǒng),在做本次設(shè)計(jì)時(shí)有許多不熟識(shí)的地方,通過嵌入式這門課程,學(xué)習(xí)了許多新東西,受益匪淺。而本次課程設(shè)計(jì)的完成,意味著我對(duì)嵌入式的學(xué)習(xí)有肯定的收獲。在以后的學(xué)習(xí)中,我會(huì)接著學(xué)習(xí)嵌入式這方面的學(xué)問來提高自己。

七、附錄直流電機(jī)調(diào)速源程序:#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/ioctl.h>#include<pthread.h>#include<fcntl.h>#include<string.h>#include"s3c2410-adc.h"#defineADC_DEV "/dev/adc/0raw"staticintadc_fd=-1;#defineDCM_IOCTRL_SETPWM (0x10)#defineDCM_TCNTB0 (16384)staticintdcm_fd=-1;char*DCM_DEV="/dev/dcm/0raw";voidDelay(intt){ inti; for(;t>0;t--) for(i=0;i<400;i++);}staticintinit_ADdevice(void){ if((adc_fd=open(ADC_DEV,O_RDWR))<0){ printf("Erroropening%sadcdevice\n",ADC_DEV); return-1; }}staticintGetADresult(intchannel){ intPRESCALE=0XFF; intdata=ADC_WRITE(channel,PRESCALE); write(adc_fd,&data,sizeof(data)); read(adc_fd,&data,sizeof(data)); returndata;}staticintstop=0;staticvoid*comMonitor(void*data){ getchar(); stop=1; returnNULL;}intmain(void){floatd[20];floatsum,ave; pthread_tth_com; void*retval;intsetpwm=0,a,i; intfactor=DCM_TCNTB0/1024; if((dcm_fd=open(DCM_DEV,O_WRONLY))<0){ printf("Erroropening%sdevice\n",DCM_DEV); return1; } //sets3c44b0ADregisterandstartAD if(init_ADdevice()<0) return-1; /*Createthethreads*/ pthread_create(&th_com,NULL,comMonitor,0); printf("\nPressEnterkeyexit!\n");for(i=0;i<20;i++)d[i]=((float)GetADresult(0)*3.3)/1024.0;//為d[i]賦

溫馨提示

  • 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. 人人文庫網(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)論