国二【F题—南昌大学科学技术学院】002队—智能送药小车
本设计主要采用编程,硬件电路主要采用灰度传感器,摄像头模块,液晶显示屏及其 他机械部件;本设计主要采用 STM32F103 单片机来控制,根据传感器接收数据处理,直 流电机驱动使用 L298N 驱动。
标签
嵌入式系统
STM32
电机
MCU
摄像头
L298N
电机智能车
南昌大学
更新2021-12-21
南昌大学科学技术学院
4296

1、系统方案

   本系统主要由灰度传感器模块、摄像头模块、控制系统模块、电源模块组成,下面分别论证这几个模块的选择。

1.1 灰度传感器的论证与选择

   方案一:数字灰度传感器,灰度寻线传感器是灵敏度高,抗干扰能力强,普通照明灯基本对其无影响。使用一对抗干扰较强的灰度传感器,发光源采用高亮聚光 LED,比普通红外传感器抗干扰能力要强很多。只有两种输出状态,编程控制简单;根据场地光线等情况调节信号灵敏度。但对于智能送药小车的行驶路径中差值较小不利于智能送药小车判断,故不选用此方案。

   方案二:模拟灰度传感器传感器可发出白色可见光,通过反射面反射,光敏器件可以感知反射强度,输出不同电压,通过对电压信号的处理,可以分析出反射面的灰度变化,通过感知地面红色路径和白色区域的差距,可以判别是否处于路径中央,模拟量输出可根据不同颜色反射的变化,调节程序的参考值方便使用,故使用此方案。

   方案三:智能灰度传感器,是一款颠覆传统巡线传感器的设计。市面上流行的巡线传感器、灰度传感器等要么只能识别特定的两种颜色、要么就是只能是数字量或者模拟量单一输出。 在数字模式下,通过对按键的简单操作,传感器能够记录两种不同颜色。当传感器检测到两种颜色时,能够分别输出高低电平。一次记录后无需再次配置,模拟模式下,传感器输出会随检测对象的颜色灰度而变化。智能寻线传感器除了能够提供性能稳定、环境适应性强的巡线功能之外,还能用作个简单的颜色、灰度传感器,或者应用在接近感应灯中。考虑到经济实惠的层面不考虑此方案。

   综合以上三种方案,选择方案三。

1.2 摄像头的论证与选择

   方案一:工业无畸变摄像头:AHD1080P 高清摄像头,超清镜头,可以堪比手机千万镜头,但需要使用 usb2.0 进行使用,开发难度较高,不能满足智能送药小车的设计需要,故放弃此方案。

   方案二:K210 开发板配套摄像头:Al-Motion K210 Developer Kit 是亚博智能与嘉楠勘智合作开发的一款小型全功能开发板套件。勘智 K210 采用 RISC-V 处理器架构,专为机器视觉与机器听觉多模态识别而设计,可广泛应用于智能家居/机器视觉/智能机器人/安防监控等领域。开发板不仅包含电容触摸屏/摄像头/麦克风/扬声器/六轴姿态传感器/wiFi 模块等多种外设,而且提供丰富的开发资料,方便二次开发和学习,降低了学习 AI 视觉技术的门槛。此开发板功能强大,对此开发板了解有限在有限时间内无法使用 AI 算法进行模型计算,故放弃此方案。

   方案三:OPENMV4 摄像头:采用 STM32H7 主控主频能达到 400MHz,Sersor 感光元件可更换,能很方便更换摄像头模块,能使用全局快门,拍摄更清晰,使用 micropython编程方便简洁,考虑到对 OPENMV 更加熟悉,我们选择此方案。

综合以上三种方案,选择方案三。

1.3 控制系统的论证与选择

   方案一:采用 AT89C51 单片机,AT89C51 是一种带 4K 字节 FLASH 存储器的低电压、高性能 CMOS 8 位微处理器,128 字节内部 RAM,32 个 I/O 口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。运算速度有限不能满足智能小车的运算要求,AD 需要拓展,I/O 脚高电平无输出能力。故不选用此方案。

   方案二:采用 STM32F103 单片机,ARM32 位 Cortex-M3 内核,最高工作频率 72MH 在,片上集成 512KBFlash 存储器,64KBSRAM 存储器,含有双 12 位 ADC,4 兆位/秒的 UART,18 兆位/秒的 SPI,可以快速处理数据,串行调试(SWD)和 JTAG 接口,可以方便下载程序。故选用此方案。

   综合考虑采用 STM32F103 单片机作为控制系统的处理器。

1.4 电源模块的论证与选择

   方案一:选择 12V 锂电池组,12V 锂电池组供电时间长,包含温控主板能够及时感应电池充电温度进行温度保护,还含有过流过压保护电路,能够防止过充过放,锂电池组充电只能使用锂电池充电,安装位置需牢固放于中心,不易拆卸,不适用与长时间调试智能小车。故不选用此方案。

   方案二:选用 18650 锂电池,电池供电稳定,能够防止不稳定电流对主机的伤害,能够提供较持久的电量。方便拆卸,可以随时充电放电,循环使用寿命长,防爆炸、不发烫、不漏液,能够在多种场合使用。价格便宜,经济实惠,故选用这种方案。综合考虑采用 18650 电池供电。

1.5 电机驱动模块的论证与选择

   方案一:BTN7971 电机驱动模块输入电压在 7.2-20v,输出电流能达到 68A,但对于两节 18650 电池串联后电压供电略微不足,可能会影响电机正常运行。模块集成反接、光耦隔离电路,防止烧坏单片机,单模块成本在 100 以上,可能不适合在智能小车的设计中使用。

   方案二:L298N 驱动可实现电机正反转及调速,启动性能好,启动转矩大。工作电压可达 36V,4A。可同时驱动两台直流电机,适用于智能小车的设计。价格在 20 元以内,作为智能小车的驱动较合适。综合考虑采用 L298N 驱动电机。

1.6 无线通信模块的论证与选择

   方案一:无线串口 WiFi 模块 ESP8266,集成 WiFi 功能的 MCU 的 32 位单片机,支持WPA/WPA2 安全模式,可达到 160MHz,包括:IO 控制、定时器、中断、PWMFreeRTOS、串行通信(UART、IIC、SPI)等,但对于我们使用 STM32 单片机进行串口通信比较困难,无法通过 STM32 来控制 esp8266,故不采用此方案。

   方案二:无线串口模块 NRF2401L,无线串口模块可以通过串口来进行无线通信,只需要通过串口发送接收需要处理的数据,大大降低了无线通信的开发成本,缩短研发周期。全双工高速传输,可以同时发送数据,大数据传输,高速率低延迟距离远,能够满足送药小车的基本无线通讯应用。价格比较亲民,比较适合智能送药小车的设计。

   综合考虑采用方案二。

2、系统理论分析与计算

2.1 基于摄像头的数字的识别算法

   此设计使用 STM32H7 主控的 opmv 摄像头模块,通过 Sequential 实现使用 LeNet 模型,通过将图像弄成卷积层块,卷积层用来识别图像里的图像的空间模式,之后的平均池化层用来降低卷积层的敏感性。不断切成小块可以将细节增加,然后我们仍然只能使用 Fashion_MNISTW 作为训练数据集。使用 CPU 进行训练,通过使用自定义函数train_ch5,用于训练模型。最后布置完成 LetNet 模型,能够很好识别数字病房号。通过录入数字模型到摄像头内部存储芯片,摄像头能独立检测并与存储的模型进行比对,相似程度到达 70%以上则认为此数字是正确的数字,将识别结果通过串口发送到主控制板处理进行下一步动作。

2.2 基于灰度传感器与 STM32 片内 AD 的红线循迹计算与检测

2.2.1 灰度传感器的原理分析

   灰度传感器利用不同颜色的检测面对光的反射程度不同。光敏电阻对不同检测面返回的光,其阻值也不同的原理进行颜色深浅检测。在有效的检测距离内,发光二极管发出白光,照射在检测面上,检测面反射部分光线,光敏电阻检测此光线的强度并通过电阻分压接入单片机。

2.2.2 灰度传感器与 STM32F103 单片机的连接

   STM32F103 单片机片上集成 12 位 ADC,此设计使用 4 路 ADC 测量四路灰度传感器的模拟量输入通过对应计算方法计算出对应电阻电压,考虑 STM32F103 片上 ADC 只能测量到 3.3V 的上限,我们将灰度传感器连接到 3.3V 供电,将模拟量接到 PA0~PA3 的引脚传送到单片机内计算。

2.2.3 单片机处理模拟信号并转换的计算公式

   检测到的电压输入到 PA0~PA3,片上 ADC 将使用以下公式转换:

      V 测 = V 基准 * ADValue / 4096 V 基准 =3.3V

FnX301DOfPDqGrDfrltmPlsJr-1_

   通过计算电压值将不同的颜色返回的 ADVlaue 计算比较,若比较两边的 ADVlaue大于 0.4 将可以推断有一端的两个传感器在红线的上方,从而通过调整 PWM 输出控制小车巡红线左右轮前进速度的快慢,以此来控制小车循迹行驶。若四个传感器模拟电压之和降低到 6.5V 时,将选择进入左边还是右边的病房。

2.3 基于 MPU6050 的十字路口转向角度计算与控制

2.3.1 MPU6050 基本功能

   3 轴陀螺仪陀螺仪,测量的是绕 xyz 轴转动的角速度,对角速度积分可以得到角度。

   3 轴加速度计加速度计,测量的是 xyz 方向受到的加速度。在静止时,测量到的是重力加速度,因此当物体倾斜时,根据重力的分力可以粗略的计算角度。在运动时,除了重力加速度,还叠加了由于运动产生的加速度。

2.3.2 四元数转欧拉角的原理

   四元数可以方便的表示 3 维空间的旋转,但其概念不太好理解,可以先类比复数,复数表示的其实是 2 维平面中的旋转。四元数的基本表示形式为:q0+q1*i+q2*j+q3*k,即 1 个实部 3 个虚部,具体细节本篇先不做展开介绍。四元数虽然方便表示旋转,但其形式不太直观,旋转转换成 pitch、roll、yaw 的表示形式,方便观察姿态。

   转换公式为:

FlxQfzO1-onwcKSeCvKTWrmqA3-e

   pitch = asin(-2 * q1 * q3 + 2 * q0* q2)

   roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)

   yaw = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3)

   通过转换四元数输出欧拉角,处理后直接输出对应角度,此设计使用主要是 pitch 角,

   通过程序处理将角度进行测量控制小车精准转向。

2.3.3 转向角度的计算与控制

   MPU6050 初始化后当前角度初始化为 0,通过十字路口时会检测到数字,判断后进行处理转向左端还是右端,若需要转向右端,将 0 度作为基准角度,-90 度作为参考角度,小车驱动电机逆时针旋转到-90 时停止,如没有到达参考角度将继续旋转到检测角度和参考角度一致时停止,左端亦是如此。

3、程序设计

3.1 程序的设计

3.1.1 程序功能描述与设计思路

1、程序功能描述

   此程序设计了识别数字,检测物体,无线通信,AD 转换,精准角度角度、电机控制及灰度检测等功能。

2、程序设计思路

   首先 1 号车通过识别数字,判断执行是否开向中端和远端病房,不需要则直接开向 1 号或 2 号病房,到达病房后判断是否有无线信号请求,如有则启动 2 号车到暂时点等待,等 1 号车完成回到药房,2 号车执行移动到识别到的药房处。

3.2 程序流程图

3.2.1、主程序流程图

Fpr21z1sOESJsv8l62oOp8du9iqG

图 3.2.1 主程序流程图

3.2.2、灰度识别子程序流程图

Fv89-pKH6CyiqXR30lWojS2qpGto

图 3.2.2 灰度识别子程序流程图

3.2.3、电机控制子程序流程图

FnJQn_NDl3O7-IZRjNlxjX4W8F-j

图 3.2.3 电机控制子程序流程图

3.2.4、摄像头处理子程序流程图

FobiNPPxnIGrJRJcXLgO6i04j3SF

图 3.2.4 摄像头处理子程序流程图

4、测试方案与测试结果

4.1 测试方案

4.1.1 传感器测试

   用示波器测量测试灰度传感器接收到红色反射面时两端电压变化范围。记录并计算输入到程序中的电压数据。选出一组最佳数据用于施行的方案。

4.1.2 电源测试

   按设计接好电源电路,调节负载大小,用万用表电源输出电压变化情况、电流变化情况,记录不同负载下的电压和电流值。

4.1.3 直流电机测试

   通过调节 PWM 控制直流电机转速。调节占空比,计算出平均电压值。测量在不同占空比下电机转速和最大负载能力。

4.1.4 功能测试

   根据题目设计要求,完成基本要求和发挥部分的测试。记录运行时间,对比是否满足设计要求。

4.2 测试条件与仪器

   测试条件:在相同白色喷绘布上进行,该设计题中顺序要求每个题进行项目测试。

   测试仪器:信号发生器、示波器、万用表、秒表、卷尺。

4.3 测试结果及分析

4.3.1 测试结果(数据)

   1、灰度传感器测量数据记录

Fniexx-jhd4e1DAeKIHnij7co5rj

   2、电源测量数据记录

FrKdPySz9c7oG02YgbmQAiemmIQW

   3、直流电机速度测量结果

FouDKD40EgOwaWDFVlSu2c3cFX2x

   4、性能测试

FoV8ZfdSIU5x7Y7gsyxdlBdCLu9x

4.3.2 测试分析与结论

   根据上述测试数据,时间均在合格范围内,由此可以得出以下结论:

   1、在 20s 内能完成基本任务,时间相差不大可参考继续提升速度。

   2、能够完成发挥部分的功能,但速度不够快速,需要路径优化。

   3、添加蜂鸣器帮助判断启动时间

   综上所述,本设计基本达到设计要求。

5、总结

   在此次参加比赛过程中出现比较多小问题,我们逐个解决不断完善系统方案,从车体结构选用到小车整体搭建起来用了一天时间,软件调试使用两天时间左右,在此过程攻克摄像头串口收发数据失败、单片机产生 PWM 控制信号紊乱、灰度传感器检测区域过小及数字相似度过高容易误识别等问题,我们不放弃不骄不躁,最终在最后一天中午将小车调整到最佳状态。我们在此次比赛中收获了许多,如何使用最小系统板完成最多的工作,怎样让串口和摄像头连接起来,怎样使用灰度输出 AD 处理控制小车巡线行驶,虽然比赛四天很累,但还是收获颇丰,在此还要感谢赛前指导我们的何老师,他带我们做了许多控制系统项目,让我们有经验去应对此次比赛。

附录 1:电路原理图

FvpvtwIZse_hTz_kP9n8YpOcYt9j

NRF2401L 原理图

FoE0bC-IWqkST4IUBxUCPPIDgETO

L298N 电机驱动原理图

FrZyxPT5RekE0GLk4AL3sLc1WlvQ

灰度传感器原理图

附录 2:源程序

请见附件

附件下载
附录:源代码.docx
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号