基于STM32的智能巡检小车系统设计--循迹模块设计

这篇具有很好参考价值的文章主要介绍了基于STM32的智能巡检小车系统设计--循迹模块设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:车
邮箱:692604135@qq.com
学校:西安工程大学硕士研究生
方向:机器视觉、图像分割、深度学习

1. 硬件设计–灰度循迹模块电路设计

  • 灰度循迹传感器是主要用于小车沿黑色赛道循迹的传感器。
  • 灰度传感器利用不同颜色的检测面对光的反射程度不同,灰度感应接收管对不同检测面返回的光,其阻值也不同的原理进行颜色深浅检测。
  • 灰度传感器LED状态指示,传感器的管子照到灰度值较高的,输出电平由高变低,对应LED亮。此种输出方式为数字输出,即1或0输出。

2. 软件设计–循迹程序设计

  • 循迹模块的设计就是要完成小车沿黑线的循迹。在循迹的过程中,要用L298N直流电机驱动模块驱动直流电机进行前进、后退停止操作;并且要通过两个轮子的差速进行左转和右转的转向动作。
  • L298N驱动板可驱动2路直流电机,使能端ENA、ENB为高电平时有效,控制方式及直流电机状态表如下表所示。

基于STM32的智能巡检小车系统设计--循迹模块设计
在灰度巡检模块的设计中,需要通过根据R、M、L三个引脚反馈给主控板数字信号0或1,对小车做出相应的操作。对应的逻辑关系如下表所示。
基于STM32的智能巡检小车系统设计--循迹模块设计
执行一次循迹程序的流程图如下图所示。

基于STM32的智能巡检小车系统设计--循迹模块设计
下图(a)~(f)是模拟的灰度巡线传感器在循迹过程中的几种情况,模拟的灰度巡线模块也代表了小车的方向。
基于STM32的智能巡检小车系统设计--循迹模块设计

循迹模块配了三个GPIO_Input引脚,分别命名为L_Pin、M_Pin、R_Pin引脚,分别与主控板的PE11、PE12、PD10引脚相连。

循迹程序设计的部分代码如下:

if(HAL_GPIO_ReadPin(GPIOE,R_Pin))//读取R_Pin的值;
dir = dir | 1;//把R_Pin的值放在dir第八位;
else  dir = dir & 0xFE;//给R_Pin置零;
if(HAL_GPIO_ReadPin(GPIOE,M_Pin))//读取M_Pin的值;
dir = dir | 2;//把M_Pin的值放在dir第七位;
else  dir = dir & 0xFD;//给M_Pin置零;
if(HAL_GPIO_ReadPin(GPIOD,L_Pin))//读取L_Pin的值;
dir = dir | 4;//把L_Pin的值放在dir第六位;
else  dir = dir & 0xFB;//给L_Pin置零;
case 0: LEFT();   //左转;
case 1: RIGHT();  //右转;
case 2: GO();     //直行;
case 5: STOP();	  //停止。	

在循迹的过程中,需要用到很多控制函数:直行GO函数、停止STOP函数、左转LEFT函数、右转RIGHT函数。举例左转函数如下。

左转LEFT()函数部分代码如下:

HAL_GPIO_WritePin(GPIOA, IN1_Pin|IN4_Pin, GPIO_PIN_RESET);
//给IN1_Pin、IN4_Pin引脚赋值0;
HAL_GPIO_WritePin(GPIOA, IN2_Pin|IN3_Pin, GPIO_PIN_SET);
//给IN2_Pin、IN3_Pin引脚赋值1;
HAL_Delay(5);//延迟5ms,使电机受到的损伤更小。	

3. 烧录程序

3.1 编写各部分代码

在Keil ARM中写程序的时候,由于一些初始化和配置在STM32CubeMX的原因,必须在BEGIN和END之间写代码,如图所示。如果写错地方,代码在点击编译Rebuild之后就会被吞噬。
基于STM32的智能巡检小车系统设计--循迹模块设计

3.2 配置所用到的主芯片(STM32F407VET6)

点击Options for Target,在Device里选择用到的主芯片,本设计里用到的主芯片是STM32F407VET6,所以在这里选择STM32F407VETx,点击OK。
基于STM32的智能巡检小车系统设计--循迹模块设计

3.3 配置仿真器ST-Link

  • 选择完器件之后,继续选择Options for Target的Debug,选择Use并且根据自己的仿真器选择ST-Link Debugger
  • 点击ST-Link Debugger右边的setings,左边一列自动选择了ST-LINK/V2
  • 如果可以识别到仿真器,那么SW Devive会出现0x2BA01447 ARM CoreSight SW-DP(ARM Core),然后点击确定,

仿真器配置成功。演示如图所示。
基于STM32的智能巡检小车系统设计--循迹模块设计
基于STM32的智能巡检小车系统设计--循迹模块设计

3.4 添加Flash

选择Options for Target的Utilities页面的Settings,然后点击Settings页面里面的Add,选择512k的STM32F4xx 512kB Flash。然后点击确定,这时候会返回上一页面,点击这个界面的OK。演示如图所示。

基于STM32的智能巡检小车系统设计--循迹模块设计
基于STM32的智能巡检小车系统设计--循迹模块设计

3.5 编译代码

  • 如果编译后有问题,那么可以去Build Output窗口中看出现的错误,并根据出现错误的行提示和关键字提示去修改代码,修改完成后继续保存下载编译代码,直至没有出现错误为止;
  • 如果编译后没有错误,Build Output会显示0 Error(s),工程文件编译成功。
    基于STM32的智能巡检小车系统设计--循迹模块设计

3.6下载程序

将ST-LINK仿真器一端插进STM32的SWD接口,另一端与电脑相连,这时候红灯亮起,下载时实物连接图如图所示。
基于STM32的智能巡检小车系统设计--循迹模块设计
点击Keil ARM软件中的LOAD,下载时,仿真器会红黄灯交叉闪烁。如图所示。
基于STM32的智能巡检小车系统设计--循迹模块设计
工程文件下载成功后,Build Output窗口会显示Programming Done、Verify OK、Flash Load Finished,表示下载完成,工程文件下载成功如图所示。
基于STM32的智能巡检小车系统设计--循迹模块设计
工程文件下载完成之后,就可以给STM32主控板和L298N直流电机驱动模块上电。

4. 测试

4.1 直流电机驱动模块测试

4.1.1 前进、后退和停止

在直流电机驱动模块的测试中,需要给IN1-IN4引脚赋值高、低电平,确保直流电机会正转、反转以及制动。首先给STM32主控板和L298N直流电机驱动模块通电。

STM32供电实物展示
基于STM32的智能巡检小车系统设计--循迹模块设计
L298N直流电机驱动模块通电后实物展示
基于STM32的智能巡检小车系统设计--循迹模块设计
在这里,直接给IN1~IN4引脚赋值高、低电平来驱动小车前进、后退以及停止

  • 代码中给IN1~IN4引脚赋值RESET(0)、SET(1)、RESET(0)、SET(1);小车可以前进。

  • 给IN1-IN4引脚赋值SET(1)、RESET(0)、SET(1)、RESET(0);小车可以后退。

4.1.2 左转、右转

STM32主控板输出两路PWM波形到L298N电机驱动模块的ENA和ENB使能端口,通过调节两路PWM波形占空比以此控制小车的车速。用示波器来显示测得的占空比的大小和输出频率的大小。示波器与STM32的连接实物图如图所示。

基于STM32的智能巡检小车系统设计--循迹模块设计

  1. 当两个脉冲为Pulse=320,根据公式计算占空比为59.9%输出的两路PWM波的占空比=60.00%,频率=10.00kHz。输出的PWM波用示波器显示如图所示。
    基于STM32的智能巡检小车系统设计--循迹模块设计

  2. 当脉冲1为Pulse=320,脉冲2为Pulse=479,两路PWM波的占空比为59.9%和49.9%。输出的两路PWM波的占空比分别为60.00%和40.00%。这时,小车右转。
    基于STM32的智能巡检小车系统设计--循迹模块设计

  3. 当脉冲1为Pulse=479,脉冲2为Pulse=320,输出的两路PWM波的占空比分别为40.00%和60.00%。输出的PWM波用示波器显示如图所示。这时,小车左转。
    基于STM32的智能巡检小车系统设计--循迹模块设计

4.2 灰度循迹模块测试

设计了一个椭圆形环道的循迹。循迹赛道如图所示。

基于STM32的智能巡检小车系统设计--循迹模块设计
在灰度循迹模块的测试中,需要先编写这一模块的代码,然后根据前面的步骤下载、编译代码,给STM32上电、下载工程文件。这时候,给STM32和L298N直流电机驱动模块上电,然后把小车放在赛道上,让其进行循迹。正常情况如图所示,这时灰度传感器的返回值为010,电机正转,小车直行。
基于STM32的智能巡检小车系统设计--循迹模块设计
小车在循迹过程中会一直进行调整,图5-23小车循迹过程中偏右,这时灰度传感器的返回值为110,右电机正转,左电机反转,小车进行左转;图5-23小车偏左的,这时灰度传感器的返回值为001,左电机正转,右电机反转,小车进行右转操作。
基于STM32的智能巡检小车系统设计--循迹模块设计

(经过多次反复测试,小车在弯度比较大的赛道上难以进行循迹。原因本次实验使用的小车是没有转向功能的小车,必须通过两个轮子进行差速转弯。当弯度太大时,小车还没反应过来,就已经冲出赛道了,还有就是小车的车体比较重,转弯原本就需要更大的动力。所以此实验中不能在弯度较大的赛道上循迹。)

5. 结论

测试结果表明,小车可以在弯度比较平缓的赛道上进行循迹。文章来源地址https://www.toymoban.com/news/detail-470379.html

到了这里,关于基于STM32的智能巡检小车系统设计--循迹模块设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于STM32开发板的循迹小车设计

    智能寻迹基于自动引导机器人系统,可以实现小车自动识别路线。智能寻迹小车运用传感器、单片机、电机驱动及自动控制等技术实现,管理时自动寻迹导航。该技术已经应用于无人驾驶机动车、无人工厂、仓库、服务机器人等多种领域。 本设计的完整的系统主要包括STM32单

    2024年04月13日
    浏览(55)
  • 基于STM32的智能循迹避障小车实验(超声波部分)

    接上一篇基于STM32的智能循迹避障小车实验(舵机旋转部分) 最后这部分我们实现超声波部分和最后代码的整合 本部分实验采用的是 超声波模块 HC-SR04 ,它长这样:   买这个的时候最好再买一个支架,可以直接架在舵机上,探查周围的距离。 超声波模块有 4 个引脚 ,分别

    2024年02月07日
    浏览(30)
  • [STM32F103C8T6]基于stm32的循迹,跟随,避障智能小车

    目录 1.小车驱动主要是通过L9110S模块来驱动电机 motor.c 2.我们可以加入串口控制电机驱动(重写串口接收回调函数,和重定向printf) Uart.c main.c  3.点动功能 uart.c main.c 为什么使用的是HAL_Delay()要设置滴答定时器的中断优先级呢? 4.小车PWM调速,  6.跟随功能 7.避障功能 超声波测距

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

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

    2024年01月19日
    浏览(38)
  • STM32智能小车循迹教程

    本篇文章将带大家学习STM32智能小车的循迹功能。 电路工作描述 以其中一路为例 TCRT5000传感器的红外发射二极管不断发射红外线,当发射的红外线没有被反射回来或者反射回的强度不够大时,红外接收管一直处于关闭状态,此时比较器LM393的2脚的电压低于3脚的电压,输出O

    2023年04月08日
    浏览(40)
  • STM32智能小车------TCRT5000循迹

    ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的普通大学生。 ⏩进入正题,最近在做小车,目前已经加入红外避障、超声波测距、红外遥控、红外循迹四个传感器,分别实现遥控切换模式、超声波控制距离、避障、循迹功能。 ⏩本次文章说说 循迹功能 的

    2024年02月14日
    浏览(30)
  • 【 STM32实例 】 智能小车的红外循迹

    这篇文章我主要讲的是让基于stm32单片机下的智能小车实现红外循迹功能,智能小车的项目非常多,比如说循迹避障、蓝牙遥控、视觉控制等等,我将会一步一步带大家走进stm32单片机的项目当中。 项目源码置文章底部,可自提 在硬件部分,与前几节我所介绍的51智能小车大

    2024年02月02日
    浏览(26)
  • STM32智能循迹避障小车(1)循迹调速功能的实现

    1.stm32f103rct6最小系统板 2.两个TB6612FNG电机驱动模块 线路连接请参考实际程序连线,此图为网上下载仅供参考。 3.三个TCRT5000循迹模块 这种是单路TCRT5000循迹模块,有四个接口,VCC电源接口、GND地接口,DO就是它的输出信号,然后AO口(模拟信号输出)。一般DO口接在stm32系统板

    2024年02月04日
    浏览(29)
  • 基于STM32芯片的四驱循迹小车

    循迹小车包括三个基本模块: 1.宏定义模块 2.电机驱动模块 3.红外循迹模块 4.PWM调速模块 我将代码部分分为4个模块进行模块化编程:interface(各个引脚口的宏定义,方便记忆)、motor(电机驱动模块)、timer(定时器模块)、track(红外循迹模块) .h 各个引脚的宏定义以及实现小车前进

    2023年04月27日
    浏览(67)
  • STM32蓝牙小车、红外循迹小车、超声波避障小车项目设计

    本文旨在分享我学习STM32的过程中,为了强化学习成果,试着制作一些实训项目。最开始做的就是STM32蓝牙小车、STM32红外循迹小车、STM32超声波避障小车。 相信看完本文的你,一定可以亲手制作一辆属于自己的智能小车! 注:文末附源码工程,需要的读者可以至文末下载 如

    2024年01月20日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包