1、机电综合实验履带式机器人实验报告实验名称:机电综合实验履带式机器人专业班级: 指导老师:姓名:学号:一、实验要求1、了解和掌握自动化系统集成的一般过程和方法,同学们在课程中逐步掌握使用、调试、维护自动化系统方面的能力。2、了解AT89S52芯片的主要性能,学会分析和使用常用电子芯片、电子元件和仪器设备的能力。3、掌握机器人机械工作方式,触觉开关及红外导航工作原理,掌握机器人尾随行走所需的闭环控制算法,学会将机械运动和自动化(利用软、硬件)紧密结合。4、学会查阅科技参考资料,根据自己的设计任务和设计方法编制程序、调试程序软、硬件联机调试,达到设计要求收集实验数据,并对结论进行分析,写好实验报告。
2、二、硬件连接设备硬件部分电机、直流电机控制板(主控芯片AVR)、C51教学板(AT89S52单片机)履带式机器人本体固结,只需要进行连线。接线时,AT89S52单片机板P10口与直流电机控制板RX(接收口)连接,P13口VIN接跳电位,GND接地线;电源线AVR板+5V接AT89S52单片机+5V,GND接地线;连接时注意各口颜色。 机器人程序通过连接到PC 机或者笔记本电脑的并口上的ISP 下载线来下载到教学板上的单片机内。下载线一端连接到PC 机或者笔记本的并行接口上,而另一端(小端)连接到教学板上的程序下载口上。三、相关资料及问题(一)、PWM 直流电机调速原理:通过AVR 单片机ATm
3、ega8直接产生PWM 波形经过电机驱动芯片L298 分别驱动两个直流电机,PWM 将占空比不同的脉冲变成不同的电压驱动直流电机转动从而得到不同的转速,且实现电机启动、停止、正反转等功能。(二)、直流电机控制模块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 /时间控制系数 10毫秒倍率#def
4、ine BY_100MS 1 /100毫秒倍率#define BY_1000MS 2 /1000毫秒倍率#define NOT_CONTROL_TIME 3 /不控制时间2、延时:i=12 ,i的最小延时单12 usvoid delay_nus(unsigned int i) i=i/10; while(-i); /延时n msvoid delay_nms(unsigned int n) n=n+1; while(-n) delay_nus(900); /延时 1ms,同时进行补偿3、通过TTL串口驱动PWM直流电机驱动模块void write_pwm(unsigned char bDirec
5、tion, 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_enable (); /允许软串口发送 EA=1; rs_sen
6、d_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;4、几个基本函数驱动电机后退函数原理:左电机正转,右电机反转,以同样的速度旋转,完成后退动作参数:Speed:速度系数(0255);TimeFactor:时间系数(X10
7、ms,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,Seconds);驱动电机右转函数原理:左右电机正转,以不一样的速
8、度旋转,完成右转动作参数:Speed:速度系数(0255);TimeFactor:时间系数(X10ms,X100ms,X1000ms);Seconds:时间倍率(0255);时间倍率*时间系数=实际时间void Right(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds) write_pwm(POSITIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds); write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,Time
9、Factor,Speed,Seconds);驱动电机左转函数原理:左右电机反转,以不一样的速度旋转,完成左转动作参数:Speed:速度系数(0255);TimeFactor:时间系数(X10ms,X100ms,X1000ms);Seconds:时间倍率(0255);时间倍率*时间系数=实际时间void Left(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds) write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds); wri
10、te_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);驱动电机前进函数原理:左电机反转,右电机正转,以同样的速度旋转,完成后退动作参数:Speed:速度系数(0255);TimeFactor:时间系数(X10ms,X100ms,X1000ms);Seconds:时间倍率(0255);时间倍率*时间系数=实际时间void Forward(unsigned char Speed, unsigned char TimeFactor, unsigned char Seconds) write_pwm(NEGATIVE_DI
11、R,LEFT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds); write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,TimeFactor,Speed,Seconds);(三)、头文件及PWM_Init()函数说明uart.h:硬串口的相关程序。包含该文件后,在程序中调用uart_Init()函数,即可完硬串口的初始化。soft_rs232.h:TTL-RS232的实现程序。在该文件中,可修改TTL-RS232的通信波特率以及输出端口。如果在设置的TTL-RS232数据输出端口外接一个RS232电平转换芯片并搭载DB9串口接口
12、,这样相当于构建了C51平台上的第二个串口。该程序构建的串口为单工串口。Movement.h:该文件提供了龙人贝塔的运动控制函数的范例。在包含该文件之前,请包含BetaRobot.h文件。否则,在编译程序的时候会出现错误。 PWM_Init()函数的作用是为初始化第一层与第二层之间的TTL串口连接。其中TTL串口的数据输出口定义为P1.0口,在程序设计的过程中,请回避该端口,避免引起机器人运动控制的错误。在KEIL工程中,如果要使用到机器人的运动控制部分,那么在主程序的开头部分,就必须首先执行该函数,进行TTL串口初始化。(四)、匀加、减速的实现1、匀加速运动程序片段:for(pulseCou
13、nt=10;pulseCount=200;pulseCount=pulseCount+1)P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1;delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);上述for 循环语句能使机器人的速度由停止到全速。循环每重复执行一次,变量pulseCount 就增加1:第一次循环时,变量pulseCount 的值是10,此时发给P1_1、P1_0 的脉冲的宽度分别为1.51ms、1.49ms;第二次循环时,变量pulseCount 的值是11,此时发给P1_1、P1_0 的脉冲
14、的宽度分别为1.511ms、1.489ms。随着变量pulseCount 值的增加,电机的速度也在逐渐增加。到执行第190 次循环时,变量pulseCount 的值是200,此时发给P1_1、P1_0 的脉冲的宽度分别为1.7ms、1.3ms,电机全速运转。2、匀减速可参照匀减速通过for(pulsecount=200;pulsecount)=pulsecount= pulsecount-1)来实现速度的逐渐减小。(五)、若输出由P1.0改为P1.1需要做什么?因为soft_rs232.h文件为软串口驱动的头文件,在这个驱动里,采用P1.0为TTL串行通信的发送口,所以其定义串口发送管脚因由s
15、bit rs_TXD = P10 ;改为sbit rs_TXD = P11; 在程序设计的过程中,请回避P1.1端口,避免引起机器人运动控制的错误。四、程序流程图起始 前进 左转 前进左转前进左转前进五、正方形程序#include#includevoid Forward(void) write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,200,60); write_pwm(POSITIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,200,60); delay_nms(2000);void Left_Turn(vo
16、id) write_pwm(NEGATIVE_DIR,LEFT_MOTOR,NOT_STOP,BY_1000MS,200,180); write_pwm(NEGATIVE_DIR,RIGHT_MOTOR,NOT_STOP,BY_1000MS,200,180); delay_nms(2000);int main(void) char Navigation16=F,L,F,L,F,L,F,L,F,L,F,L,F,L,F,Q; int address=0; uart_Init(); printf(Program Running!n); delay_nms(100); PWM_Init(); whil
17、e(Navigationaddress!=Q) switch(Navigationaddress) case F:Forward();break; case L:Left_Turn();break; address+; while(1);六、心得体会通过本次实验我对机电一体化系统的基本组成,控制方式、控制对象的基本特征及工作机理,有更进一步全面地了解,拓宽了知识面,锻炼了工程应用能力,综合素质得到了较大的提高。这次试验我们做的进度比较慢,虽然也有电脑等硬件有过一点小问题的原因,但最主要的是没有仔细阅读和学习编程所需相关资料,导致在做的过程中出现了不少问题。现在回过头来看其实实验并不是想象的那么难,所以不该只做到正方、S这样的阶段。通过这次试验也明白了做设么事情一点要把准备工作做好,只有这样才能把事做好。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1