小车循迹控制程序设计(编辑修改稿)内容摘要:

_motion(1470, 1700,1)。 //左转修正 }else if(((!P22_state())amp。 amp。 P23_state())||((!P21_state())amp。 amp。 (!P22_state())amp。 amp。 (!P23_state())amp。 amp。 P24_state())) { motor_motion(1300, 1550,1)。 //右转修正 } else{ motor_motion(1700,1300,1)。 } } ( 1) 当小车发生 右 偏移时,各传感器状态信号如下: 通过判断语句:if((P22_state()amp。 amp。 (!P23_state()))||(P21_state()amp。 amp。 (!P22_state())amp。 amp。 (!P23_state())amp。 amp。 (!P24_state())))判断小车是否 向左偏移,若发生偏移此时通过调节左右轮的速度来实现,左偏时调用motor_motion(1770, 1740,1)实现左轮前进速度大于右轮前进速度来实现向右偏移来对偏移进行修正。 ( 2 ) 当小车发生右偏移时,各传感器状态信号如下: 1 0 0 0 0 0 0 0 1 1 0 0 通过判断语句: if(((!P22_state())amp。 amp。 P23_state())||((!P21_state())amp。 amp。 (!P22_state())amp。 amp。 (!P23_state())amp。 amp。 P24_state())) 判断 小车是否向右偏移。 若发生偏移,此时通过调节坐游轮的速度来实现,右偏时调用 motor_motion(1550, 1300,1),通过调节左右轮的速度,当右轮速度大于左轮速度进行修正。 编程头文件 ( 1)各个头文件如下图 图 ( 2) ,帮助系统更加理性化,易于操作。 例如小车开始部分延时 3秒。 : void delay_nus(unsigned int i) { i=i/10。 while(i)。 1 0 0 0 0 0 0 0 1 1 0 0 } void delay_nms(unsigned int n) { n=n+1。 while(n) delay_nus(900)。 //进行时间补偿 } ( 3) 头文件 其作用是 获取 4个 QTI传感器采集的信号。 为 51 单片机提供判断的输入数据。 P21口实例 详细代码如下: /* 函数名称: P21_state() 功能: 获得左边第一个 QTI的返回信号 参数:无参数 返回值: 1:高电平,看到黑线; 0:低电平,看到白线 */ int P21_state() { return (P2amp。 0x02)?1:0。 } ( 4) 头文件其作用是 定义用到的数据类型、变量。 方便程序设计,简化程序结构。 详细代码如下: ifndef GLOBAL_H define GLOBAL_H typedef unsigned int uint16_t。 typedef unsigned char uint8_t。 typedef unsigned char bool。 define true 1 define false 0 endif ( 5) 控制两个舵机运转。 详细代码如下: include sbit left_motor = P1^0。 //左电机接口 sbit right_motor = P1^1。 //右电机接口 define LEFT_FWD 1700 //高电平时间定义,单位微秒 define LEFT_BWD 1300 define LEFT_SMALL_FWD 1530 define LEFT_SMALL_BWD 1450 define RIGHT_FWD 1300 define RIGHT_BWD 1700 define RIGHT_SMALL_FWD 1450 define RIGHT_SMALL_BWD 1530 函数名称 :motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count) 作用:向伺服电机输出若干个 PWM波,波形的占空比可控制 参数: left_val:左边电机的高电平时间宽度; right_val:右边电机的高电平时间宽度;count:脉冲数目 返回值:无返回值 void motor_motion(uint16_t left_val, uint16_t right_val, uint8_t count) { uint8_t i。 for(i=0。 icount。 i++) { left_motor = 1。 delay_nus(left_val)。 left_motor = 0 right_motor = 1。 delay_nus( right_val )。 right_motor = 0。 delay_nms(20)。 //输出一定数量的 PWM波形 } } 第 3 章 详细设计 硬件设计与实现 小车是由多个硬件零件组装而成,每个零件负责不同的功能,根据设计任务和要实现的主要功能,来进行硬件设计。 硬件设计原理图如下: 图 总体电路 图 图 QTI传感器 系统主程序流程 小本系统设计 了五个个模块,分别为起点到中心点路线模块、中心点到 D点、 D点 黑 色点、 黑 色点到中心点、中心点返回到起始点路线模块。 通过对每个功能模块的调用实现系统要求的功能。 功能模块详细设计 起始点到中心点路线模。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。