龍人寶貝機(jī)器人課程設(shè)計(jì)報(bào)告_第1頁(yè)
龍人寶貝機(jī)器人課程設(shè)計(jì)報(bào)告_第2頁(yè)
龍人寶貝機(jī)器人課程設(shè)計(jì)報(bào)告_第3頁(yè)
龍人寶貝機(jī)器人課程設(shè)計(jì)報(bào)告_第4頁(yè)
龍人寶貝機(jī)器人課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、龍人寶貝機(jī)器人課程設(shè)計(jì)報(bào)告1 小車(chē)硬件安裝過(guò)程1.1安裝機(jī)器人底盤(pán)硬件零件清單:寶貝車(chē)地盤(pán)、螺柱4個(gè)、盤(pán)頭螺絲4個(gè)、12/32英寸的橡膠圈(本實(shí)踐中沒(méi)有該零件)。(1) 將13/32英寸的橡膠套圈插到寶貝車(chē)底盤(pán)衷心的孔內(nèi)。由于本實(shí)踐中沒(méi)有該零件,所以該步省略。(2) 確保底盤(pán)中心孔的邊緣嵌在橡膠圈的凹槽中。(3) 用4個(gè)螺絲將螺柱固定在底盤(pán)上。1.2拆除舵機(jī)擺臂零件清單:兩個(gè)舵機(jī)。(1) 用螺絲起子去掉舵機(jī)擺臂和電機(jī)輸出軸之間的螺釘。(2) 將舵機(jī)擺臂從電機(jī)輸出軸上取下來(lái)。(3) 將螺絲釘保存好,而后還會(huì)用到。1.3將電機(jī)安裝到底盤(pán)上零件清單:寶貝車(chē)地盤(pán)(部分已經(jīng)安裝好)、連續(xù)旋轉(zhuǎn)舵機(jī)、盤(pán)頭螺

2、絲8個(gè)、螺母8個(gè)。(1) 用盤(pán)頭螺絲和螺母將舵機(jī)固定在底盤(pán)上。為了最好的性能,必須從里面而不是從外面把電機(jī)放入巨型窗口。(2) 用標(biāo)簽紙標(biāo)識(shí)伺服電機(jī)的左右輪。1.4安裝電池零件列表:寶貝車(chē)地盤(pán)(部分已經(jīng)安裝好)、帶有插頭的電池盒、平頭螺絲2個(gè)、螺母2個(gè)(1) 用平頭螺絲和螺母將電池盒固定在寶貝車(chē)機(jī)器人的底盤(pán)下面。(2) 將螺絲穿過(guò)電池盒,然后在底盤(pán)上面用螺母緊固。(3) 將電池盒的電源連接線(xiàn)穿過(guò)底盤(pán)中間帶有橡膠圈的孔。(4) 將伺服電機(jī)線(xiàn)也穿過(guò)此孔。(5) 牌例伺服電機(jī)線(xiàn)和電源線(xiàn)。1.5安裝輪子零件清單:部分已經(jīng)安裝好的寶貝車(chē)機(jī)器人、開(kāi)口銷(xiāo)、球狀尾輪、橡皮圈、塑膠輪子、步驟1.2中拆掉舵機(jī)擺臂

3、里保存的螺釘。(1) 輪子的中心孔與底盤(pán)尾部的中心孔對(duì)準(zhǔn)在一條水平線(xiàn)上。(2) 將開(kāi)口銷(xiāo)同時(shí)穿過(guò)這三個(gè)孔(底盤(pán)左側(cè)、尾輪、底盤(pán)右側(cè))(3) 將開(kāi)口銷(xiāo)一端彎曲使它不會(huì)滑出。(4) 拉伸橡皮圈,把它套在每個(gè)輪子上。(5) 每個(gè)輪子有一個(gè)凹槽用于把它安裝到輸出軸上。將兩個(gè)輪子分別在輸出軸上,確保兩個(gè)高度一致,并已安裝進(jìn)輪子的凹槽。(6) 用螺絲釘將輪子固定在輸出軸上。1.6把教學(xué)地板安裝到地盤(pán)上零件清單:寶貝車(chē)機(jī)器人地盤(pán)(部分組裝好)、盤(pán)頭帶平墊螺絲4個(gè)、帶控制器的教學(xué)板(1) 連接伺服電機(jī)到教學(xué)底板上的電機(jī)接口處。(2) 將貼著“L”(左輪驅(qū)動(dòng)電機(jī))的插頭連接到PC3端口,貼著“R”(右輪驅(qū)動(dòng)電機(jī)

4、)的插頭連接到PC端口。(3) 確保面包板接近驅(qū)動(dòng)輪而不是尾輪。(4) 將主板放在四個(gè)支架上使其與四個(gè)孔對(duì)齊。(5) 用盤(pán)頭呆平墊螺絲將主板固定在螺柱上。2 C51+AVR控制板介紹2.1 概述:C51+AVR寶貝車(chē)控制板,是鷗鵬科技有限公司開(kāi)發(fā)的,一款擁有C51和AVR功能的單片機(jī)控制板。C51部分采用的是AT89S52單片機(jī),AVR部分采用的是ALTMEGA8的單片機(jī)。2.2 89S52的主要性能: 1) 與MCS-51單片機(jī)產(chǎn)品兼容;2) 8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器;3) 1000次擦寫(xiě)周期;4) 全靜態(tài)操作:0Hz-33MHz;5) 三級(jí)加密程序存儲(chǔ)器;6) 32個(gè)可編程I/

5、O口線(xiàn);7) 三個(gè)16位定時(shí)器/計(jì)數(shù)器;8) 8個(gè)中斷源;9) 全雙工UART串行通道;10) 低功耗空閑和掉電模式;11) 掉電后中斷可喚醒;12) 看門(mén)狗定時(shí)器;13) 雙數(shù)據(jù)指針;14) 掉電標(biāo)識(shí)符。2.3 功能特性描述 AT89S52 是一種低功耗、高性能CMOS8 位微控制器, 具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash 允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash ,使得AT89S52 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高

6、靈活、超有效的解決方案。 AT89S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié)Flash,256 字節(jié)RAM,32 位I/O 口線(xiàn),看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器, 一個(gè)6 向量2 級(jí)中斷結(jié)構(gòu), 全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2 種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM 、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。2.4 引腳結(jié)構(gòu)圖1圖2圖32.5 AVR的主要性能:高性能、低功耗的 8 位AVR 微處理器

7、先進(jìn)的RISC 結(jié)構(gòu)130 條指令。大多數(shù)指令執(zhí)行時(shí)間為單個(gè)時(shí)鐘周期32 個(gè)8 位通用工作寄存器全靜態(tài)工作工作于16 MHz 時(shí)性能高達(dá)16 MIPS只需兩個(gè)時(shí)鐘周期的硬件乘法器非易失性程序和數(shù)據(jù)存儲(chǔ)器8K 字節(jié)的系統(tǒng)內(nèi)可編程Flash 擦寫(xiě)壽命: 10,000 次。具有獨(dú)立鎖定位的可選Boot 代碼區(qū)通過(guò)片上Boot 程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程真正的同時(shí)讀寫(xiě)操作512 字節(jié)的EEPROM擦寫(xiě)壽命: 100,000 次。1K 字節(jié)的片內(nèi)SRAM 可以對(duì)鎖定位進(jìn)行編程以實(shí)現(xiàn)用戶(hù)程序的加密外設(shè)特點(diǎn)兩個(gè)具有獨(dú)立預(yù)分頻器8 位定時(shí)器/ 計(jì)數(shù)器, 其中之一有比較功能。 一個(gè)具有預(yù)分頻器、比較功能和捕捉功能的16

8、 位定時(shí)器/ 計(jì)數(shù)器 具有獨(dú)立振蕩器的實(shí)時(shí)計(jì)數(shù)器RTC三通道PWM,TQFP 與MLF 封裝的8 路ADC 8 路10 位ADC,PDIP 封裝的6 路ADC,8 路10 位ADC,面向字節(jié)的兩線(xiàn)接口兩個(gè)可編程的串行USART可工作于主機(jī)/ 從機(jī)模式的SPI 串行接口。具有獨(dú)立片內(nèi)振蕩器的可編程看門(mén)狗定時(shí)器片內(nèi)模擬比較器特殊的處理器特點(diǎn)上電復(fù)位以及可編程的掉電檢測(cè)片內(nèi)經(jīng)過(guò)標(biāo)定的RC 振蕩器片內(nèi)/ 片外中斷源5 種睡眠模式: 空閑模式、ADC 噪聲抑制模式、省電模式、掉電模式及Standby 模式。I/O 和封裝23 個(gè)可編程的I/O 口28 引腳PDIP 封裝,32 引腳TQFP 封裝,32

9、引腳MLF 封裝。工作電壓2.7 - 5.5V (ATmega8L) 4.5 - 5.5V (ATmega8)。速度等級(jí)0 - 8 MHz (ATmega8L) 0 - 16 MHz (ATmega8)4 Mhz 時(shí)功耗, 3V, 25°C工作模式: 3.6 mA空閑模式: 1.0 mA 掉電模式: 0.5uA圖4圖51電源插頭:?jiǎn)纹瑱C(jī)供電1720pin排母:AVRLCD顯示塊的擴(kuò)展接口。2三檔撥動(dòng)開(kāi)關(guān):1、檔關(guān)2、單片機(jī)供電3、舵機(jī)供電。18 IO擴(kuò)展口舵機(jī)插口:舵機(jī)與AVR單片機(jī)的連接。3C51ISP下載口:并口下載HEX文件。19AVR擴(kuò)展口。4C51單片機(jī)供電跳線(xiàn)。20擴(kuò)展面

10、包板。5三端穩(wěn)壓器:提供穩(wěn)定的5V電源21電源指示燈:顯示控制板是否通電。6電源選擇跳線(xiàn):當(dāng)跳線(xiàn)帽連接到Vin的時(shí)候舵機(jī)的供電電源是輸入電壓電源,當(dāng)跳線(xiàn)帽連接到Vcc,舵機(jī)的供電電源是5V。22C51單片機(jī)電源顯示燈:用于C51單片機(jī)通電反饋。7舵機(jī)連接插頭:舵機(jī)與C51單片機(jī)的連接。23AVR單片機(jī)電源顯示燈:用于AVR單片機(jī)通電反饋。8C51單片機(jī)的IO擴(kuò)展口。24輕觸開(kāi)關(guān):用于C51單片機(jī)復(fù)位。920pin排母:C51LCD顯示塊的擴(kuò)展接口25晶振:給C51單片機(jī)提供時(shí)鐘信號(hào)。10MAX232通信IC:用于PC機(jī)與單片機(jī)進(jìn)行異步串行通信。26晶振:給AVR單片機(jī)提供時(shí)鐘信號(hào)。11DB9母

11、頭:PC機(jī)和C51系列的單片機(jī)的異步串行通信。27輕觸開(kāi)關(guān):用于AVR單片機(jī)復(fù)位。12C51系列單片機(jī):AT89S52,TOFP封裝。28舵機(jī)和滾輪:寶貝車(chē)的運(yùn)動(dòng)執(zhí)行器件13AVRISP下載口:并口下載HEX文件。29寶貝車(chē)的支架。14AVR單片機(jī)供電跳線(xiàn)。15AVR系列單片機(jī)28腳PDIP封裝。 16DB9母頭:PC機(jī)和AVR系列的單片機(jī)的異步串行通信。 3 軟件編程設(shè)計(jì)3.1 搭建并測(cè)試IR發(fā)射和探測(cè)器對(duì)3.1.1 元件清單:(1) 兩個(gè)紅外檢測(cè)器(2) 兩個(gè)IR LED(3) 四個(gè)470電阻(4) 兩個(gè)9013三極管3.1.2 搭建紅外線(xiàn)前燈電路板的每個(gè)角安裝一個(gè)IR組(IR LED和檢

12、測(cè)器)。l 斷開(kāi)主板和伺服系統(tǒng)的電源l 建立所示的電路,可參考實(shí)物圖63.2 紅外線(xiàn)檢測(cè)循跡程序功能圖:開(kāi)關(guān)打開(kāi)執(zhí)行命令判斷紅外線(xiàn)檢測(cè)到的是黑色還是白色檢測(cè)到的都是黑色檢測(cè)到左邊是黑色,右邊是白色檢測(cè)到左邊是白色,右邊是黑色檢測(cè)到的都是白色前進(jìn)左轉(zhuǎn)右轉(zhuǎn)后退圖7根據(jù)程序功能圖來(lái)編寫(xiě)程序#include<BoeBot.h>#include<uart.h>#include<intrins.h> /宏定義#define LeftIR P1_2 /左邊紅外接收連接到P1_2#define RightIR P3_5 /右邊紅外接收連接到P3_5#define LeftL

13、aunch P1_3 /左邊紅外發(fā)射連接到P1_3#define RightLaunch P3_6 /右邊紅外發(fā)射連接到P3_6void IRLaunch(unsigned char IR) int counter; if(IR='L')/左邊發(fā)射 for(counter=0;counter<38;counter+) LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLau

14、nch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /為了達(dá)到使電機(jī)有充分的時(shí)間反應(yīng)做的延時(shí)空程序 if(IR='R')/右邊發(fā)射 for(counter=0;counter<38;counter+) RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _no

15、p_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); int main(void) int pulseLeft,pulseRight; int irDetectLeft,irDetectRight; uart_Init(); printf("Program Running!n"); do IRLaunch('R'); /右

16、邊紅外發(fā)射 irDetectRight = RightIR;/右邊接收 IRLaunch('L'); /左邊紅外發(fā)射 irDetectLeft = LeftIR;/左邊接收 if(irDetectLeft=0)&&(irDetectRight=0)/如果檢測(cè)到的都是白色的話(huà),向后退,直到檢測(cè)到黑色,重新走 pulseLeft=1300; pulseRight=1700; else if(irDetectLeft=0)&&(irDetectRight=1)/左邊檢測(cè)到白色,右邊檢測(cè)到黑色,右轉(zhuǎn) pulseLeft=1700; pulseRight=

17、1700; else if(irDetectLeft=1)&&(irDetectRight=0)/右邊檢測(cè)到白色,左邊檢測(cè)到黑色,左轉(zhuǎn) pulseLeft=1300; pulseRight=1300; else /如果都不是的話(huà)前進(jìn) pulseLeft=1700; pulseRight=1300; P1_1=1; delay_nus(pulseLeft); P1_1=0; P1_0=1; delay_nus(pulseRight); P1_0=0; delay_nms(20); while(1); 4 電路仿真階段我們根據(jù)電路圖來(lái)進(jìn)行protus的電路仿真,在最終的時(shí)候我們進(jìn)行

18、的電路仿真是:圖8:最終圖9:最開(kāi)始由于在protus軟件中沒(méi)有AT89S52的單片機(jī),所以采用的時(shí)候與之比較相似的AT89C52的單片機(jī)來(lái)代替,仿真電路按照硬件連接的電路所設(shè)計(jì),感應(yīng)器GP2D12。電機(jī)采用的是MOTOR-PWMSERVO舵機(jī)伺服電動(dòng)機(jī),電機(jī)的電極根據(jù)實(shí)際要求查詢(xún)的資料來(lái)確定。運(yùn)行結(jié)果:將程序?qū)氲絾纹瑱C(jī)中后發(fā)現(xiàn)錯(cuò)誤報(bào)告,修改后電機(jī)不轉(zhuǎn),感應(yīng)器不能傳感信號(hào)。圖10:修改1改進(jìn):將傳感器改為可以常開(kāi)常閉的控制開(kāi)關(guān)SW-SPST代替發(fā)射0/1信號(hào)。運(yùn)行結(jié)果:運(yùn)行后點(diǎn)擊不發(fā)生偏轉(zhuǎn),電機(jī)控制開(kāi)關(guān)不點(diǎn)擊運(yùn)轉(zhuǎn)不發(fā)生變化。 圖11: 修改2改進(jìn):加上示波器來(lái)顯示顯示點(diǎn)擊的運(yùn)轉(zhuǎn)狀況。運(yùn)行結(jié)果

19、:示波器沒(méi)有反應(yīng)。圖12: 修改3改進(jìn):經(jīng)過(guò)再次的查詢(xún)資料得知我們的電機(jī)的正極和信號(hào)線(xiàn)接反了,將接線(xiàn)錯(cuò)誤改正。運(yùn)行結(jié)果:運(yùn)行后點(diǎn)擊可以顯示轉(zhuǎn)角,但是按下控制開(kāi)關(guān)后,點(diǎn)擊的轉(zhuǎn)角不發(fā)生改變。同時(shí)我們發(fā)現(xiàn)沒(méi)有復(fù)位裝置的仿真,并且二極管無(wú)法顯示信號(hào)狀態(tài)。圖13: 修改4改進(jìn):將二極管改為可顯示信號(hào)的DIODE,加上復(fù)位仿真模塊。運(yùn)行結(jié)果:二極管信號(hào)顯示正常,按下控制開(kāi)關(guān)后點(diǎn)擊的轉(zhuǎn)角仍然沒(méi)有發(fā)生改變,復(fù)位仿真有效果。但是無(wú)法模擬兩個(gè)紅外線(xiàn)都探測(cè)到白色信號(hào)的情況。圖14:修改5改進(jìn):更進(jìn)一步的查閱資料后得知控制開(kāi)關(guān)應(yīng)該和地相連,因?yàn)閱纹瑱C(jī)本身提供有正電位,信號(hào)為1,如果控制開(kāi)關(guān)還和正電位相連的話(huà),那按下控

20、制開(kāi)關(guān)后信號(hào)不發(fā)生改變。于是將控制開(kāi)關(guān)與地連接。同時(shí)加上一個(gè)控制開(kāi)關(guān)模擬紅外線(xiàn)探測(cè)到都是白色的情況。運(yùn)行結(jié)果:電機(jī)發(fā)生轉(zhuǎn)角,示波器顯示正常。但是分別按下三個(gè)控制開(kāi)關(guān)后結(jié)果顯示都一樣。經(jīng)過(guò)改進(jìn)后得到最終的仿真結(jié)果。5 相關(guān)疑問(wèn)解答5.1 選擇使用三極管9013的原因因?yàn)镃51的IO驅(qū)動(dòng)能力比較弱,我們加入三極管來(lái)使其工作在開(kāi)關(guān)狀態(tài)。三極管是一種控制原件,主要用來(lái)控制電流的大小,簡(jiǎn)單來(lái)說(shuō),是用小電流控制大電流。5.2 使用AT89S52的四個(gè)引腳P1_2、P1_3、P1_5、P1_6分別的作用。#define LeftIR P1_2 /左邊紅外接收連接到P1_2#define RightIR P3

21、_5 /右邊紅外接收連接到P3_5#define LeftLaunch P1_3 /左邊紅外發(fā)射連接到P1_3#define RightLaunch P3_6 /右邊紅外發(fā)射連接到P3_6這里用到的命令是#define,它的作用是聲明標(biāo)識(shí)符常量。往后就可以用LeftIR來(lái)代替P1_2,用RightIR來(lái)代替P3_5等等。5.3 do.while 語(yǔ)句的使用方法在C語(yǔ)言中,直到型循環(huán)控制語(yǔ)句是dowhile,它的一般形式為:do 語(yǔ)句while(表達(dá)式)其中語(yǔ)句通常為復(fù)合語(yǔ)句,成為循環(huán)體Do.while語(yǔ)句的基本特點(diǎn)是:先執(zhí)行后判斷。因此循環(huán)體至少被執(zhí)行一次。在這個(gè)程序DO循環(huán)體中,發(fā)生38.5

22、kHz的IR信號(hào)給每個(gè)紅外的LED。當(dāng)脈沖發(fā)生完以后,變量立即存儲(chǔ)紅外檢測(cè)器的輸出狀態(tài)。5.4 舵機(jī)的工作原理舵機(jī)是一種位置伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。如果你控制的舵機(jī)在不停的抖動(dòng),其中一個(gè)原因就是你給的脈沖有雜波,這點(diǎn)很重要。舵機(jī)是一個(gè)物理器件,它的轉(zhuǎn)動(dòng)需要時(shí)間的,因此,程序中占空比的值變化不能太快,不然舵機(jī)跟不上程序的響應(yīng)時(shí)間。(The Parallax (GWS) NARO Servo is smaller and lighter than a standard servo, but it delivers the performance of

23、 a standard servo. It is recommended for smaller robots or in projects where space is tight. Servos may be controlled directly from a BASIC Stamp I/O pin by using the PULSOUT command. Two NARO servos are used to make the Parallax Penguin Robot walk.)視差(GWS)NARO伺服的是比標(biāo)準(zhǔn)伺服體積更小,重量更輕,但它提供了一個(gè)標(biāo)準(zhǔn)的伺服性能。

24、它被推薦用于小型機(jī)器人或項(xiàng)目,在空間緊張。舵機(jī)直接從BASIC Stamp的I / O引腳,可控制使用PULSOUT指令。兩個(gè)NARO舵機(jī)用于使視差企鵝機(jī)器人(龍人寶貝)進(jìn)行步行路程。5.4.1 舵機(jī)的結(jié)構(gòu) 我們選的舵機(jī)型號(hào)是Tower Pro MG995,實(shí)物如圖:圖15 它有三條線(xiàn) 棕色、紅色、黃色分別是GND、 V+ 、 S(信號(hào))。如下圖:圖16伺服電機(jī)連接線(xiàn)和延長(zhǎng)線(xiàn)的安裝:首先,伺服電機(jī)上的插座接線(xiàn)顏色為咖、紅、黃,它們分別問(wèn)GND,V+(電源),S(信號(hào))。延長(zhǎng)線(xiàn)顏色分別為白、紅、黑,它們分別是GND,V+(電源),S(信號(hào))。將他們連接起來(lái),按照伺服電機(jī)卡的輸出排針上的標(biāo)示插好,

25、注意線(xiàn)不要接反。在我們的實(shí)驗(yàn)中所用的伺服電機(jī)的插座接線(xiàn)已經(jīng)和延長(zhǎng)線(xiàn)接在了一起,所以沒(méi)有必要再進(jìn)行這一步的安裝。5.4.2 舵機(jī)的單片機(jī)控制原理(1)我們得先了解舵機(jī)的工作原理:控制信號(hào)由舵機(jī)的信號(hào)通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)芯片決定電機(jī)的正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時(shí),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。它的控制要求如下圖:圖17:舵機(jī)輸出轉(zhuǎn)角與輸入信號(hào)脈沖寬度的關(guān)系(2)由上可知舵機(jī)的控制信號(hào)是PWM信號(hào)

26、,利用占空比的變化改變舵機(jī)的位置。我們用pic單片機(jī)的定時(shí)器1模塊產(chǎn)生PWM信號(hào),得到控制電機(jī)的占空比,也就如上圖的占空比信號(hào),周期是20Ms.下面我們來(lái)看看怎樣產(chǎn)生上圖的占空比,單片機(jī)的定時(shí)器1模塊最大可以產(chǎn)生174ms的延時(shí),也就是可以產(chǎn)生最大174ms的中斷。怎樣設(shè)置Timer1來(lái)產(chǎn)生上述占空比的中斷,可以參考具體資料書(shū)。當(dāng)系統(tǒng)中只需要實(shí)現(xiàn)一個(gè)舵機(jī)的控制,采用的控制方式是改變單片機(jī)的一個(gè)定時(shí)器中斷的初值,將20ms分為兩次中斷執(zhí)行,一次短定時(shí)中斷和一次長(zhǎng)定時(shí)中斷。這樣既節(jié)省了硬件電路,也減少了軟件開(kāi)銷(xiāo),控制系統(tǒng)工作效率和控制精度都很高。具體的設(shè)計(jì)過(guò)程:例如想讓舵機(jī)轉(zhuǎn)向左極限的角度,它的正

27、脈沖為2ms,則負(fù)脈沖為20ms-2ms=18ms,所以開(kāi)始時(shí)在控制口發(fā)送高電平,然后設(shè)置 定時(shí)器在2ms后發(fā)生中斷,中斷發(fā)生后,在中斷程序里將控制口改為低電平,并將中斷時(shí)間改為18ms,再過(guò)18ms進(jìn)入下一次定時(shí)中斷,再將控制口改為高電平,并將定時(shí)器初值改為2ms,等待下次中斷到來(lái),如此往復(fù)實(shí)現(xiàn)PWM信號(hào)輸出到舵機(jī)。用修改定時(shí)器中斷初值的方法巧妙形成了脈沖信號(hào),調(diào)整時(shí)間段的寬度便可使伺服機(jī)靈活運(yùn)動(dòng)。 但是我們要記住一點(diǎn),要在中斷中做事必須要在長(zhǎng)中斷中做事,可以避免不必要的麻煩。5.4.3 proteus軟件仿真舵機(jī)的控制 先在proteus中找到舵機(jī)的元件,就是那個(gè)英文單詞是motor-pw

28、mservo 的元件。這里我們可以用按鍵的方式去控制單片機(jī)產(chǎn)生不同的占空比,來(lái)達(dá)到可以控制電機(jī)轉(zhuǎn)到不同的角度。電路如圖所示:圖185.4.4 具體的程序清單:#include<pic.h> unsigned char TL01;unsigned char TH01;unsigned char TL02;unsigned char TH02;int A,C=0;bit FLAG=0;void delay10ms(void) unsigned char i,j; for(i=20;i>0;i-) for(j=248;j>0;j-) ; /延時(shí)200ms子程序void del

29、ay02s(void) unsigned char i; for(i=20;i>0;i-) delay10ms();/*主程序*/void main(void) INTCON=0; GIE=1;/ ;打開(kāi)總中斷 PEIE=1;/ ;打開(kāi)外部中斷使能位 TMR1IE=1;/ ;打開(kāi)TMR1中斷 TRISD=0X0F0; PORTD=0X00; T1CON=0x01;/設(shè)置TMR1的控制字 RD0=0; /脈沖波形起始狀態(tài) TMR1IF=0; FLAG=0; TL01=0X23; /TL01=0x2E; /舵機(jī)0 位,1.5ms定時(shí)初始值 TH01=0X0FA; /TH01=0x0FA; T

30、L02=0X0CC; /TL02=0x0B2; /8.5ms定時(shí)初始值 TH02=0X0DE; /TH02=0x0B7; while(1) if(RD7=0) delay10ms(); /按下,延時(shí),防抖 if(RD7=0) /等待釋放 delay02s(); A=TL01; if(A!=0xFF) /判斷是否到+90° C=0; A=A-20; if(A<=0) A+=255;C=1; if(C=0) TL01=A; C=0; A=TL02; A=A+20; if(A>=255) A-=255;C=1; if(C=0) TL02=A; else TH02+;TL02=A;C=0; else TH01-; TL01=A; C=0; A=TL02; A=A+20; if(A>=255) A-=255;C=1; if(C=0) TL02=A; else TH02+;TL02=A;C=0; if(RD6=0) delay10ms(); /按下,延時(shí),防抖 if(RD6=0) /等待釋放 delay02s(); A=TL01; if(A!=0x22) /判斷是

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論