基于STM32的智能巡检小车系统设计

您所在的位置:网站首页 循迹模块与单片机连接 基于STM32的智能巡检小车系统设计

基于STM32的智能巡检小车系统设计

2024-07-02 10:31| 来源: 网络整理| 查看: 265

作者:车 邮箱:[email protected] 学校:西安工程大学硕士研究生 方向:机器视觉、图像分割、深度学习

循迹模块设计目录 1. 硬件设计--灰度循迹模块电路设计2. 软件设计--循迹程序设计3. 烧录程序3.1 编写各部分代码3.2 配置所用到的主芯片(STM32F407VET6)3.3 配置仿真器ST-Link3.4 添加Flash3.5 编译代码3.6下载程序 4. 测试4.1 直流电机驱动模块测试4.1.1 前进、后退和停止4.1.2 左转、右转 4.2 灰度循迹模块测试 5. 结论

1. 硬件设计–灰度循迹模块电路设计 灰度循迹传感器是主要用于小车沿黑色赛道循迹的传感器。灰度传感器利用不同颜色的检测面对光的反射程度不同,灰度感应接收管对不同检测面返回的光,其阻值也不同的原理进行颜色深浅检测。灰度传感器LED状态指示,传感器的管子照到灰度值较高的,输出电平由高变低,对应LED亮。此种输出方式为数字输出,即1或0输出。 2. 软件设计–循迹程序设计 循迹模块的设计就是要完成小车沿黑线的循迹。在循迹的过程中,要用L298N直流电机驱动模块驱动直流电机进行前进、后退停止操作;并且要通过两个轮子的差速进行左转和右转的转向动作。L298N驱动板可驱动2路直流电机,使能端ENA、ENB为高电平时有效,控制方式及直流电机状态表如下表所示。

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

在这里插入图片描述 下图(a)~(f)是模拟的灰度巡线传感器在循迹过程中的几种情况,模拟的灰度巡线模块也代表了小车的方向。 在这里插入图片描述

循迹模块配了三个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之后就会被吞噬。 在这里插入图片描述

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

点击Options for Target,在Device里选择用到的主芯片,本设计里用到的主芯片是STM32F407VET6,所以在这里选择STM32F407VETx,点击OK。 在这里插入图片描述

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),然后点击确定,

仿真器配置成功。演示如图所示。 在这里插入图片描述 在这里插入图片描述

3.4 添加Flash

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

在这里插入图片描述 在这里插入图片描述

3.5 编译代码 如果编译后有问题,那么可以去Build Output窗口中看出现的错误,并根据出现错误的行提示和关键字提示去修改代码,修改完成后继续保存下载编译代码,直至没有出现错误为止;如果编译后没有错误,Build Output会显示0 Error(s),工程文件编译成功。 在这里插入图片描述 3.6下载程序

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

4. 测试 4.1 直流电机驱动模块测试 4.1.1 前进、后退和停止

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

STM32供电实物展示 STM32供电实物展示 L298N直流电机驱动模块通电后实物展示 在这里插入图片描述 在这里,直接给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的连接实物图如图所示。

在这里插入图片描述

当两个脉冲为Pulse=320,根据公式计算占空比为59.9%输出的两路PWM波的占空比=60.00%,频率=10.00kHz。输出的PWM波用示波器显示如图所示。 在这里插入图片描述

当脉冲1为Pulse=320,脉冲2为Pulse=479,两路PWM波的占空比为59.9%和49.9%。输出的两路PWM波的占空比分别为60.00%和40.00%。这时,小车右转。 在这里插入图片描述

当脉冲1为Pulse=479,脉冲2为Pulse=320,输出的两路PWM波的占空比分别为40.00%和60.00%。输出的PWM波用示波器显示如图所示。这时,小车左转。 在这里插入图片描述

4.2 灰度循迹模块测试

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

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

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

5. 结论

测试结果表明,小车可以在弯度比较平缓的赛道上进行循迹。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3