版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、機(jī)電綜合實(shí)驗(yàn)步行機(jī)器人機(jī)械與運(yùn)載工程學(xué)院機(jī)自1103班實(shí)驗(yàn)者:陳正敏學(xué) 號:20110401310二零一四年12月16日一、認(rèn)識龍人步行者盡管它看起來很簡單,但確實(shí)這種使用兩個(gè)伺服電機(jī)實(shí)現(xiàn)兩足移動的步行機(jī)器人比兩輪機(jī)器人復(fù)雜的得多。它通過機(jī)械機(jī)構(gòu)和 C 語言指令控制來實(shí)現(xiàn)行走。實(shí)際上,步行機(jī)器人可使用許多傳感器作為反饋元件,其中包括能檢測到一定距離內(nèi)是否有物體的紅外線發(fā)射器及紅外線檢測器,緩沖傳感器(閃光腳趾)和用以測量傾斜參數(shù)的加速度計(jì)。(注意,閃光腳趾和加速度計(jì)不是步行機(jī)器人的標(biāo)準(zhǔn)配件,用戶需另外采購。)如果你耐心調(diào)節(jié)步行機(jī)器人的硬件和軟件,步行機(jī)器人可以完成輪式機(jī)器人所能完成的所有動作。
2、步行機(jī)器人不僅比輪式機(jī)器人有趣很多,而且通過學(xué)習(xí)步行機(jī)器人行走控制,也能更加熟練的掌握控制程序的編寫。步行機(jī)器人的編程將會引導(dǎo)你學(xué)會如何設(shè)計(jì)C語言程序,包括如何使用常量和變量、數(shù)組、程序的指針,函數(shù)以及存儲數(shù)據(jù)的EEPROM(電可擦除只讀存儲器)。程序設(shè)計(jì)是否良好的其中一個(gè)標(biāo)準(zhǔn)是,在對一些機(jī)械裝置調(diào)整后,不需重新編寫整個(gè)程序,只需對程序作簡單修改就能實(shí)現(xiàn)所要求的功能,即我們通常所說的可維護(hù)性。步行機(jī)器人的運(yùn)動由兩個(gè)伺服電機(jī)控制(這有點(diǎn)類似于操縱飛機(jī)的螺旋槳)。兩個(gè)伺服電機(jī)有各自的作用, 頂部的伺服電機(jī)控制機(jī)器人的重心位置在1.5CM的范圍內(nèi)擺動,而底部的伺服電機(jī)控制機(jī)器人的前后行走。步行機(jī)器人
3、的腿和腳踝之間采用了一個(gè)簡單的平行連接件,確保雙腳能夠平行的站在地面上。兩條腿都連接在同一個(gè)電機(jī)上,所以一只腳向前移動時(shí),另一只腳就會向后移動。單獨(dú)控制一個(gè)電動機(jī),步行機(jī)器人能夠完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等動作。綜合控制步行機(jī)器人兩個(gè)伺服電機(jī)的運(yùn)動,能實(shí)現(xiàn)更加協(xié)調(diào)、更加平穩(wěn)的行走。步行機(jī)器人的伺服電機(jī)和傳感器由一個(gè) AVR 單片機(jī)來控制。 AVR 單片機(jī)是工程中運(yùn)用很廣泛的一種芯片,它提供了較大的程序空間、存儲空間供機(jī)器人使用,并且處理速度快比 51 單片機(jī)快 1 倍以上。二、實(shí)驗(yàn)要求1、了解和掌握自動化系統(tǒng)集成的一般過程和方法,同學(xué)們在課程中逐步掌握使用、調(diào)試、維護(hù)自動化系統(tǒng)方面的能力。2、
4、了解AT89S52芯片的主要性能,學(xué)會分析和使用常用電子芯片、電子元件和儀器設(shè)備的能力。3、掌握機(jī)器人機(jī)械工作方式,紅外避障工作原理,掌握機(jī)器人尾隨行走所需的閉環(huán)控制算法,學(xué)會將機(jī)械運(yùn)動和自動化(利用軟、硬件)緊密結(jié)合。4、學(xué)會查閱科技參考資料,根據(jù)自己的設(shè)計(jì)任務(wù)和設(shè)計(jì)方法編制程序、調(diào)試程序軟、硬件聯(lián)機(jī)調(diào)試,達(dá)到設(shè)計(jì)要求收集實(shí)驗(yàn)數(shù)據(jù),并對結(jié)論進(jìn)行分析,寫好實(shí)驗(yàn)報(bào)告。三、實(shí)驗(yàn)原理1)時(shí)間測量和電壓在這本學(xué)習(xí)指南中,我們將多次提到幾個(gè)重要的時(shí)間單位秒(s),毫秒(ms),微秒(us)。通常,我們將秒用小寫字母“s ”表示,所以,可以將1秒寫成1s。毫秒則用“ms”表示,1毫秒等于1/1000秒;微
5、秒用“us”表示,1微秒等于1/1000000秒,從毫秒、微秒與秒的關(guān)系你是否已經(jīng)推出:1毫秒=1000微秒。在2)運(yùn)動原理從AVR CPU中發(fā)送出來的一組控制伺服電機(jī)的控制信號被稱為“脈沖序列”,如圖2-1所示。AVR CPU能夠通過編程產(chǎn)生這樣的信號波形,而且還能用它任意的一個(gè)I/O口進(jìn)行信號的輸出。在下面的例子中,AVR CPU向 PC2(跨步伺服電機(jī))和PC3(傾斜伺服電機(jī))各發(fā)送一個(gè)1500微秒的脈沖信號。在1500微秒的高電平送出后,AVR CPU繼續(xù)發(fā)送一個(gè)25毫秒的低電平給該引腳,產(chǎn)生一組脈沖序列如圖所示,這個(gè)脈沖序列由1500微秒的高電平和25毫秒的低電平組成。伺服電機(jī)的控制
6、主要由1500微秒的高電平來控制,我們通常稱這一段時(shí)間為脈寬。脈沖信號由低電平到高電平這一變化過程我們稱為上升沿。同理,由高電平到低電平的變化我們稱為下降沿。步行機(jī)器人的行走的分4個(gè)步驟:a. 向一邊傾斜b. 移動被提起的那只腿c. 向另一邊傾斜d. 移動被提起的那只腿3)滑動式轉(zhuǎn)彎步行機(jī)器人有點(diǎn)不大靈活。它只能向前或向后移動它的步子,不能相對它的身體旋轉(zhuǎn)步子。但這并沒有阻礙他的轉(zhuǎn)彎能力,當(dāng)走直線時(shí),步行機(jī)器人和人走直線是相似的,而轉(zhuǎn)彎就明顯不同。步行機(jī)器人轉(zhuǎn)彎和人最接近的是就象人穿著平底鞋站在冰面上轉(zhuǎn)彎的情形。人站在冰上右轉(zhuǎn)彎的過程是相當(dāng)簡單的,把你的左腳向前邁一步放在地面上,然后把左腳向后
7、滑行回收,這樣你就可以以右腳為軸向右轉(zhuǎn)了。如果冰是濕滑的話可能要多次轉(zhuǎn)動才能轉(zhuǎn)過 90 度。同樣要左轉(zhuǎn)就滑行右腳。標(biāo)準(zhǔn)的步行機(jī)器人在冰上轉(zhuǎn)彎的效果并不理想,但利用這種原理,在其它表面上可以轉(zhuǎn)得很好。步行機(jī)器人的平滑金屬腳提供了一個(gè)光滑的表面。當(dāng)它站在能提供摩擦力的表面上來做轉(zhuǎn)彎,效果會更加好。如果走的平面太光滑,那么對步行機(jī)器人的腳掌進(jìn)行一些處理以便提供更大的摩擦力。最典型的做法四、相關(guān)資料及問題(一)、PWM 直流電機(jī)調(diào)速原理:通過AVR 單片機(jī)ATmega8直接產(chǎn)生PWM 波形經(jīng)過電機(jī)驅(qū)動芯片L298 分別驅(qū)動兩個(gè)直流電機(jī),PWM 將占空比不同的脈沖變成不同的電壓驅(qū)動直流電機(jī)轉(zhuǎn)動從而得到不
8、同的轉(zhuǎn)速,且實(shí)現(xiàn)電機(jī)啟動、停止、正反轉(zhuǎn)等功能。(二)、直流電機(jī)控制模塊1、控制板的使用說明#define POSITIVE_DIR 1/正向旋轉(zhuǎn)#define NEGATIVE_DIR 0 /反向旋轉(zhuǎn)#define LEFT_MOTOR 0/左電機(jī)#define RIGHT_MOTOR 1/右電機(jī)#define NOT_STOP 0/不停止#define STOP 1/停止#define BY_10MS 0/時(shí)間控制系數(shù)10毫秒倍率#define BY_100MS 1/100毫秒倍率#define BY_1000MS 2/1000毫秒倍率#define NOT_CONTROL_TIME 3/不
9、控制時(shí)間2、通過TTL串口驅(qū)動PWM直流電機(jī)驅(qū)動模塊void write_pwm(unsigned char bDirection, unsigned char bSide, unsigned char bStop, unsigned char TimeFactor, unsigned char Speed, unsigned char Time)unsigned char Command;bSide = bSide << 1;bStop = bStop << 2;TimeFactor = TimeFactor << 3;Command = bDirecti
10、on | bSide | bStop | TimeFactor; /組合命令字節(jié)soft_send_enable (); /允許軟串口發(fā)送EA=1;rs_send_byte(0xaa);/發(fā)送控制命令的頭部,恒為0xaars_send_byte(Command);/發(fā)送命令字節(jié),想要了解命令格式rs_send_byte(Speed);/發(fā)送速度描述字節(jié),0255rs_send_byte(Time);/發(fā)送時(shí)間倍率,0255rs_send_byte(0xbb);/發(fā)送控制命令的尾部,恒為0xbbwhile(rs_f_TI=0);/等待所有的命令發(fā)出完畢EA=0;3、幾個(gè)基本函數(shù)驅(qū)動電機(jī)后退函數(shù)原
11、理:左電機(jī)正轉(zhuǎn),右電機(jī)反轉(zhuǎn),以同樣的速度旋轉(zhuǎn),完成后退動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時(shí)間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時(shí)間倍率(0255);時(shí)間倍率*時(shí)間系數(shù)=實(shí)際時(shí)間void Backward(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds)write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);write_pwm(NEGATIVE_DIR,RIGHT
12、_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);驅(qū)動電機(jī)右轉(zhuǎn)函數(shù)原理:左右電機(jī)正轉(zhuǎn),以不一樣的速度旋轉(zhuǎn),完成右轉(zhuǎn)動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時(shí)間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時(shí)間倍率(0255);時(shí)間倍率*時(shí)間系數(shù)=實(shí)際時(shí)間void Right(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds)write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor
13、,Speed,Seconds);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);驅(qū)動電機(jī)左轉(zhuǎn)函數(shù)原理:左右電機(jī)反轉(zhuǎn),以不一樣的速度旋轉(zhuǎn),完成左轉(zhuǎn)動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時(shí)間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時(shí)間倍率(0255);時(shí)間倍率*時(shí)間系數(shù)=實(shí)際時(shí)間void Left(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds)write_pwm(
14、NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);驅(qū)動電機(jī)前進(jìn)函數(shù)原理:左電機(jī)反轉(zhuǎn),右電機(jī)正轉(zhuǎn),以同樣的速度旋轉(zhuǎn),完成后退動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時(shí)間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時(shí)間倍率(0255);時(shí)間倍率*時(shí)間系數(shù)=實(shí)際時(shí)間void Forward(unsigned char Speed, unsigned
15、 char TimeFactor, unsigned char Seconds)write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);(三)、頭文件及PWM_Init()函數(shù)說明uart.h:硬串口的相關(guān)程序。包含該文件后,在程序中調(diào)用uart_Init()函數(shù),即可完硬串口的初始化。soft_rs232.h:TTL-RS232的實(shí)現(xiàn)程序。在該文件中,可修改TTL-RS23
16、2的通信波特率以及輸出端口。如果在設(shè)置的TTL-RS232數(shù)據(jù)輸出端口外接一個(gè)RS232電平轉(zhuǎn)換芯片并搭載DB9串口接口,這樣相當(dāng)于構(gòu)建了C51平臺上的第二個(gè)串口。該程序構(gòu)建的串口為單工串口。Movement.h:該文件提供了龍人貝塔的運(yùn)動控制函數(shù)的范例。在包含該文件之前,請包含BetaRobot.h文件。否則,在編譯程序的時(shí)候會出現(xiàn)錯(cuò)誤。 PWM_Init()函數(shù)的作用是為初始化第一層與第二層之間的TTL串口連接。其中TTL串口的數(shù)據(jù)輸出口定義為P1.0口,在程序設(shè)計(jì)的過程中,請回避該端口,避免引起機(jī)器人運(yùn)動控制的錯(cuò)誤。在KEIL工程中,如果要使用到機(jī)器人的運(yùn)動控制部分,那么在主程序的開頭部
17、分,就必須首先執(zhí)行該函數(shù),進(jìn)行TTL串口初始化。五、步行機(jī)器人走“日”字#include<WalkingRobot.h>#include<uart.h>#define uint16_t unsigned int#define StrideServo P1_0/stride servo#define TiltServo P1_1/Tilt servo#define MoveDelay 15 /in ms time#define TiltStep 25 /step size#define StrideStep 25 /step size#define RightTilt 1
18、200 /tilt limits#define CenterTilt 1500#define LeftTilt 1800#define RightStride 1800 /stride limits#define CenterStride 1500 #define LeftStride 1200 /movement state numbers:#define TL 0 /representation of tiltleft #define TC 1/representation of tiltcenter#define TR 2 /representation of tiltright#def
19、ine SL 3 /representation of strideleft#define SC 4 /representation of stridecenter#define SR 5 /representation of strideright#define xx 255 /end representation int code WalkForward5=TR,SL,TL,SR,xx; /state tableint code WalkBackward5=TR,SR,TL,SL,xx;int code TurnLeft5=TL,SR,TC,SL,xx;int code WideTurnL
20、eft9=TL,SR,TC,SL,TR,SL,TL,SR,xx;int code TurnRight5=TR,SL,TC,SR,xx;int code PivotRight9=TR,SL,TC,SR,TL,SL,TC,SR,xx;/-variables-int MoveLoop; /loop times of repeat movement uint16_t Pulses; /pulses variableuint16_t CurrentTilt; /uint16_t CurrentStride;uint16_t NewValue;int *Mx; /state table index/-mo
21、vement routines-void MovementTilt(void) /tilt int step;Pulses= CurrentTilt;if(Pulses>NewValue)step=-TiltStep;elsestep=TiltStep;while(Pulses!=NewValue) TiltServo=1;delay_nus(Pulses);TiltServo=0;StrideServo=1;delay_nus(CurrentStride);StrideServo=0;delay_nms(MoveDelay); Pulses=Pulses+step;CurrentTil
22、t=NewValue;void MovementStride(void) /stideint step;Pulses= CurrentStride;if(Pulses>NewValue)step=-StrideStep;elsestep=StrideStep;while(Pulses!=NewValue) TiltServo=1;delay_nus(CurrentTilt);TiltServo=0;StrideServo=1;delay_nus(Pulses);StrideServo=0;delay_nms(MoveDelay); Pulses=Pulses+step;CurrentSt
23、ride=NewValue;/-subroutines-void ResetCC(void) /move initialCurrentTilt=CenterTilt;CurrentStride=CenterStride;for( Pulses=0;Pulses<=10;Pulses=Pulses+StrideStep) TiltServo=1;delay_nus(CenterTilt);TiltServo=0;StrideServo=1;delay_nus(CenterStride);StrideServo=0;delay_nms(MoveDelay);void Movement(voi
24、d) /move by data table referenced by Mxwhile(*Mx != xx) switch(*Mx) /比3小,執(zhí)行MovementTilt() case 0:NewValue=LeftTilt; MovementTilt(); break;case 1:NewValue=CenterTilt; MovementTilt(); break;case 2:NewValue=RightTilt; MovementTilt();break;case 3:NewValue=LeftStride;MovementStride();break;case 4:NewValu
25、e=CenterStride;MovementStride();break;case 5:NewValue=RightStride;MovementStride();break; Mx+; /INPUT;Mx=table index ; END:Mx=xx /-Main-int main(void) uart_Init();printf("Program started!rn");ResetCC() ; for(MoveLoop=1;MoveLoop<=10;MoveLoop+) / WalkForward Mx=WalkForward; Movement(); for(MoveLoop=1;MoveLoop<=7;MoveLoop+) /turn rightMx=TurnRight;Movement(); for(MoveLoop=1;MoveLoop<=5;MoveLoop+) / WalkForward Mx=WalkForward; Movement(); for(MoveLoop=1;MoveLoop<=7;MoveLoop+) /turn rightMx=TurnRight;Movement(); for(MoveLoop=1;MoveL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能新能源汽車分期付款貸款協(xié)議書3篇
- 2025版?zhèn)€人房產(chǎn)買賣合同風(fēng)險(xiǎn)評估范本2篇
- 2025版?zhèn)€人房產(chǎn)買賣合同附土地使用協(xié)議
- 2025版托育中心拖育綜合服務(wù)中心改造項(xiàng)目合同3篇
- 2025版數(shù)據(jù)錄入與云端數(shù)據(jù)同步維護(hù)服務(wù)協(xié)議3篇
- 2025-2030全球微電腦注藥泵行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年度個(gè)人對個(gè)人短期投資借款合同
- 2024年民法典知識競賽題庫及參考答案解析(共50題)
- 2025年度水電工程安全監(jiān)督與管理承包協(xié)議4篇
- 2025年度鋼材原材料采購質(zhì)量控制合同樣本
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學(xué)生版-專題08 古詩詞名篇名句默寫
- 2024-2025學(xué)年人教版(2024)七年級(上)數(shù)學(xué)寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現(xiàn)對企業(yè)財(cái)務(wù)績效的影響研究
- 醫(yī)療行業(yè)軟件系統(tǒng)應(yīng)急預(yù)案
- 使用錯(cuò)誤評估報(bào)告(可用性工程)模版
- 《精密板料矯平機(jī) 第2部分:技術(shù)規(guī)范》
- 農(nóng)村集體土地使用權(quán)轉(zhuǎn)讓協(xié)議
- 2024年高考全國甲卷英語試卷(含答案)
- TQGCML 2624-2023 母嬰級空氣凈化器 潔凈空氣和凈化等級技術(shù)要求
評論
0/150
提交評論