[51单片机] 关于小车通过光电传感检测前进距离的精确问题?

[复制链接]
1762|6
 楼主| 侠过留香 发表于 2014-5-5 12:11 | 显示全部楼层 |阅读模式
本帖最后由 侠过留香 于 2014-5-6 11:30 编辑

我最近在做一个关于小车的项目,要求在黑线十字路口处能实现精确左转和右转90度。我是采取的是检测到全黑时,小车停下,然后再前进大约10cm的距离,再左转或者右转。   前进10厘米的方法是采用判断光电传感器的脉冲个数来的

void exint0() interrupt 0       //INT0中断入口
{
        MP++;
}
伪代码如下
前进
MP=0;                           //MP清0
while(MP<90);
刹车
左转/右转

这样大部分还是挺准的,但是有的时候就会冲出去大概十多厘米,导致转弯不好

如何才能让稳定性提高呢?                                                         
 楼主| 侠过留香 发表于 2014-5-5 12:24 | 显示全部楼层
 楼主| 侠过留香 发表于 2014-5-5 12:24 | 显示全部楼层
 楼主| 侠过留香 发表于 2014-5-5 17:51 | 显示全部楼层
不能沉啊
df_flying 发表于 2014-5-5 21:13 | 显示全部楼层
几个方面您参考下吧:1,加上串口数据,看看冲出去时。MP的计数响应情况,可以在中断里将MP发送出来,发现问题具体出在哪里。2,硬件上,增加对脉冲的处理,或者说是矫正吧,或者用硬件计数器代替外部中断等。3,增加光电传感器精度,以用来误差的减小,或容错的增加。
 楼主| 侠过留香 发表于 2014-5-6 11:30 | 显示全部楼层
df_flying 发表于 2014-5-5 21:13
几个方面您参考下吧:1,加上串口数据,看看冲出去时。MP的计数响应情况,可以在中断里将MP发送出来,发现 ...

加上串口后,每次都是到100的时候就停了。就算冲出去了,也差不多是100,不知道是什么问题呢
 楼主| 侠过留香 发表于 2014-5-6 16:42 | 显示全部楼层
终于找到问题了,是由于其他的中断影响,在while之前关掉中断,停车后再开中断就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部