機(jī)電傳動(dòng)模塊化設(shè)計(jì)——第9講—模塊化機(jī)電系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)(C語(yǔ)言控制程序開發(fā))_第1頁(yè)
機(jī)電傳動(dòng)模塊化設(shè)計(jì)——第9講—模塊化機(jī)電系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)(C語(yǔ)言控制程序開發(fā))_第2頁(yè)
機(jī)電傳動(dòng)模塊化設(shè)計(jì)——第9講—模塊化機(jī)電系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)(C語(yǔ)言控制程序開發(fā))_第3頁(yè)
機(jī)電傳動(dòng)模塊化設(shè)計(jì)——第9講—模塊化機(jī)電系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)(C語(yǔ)言控制程序開發(fā))_第4頁(yè)
機(jī)電傳動(dòng)模塊化設(shè)計(jì)——第9講—模塊化機(jī)電系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)(C語(yǔ)言控制程序開發(fā))_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第八講模塊化機(jī)電系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)-中結(jié)構(gòu)組裝與運(yùn)動(dòng)規(guī)劃編程組裝實(shí)例介紹組裝實(shí)例介紹u全向運(yùn)動(dòng)小車全向運(yùn)動(dòng)小車u帶機(jī)械手帶機(jī)械手 組裝實(shí)例介紹組裝實(shí)例介紹u四足機(jī)器人四足機(jī)器人 組裝實(shí)例介紹組裝實(shí)例介紹u自動(dòng)追光自動(dòng)追光的的4足機(jī)械足機(jī)械爬蟲爬蟲 組裝實(shí)例介紹組裝實(shí)例介紹u自主避碰小車自主避碰小車 控制卡及C程序編譯環(huán)境簡(jiǎn)介v我們的MultiFLEX控制器的控制核心采用的是Atmel公司的Mega128高檔單片機(jī)。vAVR系列單片機(jī)是Atmel生產(chǎn)的一種具有雙總線結(jié)構(gòu)的RISC(精簡(jiǎn)指令系統(tǒng)計(jì)算機(jī))單片機(jī),它相對(duì)于傳統(tǒng)的CISC(復(fù)雜指令系統(tǒng)計(jì)算機(jī))單片機(jī)而言,具有較短的指令周期和較快的運(yùn)行速度。此

2、外,AVR單片機(jī)還具有片內(nèi)FLASH、片內(nèi)看門狗定時(shí)器、片內(nèi)同步/異步串行接口、片內(nèi)定時(shí)器/計(jì)數(shù)器、片內(nèi)數(shù)模轉(zhuǎn)換器等多種內(nèi)部資源。v上述這些特點(diǎn)使采用AVR單片機(jī)的應(yīng)用系統(tǒng)不僅具有運(yùn)行速度快、結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大的特點(diǎn),而且具有高可靠性和良好的經(jīng)濟(jì)型??刂瓶癈程序編譯環(huán)境簡(jiǎn)介vAVR的程序編譯軟件比較多,比較著名的有ICC AVR、WinAVR、CodeVersionAVR、IAR等等。v以上軟件各有優(yōu)勢(shì):ICCAVR具有良好的基于windows的集成開發(fā)環(huán)境,有人性化的代碼生成向?qū)?,而且價(jià)格低廉(相對(duì)于keil,IAR而言)、升級(jí)速度快,在國(guó)內(nèi)有雙龍電子提供技術(shù)支持。WinAVR是基于GCC

3、的一個(gè)免費(fèi)軟件,網(wǎng)上有大量的教程以及源代碼可供參考(比較有名的有等),很多人認(rèn)為它沒(méi)有良好的集成開發(fā)環(huán)境而棄之不用,實(shí)際上它會(huì)自動(dòng)嵌入到ATMEL公司的官方開發(fā)軟件AVRStudio中,AVRStudio的良好集成開發(fā)環(huán)境使得用GCC進(jìn)行程序開發(fā)變得異常簡(jiǎn)單。和ICCAVR相比,其主要優(yōu)勢(shì)在于完全免費(fèi),有很多現(xiàn)成的函數(shù)可調(diào)用,網(wǎng)上可利用資源豐富等優(yōu)點(diǎn);后兩者國(guó)內(nèi)使用較少,在此不做介紹。v本課程將以WinAVR+AVRStudio作為編譯環(huán)境進(jìn)行程序設(shè)計(jì)。WinAVR以及AVRStudio軟件的安裝v首先打開實(shí)驗(yàn)指導(dǎo)書配套光盤,在“MultiFLEX控制卡AVR MCU開發(fā)資料”目錄下,打開“W

4、inAVR”文件夾,雙擊“WinAVR-20060421-install.exe”完成WinAVR的安裝;v然后打開“AVR Studio”文件夾,根據(jù)文件夾里面的安裝說(shuō)明進(jìn)行AVRstudio的安裝,并將其升級(jí)到最新版本。v請(qǐng)先安裝WinAVR再安裝AVRStudio,這樣WinAVR才能自動(dòng)嵌入到AVRStudio中。用AVRStudio建立一個(gè)工程v如何用AVRStudio建立一個(gè)新工程呢?首先打開我們剛剛安裝好的AVRStudio,會(huì)出現(xiàn)如下窗口:用AVRStudio建立一個(gè)工程v點(diǎn)擊選框1中的按鈕可以新建一個(gè)工程,點(diǎn)擊選框2中的按鈕可以打開一個(gè)工程,選框3是最近你所打開的文件,你可以

5、選中快速將其打開。在這里,我們點(diǎn)擊1(NewProject),會(huì)出現(xiàn)如下窗口:用AVRStudio建立一個(gè)工程v如何用AVRStudio建立一個(gè)新工程呢?首先打開我們剛剛安裝好的AVRStudio,會(huì)出現(xiàn)如下窗口:用AVRStudio建立一個(gè)工程v在此窗口中我們可以設(shè)置關(guān)于新工程的一些基本信息。在選框1(ProjectType)中,第一項(xiàng)AtmelAVRAssembler指匯編工程文件,第二項(xiàng)AVRGCC指建立后的文件為C語(yǔ)言工程文件,在此我們選擇AVRGCC(如果沒(méi)有安裝WinAVR則此處不會(huì)出現(xiàn)AVRGCC選項(xiàng))。在選框2中,我們可以確定工程名(Project name)以及初始文件名(I

6、nitial file),在此我們不妨均取名為test。在選項(xiàng)框3中,我們可以確定工程所在的文件夾位置,在此我們不妨將路徑設(shè)為D:test。在選項(xiàng)卡2中如果選中Create folder,則會(huì)在3中確定的文件夾中新建一個(gè)以工程名為文件夾名的文件夾,所有與該工程有關(guān)的文件會(huì)放在此文件夾內(nèi);在選項(xiàng)卡2中選中Create initial file會(huì)生成一個(gè)初始.c文件,方便我們編寫程序。以上設(shè)定完成后我們點(diǎn)擊Next進(jìn)行下一步設(shè)置,會(huì)彈出如下窗口: 用AVRStudio建立一個(gè)工程v在此窗口中我們可以設(shè)置一些關(guān)于計(jì)算機(jī)調(diào)試的一些信息。在選項(xiàng)框1之中我們?cè)O(shè)置程序調(diào)試平臺(tái),在此我們選擇AVRSimula

7、tor。在選項(xiàng)框2中我們可以選擇單片機(jī)類型,你可以根據(jù)實(shí)際需要選擇,在此我們選擇ATmega128(本實(shí)驗(yàn)以創(chuàng)意之星控制板為平臺(tái),所以選擇創(chuàng)意之星的控制核心ATmega128,AVRStudio可以進(jìn)行軟件模擬單片機(jī)的運(yùn)行過(guò)程,但本書中不作介紹)。選擇完成后我們點(diǎn)擊Finish,這樣一個(gè)新工程就初步建立了。然后會(huì)出現(xiàn)如下窗口。其中選框其中選框1為菜單欄,選為菜單欄,選框框2為工具欄,選框?yàn)楣ぞ邫冢x框3為工為工程管理樹,選框程管理樹,選框4為程序?yàn)槌绦蚓庉嫏?,選框編輯欄,選框5為編譯信為編譯信息欄。息欄。用AVRStudio建立一個(gè)工程作為我們的第一個(gè)代碼實(shí)驗(yàn),我們可在選框4中輸入如下程序:#

8、include /我們的第一個(gè)程序#defineBEEP_ONPORTG |= _BV(PG3)/蜂鳴器發(fā)聲/Gcc中的_BV()類似于ICC中的BIT()函數(shù),以上語(yǔ)句就是把PORTG的8個(gè)引腳中的第4個(gè)引腳置1#defineBEEP_OFFPORTG &= _BV(PG3)/蜂鳴器停止發(fā)聲int main(void)int i,j;PORTG = 0;DDRG = 0 xff;while(1)for(i=0;i0 xFF;i+)for(j=0;j0 xFF;j+);BEEP_ON;for(i=0;i0 xFF;i+)for(j=0;j0 xFF;j+);BEEP_OFF; /本實(shí)驗(yàn)的源代碼

9、在配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.2” 文件夾用AVRStudio建立一個(gè)工程然后在菜單欄選擇“ProjectConfiguration Options”用AVRStudio建立一個(gè)工程彈出如下窗口:在控制核心工作頻率(Frequency)一欄輸入14745600,由于創(chuàng)意之星采用的晶振是此頻率,故如此設(shè)置。其他選項(xiàng)均采用默認(rèn)設(shè)置即可,然后點(diǎn)擊確定。用AVRStudio建立一個(gè)工程保存文件,然后在菜單欄選擇“BuildBuild”(或者按F7),如圖所示:用AVRStudio建立一個(gè)工程在編譯信息欄會(huì)出現(xiàn)相應(yīng)的編譯信息,顯示是否有錯(cuò)誤,本實(shí)驗(yàn)編譯結(jié)果如下:其中顯示“Build su

10、cceeded with 0 Warnings”說(shuō)明我們編譯正常通過(guò),這時(shí),在我們當(dāng)初設(shè)置的工程所在的文件夾的default文件夾“D:testtestdefault”里會(huì)出現(xiàn)很多新文件,這些都是程序編譯的結(jié)果,其中有個(gè)test.hex 文件是程序燒寫文件,將這個(gè)文件經(jīng)過(guò)燒錄軟件下載至MultiFlex控制板后程序就能運(yùn)行,至于如何燒寫我們將在后面進(jìn)行介紹。將*.hex文件燒錄至MultiFlex控制卡中v我們介紹了怎么建立一個(gè)工程以及如何生成.hex燒寫文件,那么怎么將此文件燒錄制控制卡中呢,我們將就此進(jìn)行介紹。v教師已經(jīng)將Pony Prog軟件安裝到實(shí)驗(yàn)用計(jì)算機(jī)上.打開Pony Prog軟

11、件,界面如下圖所示:將*.hex文件燒錄至MultiFlex控制卡中v由于“創(chuàng)意之星”配置的是并行下載線,所以我們應(yīng)該選擇Parallel,在下拉選項(xiàng)中選擇AvrISPI/O,如上圖所示,其他選項(xiàng)按其默認(rèn)設(shè)置,不予更改,然后點(diǎn)擊“OK”完成設(shè)置。v然后我們進(jìn)行目標(biāo)芯片的選擇:點(diǎn)擊“DeviceAVR micro”,在彈出的選項(xiàng)框中選擇ATmega128,如下圖所示,這樣我們就完成了目標(biāo)芯片的選擇。將*.hex文件燒錄至MultiFlex控制卡中v現(xiàn)在我們用并口下載線將電腦和MultiFlex控制卡進(jìn)行連接。下圖是“創(chuàng)意之星”提供的并口下載線以及其線序:將*.hex文件燒錄至MultiFlex控

12、制卡中下圖是MultiFlex控制卡的功能區(qū)域圖,將下載線的5針插頭與其中的H區(qū)的5針插頭相連接,注意線序連接完成后給控制卡通上電源(程序燒寫過(guò)程中不允許斷電,請(qǐng)確保電源的可靠性)。用AVRStudio建立一個(gè)工程然后在剛才打開的PonyProg2000中點(diǎn)擊“FileOpen Device File”或者點(diǎn)擊圖標(biāo) 打開我們前面生成的test.hex文件(應(yīng)該在“D:testtestdefault”文件夾中),然后點(diǎn)擊然后點(diǎn)擊“CommandWrite All”或者點(diǎn)擊圖標(biāo) ,然后程序就會(huì)開始燒寫至控制卡里面,燒寫過(guò)程如下圖: 將*.hex文件燒錄至MultiFlex控制卡中v當(dāng)PonyPro

13、g2000顯示燒寫成功時(shí),我們的第一個(gè)實(shí)驗(yàn)程序就順利的燒寫進(jìn)MultiFlex控制卡中了.v正常情況下我們會(huì)聽(tīng)到控制卡蜂鳴器發(fā)出急促的“嘟嘟嘟”的聲音,如果沒(méi)有任何現(xiàn)象請(qǐng)你檢查以上步驟是否按要求完成或者檢查下載線有沒(méi)有插反、控制卡是否正常供電,修改有問(wèn)題的地方后再生成hex文件進(jìn)行燒錄,直至蜂鳴器出現(xiàn)規(guī)則的嘟嘟聲為止。v這個(gè)簡(jiǎn)單程序的功能就是讓控制卡產(chǎn)生蜂鳴聲MultiFlex控制卡系統(tǒng)程序簡(jiǎn)介v下面我們將介紹MultiFlex控制卡的程序總體結(jié)構(gòu)以及介紹如何編寫用戶自己的c語(yǔ)言程序?qū)崿F(xiàn)對(duì)機(jī)器人的控制。v通過(guò)第七章的實(shí)驗(yàn),相信大家已經(jīng)非常熟悉如何使用電腦對(duì)創(chuàng)意之星進(jìn)行控制。實(shí)際上,我們通過(guò)電腦

14、設(shè)置的命令會(huì)通過(guò)電腦串口傳遞給MultiFlex控制卡,控制卡通過(guò)內(nèi)部程序程序?qū)崿F(xiàn)命令,進(jìn)而實(shí)現(xiàn)對(duì)機(jī)器人的控制,那么控制卡具體是怎么工作的呢?MultiFlex控制卡系統(tǒng)程序簡(jiǎn)介vMultiFlex控制卡的工作流程圖如圖所示:MultiFlex控制卡系統(tǒng)程序簡(jiǎn)介vMultiFlex控制卡的工作流程:v控制卡通電控制卡首先讀取控制卡功能選擇撥碼開關(guān)的用戶設(shè)置情況然后進(jìn)行系統(tǒng)的初始化(具體設(shè)置規(guī)則請(qǐng)回顧1.3.4MultiFlex控制卡簡(jiǎn)要說(shuō)明)v控制卡根據(jù)用戶設(shè)置判斷是執(zhí)行用戶下載到控制卡的動(dòng)作序列還是將各關(guān)機(jī)回復(fù)到初始位置等待上位機(jī)(電腦)的命令:如果是用戶下載到控制卡的動(dòng)作序列,控制卡將循環(huán)

15、執(zhí)行該序列,直到接收到上位機(jī)的命令為止;如果是回復(fù)到初始位置等待上位機(jī)命令,則控制卡將使機(jī)器人各關(guān)節(jié)處于初始位置,然后等待上位機(jī)的指令。v然后控制卡就一直進(jìn)行“等待命令執(zhí)行上位機(jī)指令等待命令”循環(huán)。MultiFlex控制卡系統(tǒng)程序簡(jiǎn)介vMultiFlex控制卡的工作流程:v由于整個(gè)控制卡的控制程序比較復(fù)雜,并且設(shè)計(jì)到很多單片機(jī)最根本的知識(shí)(如波特率設(shè)置,io口設(shè)置,中斷等)還有數(shù)據(jù)結(jié)構(gòu)方面的知識(shí),對(duì)于初學(xué)者想弄明白可能需要花上一個(gè)月甚至更多的時(shí)間,所以在此不對(duì)其源程序進(jìn)行具體剖析,同學(xué)們可在每次做完實(shí)驗(yàn)之余,或著利用課余時(shí)間自己研究,不懂的多查閱資料(建議大家研究透徹,將此卡的系統(tǒng)程序研究透徹

16、之后基本上你就可以進(jìn)行AVR單片機(jī)的基礎(chǔ)開發(fā)了)。MultiFlex控制卡的C語(yǔ)言程序編寫v在本節(jié),我們將學(xué)習(xí)如何調(diào)用Usertask.h中聲明的函數(shù)實(shí)現(xiàn)對(duì)舵機(jī),電機(jī),控制卡IO口、AD口、蜂鳴器的控制。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制用“創(chuàng)意之星”機(jī)器人套件搭建的機(jī)器人的主要關(guān)節(jié)都是由舵機(jī)驅(qū)動(dòng)的,那么怎么用c語(yǔ)言直接控制舵機(jī)運(yùn)動(dòng)呢,我們將在本小節(jié)進(jìn)行介紹。在打開我們前面8.3.2里拷貝到電腦上的工程文件(“D:創(chuàng)意之星8.3.1控制卡原始程序MultiFlex.aps”)后我們選擇USERTASK.C對(duì)其進(jìn)行編輯。輸入如下程序,注釋部分可以不輸入(源

17、程序參見(jiàn)實(shí)驗(yàn)指導(dǎo)書配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.48.4.1編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制”下的USERTASK.C文件)MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制然后打開SYSTASK.C文件,將處于最后的main()函數(shù)進(jìn)行細(xì)微改動(dòng)。位于SYSTASK.C末尾的main()函數(shù)應(yīng)該如下所示:intmain(void)Sys_Init();/單片機(jī)初始化WORK_LED_ON;while(1)system_task();/系統(tǒng)任務(wù),接收串口發(fā)送命令進(jìn)行相應(yīng)控制user_task(); /用戶自己編寫的任務(wù)MultiFlex控制卡的C語(yǔ)言程序編寫

18、v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制分析代碼我們會(huì)發(fā)現(xiàn)控制卡開機(jī)后會(huì)先初始化,打開工作狀態(tài)指示燈,然后不斷的執(zhí)行系統(tǒng)函數(shù)system_task()和用戶函數(shù)user_task(),而system_task()函數(shù)的功能就是實(shí)現(xiàn)8.3.1介紹的控制卡功能,而user_task()則是我們自己編寫的函數(shù)。為了能讓我們所寫的控制函數(shù)能夠直接的、可靠的通過(guò)控制卡對(duì)機(jī)器人的各種執(zhí)行器進(jìn)行控制,我們最好把系統(tǒng)函數(shù)給屏蔽掉,即在system_task()前面加上“/”。修改后的main()函數(shù)如下所示:MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制修改后的main()函數(shù)如下所示:

19、intmain(void)Sys_Init();/單片機(jī)初始化WORK_LED_ON;while(1)/system_task();/系統(tǒng)任務(wù),接收串口發(fā)送命令進(jìn)行相應(yīng)控制user_task(); /用戶自己編寫的任務(wù)MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制將從配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.3”里拷貝過(guò)來(lái)的“8.3.1控制卡原始程序”文件夾的項(xiàng)目文件MultiFlex.aps中如上修改Usertask.c文件后,按F7將整個(gè)工程進(jìn)行編譯,生成MultiFlex.hex文件(該文件應(yīng)該在“D:創(chuàng)意之星8.3.1控制卡原始程序”的default文件夾

20、內(nèi),后面的實(shí)驗(yàn)中不再說(shuō)明)。然后我們用“創(chuàng)意之星”套件中的并口下載線將電腦的并口與MultiFlex控制卡的程序下載口連接,并將4個(gè)舵機(jī)分別接到控制卡的PWM0PWM3上(舵機(jī)連接方法見(jiàn)第六章),然后給控制卡通電、,并且將前面生成的MultiFlex.hex文件燒寫至MultiFlex控制卡中,具體燒寫方法參見(jiàn)8.2.4。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制如果操作正確,我們會(huì)看見(jiàn)4路舵機(jī)呈周期性運(yùn)動(dòng)。如果發(fā)現(xiàn)異常請(qǐng)檢查程序或者連線,一般來(lái)說(shuō)程序中常出先的錯(cuò)誤是:v命令末尾的英文半角分號(hào)“;”誤用成了漢字的全角分號(hào)“;”v少了語(yǔ)句中少了“”或者“”;v連線

21、常出現(xiàn)的錯(cuò)誤是舵機(jī)控制線插反,或者是程序下載線插反,又或者是我們忘了給控制卡通電。請(qǐng)大家仔細(xì)檢查錯(cuò)誤,排除錯(cuò)誤后重新編譯工程,生成MultiFlex.hex文件后重新燒錄至控制卡中,直到與控制卡相連的舵機(jī)呈周期性運(yùn)動(dòng)為止。至此我們就順利完成了用c語(yǔ)言實(shí)現(xiàn)機(jī)器人關(guān)節(jié)(在這里用舵機(jī)實(shí)現(xiàn))運(yùn)動(dòng)控制的實(shí)驗(yàn)。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)12路舵機(jī)的控制實(shí)驗(yàn)作業(yè):v發(fā)揮想象力,編寫c語(yǔ)言程序,讓我們第七章中組裝的某個(gè)機(jī)器人(包含多個(gè)舵機(jī))按照一定的動(dòng)作運(yùn)動(dòng)。注意:v舵機(jī)目標(biāo)角度參數(shù)取值應(yīng)在0-180之間,速度參數(shù)取值應(yīng)在0-255之間vdelay()函數(shù)參數(shù)值范圍在0-255

22、之間MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)4路電機(jī)的控制v電機(jī)是機(jī)器人非常重要的組成部件之一,我們已經(jīng)知道了怎樣用“創(chuàng)意之星”機(jī)器人套件提供的上位機(jī)程序通過(guò)控制卡對(duì)電機(jī)進(jìn)行控制,那么怎么樣用過(guò)編寫c語(yǔ)言文件對(duì)電機(jī)進(jìn)行操作呢?v在本實(shí)驗(yàn)以及后面的實(shí)驗(yàn)中,我們都只討論怎么對(duì)USERTASK.C進(jìn)行編輯,其余步驟跟8.4.1相同,不再贅述。v對(duì)四路電機(jī)進(jìn)行控制的USERTASK.C如下所示(源程序參見(jiàn)實(shí)驗(yàn)指導(dǎo)書配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.48.4.2編寫C程序?qū)崿F(xiàn)對(duì)4路電機(jī)的控制”文件夾下):MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)4路電機(jī)的控制

23、v整個(gè)程序運(yùn)行的結(jié)果為電機(jī)1、3以最大速度正轉(zhuǎn)3s,同時(shí)電機(jī)2、4以最大速度反轉(zhuǎn)3s;然后電機(jī)1、2、3、4在2.6s內(nèi)均勻減速至0,然后定頓1s。整個(gè)工程編譯后電機(jī)將按以上規(guī)律循環(huán)運(yùn)動(dòng)。v將“創(chuàng)意之星”套件中配置的4個(gè)直流伺服電機(jī)分別與控制卡的M1-M4插口相連接(線序參見(jiàn)第六章),將從配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.3”里拷貝過(guò)來(lái)的“8.3.1控制卡原始程序”文件夾的項(xiàng)目文件MultiFlex.aps中如上修改Usertask.c文件后,按F7進(jìn)行編譯,生成MultiFlex.hex文件后將其燒錄至控制卡中,觀察實(shí)驗(yàn)結(jié)果。如果運(yùn)動(dòng)結(jié)果和以上分析所得結(jié)果不同的話請(qǐng)檢查程序以及連線

24、,特別注意程序中分號(hào)及括號(hào)的是否為半角以及電機(jī)有沒(méi)有插反,排除錯(cuò)誤后再將程序編譯,燒錄至控制卡中,直至得到正確的結(jié)果為止。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)16路I/O的讀寫vI/O口(In/Out口)是數(shù)字電路的重要組成部分之一,通過(guò)I/O口,我們可以控制端口的電平變化,也可以對(duì)端口的電平信息進(jìn)行讀取。v在機(jī)器人人領(lǐng)域?qū)/O口的操作更是無(wú)處不在,那么針對(duì)創(chuàng)意之星的MultiFlex控制卡我們?cè)趺赐ㄟ^(guò)編寫c與程序?qū)ζ銲/O口進(jìn)行操作呢,我們將在本小節(jié)對(duì)其進(jìn)行介紹。v首先我們來(lái)簡(jiǎn)單了解一下AVR單片機(jī)與I/O口有關(guān)的寄存器。AVR單片機(jī)與I/O口有關(guān)的寄存器有3個(gè):PO

25、RTX,DDRX,PINX(X為端口編號(hào))。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)16路I/O的讀寫vDDRX說(shuō)明X端口的輸入輸出狀態(tài),例如:如PORTA=0 x0F=0000 1111,則引腳PA0-PA3均為輸出(1為輸出),引腳PA4-PA7均為輸入(0為輸入)。vPORTX說(shuō)明X端口的輸入輸出的具體信息,例如:當(dāng)PORTA=0 x0F時(shí),若PORTA=0X33=0011 0011,則引腳PA0、PA1為輸出,且輸出信號(hào)為高(1);引腳PA2、Pa3為輸出,但輸出信號(hào)為低(0);PA4、PA5為輸入且輸入有效;至于PA6、PA7雖然DDRA已經(jīng)將其設(shè)置為輸入,但是PO

26、RTA使其輸入無(wú)效,所以PA6、PA7的輸入信號(hào)讀不出來(lái)。vPINX為輸入端口的具體信息(PINX只能讀取不能寫入),例如:當(dāng)DDRA=0 x0F,PORTA=0 x33時(shí),如果讀取PINA即char temp=PINA,則temp=-XX0011,其中為輸入的引腳只有PA4-PA7,PA4與PA5狀態(tài)為XX,X為輸入信號(hào),而PA6、PA7的輸入為-,-為一個(gè)不確定的數(shù)。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)16路I/O的讀寫v以上是只是關(guān)于端口寄存器的一個(gè)簡(jiǎn)略介紹(如果讀者想了解更多相關(guān)知識(shí),請(qǐng)參考相關(guān)資料,推薦黃任的AVR單片機(jī)與CPLD/FPGA綜合應(yīng)用入門,北京航空

27、航天大學(xué)出版社).v方便大家看懂源程序,對(duì)于MultiFlex控制卡,我們已經(jīng)在系統(tǒng)程序里面進(jìn)行了處理,同學(xué)們只需要調(diào)用相關(guān)的函數(shù)即可對(duì)控制卡的IO0-IO15這16個(gè)引腳進(jìn)行控制。v對(duì)控制卡I/O口進(jìn)行控制的USERTASK.C源程序參見(jiàn)實(shí)驗(yàn)指導(dǎo)書配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.48.4.3編寫C程序?qū)崿F(xiàn)對(duì)16路IO口的控制”:MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)16路I/O的讀寫v整個(gè)實(shí)驗(yàn)的運(yùn)行結(jié)果應(yīng)為:當(dāng)開關(guān)(碰撞傳感器)未按下時(shí),所有LED燈點(diǎn)亮,當(dāng)開關(guān)持續(xù)按下時(shí),led燈循環(huán)點(diǎn)亮。v將“創(chuàng)意之星”套件中配置的4個(gè)led燈分別與控制卡的IO0-IO3插

28、口相連接(連接方法見(jiàn)第六章),將1個(gè)碰撞開關(guān)與控制卡的IO15插口相連接,給控制卡通電。v在AVRStudio中將從配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.3”里拷貝過(guò)來(lái)的“8.3.1控制卡原始程序”文件夾的項(xiàng)目文件MultiFlex.aps中如上修改Usertask.c文件后,按F7進(jìn)行編譯,生成MultiFlex.hex文件后將其燒錄至控制卡中,觀察實(shí)驗(yàn)結(jié)果。v如果運(yùn)動(dòng)結(jié)果和以上分析所得結(jié)果不同的話請(qǐng)檢查程序以及連線,特別注意程序中分號(hào)及括號(hào)的是否為半角以及l(fā)ed燈有沒(méi)有插反,排除錯(cuò)誤后再將程序編譯,燒錄至控制卡中,直至得到正確的結(jié)果為止。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫

29、C程序?qū)崿F(xiàn)對(duì)16路I/O的讀寫v實(shí)驗(yàn)作業(yè):發(fā)揮想象力,編寫c語(yǔ)言程序,讓我們的led燈按照一定的規(guī)則(不同于跑馬燈)閃爍。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)路A/D口的讀寫vA/D口(ADC模擬/數(shù)字信號(hào)轉(zhuǎn)換器)是MultiFlex控制卡的又一重要組成部分之一。在上一小節(jié)介紹的I/O口是單片機(jī)讀取傳感器信息以及驅(qū)動(dòng)執(zhí)行器的一個(gè)重要組成部分,但是I/O口只支持?jǐn)?shù)字信號(hào)(0、1),那么對(duì)于輸出模擬信號(hào)的傳感器,我們想要讀取它的輸出信息,我們就需要用到A/D口。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)路A/D口的讀寫vA/D口可以進(jìn)行數(shù)字信號(hào)與模擬信號(hào)的轉(zhuǎn)化

30、,在這里我們僅簡(jiǎn)單介紹A/D口的模擬信息采集過(guò)程:傳感器輸出的模擬信號(hào)到達(dá)A/D口后,單片機(jī)會(huì)對(duì)輸入的連續(xù)模擬信號(hào)進(jìn)行定時(shí)采集,進(jìn)而得到一系列時(shí)間間隔一定的離散信號(hào),用這些離散的點(diǎn)信號(hào)來(lái)代替以前連續(xù)的曲線信號(hào),由于兩次采集之間的時(shí)間間隔極短,所以由連續(xù)信號(hào)轉(zhuǎn)化為離散信號(hào)的誤差極小,在普通工程應(yīng)用領(lǐng)域我們可以忽略兩者之間的誤差。v由于現(xiàn)在數(shù)字信息處理技術(shù)日益發(fā)達(dá),現(xiàn)在已有非常成熟的算法對(duì)A/D采集的離散數(shù)據(jù)進(jìn)行濾波,以及幅頻、相頻分析,進(jìn)而講獲取的信息用于自動(dòng)化控制。v我們從自然界獲取的信號(hào)大多是連續(xù)的(溫度,光強(qiáng),電壓),對(duì)這些信號(hào)的處理有著廣泛而深遠(yuǎn)的意義,所以A/D口的使用極為廣泛。Mul

31、tiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)路A/D口的讀寫v下面將介紹如何使用C語(yǔ)言編寫程序?qū)ultiFlex控制卡的A/D口進(jìn)行操作,獲取外部的光強(qiáng)信息,進(jìn)對(duì)舵機(jī)進(jìn)行操作,使舵機(jī)的運(yùn)動(dòng)速度與外部光強(qiáng)成正比。v對(duì)控制卡I/O口進(jìn)行控制的USERTASK.C如下所示(源程序參見(jiàn)實(shí)驗(yàn)指導(dǎo)書配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.48.4.4編寫C程序?qū)崿F(xiàn)對(duì)7路AD口的控制”):MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)路A/D口的讀寫v下面將介紹如何使用C語(yǔ)言編寫程序?qū)ultiFlex控制卡的A/D口進(jìn)行操作,獲取外部的光強(qiáng)信息,進(jìn)對(duì)舵機(jī)進(jìn)行操作,使舵機(jī)的運(yùn)動(dòng)速度

32、與外部光強(qiáng)成正比。v對(duì)控制卡I/O口進(jìn)行控制的USERTASK.C源程序參見(jiàn)實(shí)驗(yàn)指導(dǎo)書配套光盤“實(shí)驗(yàn)指導(dǎo)書第八章實(shí)驗(yàn)程序源代碼8.48.4.4編寫C程序?qū)崿F(xiàn)對(duì)7路AD口的控制”):MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)路A/D口的讀寫v整個(gè)實(shí)驗(yàn)的運(yùn)行結(jié)果應(yīng)為:開機(jī)后,舵機(jī)在0-180度之間往復(fù)運(yùn)動(dòng),其運(yùn)動(dòng)速度與外部光照強(qiáng)度成正比(外部光照強(qiáng)度通過(guò)光強(qiáng)傳感器采集,采集頻率2Hz)。我們可以用手遮住或用光照光強(qiáng)傳感器,觀察現(xiàn)象。MultiFlex控制卡的C語(yǔ)言程序編寫v編寫C程序?qū)崿F(xiàn)對(duì)路A/D口的讀寫v將“創(chuàng)意之星”套件中配置的舵機(jī)(1個(gè))與控制卡的PWM0插口相連接,將1個(gè)光

33、強(qiáng)傳感器與控制卡的AD0插口相連接(連接方法見(jiàn)第六章),給控制卡通電。v在AVRStudio中將USERTASK.C編寫完畢后,按F7進(jìn)行編譯,生成MultiFlex.hex文件后將其燒錄至控制卡中,觀察實(shí)驗(yàn)結(jié)果。v如果運(yùn)動(dòng)結(jié)果和以上分析所得結(jié)果不同的話請(qǐng)檢查程序以及連線,特別注意程序中分號(hào)及括號(hào)的是否為半角以及傳感器線、舵機(jī)線有沒(méi)有插反,排除錯(cuò)誤后再將程序編譯,燒錄至控制卡中,直至得到正確的結(jié)果為止。v 如用如用MultiFlex控制卡采集外部電壓信息,請(qǐng)確保外部電控制卡采集外部電壓信息,請(qǐng)確保外部電壓輸入值壓輸入值5V(本卡(本卡AD基準(zhǔn)電壓值),否則有可能造成硬件基準(zhǔn)電壓值),否則有可能造成硬件損壞!損壞! 傳感-決策-控制綜合實(shí)驗(yàn)v通過(guò)前面的實(shí)驗(yàn),我們已經(jīng)知道如何通過(guò)編寫c程

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論