基于STM32 单片机的智能送药小车设计

2024-04-16 03:25徐贤高小慧李羽晴孙婧妍
电子制作 2024年6期
关键词:循迹小车病房

徐贤,高小慧,李羽晴,孙婧妍

(三江学院,江苏南京,210012)

0 引言

随着科学技术进步和医疗水平的发展,研制智能送药机器人对提高医疗服务效率、减轻医护人员负担、提升药物配送安全性以及优化医疗资源利用方面有着十分重要的现实意义。同时,通过结合物联网、人工智能和自动化技术,智能送药小车展示了未来医疗领域的创新和前景,对构建智慧医疗生态系统起着重要的作用。本设计要求智能小车可在模拟的医疗区域内,根据走廊上的标识信息自动识别、寻径、避障,将药品送到指定病房。

1 系统方案

■1.1 系统工作流程

智能送药小车在单片机控制下可自动实现前进,后退,左转,右转等操作,并给出声或光的信号,完成规定动作后可自行返回药房。图1 为系统工作流程图。

图1 系统工作流程图

■1.2 方案选择

针对循迹设计要求,常用的方案有两种,一种是通过灰度判断红线为循迹,用OpenMV 识别数字到达指定药房;另一种是通过红外判断红线为循迹,用树莓派识别数字到达指定药房。考虑到灰度传感器探测范围广,干扰容易控制,所以设计中采用了第一种方案。使用灰度传感器利用光敏电阻对不同颜色的检测面对光的反射程度不同引起阻值变化,同时摄像头专注于数字识别,巡线由灰度传感器进行,分工明确,调试简单。

车体选择上,设计者们考虑了三种小车。一种是牛眼轮小车,其具有越障能力强、稳定性强、转向灵活、载重能力强和省力高效等优点,并且可耐得住油、酸、碱等一些有机溶剂,不易腐蚀,具备良好韧性和可以抗疲劳实用性,经久耐用;第二种是三轮小车,虽然机械结构简单,成本低,但该爬坡和倒退场景不太适用。第三种是采用履带式小车,这种小车市面上较为常见,稍加改装即可投入使用。可以说三种小车各有优势,本设计采用的是三轮小车。

电源方面,设计者们放弃了铅酸电池供电的方案,虽然其有着供电电流大的优点,但是重量大、携带麻烦、不便于安装。本设计采用的是7.2V 锂电池组供电,虽然牺牲了续航时间和成本,但其体积小、重量轻、电压稳定、便于安装携带。应用时,7.2V 电源经DRV 模块转化可以输出12V电压供给直流电机,其他模块也可用XL4015DC-DC 转换成5V 后再供电。

根据设计要求,控制端在单片机控制下,显示模块,无线通信模块协同配合,共同完成控制端的工作;运动端以STM32F103RBT6 为核心,在控制模块、循迹模块和电源模块的协同下,让小车完成行驶、通信、运载药物等指定动作。

2 软硬件设计

系统硬件框架如图2 所示,除电源模块和主控模块外,还包括循迹模块、摄像头模块、电机驱动模块、显示模块以及用于检测小车是否装载物品的红外传感器模块。

图2 系统总体框架

■2.1 电源模块

该模块主要作用是将电压降为5V 和7.2V,用于小车各模块的供电。

XL4015 芯龙公司生产的一个180kHz 固定频率PWM降压DC/DC 变换器,能够驱动5A 负载,具有高效率,低纹波和优秀的线路和负载调节能力。内置过流保护功能。当发生短路保护功能时,操作频率由180kHz 降至48kHz;同时内置一个内部补偿块以最小化外部组件计数。图3 为电源模块电路。

图3 电源模块

■2.2 电机驱动模块

电机驱动的核心部件是DRV8701E、TPH1R403NL,它通过STM32F103RBT6 的指令直接控制步进电机转速,从而控制小车的行驶状态。

DRV8701E 为德州仪器生产的有刷直流电机全桥栅极驱动器,支持5.9V 到45V 电压输入,支持100%脉宽调制占空比,采用四个外部N 沟道金属氧化物半导体场效应晶体管(MOSFET)的单路栅极驱动器,主要用于驱动12V 至24V 双向直流有刷电机。

TPH1R403NL 为东芝公司生产的N 沟道MOSFET,最大电压值为30V,最大电流值150A,25℃下功率可达64W。

■2.3 循迹模块

2.3.1 巡线模块硬件设计

在本次设计中,采用八路的灰度循迹模块来实现机器人的自主导航功能。该模块能够通过感知地面颜色的变化来精确定位机器人的位置和方向,并根据预设的路径规划算法来控制机器人的移动方向和速度。由于该模块的工作原理是基于光的反射,因此具有响应速度快的优点。

图4 为灰度循迹模块电路图。其中包含两个部分。第一部分由TCRT5000L 组成的灰度传感器电路,它是一个发送管与接收管集成在一起的一体式灰度传感器。第二部分是由LM393 精密运放芯片组成的比较器电路,能对灰度传感器采集到的灰度值进行比较,比较电压可以由R1 进行调节。接着,OUT引脚为模块的输出引脚,接到单片机的IO 引脚上,使其可以判断出机器人的位置和方向。

图4 灰度循迹模块电路图

2.3.2 巡线控制算法

图5 为巡线控制算法流程图。主要采用比例控制算法,比例控制算法是通过将控制信号与误差信号的比例相乘来产生输出信号。这个比例系数通常称为“比例增益”,它决定了输出信号的大小和误差信号的大小之间的关系。比例增益越大,输出信号就越大,这意味着控制器将更快地响应误差信号。但是,如果比例增益过大,控制器的输出信号可能会变得不稳定,导致震荡或振荡。

图5 巡线控制算法流程图

式(1)为比例控制器的数学表达式:

其中,u(t) 是控制器的输出信号,Kp是比例增益,e(t) 是误差信号。将输出的信号输出到电机上实现转向,最后跟随引导线行驶。

■2.4 视觉部分

视觉部分采用K210 芯片搭载MaixBit 进行目标检测并返回坐标。勘智K210 芯片采用了RISC-V 架构,可根据业务场景需求扩展基础指令,具备较强的可编程能力;同时,该芯片具备机器听觉与机器视觉两种能力,可以灵活适配人脸识别、目标检测、语音唤醒及识别等场景;此外,勘智K210 可在0.3W 的条件下提供1TOP 的算力支持,充分适配在多数业务场景中低功耗约束下的算力需求。

本设计中,数字识别的方案尝试了以下三种:

(1)用OpenMV 对不同数字图像做模板匹配,这种方案最为简单,用OpenMV 自带的例程就可以实现,缺点在于检测精度低,帧数低,经常误判。

(2) 使 用Mnist 数 据 集,Lenet-5 网 络 模 型, 在Jetson Nano 4G 版本上进行训练,得到参数模型,缺点是成本较高,经常断货,且环境容易崩溃,体积较大,不方便部署在小车上。

(3)用k210 跑YOLOv3 网络进行检测,这种方案检测精度高,检测速度快,且成本也比前面两种低。因此,最终本设计中采用了这一方案。

具体实现时,整体的软件框架包括数据集采集和标注、模型训练、模型转换和部署以及实时预测和通信等步骤。

(1)数据集的采集和标注:将摄像头固定在小车上,采集包含不同角度和距离的数字图片,然后使用标注工具(Labelme)对采集到的图片进行标注,标注出数字的位置和边界框。

(2)模型训练:使用采集和标注好的数据集,采用深度学习框架TensorFlow 训练数字识别模型。选择YOLOv3模型架构作为基础网络,在其基础上进行微调或迁移学习。训练过程中定义合适的损失函数、优化器和训练参数,并进行适当的数据增强操作。

(3)模型转换和部署:训练完成后,使用Sipeed 官网提供的Kmodel 工具将其转化为目标设备可用的格式,而后将转换后的模型文件存放在SD 卡的根目录下。

(4)实时预测和通信:在小车上运行程序,通过串口与单片机进行通信。程序从摄像头获取图像,使用模型对图像中的数字进行实时预测。预测结果可以通过串口将识别的数字和位置信息传送给单片机,用于控制小车的行动。

视觉识别程序流程如图6 所示。

图6 视觉识别流程图

3 综合调试

■3.1 调试环境与任务

图7 为模拟场地示意图——引用2021 年全国大学生电子设计竞赛试题(F 题),采用白色哑光喷绘布制作,分为远端病房、中端病房和近端病房。标识病房的黑色数字可在纸张上打印,数值为1~8,每个数字边框长宽为8cm×6cm,将数字标号纸张可由无痕不干胶等粘贴在走廊上。

图7 场地示意图

任务一:两小车相互配合将药品运送到同一指定的中部病房。小车1 识别病房号装载药品后开始送药,到达指定区域后等待卸药,然后,小车2识别病房号装载药品后启动送药,到达自选暂停点后停车,点亮指示灯,等待小车1 卸药;小车1 卸药后返回,同时控制小车2 熄灭指示灯并继续运送。

任务二:两小车相互配合到不同的远端病房送取药,小车1 送、小车2 取。小车1 识别病房号装药后开始送,小车2 于药房处识别病房号等待小车1 的取药开始指令;小车1 到达病房后卸药并返回,同时向小车2 发送取药指令;小车2 收到指令后启动,到达病房后停止并点亮指示灯。

■3.2 硬件测试

硬件上主要运用数字万用表、示波器等仪器测量智能送药小车中各主要元器件的状态,以及系统各个部分的供电电压是否能够达到理论计算中所需的预期电压等详细参数。同时,还需对小车的机械结构进行测试,如测试电机的转动情况等。

■3.3 软件测试

使用Keil5 进行单片机程序的编写和调试,然后将程序通过STlinK 下载到目标单片机中进行多次运行测试。

为了方便分析和调试,使用串口实时打印运行时各种参数信息,配合串口助手在PC 端实时地显示。

4 综合测试

单个小车运送药品到指定的近中远端病房并返回到药房测试结果如表1 所示。

表1 小车运送药品到指定的近中远端病房并返回到药房测试结果

两辆小车协同运送药品到同一指定的中部病房测试结果,即任务一测试结果如表2 所示。

表2 任务一测试结果

两辆小车协同运送药品到同一指定的中部病房测试结果,即任务二测试结果如表3 所示。

表3 任务二测试结果

5 总结

综上,系统采用直流减速电机和STM32F103RBT6 芯片控制小车运动,用锂电池提供7.2V 电压,用灰度传感器保证小车能在规定的区域内正常行驶,通过单片机控制小车的前进、后退、左转、右转等功能,并用无线通信实现远程控制端和运动端之间的交流。两车之间通信使用无线转USB/串口模块,它可以发射和接收无线信息,从而实现两者之间的交流。经软硬件联调测试,本设计研制的智能送药小车能精确且高效地完成既定的各项任务。

猜你喜欢
循迹小车病房
基于DFT算法的电力巡检无人机循迹检测系统设计
更正
大车拉小车
自制小车来比赛
整建制接管改造COVID-19重症监护病房的实践与探讨
刘老师想开小车
基于单片机的智能循迹小车的设计
两轮自平衡小车的设计与实现
智能差分循迹小车设计
基于MC9S12XS128处理器的智能循迹小车分析研究