顾名思义,Line Follower Robot 是一种自动引导车辆,它遵循嵌入在地板或天花板上的视线。通常,视线是线跟随机器人行进的路径,它将是白色表面上的黑线,但其他方式(黑色表面上的白线)也是可能的。某些先进的线跟随机器人使用不可见的磁场作为其路径。
线跟随机器人的概念与光有关。在这里,我们使用光在黑白表面上的行为。白色反射所有落在它上面的光,而黑色吸收光。
在这个线跟随机器人中,我们使用红外发射器和接收器(光电二极管)。它们用于发送和接收灯光。当红外线落在白色表面上时,它会被反射到红外线接收器上,从而产生一些电压变化。
当红外线落在黑色表面时,被黑色表面吸收,没有光线被反射;因此,IR 接收器不会接收到任何光线。
使用的组件
· 阿杜诺乌诺
· 红外传感器
· L293D电机驱动器
· BO电机
· 轮子
· 锂离子电池
· 跨接电缆
Arduino Uno 是一个 8 位 ATmega328P 微控制器。为了支持单片机,它使用了晶体振荡器、串行通信、稳压器等组件。它有14个数字I/O引脚(6个引脚可以用作PWM引脚)。它有六个独立的模拟输入引脚、一个 USB 连接、一个电源桶插孔、一个 ICSP 接头和一个复位按钮。
该板可通过 B 型 USB 电缆使用 Arduino IDE(集成开发环境)平台进行编程。该板可由 USB 电缆或 7 至 20 伏的外部电压供电
红外传感器发出光线以检测某些环境。在红外光谱中,所有物体都会发出某种形式的热辐射,这是我们肉眼看不到的,但红外传感器可以检测到这些辐射。
这里,IR LED 是发射器,IR 光电二极管是检测器。IR LED 发出 IR 光,光电二极管对 IR 光敏感。当红外光落在光电二极管上时,输出电压和电阻将与接收到的红外光的大小成正比变化
L298N 是控制直流电机的最简单的芯片组方式之一。它是双通道电机驱动器,可以控制直流电机的速度和旋转方向。
这款 L298N 电机驱动器是一款大功率电机驱动模块。它用于驱动直流和步进电机。该电机驱动器由一块L298N电机驱动IC和一块78M05 5V稳压器、电阻、电容、电源LED、5V跳线组成一个集成威廉希尔官方网站 。
BO电机被称为电池驱动电机。这些电机通常用于用户需要小型直流电机作为简单执行器的爱好级项目
BO 系列直线电机在较低的工作电压下提供良好的扭矩和转速。BO 电机有单轴、双轴和直流塑料齿轮 BO。这些电机消耗低电流。在这个项目中,我们使用了四个单轴 BO 电机。
在这里,我们使用了四个 BO 电机。电机 1 和 2 连接到 L298N 的第一个通道,而电机 3 和 4 连接到电机驱动器的第二个通道。
IN1、IN2、IN3 和 IN4 引脚连接到 Arduino Uno 的引脚 9、6、5、3。在这里,我们使用了 +5V 和使能引脚(EN1 和 EN2)之间的跳线。如图所示,您可以将其移除并进行外部连接。
Nextpcb 也是该项目的赞助商。Nextpcb,是中国最大的PCB样机企业之一,是一家专业从事快速PCB样机和小批量PCB生产的高科技制造商。您只需 0 美元即可订购至少 5 个 PCB,这意味着制造商可以免费订购第一个订单。要获得制造的 PCB,只需登录 Nextpcb.com 上传 gerber 文件的 .zip,或者您也可以拖放 .zip 文件。上传 zip 文件后,如果文件上传成功,您将在底部看到成功消息。
int mot1=9;
int mot2=6;
int mot3=5;
int mot4=3;
int left=13;
int right=12;
int Left=0;
int Right=0;
void LEFT (void);
void RIGHT (void);
void STOP (void);
void setup()
{
pinMode(mot1,OUTPUT);
pinMode(mot2,OUTPUT);
pinMode(mot3,OUTPUT);
pinMode(mot4,OUTPUT);
pinMode(left,INPUT);
pinMode(right,INPUT);
digitalWrite(left,HIGH);
digitalWrite(right,HIGH);
}
void loop()
{
analogWrite(mot1,255);
analogWrite(mot2,0);
analogWrite(mot3,255);
analogWrite(mot4,0);
while(1)
{
Left=digitalRead(left);
Right=digitalRead(right);
if((Left==0 && Right==1)==1)
LEFT();
else if((Right==0 && Left==1)==1)
RIGHT();
}
}
void LEFT (void)
{
analogWrite(mot3,0);
analogWrite(mot4,30);
while(Left==0)
{
Left=digitalRead(left);
Right=digitalRead(right);
if(Right==0)
{
int lprev=Left;
int rprev=Right;
STOP();
while(((lprev==Left)&&(rprev==Right))==1)
{
Left=digitalRead(left);
Right=digitalRead(right);
}
}
analogWrite(mot1,255);
analogWrite(mot2,0);
}
analogWrite(mot3,255);
analogWrite(mot4,0);
}
void RIGHT (void)
{
analogWrite(mot1,0);
analogWrite(mot2,30);
while(Right==0)
{
Left=digitalRead(left);
Right=digitalRead(right);
if(Left==0)
{
int lprev=Left;
int rprev=Right;
STOP();
while(((lprev==Left)&&(rprev==Right))==1)
{
Left=digitalRead(left);
Right=digitalRead(right);
}
}
analogWrite(mot3,255);
analogWrite(mot4,0);
}
analogWrite(mot1,255);
analogWrite(mot2,0);
}
void STOP (void)
{
analogWrite(mot1,0);
analogWrite(mot2,0);
analogWrite(mot3,0);
analogWrite(mot4,0);
}
上传代码后,如果您的机器人运行方向不正确,请更改 BO 电机的接线。此外,通过改变电位计来校准两个红外传感器。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !