保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)

这篇具有很好参考价值的文章主要介绍了保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

循迹小车的研发日志

开发要求如下:保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)

引言:为什么会用到米思齐这个青少年编程软件是有两个原因:

  1. 接到了某所小学的研发项目需求,研发成果给小学生参加无人车循迹比赛。
  2. 实验室的师弟师妹并不是所有都有编程基础,因此米思齐可以作为简单的编程引入课程。

技术设计路线

  1. 首先我认为 TCRT5000红外循迹传感器 是最重要的,有两个需要考虑的点,一个是数量,另一个则是排放方式
  2. 其次我认为地图的走势也是很重要的,因此我手绘了一副地图并且分析了无人车的走向;(可以减少很多无用功
  3. 最后就是 L298N 和 Arduino UNO的接线和应用。(没想到他是最麻烦的!!!

下面附上我的大致思路(中途有所修改)
在开发过程中,看到师弟师妹的做法有用排列的方法来实现的,也有用分情况触发来实现的,也不失为一种好办法。(排列指的是列出24=16,16种可能性之后再一个个加判断条件;分情况触发指的是用一些特殊的位置进行判断,然后分段分析地图。)
但下面为我目前想到最简单的代码,调用尽量少的函数、尽量少的判断条件

保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)


硬件部分

简单的TCRT5000

保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
TCRT5000红外循迹传感器的发射二极管可以不断的发射红外线,通过检测反射回来的红外线的强大进行判断是否处于黑线上。当指示灯一直处于熄灭状态也就是没有检测到反射,即检测到黑色,此时模块输出端为高电平1;反之,指示灯点亮时为检测到反射,此时模块输出端为低电平0,即检测到白色。
需要3.3-5V供电。
资料下载链接:
https://pan.baidu.com/s/1Dqri3AanZbPhnMMCU1HZRQ
提取码:1234
在本设计路线中,用到四个TCRT5000,且排放方式在简易装配图中有画出。


玄妙的L298N

保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
L298N作为直流步进电机驱动模块的主驱动芯片,所以该模块就简称为L298N了,该模块内置78M0通过驱动电源部分取电工作,因此当大于12V驱动电压是,应该使用外置的5V逻辑供电。
保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
在产品介绍中也看到了,L298N不仅价格亲民,接线也很简单,逻辑也没什么毛病,那为什么说L298N这个直流电机驱动模块玄妙呢?大致分成以下几个说法:

  1. 电机有震动的声音但不转动
  2. 电机没有震动的声音且不转动
  3. 通电后测电压电压一直下降
  4. 一只轮子不转另一只转动
  5. 两只轮子转速有差别

解决方法如下:

  1. 电压不足,换电池,L298N虽然写的是5V可以供电,但会出现供电不足的问题,因为Arduino板也占用了电压,相当于串联分压。经过测试8.5-9V电机都能正常工作,而且转速不会特别低。
  2. 估计L298N的ENA/ENB出现问题,可以采用ENA/ENB短接,然后再IN1/IN3上面输入PWM信号,一样可以实现PWM控制
  3. L298N与Arduino短接,可能是接线的时候误触导致,把所有的线都拔了重新插一次,如果还有上述问题,L298N本身串联了大容量的电容器,随着充电过程,电路充满电电路没有电流通过,导致电压降为零。
  4. 接线松掉,考虑3种情况,IN1/ENA没有接好;Arduino接IN1/ENA的线没接好;代码有问题,可以试着用我下面提供的PWM代码测试,如果两个轮子都转动,那就是代码出现问题。
  5. L298N的H桥的电阻电容大小不是一样的,因此会有差别,倘若电机不太好,差别会更明显,建议用电压表来测试转速*(PWM控制其实就是控制电压,具体可以看公众号发布的文章。)*
    如果只是平时自己玩玩这个小车,千万不要这么傻用单电源单驱动的方式,直接双电源双驱动,电压稳定之余PWM调节转换后也是一样的转速!!

资料下载链接:
https://pan.baidu.com/s/1teVnq1LJ3VTQ55Lj8gTnFg
提取码:1234


安装部分

保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
掏个洞,走线更好看。
保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
轮子是外八的,更稳定一些。原因如下:
保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)

保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)
千万注意!!!!!L298N要用一个木板跟Arduino隔开!!!不然可能短路!!!


软件部分

在通过分析比赛赛道后了解到全部弯道都是左转,因此我们将代码分成4种主要判断条件。
其中直行最为关键,因此我们用3个主要的逻辑判断是否在走直线,并且他能走完直线的巡线。

L==0 && R==0;//识别到白色,直走;
L==1 && R==0;//中间靠左的传感器识别到黑线微微向左边调整;
L==0 && R==1;//中间靠右的传感器识别到黑线微微向右边调整;

写入新的函数,分别是直行,直行左转,直行右转。

void Forward()
{
  analogWrite(5,120);
  analogWrite(6,140);
  digitalWrite(4,LOW);//我采用的是IN1 IN3作为PWM输入,没有用到ENA ENB
  digitalWrite(7,LOW);
}
void Forwardturnleft()
{
  analogWrite(5,40);
  analogWrite(6,120);
  digitalWrite(4,LOW);
  digitalWrite(7,LOW);
}
void Forwardturnright()
{
  analogWrite(5,120);
  analogWrite(6,40);
  digitalWrite(4,LOW);
  digitalWrite(7,LOW);
}

当出现到十字路口时逻辑也应该判断为直走,因此我们需要加入判断全黑时直行。

LL==1 && L==1 && R==1 && RR==1;//识别到全黑,直走;

纵观全图,可以发现:几乎每一个十字路口即(全黑)都是一次重要的转折点。因此我们可以将全黑的情况设置为计数;加入一个新的判断函数即可

void Timer()
{
   a=a+1;
   Serial.print(a);
   delay(300);
}

上诉的几个函数并不能完美的通过直角弯,因此加入新判断:

LL == 1//大左转

进入直角弯道后,会进入到虚线部分,虚线部分会因为我们前面程序检测到全白直行,导致冲出赛道,因此我们需要在这时候进入新的循环,也就是可以通过前面函数Timer中跳转进入循环。
且设置全白为微右调整,同时以防车子左微调会出去,可以在左微调时加入延时;
代码如下:

 if (a == 5) {
    if (L == 0 && R == 0) {
      Forwardturnright2();
    }
    if ((L == 1 && R == 0) && LL == 0) {
      Forwardturnleft2();
      delay(150);
    }
    if (((L == 0 && R == 1) && RR == 0 || (L == 0 && R == 1) && RR == 1) || (L == 0 && R == 0) && RR == 1) {
      Forwardturnright2();
    }
    if (LL == 1) {
      turnleft();
    }
  }

在最后一个十字路口我加了一个加速(可加可不加)

   if(a==6)
  {
    if(L==0 && R==0)//均未检测到黑线
         Speedup();
    if(L==1 && R==0 && LL==0)//左侧检测到黑线,右侧没有,所以要左转
         Forwardturnleft();
    if(L==0 && R==1 && RR==0)//右侧检测到黑线,左侧没有,所以右转
         Forwardturnright();     
  } 

结语

Emmm小车的结构、代码可能都不是最优的。希望各位大佬可以指正修改,也欢迎大家关注我们的公众号,一起分享关于开源机器人的项目和见解!!

成品图:

保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)

完整代码

提取码:open
如果崩了请联系我文章来源地址https://www.toymoban.com/news/detail-405255.html

到了这里,关于保姆级的Arduino循迹小车研发日志及一些坑(其中包含L298N、Arduino、TCRT5000以及1:48的TT电机的使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32循迹小车系列教程(四)—— 使用OpenMV循迹

     本章节主要讲解如何使用OpenMV循迹以及OpenMV与STM32串口通信 软件:STM32CubeMx、Keil5 MDK、串口调试助手XCOM、OpenMV_IDE 硬件:OpenMV、STM32F103C8T6核心板、下载器ST_LINK、USB转TTL或J-LINK、小车一辆 OpenMV是一个开源,功能强大的 机器视觉 模块。 它以STM32F427CPU为核心,集成了OV7725摄像头

    2024年02月04日
    浏览(97)
  • 循迹模块(应用于小车)

    1.1循迹模块使用 TCRT5000传感器的红外发射二极管不断发射红外线 当发射出的红外线没有被反射回来或被反射回来但强度不够大时, 红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态 被检测物体出现在检测范围内时,红外线被反射回来

    2024年02月15日
    浏览(29)
  • 51循迹小车

    我使用的是STC89C52。 可以购买车体套件,套件包含了车轮,电机,底盘以及连接的小零件。 不建议购买金属底盘,小车所使用的部件大多在底部有裸露引脚,金属底盘会导致短路。 输出A/B:连接左右电机。 通道A/B使能:把跳线帽拔下后就可以通过PWM调速对电机进行调速。

    2024年02月05日
    浏览(29)
  • 智能循迹防碰撞小车

    目录 一、实验内容 二、实验一 按键控制 LED 灯 2.1 硬件原理 2.2 软件设计原理 2.3软件实现 2.4实现效果 三、实验二 电机驱动 3.1 硬件原理 3.2 软件设计原理 3.3软件实现 3.4实现效果 四、实验三 循迹、碰撞转向、红外避障 4.1 硬件原理 4.2 软件原理 4.3软件实现 1、检测开关性能和

    2024年02月12日
    浏览(39)
  • 智能小车红外循迹原理

    循迹电路由收发一体的红外收发管P1,P2;电位器R18,R29;发光二极管D6,D7和芯片LM324等组成。一共有两路,对应的红外电位器用于调节灵敏度。LM234用于信号的比较,并产生比较结果输出给单片机进行处理。 智能小车循迹运动的原理如下。红外光线具有反射特性,但对不同颜

    2023年04月17日
    浏览(49)
  • STM32循迹寻光避障小车(二)(红外循迹部分)

    目录 TRCT5000寻迹模块介绍 1. 模块介绍: 2. 管脚介绍: 3. 使用原理: 4. 代码部分: Tracing.c文件全部代码(附带注释) Tracing.h文件全部代码 首先介绍一下使用到的红外寻迹模块,我们采用了TRCT5000的三路红外寻迹模 我从网上找到如下的图片和资料: 1、采用TCRT5000红外反射传感

    2024年02月17日
    浏览(48)
  • 基于STM32的智能循迹避障小车实验(循迹部分)

    接上一部分基于STM32的智能循迹避障小车实验(小车运动部分) 上一篇我们成功让小车动起来了,现在我们试着让小车听话地运动。 这一部分主要利用了循迹模块两个 图 1循迹模块 就是这个东西: 一共三个引脚 VCC :电源线,连接单片机的 3.3V-5V GND :地线,连接单片机的接

    2024年02月11日
    浏览(47)
  • STM32循迹小车系列教程(三)—— 使用灰度传感器循迹

    本章节主要讲解如何获取灰度传感器值以及如何使用灰度传感器循迹 灰度传感器 如图 1 所示 : 灰度传感器 使用一对抗干扰较强的光电传感器,其中发射管的光源采用高亮白色聚光 LED,发射管端发出的光线通过不同环境背景的反射之后,最终由光敏接收管来接收,光敏接收

    2024年02月04日
    浏览(44)
  • 智能小车STM32——蓝牙循迹

    1、功能介绍 蓝牙切换功能:智能小车内置了蓝牙模块,可以通过手机或其他蓝牙设备与之连接。用户可以通过手机发送指令控制小车的运动方向,实现远程控制。 循迹功能:智能小车配备了红外线传感器,可以实现循迹功能。通过检测地面上的黑线或白线,小车能够自动沿着

    2024年01月19日
    浏览(54)
  • 51单片机——循迹小车源码

     

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包