ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:53.51KB ,
资源ID:3981121      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3981121.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(陈正敏步行机器人实验报告Word下载.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

陈正敏步行机器人实验报告Word下载.docx

1、3、掌握机器人机械工作方式,红外避障工作原理,掌握机器人尾随行走所需的闭环控制算法,学会将机械运动和自动化(利用软、硬件)紧密结合。4、学会查阅科技参考资料,根据自己的设计任务和设计方法编制程序、调试程序软、硬件联机调试,达到设计要求收集实验数据,并对结论进行分析,写好实验报告。三、实验原理1)时间测量和电压在这本学习指南中,我们将多次提到几个重要的时间单位秒(s),毫秒(ms),微秒(us)。通常,我们将秒用小写字母“s ”表示,所以,可以将1秒写成1s。毫秒则用“ms”表示,1毫秒等于1/1000秒;微秒用“us”表示,1微秒等于1/1000000秒,从毫秒、微秒与秒的关系你是否已经推出:

2、1毫秒=1000微秒。在2)运动原理从AVR CPU中发送出来的一组控制伺服电机的控制信号被称为“脉冲序列”,如图2-1所示。AVR CPU能够通过编程产生这样的信号波形,而且还能用它任意的一个I/O口进行信号的输出。在下面的例子中,AVR CPU向 PC2(跨步伺服电机)和PC3(倾斜伺服电机)各发送一个1500微秒的脉冲信号。在1500微秒的高电平送出后,AVR CPU继续发送一个25毫秒的低电平给该引脚,产生一组脉冲序列如图所示,这个脉冲序列由1500微秒的高电平和25毫秒的低电平组成。伺服电机的控制主要由1500微秒的高电平来控制,我们通常称这一段时间为脉宽。脉冲信号由低电平到高电平这

3、一变化过程我们称为上升沿。同理,由高电平到低电平的变化我们称为下降沿。步行机器人的行走的分4个步骤:a. 向一边倾斜b. 移动被提起的那只腿c. 向另一边倾斜d. 移动被提起的那只腿3)滑动式转弯步行机器人有点不大灵活。它只能向前或向后移动它的步子,不能相对它的身体旋转步子。但这并没有阻碍他的转弯能力,当走直线时,步行机器人和人走直线是相似的,而转弯就明显不同。步行机器人转弯和人最接近的是就象人穿着平底鞋站在冰面上转弯的情形。人站在冰上右转弯的过程是相当简单的,把你的左脚向前迈一步放在地面上,然后把左脚向后滑行回收,这样你就可以以右脚为轴向右转了。如果冰是湿滑的话可能要多次转动才能转过 90

4、度。同样要左转就滑行右脚。标准的步行机器人在冰上转弯的效果并不理想,但利用这种原理,在其它表面上可以转得很好。步行机器人的平滑金属脚提供了一个光滑的表面。当它站在能提供摩擦力的表面上来做转弯,效果会更加好。如果走的平面太光滑,那么对步行机器人的脚掌进行一些处理以便提供更大的摩擦力。最典型的做法四、相关资料及问题(一)、PWM 直流电机调速原理:通过AVR 单片机ATmega8直接产生PWM 波形经过电机驱动芯片L298 分别驱动两个直流电机,PWM 将占空比不同的脉冲变成不同的电压驱动直流电机转动从而得到不同的转速,且实现电机启动、停止、正反转等功能。(二)、直流电机控制模块1、控制板的使用说

5、明#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 /时间控制系数 10毫秒倍率#define BY_100MS 1 /100毫秒倍率#define BY_1000MS 2 /1000毫秒倍率#define NOT_CONTROL_TIME 3 /不控制时间2、通过TTL串口驱动PWM直流电机驱动模块void wri

6、te_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 = bDirection | bSide | bStop | TimeFactor; /组合命令字节 soft_send_enabl

7、e (); /允许软串口发送 EA=1; rs_send_byte(0xaa); /发送控制命令的头部,恒为0xaa rs_send_byte(Command); /发送命令字节,想要了解命令格式 rs_send_byte(Speed); /发送速度描述字节,0255 rs_send_byte(Time); /发送时间倍率,0255 rs_send_byte(0xbb); /发送控制命令的尾部,恒为0xbb while(rs_f_TI=0); /等待所有的命令发出完毕 EA=0;3、几个基本函数驱动电机后退函数原理:左电机正转,右电机反转,以同样的速度旋转,完成后退动作参数:Speed:速度系

8、数(0255);TimeFactor:时间系数(X10ms,X100ms,X1000ms);Seconds:时间倍率(0255);时间倍率*时间系数=实际时间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_MOTOR,NOT_STOP,TimeFactor,Speed,Second

9、s);驱动电机右转函数左右电机正转,以不一样的速度旋转,完成右转动作void Right(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds) write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);驱动电机左转函数左右电机反转,以不一样的速度旋转,完成左转动作void Left(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds) writ

10、e_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);驱动电机前进函数左电机反转,右电机正转,以同样的速度旋转,完成后退动作void Forward(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds)(三)、头文件及PWM_Init()函数说明uart.h:硬串口的相关程序。包含该文件后,在程序中调用uart_Init()函数,即可完硬串口的初始化。soft_rs232.h:TTL-RS232的实现程序。在该文件中,可修改TTL-R

11、S232的通信波特率以及输出端口。如果在设置的TTL-RS232数据输出端口外接一个RS232电平转换芯片并搭载DB9串口接口,这样相当于构建了C51平台上的第二个串口。该程序构建的串口为单工串口。Movement.h:该文件提供了龙人贝塔的运动控制函数的范例。在包含该文件之前,请包含BetaRobot.h文件。否则,在编译程序的时候会出现错误。 PWM_Init()函数的作用是为初始化第一层与第二层之间的TTL串口连接。其中TTL串口的数据输出口定义为P1.0口,在程序设计的过程中,请回避该端口,避免引起机器人运动控制的错误。在KEIL工程中,如果要使用到机器人的运动控制部分,那么在主程序的

12、开头部分,就必须首先执行该函数,进行TTL串口初始化。五、步行机器人走“日”字#includeuart.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 1200 /tilt limits#define CenterTil

13、t 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#define SL 3 /representation of stri

14、deleft#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 WideTurnLeft9=TL,SR,TC,SL,TR,SL,TL,SR,xx;

15、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/-movement routines-void MovementTil

16、t(void) /tilt int step; Pulses= CurrentTilt; if(PulsesNewValue) step=-TiltStep; else step=TiltStep; while(Pulses!=NewValue) TiltServo=1; delay_nus(Pulses); TiltServo=0; StrideServo=1; delay_nus(CurrentStride); StrideServo=0; delay_nms(MoveDelay); Pulses=Pulses+step; CurrentTilt=NewValue;void Movemen

17、tStride(void) /stide Pulses= CurrentStride; step=-StrideStep; step=StrideStep; delay_nus(CurrentTilt); CurrentStride=NewValue;/-subroutines-void ResetCC(void) /move initial CurrentTilt=CenterTilt; CurrentStride=CenterStride; for( Pulses=0;Pulses=10;Pulses=Pulses+StrideStep) delay_nus(CenterTilt); de

18、lay_nus(CenterStride);void Movement(void) /move by data table referenced by Mx while(*Mx != xx) switch(*Mx) /比3小,执行MovementTilt() case 0: NewValue=LeftTilt; MovementTilt(); break; case 1: NewValue=CenterTilt; case 2: NewValue=RightTilt; case 3: NewValue=LeftStride; MovementStride(); case 4:NewValue=

19、CenterStride; case 5: NewValue=RightStride; Mx+; /INPUT;Mx=table index ; END:Mx=xx /-Main-int main(void) uart_Init(); printf(Program started!rn); ResetCC() ; for(MoveLoop=1;MoveLoopMoveLoop+) / WalkForward Mx=WalkForward; Movement(); =7;MoveLoop+) /turn right Mx=TurnRight; Movement();=5; Mx=FinishForward; /end五、心得体会通过这次对于机电综合实验的学习,从中获益良多。首先让我对机电这门课程有了更加深入的了解,机械的自动化才是机械的最终走向,随着几点这门学科越来越发展,他的研究领域将会变得更加广泛,成果也将越来越多的应用于人们的生产生活实践中。同时通过这次实践我也更加体会到了团队协作的重要性,在未来的工作学习中我们也将会碰到越来越多需要团队协作才能更好完成的事情,所以团队的重要性是不言而喻的,我们要不断的从团队中学习,更加的要把自己融入团队之中,只有这样我们才能不断进步。参考文献步行机器人与高级 C 程序设计秦志强C51单片机应用与C语言程序设计秦志强,电子工业出版社;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2