对于大多数学生/爱好者来说,Line Follower机器人是一种简单而有趣的机器人。在本教程中,我们将学习Line Follower机器人的工作原理,以及如何使用PIC单片机PIC16F877A构建机器人。PIC16F877A是Microchip的40引脚多功能MCU,我们在完整的PIC教程系列中使用了该IC。如果您是新手,请在这里查看这些PIC教程,以了解该IC的基础知识以及如何将程序上传到微控制器。由于我们已经在教程中介绍了此信息,因此我们将在下面的说明中将其跳过。
如果您对机器人技术感兴趣,那么您应该对“ Line Follower Robot ”这个名称非常熟悉。只需使用一对传感器和电机,该机器人就可以跟随一条线。该机器人为您提供了无限发展的空间,例如Kiva(亚马逊仓库机器人)之类的机器人就是一个例子。您还可以检查我们的其他Line Follower机器人:
- 使用8051单片机的线跟随机器人
- 使用Arduino的Line Follower机器人
- 使用Raspberry Pi的Line Follower机器人
所需材料:
- PIC16F877A
- 红外传感器(2个)
- 直流减速电机(2Nos)
- L293D电机驱动器
- 躺椅(您也可以使用硬纸板建造自己的躺椅)
- 行动电源(任何可用的电源)
线路跟随器的概念
Line Follower Robot能够借助IR传感器跟踪一条线路。该传感器具有红外发射器和红外接收器。红外发射器(IR LED)发射光,接收器(光电二极管)等待发射的光返回。红外光仅在被表面反射时才会返回。鉴于所有表面都不能反射红外光,只有彩色表面可以完全反射它们,而黑色表面可以完全观察到它们,如下图所示。在此处了解有关红外传感器模块的更多信息。
现在,我们将使用两个红外传感器来检查机器人是否与生产线在一条直线上,并使用两个电动机来校正机器人是否移出了轨道。这些电动机需要大电流,并且应该是双向的。因此,我们使用L293D之类的电机驱动器模块。我们还需要像PIC这样的微控制器,根据来自红外传感器的值来指示电动机。下面是其简化框图。
这两个红外传感器将被放置在生产线的任一侧。如果所有传感器均未检测到黑线,则它们会通过PIC微控制器指示电机向前移动,如下所示
如果左传感器在黑线上,则微控制器指示机器人通过单独旋转右轮来向左转。
如果右传感器在黑线上,则微控制器指示机器人通过单独旋转左轮来向右转。
如果两个传感器都在黑线上,则机器人将停止。
这样,机器人将能够沿线行驶而不会脱离轨道。现在让我们看看电路和代码的外观。
电路图和说明:
该基于PIC的线路跟随器机器人 的完整电路图 如下所示
该电路使用两个IR传感器和一对DC齿轮电动机,以及一个如上所述的电动机驱动器模块。该项目中使用的电机驱动器模块是L293D,我们将需要一个电机驱动器,因为PIC单片机的输出引脚无法提供足够的电流来驱动电机。如图所示,该模块将直接由电源(5V)供电。该模块有四个引脚(每个电机两个),这些引脚连接到PIC以控制电机的方向。我们还有两个IR传感器,用作PIC微控制器的输入。如果这些传感器位于白色表面上,它们将变高(1);而当它们位于黑色表面上时,它们将变低(0)。下表说明了完整的引脚连接。
序号 |
从连接 |
连接到 |
1个 |
红外传感器左销 |
RD2(引脚21) |
2 |
红外传感器右输出引脚 |
RD3(引脚22) |
4 |
电机1通道A引脚 |
RC4(引脚23) |
5 |
电机1通道B引脚 |
RC5(引脚25) |
6 |
电机2通道A引脚 |
RC6(引脚26) |
7 |
电机2通道B引脚 |
RC7(引脚27) |
在实际的硬件中,我使用了一个移动电源,它将通过其USB端口直接提供+ 5V的输出。因此,我绕过了7805稳压器,并使用它们为PIC,传感器和电机供电。您可以使用电路中所示的12V电池和稳压器进行相同的操作。
编程PIC单片机:
准备好硬件之后,就可以开始编程了。该PIC Line Follower机器人项目的完整程序在此页的末尾给出。但是,下面将解释重要的块。
通过以下几行初始化I / O引脚。2个红外传感器引脚用作输入,四个电机引脚用作输出引脚。
TRISD2 = 1; TRISD3 = 1; //将红外传感器引脚声明为输入TRISC4 = 0; TRISC5 = 0; //将电机1的引脚声明为输出TRISC6 = 0; TRISC7 = 0; //将电机2引脚声明为输出
现在,我们必须读取红外传感器的状态并相应地控制电动机。例如,如果两个传感器都很高(不落在黑线下方),则如下文程序所示,将两个电机都向前移动。
if(RD2 == 1 && RD3 == 1)//两个传感器均未超过黑线{RC4 = 0; RC5 = 1;//电机1正向RC6 = 1; RC7 = 0; //马达2前进}
如果左传感器越过黑线, 则我们通过保持电机1静止并向前旋转电机2来右转。这种转弯称为差动转弯。
否则(RD2 == 0 && RD3 == 1)//左传感器在黑线上{RC4 = 1; RC5 = 1;//电机1停止RC6 = 1; RC7 = 0; //马达2前进}
类似地,如果右传感器越过黑线, 则通过使第二个电机保持静止并单独向前转动第一个电机,使机器人左转,如下所示。
否则(RD2 == 1 && RD3 == 0)//右传感器在黑线上{RC4 = 0; RC5 = 1;//电机1正向RC6 = 1; RC7 = 1;//电机2停止}
最后,如果两个传感器都位于黑线下方,则该时间停止机器人了。这可以通过将两个电机的所有引脚都设置为高电平来实现。相同的代码如下所示
else //两个传感器都在黑线上{RC4 = 1; RC5 = 1;//电机1停止RC6 = 1; RC7 = 1;//电机2停止}
就是说程序已经准备好,可以使用任何编程器(如PicKit)上传到PIC。
PIC Line Follower的实际应用:
一旦硬件和代码准备就绪,就可以采取一些措施了。如前所述,我曾使用移动电源为机器人供电,所以我要做的只是将移动电源连接到具有硬件设置并已上传代码的机器人。
PIC Perf板是为我们的PIC教程系列制作的,在其中我们学习了如何使用PIC微控制器。如果您不知道如何使用Pickit 3刻录程序,则可能要回到使用MPLABX和XC8的PIC单片机教程,因为我将跳过所有这些基本信息。
现在,只需在黑线上方启动该机器人,然后您就可以观看它。
在开始的时候,您可能会遇到一些困难,请继续阅读。如果车轮反向旋转,则只需互换车轮正反向旋转的电动机的极性即可。如果机器人偏离了路线,请更换红外传感器,一切都应该很好。
该机器人的完整工作原理可以在下面的视频中找到 。希望您喜欢该项目并喜欢构建类似的东西。如果您无法解决此问题,可以将其发布在下面的评论部分中,以解决该问题,或者使用我们的论坛来讨论技术内容。