版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、機電綜合實驗步行機器人機械與運載工程學院機自1103班實驗者:陳正敏學 號:20110401310二零一四年12月16日一、認識龍人步行者盡管它看起來很簡單,但確實這種使用兩個伺服電機實現(xiàn)兩足移動的步行機器人比兩輪機器人復雜的得多。它通過機械機構和 C 語言指令控制來實現(xiàn)行走。實際上,步行機器人可使用許多傳感器作為反饋元件,其中包括能檢測到一定距離內是否有物體的紅外線發(fā)射器及紅外線檢測器,緩沖傳感器(閃光腳趾)和用以測量傾斜參數(shù)的加速度計。(注意,閃光腳趾和加速度計不是步行機器人的標準配件,用戶需另外采購。)如果你耐心調節(jié)步行機器人的硬件和軟件,步行機器人可以完成輪式機器人所能完成的所有動作。
2、步行機器人不僅比輪式機器人有趣很多,而且通過學習步行機器人行走控制,也能更加熟練的掌握控制程序的編寫。步行機器人的編程將會引導你學會如何設計C語言程序,包括如何使用常量和變量、數(shù)組、程序的指針,函數(shù)以及存儲數(shù)據(jù)的EEPROM(電可擦除只讀存儲器)。程序設計是否良好的其中一個標準是,在對一些機械裝置調整后,不需重新編寫整個程序,只需對程序作簡單修改就能實現(xiàn)所要求的功能,即我們通常所說的可維護性。步行機器人的運動由兩個伺服電機控制(這有點類似于操縱飛機的螺旋槳)。兩個伺服電機有各自的作用, 頂部的伺服電機控制機器人的重心位置在1.5CM的范圍內擺動,而底部的伺服電機控制機器人的前后行走。步行機器人
3、的腿和腳踝之間采用了一個簡單的平行連接件,確保雙腳能夠平行的站在地面上。兩條腿都連接在同一個電機上,所以一只腳向前移動時,另一只腳就會向后移動。單獨控制一個電動機,步行機器人能夠完成前進、后退、左轉、右轉等動作。綜合控制步行機器人兩個伺服電機的運動,能實現(xiàn)更加協(xié)調、更加平穩(wěn)的行走。步行機器人的伺服電機和傳感器由一個 AVR 單片機來控制。 AVR 單片機是工程中運用很廣泛的一種芯片,它提供了較大的程序空間、存儲空間供機器人使用,并且處理速度快比 51 單片機快 1 倍以上。二、實驗要求1、了解和掌握自動化系統(tǒng)集成的一般過程和方法,同學們在課程中逐步掌握使用、調試、維護自動化系統(tǒng)方面的能力。2、
4、了解AT89S52芯片的主要性能,學會分析和使用常用電子芯片、電子元件和儀器設備的能力。3、掌握機器人機械工作方式,紅外避障工作原理,掌握機器人尾隨行走所需的閉環(huán)控制算法,學會將機械運動和自動化(利用軟、硬件)緊密結合。4、學會查閱科技參考資料,根據(jù)自己的設計任務和設計方法編制程序、調試程序軟、硬件聯(lián)機調試,達到設計要求收集實驗數(shù)據(jù),并對結論進行分析,寫好實驗報告。三、實驗原理1)時間測量和電壓在這本學習指南中,我們將多次提到幾個重要的時間單位秒(s),毫秒(ms),微秒(us)。通常,我們將秒用小寫字母“s ”表示,所以,可以將1秒寫成1s。毫秒則用“ms”表示,1毫秒等于1/1000秒;微
5、秒用“us”表示,1微秒等于1/1000000秒,從毫秒、微秒與秒的關系你是否已經(jīng)推出:1毫秒=1000微秒。在2)運動原理從AVR CPU中發(fā)送出來的一組控制伺服電機的控制信號被稱為“脈沖序列”,如圖2-1所示。AVR CPU能夠通過編程產生這樣的信號波形,而且還能用它任意的一個I/O口進行信號的輸出。在下面的例子中,AVR CPU向 PC2(跨步伺服電機)和PC3(傾斜伺服電機)各發(fā)送一個1500微秒的脈沖信號。在1500微秒的高電平送出后,AVR CPU繼續(xù)發(fā)送一個25毫秒的低電平給該引腳,產生一組脈沖序列如圖所示,這個脈沖序列由1500微秒的高電平和25毫秒的低電平組成。伺服電機的控制
6、主要由1500微秒的高電平來控制,我們通常稱這一段時間為脈寬。脈沖信號由低電平到高電平這一變化過程我們稱為上升沿。同理,由高電平到低電平的變化我們稱為下降沿。步行機器人的行走的分4個步驟:a. 向一邊傾斜b. 移動被提起的那只腿c. 向另一邊傾斜d. 移動被提起的那只腿3)滑動式轉彎步行機器人有點不大靈活。它只能向前或向后移動它的步子,不能相對它的身體旋轉步子。但這并沒有阻礙他的轉彎能力,當走直線時,步行機器人和人走直線是相似的,而轉彎就明顯不同。步行機器人轉彎和人最接近的是就象人穿著平底鞋站在冰面上轉彎的情形。人站在冰上右轉彎的過程是相當簡單的,把你的左腳向前邁一步放在地面上,然后把左腳向后
7、滑行回收,這樣你就可以以右腳為軸向右轉了。如果冰是濕滑的話可能要多次轉動才能轉過 90 度。同樣要左轉就滑行右腳。標準的步行機器人在冰上轉彎的效果并不理想,但利用這種原理,在其它表面上可以轉得很好。步行機器人的平滑金屬腳提供了一個光滑的表面。當它站在能提供摩擦力的表面上來做轉彎,效果會更加好。如果走的平面太光滑,那么對步行機器人的腳掌進行一些處理以便提供更大的摩擦力。最典型的做法四、相關資料及問題(一)、PWM 直流電機調速原理:通過AVR 單片機ATmega8直接產生PWM 波形經(jīng)過電機驅動芯片L298 分別驅動兩個直流電機,PWM 將占空比不同的脈沖變成不同的電壓驅動直流電機轉動從而得到不
8、同的轉速,且實現(xiàn)電機啟動、停止、正反轉等功能。(二)、直流電機控制模塊1、控制板的使用說明#define POSITIVE_DIR 1/正向旋轉#define NEGATIVE_DIR 0 /反向旋轉#define LEFT_MOTOR 0/左電機#define RIGHT_MOTOR 1/右電機#define NOT_STOP 0/不停止#define STOP 1/停止#define BY_10MS 0/時間控制系數(shù)10毫秒倍率#define BY_100MS 1/100毫秒倍率#define BY_1000MS 2/1000毫秒倍率#define NOT_CONTROL_TIME 3/不
9、控制時間2、通過TTL串口驅動PWM直流電機驅動模塊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ā)送時間倍率,0255rs_send_byte(0xbb);/發(fā)送控制命令的尾部,恒為0xbbwhile(rs_f_TI=0);/等待所有的命令發(fā)出完畢EA=0;3、幾個基本函數(shù)驅動電機后退函數(shù)原
11、理:左電機正轉,右電機反轉,以同樣的速度旋轉,完成后退動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時間倍率(0255);時間倍率*時間系數(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);驅動電機右轉函數(shù)原理:左右電機正轉,以不一樣的速度旋轉,完成右轉動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時間倍率(0255);時間倍率*時間系數(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);驅動電機左轉函數(shù)原理:左右電機反轉,以不一樣的速度旋轉,完成左轉動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時間倍率(0255);時間倍率*時間系數(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);驅動電機前進函數(shù)原理:左電機反轉,右電機正轉,以同樣的速度旋轉,完成后退動作參數(shù):Speed:速度系數(shù)(0255);TimeFactor:時間系數(shù)(X10ms,X100ms,X1000ms);Seconds:時間倍率(0255);時間倍率*時間系數(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:硬串口的相關程序。包含該文件后,在程序中調用uart_Init()函數(shù),即可完硬串口的初始化。soft_rs232.h:TTL-RS232的實現(xiàn)程序。在該文件中,可修改TTL-RS23
16、2的通信波特率以及輸出端口。如果在設置的TTL-RS232數(shù)據(jù)輸出端口外接一個RS232電平轉換芯片并搭載DB9串口接口,這樣相當于構建了C51平臺上的第二個串口。該程序構建的串口為單工串口。Movement.h:該文件提供了龍人貝塔的運動控制函數(shù)的范例。在包含該文件之前,請包含BetaRobot.h文件。否則,在編譯程序的時候會出現(xiàn)錯誤。 PWM_Init()函數(shù)的作用是為初始化第一層與第二層之間的TTL串口連接。其中TTL串口的數(shù)據(jù)輸出口定義為P1.0口,在程序設計的過程中,請回避該端口,避免引起機器人運動控制的錯誤。在KEIL工程中,如果要使用到機器人的運動控制部分,那么在主程序的開頭部
17、分,就必須首先執(zhí)行該函數(shù),進行TTL串口初始化。五、步行機器人走“日”字#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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《特種設備規(guī)范》課件
- 煤礦瓦斯治理新技術
- 出租汽車行業(yè)服務質量評價與提升策略
- 二零二五年度生態(tài)環(huán)保產業(yè)投資履約類保函擔保合同4篇
- 龍泉煤礦下放25T鏟運車調研情況
- 二零二五年度古建筑專用標磚定制購銷協(xié)議3篇
- 不安全行為應急管理與處置
- 二零二五版食堂泔水處理與無害化處理設施建設合同3篇
- 二零二五年度牙科醫(yī)院患者滿意度提升承包服務合同4篇
- 2025年度大棚養(yǎng)殖基地產權轉讓及合作開發(fā)協(xié)議4篇
- 使用錯誤評估報告(可用性工程)模版
- 公司章程(二個股東模板)
- GB/T 19889.7-2005聲學建筑和建筑構件隔聲測量第7部分:樓板撞擊聲隔聲的現(xiàn)場測量
- 世界奧林匹克數(shù)學競賽6年級試題
- 藥用植物學-課件
- 文化差異與跨文化交際課件(完整版)
- 國貨彩瞳美妝化消費趨勢洞察報告
- 云南省就業(yè)創(chuàng)業(yè)失業(yè)登記申請表
- UL_標準(1026)家用電器中文版本
- 國網(wǎng)三個項目部標準化手冊(課堂PPT)
- 快速了解陌生行業(yè)的方法論及示例PPT課件
評論
0/150
提交評論