哈尔滨工业大学课程设计说明书(论文)
初始化检测DISDIS大于50是快速前进否DIS大于10是慢速前进否左转90度检测DISDIS大于10是慢速前进否右转180度检测DISDIS大于10是慢速前进否右转90度
图错误!文档中没有指定样式的文字。2 主程序流程图
哈尔滨工业大学课程设计说明书(论文)
2.2 主要模块的基本原理
2.2.1 超声波探测模块
超声波探测模块的基本原理及使用方法如下:
IO口触发,给Sin口至少5~10us的高电平,启动测量; 模块自动发送8个40Khz的方波,自动检测是否有信号返回;
有信号返回,通过IO口Sin输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*340)/ 2。
图2- 3 超声波探测模块时序图 2.2.2 直流电机控制模块
机器人的动作由伺服电机控制。
伺服电机与单片机接口的连接,图电机连接原理图和实际接线图,P1_0引脚的控制输出用来控制右的伺服电机,而P1_1则用来控制左边的伺服电机。
哈尔滨工业大学课程设计说明书(论文)
图2- 4 左、右电机连接图
控制电机运动转速的是高电平持续的时间,当高电平持续时间为1.3ms时,电机顺时针全速旋转,当高电平持续时间1.7ms时,电机逆时针速旋转。
图2- 5 电机顺、逆时针旋转控制脉冲图
所以可知,若令左、右车轮电机高电平持续时间为1.5ms时,小车将处于静止状态。 若令左车轮电机高电平持续时间为1.7ms,右车轮电机高电平持续时间为1.3ms时,则左车轮电机逆时针,右车轮电机顺时针,小车将会以最快的速度前进。此时,若想改变小车的前进速度,则逐渐减小左电机的高电平时间,逐渐增加右电机的高电平时间,则可以减小车速。
同理可知,若令左车轮电机高电平持续时间为1.3ms,右车轮电机高电平持续时间为1.7ms时,则左车轮电机顺时针,右车轮电机逆时针,小车将会以最快的速度后退。
当需要转弯时,通过分析和测试我们可以知道,当小车想左转时,需令左右两轮均顺时针旋转,而当小车想右转时,需令左右两轮均逆时针旋转。
通过对直流电机模块的学习和了解,我已经了解了控制小车运动的方法。
哈尔滨工业大学课程设计说明书(论文)
2.3 需解决的关键问题
关键问题首先是要学会使用超声波测距器件,根据老师所提供的知识,利用图像读懂超声波器件的工作时序,根据时序以及超声波测距器件的工作信号特点,并且结合单片机的定时器/计数器等功能,来顺利的完成小车对于前方障碍物距离的测量。
另一个比较关键的问题就是确定小车的避障方案,根据上方的主程序流程图,我们采用一种避障方案,在接下的设计中,我们需要对于该方案能否正确躲避障碍进行验证,并且需要不断思考,提出更多的更好的更有效的避障方案。
2.4 具体实施方案及程序
2.4.1 程序初始化
初始化函数中需要对定时器/计数器的模式进行设定,以及初始值的设定,流程图如下
设定T0工作模式初值设为0TR0置0不允许计数 程序如下:
void IO_init(void) {
EA=1; ET0=1;
TMOD=0x11;//将T0定时器/计数器设置为16位计数模式 TH0=0x00; //初始值为0 TL0=0x00;
TR0=0; //不开始计数 }
哈尔滨工业大学课程设计说明书(论文)
2.4.2 测距函数
测距函数是本程序的比较关键的一个函数,需要根据仪器的本身特点来进行编程,流程图如下
SIN置0SIN置1并延时SIN置0等待SIN由0变1TR0置1开始计数等待SIN由1变0TR0置0停止计数计算DIS 测距函数如下:
void getx(unsigned char a) //测距函数 {
TH0=TL0=0; //初始值设置为0 if(a) {
Sin=0; //Sin置0
Sin=1; //Sin置1,并且延时一段时间,提供一个测距的触发脉冲 delay_5us();
Sin=0; //Sin重新置0 }
while(Sin);
while(!Sin);//SIN信号从低电平变为高电平,此时跳出该循环TR0置1,开始计数 TR0=1;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库哈工大2012测控系单片机课程设计说明书 - 超声波避障小车(2)在线全文阅读。
相关推荐: