寻迹小车传感器 编程机器人8 -- 循迹传感器
编程机器人8 -- 循迹传感器
这节课我们学习循迹传感器
01—循迹传感器—
循迹传感器,乍一听有点让人摸不着头脑,不像上节课我们介绍的颜色传感器,一听名字基本就知道其功用。
其实说起来,循迹传感器原理也比较简单。
先来说循迹传感器的作用:
我们Omibox小车循的迹就是“黑线”, 赛道长这样:
有了循迹传感器,我们就能控制小车沿着黑线转圈圈了。
原理:
利用不同颜色对红外光的反射机制来判断检测区域是黑色还是其他颜色:
所以,很显然,我们通过以上逻辑得到检测区域后就能进一步来控制小车的运动了。
在介绍运动控制逻辑之前,我们先来看下Omibox机器人循迹传感器的位置:
我们有两个循迹传感器,位于底座板的反面,左右各一个。
先想一想为什么需要两个呢?
那就让我们来看控制逻辑吧:
我们在之前的课程中提到过Omibox机器人小车是通过两轮差分驱动的。
如果你真正理解了“两轮差分”的概念,也理解了怎么通过控制左右轮转速来控制小车前进/后退/左转/右转,那么上图就非常好理解了。
下面我们来看如何通过程序来实现这个逻辑吧。
02
—程序实现—
上面逻辑图都画出来了,根据它实现程序也比较简单了:
可以看到循环主程序(loop)里面有四种逻辑,分别对应前进/左转/右转/停止。
注意这边巡线(循迹)传感器检测到的返回值分为两种 “黑色” “白色”, “白色”返回值代表识别到了其他颜色(包括红色绿色蓝色等) 。
本系列其他教程链接如下:
编程机器人 -- 简介
编程机器人2 -- 控制车灯
编程机器人3 -- 使用按键控制
编程机器人4 -- 声音传感器与光传感器
编程机器人5 -- 马达/电机
编程机器人6 -- 点阵屏
编程机器人7 -- 颜色传感器
Arduino制作循迹小车完全教程
循迹小车曾是大学期间最早接触的智能科技竞赛作品。现在它已经是生活中常见的儿童玩具,也成为儿童课外培训课的内容,我相信,对于孩子和那些没有接触过它的成人来说,依旧会对循迹小车充满好奇和喜爱。今天我就把我制作循迹小车的资料和流程分享出来,供大家学习参考,希望你们可以自己动手做出充满科技感的循迹小车。
材料清单:
车体: 一张板(木板、塑料板、甚至是雪糕棒拼接的),万向轮或小轴承、铜柱、车轮、电机;
硬件: Arduino Uno或Arduino Nano,电机驱动模块、红外传感器*3、电源、杜邦线。
软件: 一个安装了Arduino程序的电脑
在讲解如何制作循迹小车之前,我们先了解一下它的结构组成和运行原理,理清软件硬件实现的思路,对我们后期制作循迹小车会更有帮助。宏观上看主要包括车体、硬件电路和软件编程三部分。它的整个运行原理就是前端的红外传感器检测黑线的存在,并将它的位置信号反馈给主控板,主控程序对小车位置进行分析,从而控制两个电机的速度(差速运行),达到直行、左转、右转、倒车等操作效果。
那么具体的制作和零件选择,我们来依次分析一下。
车体部分:
首先来拆解循迹小车的车体结构。循迹小车的车体可以做得非常简单,也可以设计的很复杂但更美观。一张板子配上电机和车轮就可以做好,如果想要设计出可爱的造型,那你就要费点时间和精力了。
(1)这里不在设计上过于纠结,通过一个简单的结构说清楚车体的制作:
这是一个简单的车体结构,一张塑料洞洞板,通过螺钉、螺母、电机固定架将电机固定在洞洞板上,再将与电机轴尺寸合适的车轮直接插到电机轴上,最后在洞洞板前端用铁丝固定一个小轴承充当前轮,车体部分就完成了。
型号:
电机:N20减速电机(购物网站很容易搜到,大概在10元左右)
车轮:与电机轴配套的D型孔的橡胶轮(搜索N20电机橡胶轮)
电机固定架:搜索N20电机固定架。
底板:搜索固位板可以找到很多,这个比较随意。
轴承:外径10mm左右都可以,或者也可以选择其他圆形结构替代。
综上,重点是选定电机,车轮和固定架匹配电机就可以,至于底板可以自由选择,考虑好如何固定电机和前轮就可以。
(2)另外介绍一种常见的可以买到的车体,如图:
这种类型的车体是平时最常见的车体结构,在网上搜索智能车套件,会有很多选择。当然,想动手自己尝试设计组装的也可以买好配件自由发挥。对于这个底板,看上去很复杂,其实上面预留的孔也是随意切割,只要匹配电机和万向轮的固定孔位就可以。家里有木工工具的也可以自己锯一块木板,打几个孔也能搞定。或者会CAD设计的,把图纸拿到街边的广告制作店铺,分分钟也可以加工出来漂亮的亚克力底板。
电机:TT电机,相对N20电机要便宜一半左右
轮子:选择与电机轴配套的孔型,这个电机轴是扁的,网上搜索TT电机橡胶轮可以找到。
万向轮:网上很容易找到,重点关注螺丝固定孔与底板上对应孔的匹配。
总结:车体部分实际上并不难,重点是要做好各个组件的安装匹配。同时,不要忘记后面主控板、传感器的安装位置,需要提前确定好,并预留孔位。
硬件电路部分:
硬件电路部分主要包括主控板、电机驱动模块、红外循迹传感器、电源等。
(1)主控板以Arduino Uno为例进行讲解,对于没有编程经验的会简单一些,它还可以实现图形化编程界面(Mixly),更是适合儿童编程学习。板子价格相对便宜,20元左右,一个板子+一条数据线就可以用起来了。
主控板的外形如下图所示,它的学习不是一下可以说清楚的,我后面会给大家提供部分资料,也会把跟小车相关的用法讲清楚。
从图上看到,这块板子有14个数字输入/输出端口,6个PWM端口。数字端口主要用于传递高低电平,高电平为1,低电平为0;红外传感器就是连接到这些端口上,通过高低电平来传递消息;PWM端口是在板子上标有“~”符号的端口,电机驱动的逻辑输入端口就是跟PWM端口连接,它是用来给电机设定速度的,一般值在0-255之间。
USB接口通过数据线与电脑连接,便于下载程序到主板上。
电源接口可以与外部5V或3.3V电源连接,要注意看板子上的标识,不可以随意接,也可以用来给传感器供电。如果电源接口不够用,可自行连接导线扩展,但也要注意不能过多,电流太大容易烧芯片。
注意:主控板供电只能是3.3V或5V,我们直接用后面的电机驱动模块中的5V供电便可以。
板子的资料和对应软件下载都罗列出来:
1. 插上UNO开发板,驱动会自动安装
2.在die里面选择板卡 UNO
3. 选择COM端口,这个可以在我的电脑里查询,刚刚你的UNO开发板里面端口。
这里把软件安装完成后的板卡选择和COM端口选择截图演示,以便不懂的朋友参阅。这两个端口的设置是为了将程序传输到主控板上,必须选择对应的板卡(主控板型号)和电脑连接端口。如下图:
2)红外循迹传感器模块:就像人的眼睛,是用于判断黑线的。红外循迹传感器上有两个二极管,一个是发射红外信号,另一个可以接收红外信号。当传感器下方是黑线时,黑色可以大量吸收红外信号,从而导致返回的红外信号非常微弱;当传感器下方不是黑色时,,大量的红外信号被反射回来,被接收端接收。从而可以判断黑线的存在了,这就是红外循迹传感器的作用原理。
网上的红外循迹传感器也是多种多样,不过使用都是一样的,最主要的就是判断在扫描到黑线时,返回的是高电平还是低电平,这个在产品介绍那都会有介绍。红外循迹传感器模块大概如下图所示:
图上看出传感器上有4个接线端和3个接线端的区别,它们都会有电源正极Vcc、负极GND、数字输出口D0,而多出那一个端口是A0,也就是模拟输出端,这个对我们使用并不影响,我们只使用数字输出端(D0)就可以。
在使用时,只需将电源端接好,把数字输出端接到主控板的数字输入/输出端口,便完成连接。具体连接图在后面展示。
在购买时注意购买红外循迹传感器模块,而不能直接购买红外传感器。因为单独的红外传感器是用不了的,需要其他芯片配合使用。模块上都是集成好的,可以直接使用。
(3)电机驱动模块,是用于对电机速度和转向的控制模块。费用大概在10元左右,其端口连接会多点,但并不复杂。我来依次说明,如下图,左右两端蓝色的输出A和输出B是连接两个电机的,把左侧电机的两条线接到输出A,同理,右侧接到输出B。外部供电可以选择5-35v,但一般12v或9v就足够。电源正极接在下图的12v供电端,负极接在供电GND端,而图中5V供电可以用于给控制板和红外循迹传感器进行供电,注意负极都是要接到供电GND。最后就是逻辑输入这四个端口,需要跟控制板上的数字输入/输出端口相连接,左侧两个是控制左侧电机,而右侧两个是控制右侧电机。
具体的连接图示在最后展示。
(4)电源部分则可以直接买12V锂电池,或者比较简单的就购买9v电池,配上连接头就能直接使用。
由于篇幅有限,仅对用到的硬件部分进行简单介绍,但足以完成循迹小车的制作。下面我就把整体的硬件连接图展示出来。
软件编程部分:
该部分应该是整个循迹小车的核心,它赋予小车思想,让小车智能化。对于该部分的实现,方式方法都有很多种,比如利用Arduino IDE界面直接代码编程,还可以通过图形化界面进行拖拽编程,如Mixly。方法上有直接法,就是对电机的控制人为设定参数,简单粗暴;还有会结合PID算法的高级控制,这种方法对于小车的响应速度更快,也更合理,但是难度会高一些。
该文章就是科普性质,所以先通过最简单的方式,实现小车的循迹功能。编程的整体思想是先判断黑线的位置,当中间传感器扫描到黑线时,小车位置正确,电机继续按原始速度行走;当左侧传感器扫描到黑线时,此时小车已经偏右,需要及时向左校正,左侧电机减速,右侧电机加速,完成左转;当右侧传感器扫描到黑线时,此时小车已经偏左,需要及时向右校正,左侧电机加速,右侧电机减速,完成右转;下面列出上述电路连接对应的程序:
static int initial_motor_speed=100;
const int IN_A1=6;
const int IN_A2=9;
const int IN_B1=10;
const int IN_B2=11;
const int sensor2=2;
const int sensor3=3;
const int sensor4=4;
void setup() {
pinMode(IN_A1,OUTPUT);
pinMode(IN_A2,OUTPUT);
pinMode(IN_B1,OUTPUT);
pinMode(IN_B2,OUTPUT);
pinMode(sensor2,INPUT);
pinMode(sensor3,INPUT);
pinMode(sensor4,INPUT);
}
void loop() {
char num2,num3,num4;
num2=digitalRead(sensor2);
num3=digitalRead(sensor3);
num4=digitalRead(sensor4);
if(num4==0){
analogWrite(IN_A1,150);
analogWrite(IN_A2,0);
analogWrite(IN_B1,50);
analogWrite(IN_B2,0);
}else if(num2==0){
analogWrite(IN_A1,50);
analogWrite(IN_A2,0);
analogWrite(IN_B1,150);
analogWrite(IN_B2,0);
}else{
analogWrite(IN_A1,100);
analogWrite(IN_A2,0);
analogWrite(IN_B1,100);
analogWrite(IN_B2,0);
}
}
将程序拷贝并上传到主控板中,就完成程序输入了。如果你的电路连接跟图示的一样,那这个程序可以实现小车的循迹功能。如果你购买的循迹传感器检测到黑线输出高电平,只需要把程序中num4==0,nm2==0改成num4==1,nm2==1即可。对于程序部分不作详细的讲解,如有需要可以自行查阅资料或私信交流。
到此为止,小车的车体、电路、软件均已完成,灵魂战车可以出发了!
相关问答
循迹 模块的 传感器 有哪几种?小车的循迹依靠两个循迹模块(固定在小车前半部):A.两个循迹模块检测到白纸(都是低电平)————前进;B.左循迹模块检测到白纸,右边检测到黑线——右转...
循迹小车 组装过程?1循迹小车组装需要一定的时间和耐心,不是非常简单和快速的过程。2首先,需要准备好循迹小车的零件和工具,并按照说明书进行安装和组装。循迹小车的传感器、电...
什么是智能 小车 寻迹避障?智能小车寻迹避障是一种利用传感器和自动控制系统的车辆,它能够根据预先设定的轨迹行驶并且能够在遇到障碍物时迅速进行避让。通过激光雷达、摄像头等传感器...
循迹小车 如何记忆路线?循迹小车通常使用传感器来检测路线上的标记物,如黑线或者磁性标记物,从而确定它所要跟随的路径。一些高级的循迹小车还会配备摄像头和编程算法,可以记录下路...
pwm 循迹 原理?PWM循迹原理是通过使用PWM(脉宽调制)信号控制电机的转速,以实现车辆的自动循迹。传感器检测车辆与线路的相对位置,根据检测结果调节电机的PWM信号,使车辆向...
避障寻迹 小车 难不难避障寻迹小车的制作不算太难。1.避障寻迹小车的原理相对比较简单,主要是使用红外线传感器或防碰撞传感器等,对周围环境进行感知并实现避障。2.难点在于电路...
磁 循迹传感器 厂家哪里有?有人知道吗?[回答]我朋友给我介绍过一家叫做佳创博为的公司,他们公司是专门做磁循迹传感器的,挺靠谱的,技术也很高,你可以联系一下。他们公司做的磁循迹传感器质量还...
磁 循迹传感器 在哪里能买到?想知道[回答]我们公司一直是和一家叫做佳创博为的公司合作磁循迹传感器的,他们公司的员工都很认真负责的,技术方面也都很强,你可以打电话咨询一下。磁循迹传感...
4路 循迹 模块可以干什么?此模块是为智能小车、机器人等自动化机械装置提供一种多用途的红外线探测系统的解决方案。该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收...
在做寻迹 小车 (两轮的)时,寻迹 小车 有些左右摇摆,怎么能够使它很稳定呢?传感器距离小车尽量远一些;2、合理调整传感器数量和位置,不要仅仅判断寻迹线在左边还是右边,而是要判断寻迹线偏离了多少度,根据偏离...1、前后都装光线传感...