版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)員工晉升與調(diào)動(dòng)制度
- 會(huì)議宣傳與媒體報(bào)道制度
- 2026福建省福州市閩侯縣教育局招聘44人備考題庫附答案
- 2026西安工業(yè)大學(xué)招聘參考題庫附答案
- 2026貴州沿河土家族自治縣遴選縣直機(jī)關(guān)事業(yè)單位19人參考題庫附答案
- 2026重慶九龍新城謝家灣學(xué)校招聘備考題庫附答案
- 2026陜西寧強(qiáng)縣漢江源景區(qū)招聘參考題庫附答案
- 中共南充市委政策研究室下屬事業(yè)單位2025年公開選調(diào)工作人員的備考題庫附答案
- 樂平市市屬國資控股集團(tuán)有限公司面向社會(huì)公開招聘人員【15人】參考題庫附答案
- 南充市司法局2025年下半年公開遴選公務(wù)員(參公人員)公 告(2人)考試備考題庫附答案
- 天津市重點(diǎn)名校2026屆高一數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- 工程車輛銷售合同范本
- 新人抖音直播獎(jiǎng)勵(lì)制度規(guī)范
- 2026年消防安全評(píng)估協(xié)議
- 【小學(xué)】【期末】家長會(huì):孩子在學(xué)校的底氣【課件】
- 鋼結(jié)構(gòu)防腐涂裝工藝方案
- 云上(貴州)數(shù)據(jù)開發(fā)有限公司招聘筆試題庫2026
- 書法美育課件
- JJF1033-2023計(jì)量標(biāo)準(zhǔn)考核規(guī)范
- DB37-T 1854-2020 山東省化工裝置安全試車工作規(guī)范-(高清版)
- 動(dòng)火作業(yè)施工方案模板
評(píng)論
0/150
提交評(píng)論