基于单片机的寻迹小车——功能实现介绍

前言

本文中博主将基于一个赛道来讲解怎么实现每个环节的功能。赛道如下:(画的有点丑,将就着看吧…h)
基于单片机的寻迹小车——功能实现介绍_第1张图片

直线

现在给大家三秒钟时间思考,小车走直线过程需不需要寻迹?…1…2…3…答案是肯定的!为什么呢?直线不就放直就自己走了嘛?相信大家都有这样一个经历,把自己的眼睛闭上往前走,永远走不了直线,其中一个重要的原因就是人的两条腿并不是完全对称的!那对于小车来讲呢,就是左右电机的转速等一系列参数也不是相同的,可以这样说,世界上就没有完全相同的东西!(是基于这个场景啊,大家不要抬杠)上节已经让大家自行去实现pwm调速了,我们把速度调到我们想要的值时,尽管左右电机给的pwm值相同,走着走着就会发现小车会往一个方向偏移。这里给大家引出一个速度环的概念,也就是经典算法PID,这里要实现的功能很简单用不到PID,大家根据自身情况去了解一下即可。
功能实现:上节已经介绍了红外传感器,工作原理需要大家自行去了解,我们要实现直线寻迹至少需要三个这样的模块,赛道上黑线的宽度和该模块的宽度大致相等,三个传感器并排固定在小车前端,分成了左,中,右三部分,当走边传感器检测到黑线时,证明行进方向偏左了,这时我们就需要代码来实现小车往右来纠正该偏移。中部就正常前进,右部和左边实现类似。

S弯道

S弯道和直线实现基本相同,不同的是S弯道它是一直在弯着的,可以和直线对比一下,当直线我们纠正回直走时,小车是可以在一定时间内“走直线的”,而S弯呢,当纠正回来后立马又需要纠正!这就和直线纠正不同的一点是,我们在S弯道纠正时需要更大的电机差速!为此我们需要写一对左转右转差速更大的函数来实现过S弯道。
注:大家可以先用直线过程纠正代码实现一下,也有可能实现的。

直角转弯

相信大家根据上面介绍的方法已经想到方案了,就是当中间和右边的传感器同时检测到黑线时,实现直角转弯,怎么让轮子配合实现直角转弯很多优秀的博主已经把代码放在博客上供大家学习了,大家自行去查阅即可。

过十字路口

碰到十字路口时,我们需要继续直走,那就是当三个传感器同时检测到黑线时继续直走就行了。

避障

现在也到了最重要的环节,就是完成寻迹走后,还要实现转弯避障功能,这里给大家推荐的方案是使用超声波模块检测小车到墙的距离,当小于某个值时,进行左转弯或右转弯,转弯过后再适当直走一段距离后就完成了该赛道的任务了。
功能实现:当车头出赛道后,及三个传感器都没有感应到黑线,这时我们启动超声波测距,当距离小于我们设定的最小距离时,实现转弯避障(可以直接调用直接转弯的代码)。
基于单片机的寻迹小车——功能实现介绍_第2张图片

注:关于超声波模块的使用,很多优秀的文章都有介绍,这里不再叙述。

总结

本章只是基于一个赛道来给大家讲解一下怎么判断什么时候实现哪些功能,没有给大家任何代码,因为我觉得现在已经有很多优秀的文章都有介绍了,不想做一个“搬运工”,想让大家养成自己查阅资料的好习惯,这里只是带大家把所有要实现的功能叙述出来,大家根据每个功能特定去查找例程代码都是能找到的,还是那句话,代码不是最重要的,重要的是理解逻辑怎么实现的。大家也可以私信博主,将遇到的问题和代码发给我,我也很乐意帮助大家一起解决问题。

你可能感兴趣的:(单片机寻迹小车,单片机,嵌入式硬件,51单片机)