APP下载

基于单片机控制的智能送药小车系统设计

2022-06-24姬冠妮孟家宝姚鹏

电子制作 2022年10期
关键词:循迹二极管灰度

姬冠妮,孟家宝,姚鹏

(西安交通工程学院中兴通信学院,陕西西安,710300)

0 引言

随着社会科技的发展,人们的出行工具日新月异,自上世纪60年代起,电子技术的进步就已成为汽车工业发展的最大动力,90年代,国外已提出智慧交通系统的概念,智能车辆的开发设计则是智慧交通系统的重要部分。智能汽车能够利用多种传感器和智能公路技术实现汽车的自动驾驶。进入车道,汽车碰撞预警系统通过使用车载传感器和摄像系统,从而能够在遇到障碍物或者行驶条件发生变化时能够做出迅速调整,从而在很大程度上减少甚至避免交通事故的发生。

1 系统整体方案设计和原理

本应用系统设计采用STM32芯片为智能小车的核心控制器件。系统有4个基本模块,包括主控模块、电机驱动模块、视觉循迹模块,无线通讯模块,主控选择STM32 F103RCT6,通过速度闭环来实现电机驱动的精准控制。循迹模块由两个颜色传感器和四个光电管组成,通过判断黑色虚线以及红色实线以达到循迹的功能,电池电压为12.6V,采用三节18650锂电池串联供电。

图1 系统总体设计框图

■ 1.1 运动循迹模块的设计

本系统使用颜色传感器寻迹。由颜色传感器识别通道中部红色实线,位于小车两侧保证其沿直线行驶,此方案风险小难度较低,对环境光线要求相对较低,且只要考虑道路中红线交叉的问题,现场实测表明,虽然小车在寻迹过程中有一定的左右摇摆,但基本上沿红线行驶。

(1) 颜色传感器TCS3472

TCS3472 光电转换器包含一个3×4光电二极管阵列、四个集成光电二极管,电流的模数转换器(ADC)、数据寄存器、一个状态机和一个 I²C 接口。3×4光电二极管阵列由红光、绿光、蓝光和清晰(未滤光)光电二极管组成。此外,光电二极管还涂有红外阻挡滤光片。四个积分ADC同时将放大的光电二极管电流转换为16位数字值。转换周期完成后,结果被传输到数据寄存器,数据寄存器采用双缓冲方式,以确保数据的完整性。所有内部时序以及低功率等待状态都由状态机控制。

首先对图像进行相关预处理,图像采集和传输过程中可能产生噪点,通过图像灰度化和图像滤波减小对图像处理的干扰。

其次摄像头采集跑道上的红线,通过硬件二值化处理,这里用到最大类间方差法(Otsu)来实现图像二值化阈值选取:

Otsu算法的基本思路是采用某一设定灰度值t将图像的实际灰度分成两组,当两个组的类间方差值最大时,该灰度值t就是进行图像二值化最佳的阈值。

假设某图像有L组灰度值,其取值的范围为0~L-1,在此范围内选取灰度值T,将图像划分成两个组G0和G1,GO组包含的像素灰度值属于0~T,G1的灰度值属于T+1~L-1,用N来代表图像的像素总数,n代表灰度值为i的像素个数。

已知如下:每个灰度值i可能会出现的概率为p=n/ N;由GO、G1的像素个数在整个图像中所占的百分比可得:

类间方差为:

紧接着,运用计算机视觉的线性回归(Linear Classification)算法进行寻线,线性回归能找到视野中任何的线,但是处理速度就会很慢。

为了能更快的寻到我们想要的轨迹,把颜色调为灰度,不去处理追踪颜色,图像大小设成QQVGA,缩小图像面积,来增加速度。

最后向STM32提供反馈信息,控制电机进行自动寻径。(2) RGB 颜色传感器分析

颜色传感器用白光照射到物体,物体反射回来的光由红光、绿光、蓝光和清晰(未滤光)光电二极管吸收,产生光电效应,并且产生光电流,四个积分 ADC同时将放大的光电二极管电流转换为16位数字值。转换周期完成后,结果被传输到数据寄存器,数据寄存器采用双缓冲方式,以确保数据的完整。

图2 颜色传感器原理框图

■ 1.2 数字识别设计

OpenMV是一个开源,低成本,功能强大的机器视觉模块,以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法。OpenMV进行数字识别的基础是需要配置使用NCC模板匹配,通过NCC模板的匹配可把需要识别的数字模板图片保存到SD卡中,然后可进行下一步的识别。

首先将1-8字模原比例打印出来,然后用K210进行模型训练,模型训练了几千张模型,生成训练过的样本矩阵,一般样本值会以二维矩阵方式存在文件中,如果要将它们读出,进行适当预处理,最后生成OpenCV可以模拟的数据结构。

其中包含了分别从不同的视角对图像进行采集入库,在通过NCC模板匹配训练产生数字分类器,训练样本值的数字结构形态各异,所以读入时就需要对其进行规整化。采用的方法是首先找到数字的边界框,再以宽或者高当中较大的一边为基准,适当进行进行缩放或拉伸,从而使其数值可以占满所有能表示一个样本的矩阵。

再将其图像二值化,进行腐蚀分割,前面通过学习训练产生分类器,不过我们输入的图像数字值并不能直接当作测试的输入;图像中数字的笔画通常还并不规整,也有可能相互的重叠;最后就可以对选取的图像进行分割处理了。因为我们设计的分类器只能对数字逐个进行识别,所以会先要把每个数字单独分割出来,然后在分割完以后,采用前面训练得到的分类器对分割结果进行识别。

图3 OpenMV 主板图

■ 1.3 电机驱动的设计

步进电机可以实现电机转速和位置的精确控制,一般步进电机的精度会在步进角 5%范围之内,不累积具体误差。但步进电机需要加上驱动运转,而且驱动信号应为脉冲类信号,没有脉冲输入的时候,步进电机处于静止状态,如果输入端加入合适的脉冲信号,就会以设定的角度(称为步距角)进行转动。电机转动速度和采用的脉冲信号频率成正比。改变脉冲信号的次序,就可以很方便改变电机转动方向。此种方式可以较为精准的控制小车旋转及行进距离,足够完成要求故采用此方案。

依靠编码器反馈数值,通过速度闭环解决对小车行驶距离的把控,本小车所采用的PID算法是闭环控制系统中常用的控制算法之一,其全称为比例积分微分控制。

其传递函数如下:

再配合OpenMV二值化处理寻线辅助和K210数字识别并将相关数据通过串口反馈给主控板最终实现小车的精准控制。通过配置串口的波特率便可以控制串口通讯的速率。

为保证数据接收正常,本设计通过对控制系统中的STM32F103RCT6单片机进行编写通信协议程序,以防止无线接收模块在受到干扰的情况下收到错误指令而使小车失控的情况发生。

2 核心模块硬件电路设计

■ 2.1 电源模块设计

电源模块为系统其它各个模块提供所需要的电源,可靠的电源方案是整个硬件电路稳定可靠运行的基础。考虑到电压范围和电流容量等基本参数,本设计采用三个18650锂电池串联产生电压为12.6V作为电源为小车供电。但因为系统中使用的STM32F103RCT6与A4988电机驱动模块逻辑电压需要5V的电压供电,因此需要使用DC-DC模块将12V电压转换为5V电压,本设计使用的DC-DC降压模块为LM2596可调电源模块。

图4 LM2596 可调电源模块

■ 2.2 运动循迹模块设计

本设计采用TCRT5000模块作为小车的运动循迹模块该模块体积小,灵敏度较高,还可以通过转动上面的电位器来调节检测灵敏度。TCRT5000传感器的红外发射二极管不断发射红外线, TCRT5000接收到待检测物品反射回来的红外线并且触发阈值LM393比较器会输出高电平,反之输出低电平。

由于黑色吸收光线能力较强而白色反射光线能力较强,当TCRT5000红外探头置于黑线上模块会输出低电平,置于白色背景上的时候会输出高电平,基于该原理故TCRT5000可以作为小车的运动循迹模块。

图5 TCRT5000模块原理图

■ 2.3 电机驱动设计

该小车采用 A4988 驱动板与两个 42 步进电机来驱动。A4988步进电机驱动器具有过流保护的 DMOS,同时自带转换器;可以操作双极电机,步进模式中,其输出的驱动能力是 35V 和±2A。只要在“STEP”引脚上输入预定脉冲信号,就可以驱动电动机正常产生微步变化;不需要采用相位顺序表、高频率的控制行和较为复杂的程序设定界面;A4988很适合应用在某些微处理器不可用或过载的情况下;具有控制简单、五档精度调节、可调电位器和可调节输出电流、兼容3.3V和5V的逻辑输入的特点。

图6 电机驱动模块原理图

3 程序设计思路

从训练图片中随机抽取一定数量的训练图片,并从测试图片中也随机抽取一定数量的测试图片,然后这些测试与训练图片进行KNN计算,并从这些一定数量的训练图片中找出K张与当前测试图片KNN距离最近的照片,然后解析训练图片中的内容,从而预测出数字,并检测结果是否正确。

在识别目标房间号后,判断是否为近端,如果为近端则直接第一个十字路口转对应方向,否则直行至第二路口,判断是否为目标数字。

图7 程序设计流程图

如果是,则转对应方向,否则直行至T型路口左转,判断判断是否为目标数字,如果否,则转至T型路口对面,识别目标数字方位并转弯。

识别虚线点后停车,发送位置信号给小车2,同时检测小车2回馈信号和药品是否卸载,在卸载药品完成条件下,如果检测到回馈信号则为双车模式,等待小车2,发送到达指定位置信号,则开始启动返回,否则为单车模式,直接按记忆路线返回。

4 测试结果

■ 4.1 测试数据

根据预定要求及线路测试小车性能,简单数据如表1所示。

表1 送药小车性能测试统计表

■4.2 测试结果分析

①单个小车运送药品到指定的近端病房并返回到药房。要求运送和返回时间均小于 20s,且标号、停止位置、掉头位置识别准确。

②单个小车运送药品到指定的中部病房并返回到药房。要求运送和返回时间均小于 20s,且标号、停止位置、掉头位置识别准确。

③单个小车运送药品到指定的远端病房并返回到药房。要求运送和返回时间均小于 20s,且标号、停止位置、掉头位置识别准确。

综上所述小车符合基本要求,且此次测试均未出现偏离轨道现象。

图8 送药小车实物图

猜你喜欢

循迹二极管灰度
快恢复二极管在高频电路中的选型应用
基于二值化灰度图像的大豆蛋白液喷雾相对雾化程度的研究
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
基于单片机的自动循迹小车的设计与制作
目标教学法在中职校电子电工专业教学中的实践
基于“STC80C51单片机”的智能小车系统的设计
含理想二极管电路的疑难问题辨析お
基于K60的智能循迹小车系统实现
Smart Shirts Generate Electricity