前言
这个设计是我参加2019年电赛的H题,把这写下来,留着以后看,虽然设计在现在看来也是极为青涩的,但是还我觉得这也是一种成长,总归是要慢慢进步的。
比赛要求
摘要
本参赛小组设计并制作了模拟电磁曲射炮,实现在不同方向自动或手动搜索目标并且发射弹丸的功能。该系统主要由机械部分和控制部分组成,其中机械部分包括底座、云台以及炮筒等;控制部分主要由单片机、舵机、摄像头以及电磁炮控制电路组成。系统选用 STM32F103ZET6 为控制核心,通过晶闸管和继电器控制电磁炮发射,通过舵机控制
电磁炮发射方向,通过摄像头 OpenMV 图像信息分析目标位置并反馈,采用 PID 算法实现自动控制。该系统具有结构稳定、控制方便、抗干扰能力强等优点。
关键词:电磁炮、STM32F103ZET6、继电器、舵机、OpenMV、PID 算法
系统方案
本系统主要由 OpenMV 图像采集模块、单片机控制模块、舵机控制模块、电磁炮控制模块、电源模块组成。
单片机的论证与选择
- 方案一:MSP430。
采用 TI 的 MSP430 系列单片机做主控制器,该系列单片机资源 较丰富,易控制, 低功耗。但由是于单片机本身主频较低,因而处理速度一般。
- 方案二:STM32F103。
采用 STM32F103 系列单片机做主控芯片,该单片机控制较为复杂,且内部定时器,
IIC,SPI 等资源丰富,运算处理速度快,十分适合控制系统的实时控制。
综合以上两种方案,选择方案二。
距离测量模块的选择
- 方案一:超声波测距模块
超声波指向性强,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制。
- 方案二:摄像头 OpenMV
OpenMV 测距有两种方法,第一种是利用 apriltag,Apriltag 可以进行 3D 定位。第二种是选参照物,利用参照物的大小比例来计算距离。
综合以上两种方案,选择方案二。
控制系统的论证与选择
- 方案一:采用模糊控制算法
模糊控制算法有许多优良的特性,它不需要事先知道对象的数学模型。具有系统响应快、超调小、过渡过程时间短等优点。但是它的编程复杂,数据处理量大。
- 方案二:采用 PID 算法
按比例、积分、微分的函数关系进行运算,然后将其运算结果用以输出控制。优点是控制精度高且算法简单明了。对于本系统的控制已足够精确,节约了单片机的资源与运算时间。
综合以上两种方案,选择方案二。
系统理论分析与计算
系统结构的分析
通过对题目要求的分析,需要制作电磁炮并控制电磁炮旋转角度,而电磁炮的旋转角度则是通过控制舵机的旋转角度控制的。旋转云台下方舵机改变偏航角使得电磁炮正对环形靶,旋转云台上方舵机改变俯仰角使得电磁炮射出一定距离。摄像头 OpenMV 识别引导标识的方向与距离并反馈,采用 PID 算法自动控制舵机的旋转角度,从而实现电磁炮瞄准环形靶。
电磁炮控制分析
电磁炮电路由逆变电路、升压电路、整流电路、保护电路、泄放电路四部分组成, 采用单管自激振荡电路作为逆变电路,将直流电逆变为交流电,以便于后面用互感线圈进行升压,升压后可达到一百余伏,然后通过整流二极管将交流电整形成直流脉冲,然后给电容充电,其中稳压管起保护作用,将电压稳定在 200v 左右,防止过高的电压击穿电容器,最后的泄放电路将电容内部的高压直流电瞬间释放,已到达瞬间电压电流都很高的目的,同时获得强大的电磁力,将铁质子弹发射出去。
舵机旋转角度的计算
俯仰角的计算
偏航角的计算
偏航角即在水平方向上的偏离角度,在基础要求中,偏航角要求输入,因此就可以将偏航角转换成控制舵机的 PWM 波的值,然后进行控制,输出不同脉冲宽度的方波, 其中 脉宽波= 50 + 偏航角* 100/90.0。通过对脉宽的逐渐增加来达到舵机不同的运转方向以及速度。
电路与程序设计
电路的设计
系统总体框图
电磁炮子系统框图
电磁炮子系统电路原理图
舵机子系统框图
程序的设计
程序功能描述与设计思路
根据题目要求,软件部分实现摄像头模块的采集、电磁炮自动发射、舵机的自动旋转、无线遥控的功能设置和显示功能。
- 摄像头图像的采集:使用摄像头 OpenMV 对图像进行处理,将引导标识中心点坐标及位置反馈至 STM32。
- 电磁炮自动发射:当舵机旋转至正确位置后,STM32 控制电容蓄能时间,一定时间后发射电磁炮。
- 舵机自动旋转:STM32 对 OpenMV 返回值进行处理,控制舵机旋转。旋转云台下方舵机改变偏航角使得电磁炮正对环形靶,旋转云台上方舵机改变俯仰角使得电磁炮射出一定距离。
- 无线遥控的功能设置:使用红外遥控通过按键控制模式选择,实现基本部分和发挥部分的要求;
- 显示:显示距离、角度、模式等必要参数,方便记录观察。
程序流程图
本次设计程序较为简单,只需要按键输入数值然后在进行,模式的选择,控制舵机旋转瞄准,然后控制电压的大小,以到达不同的电源充能然后通过晶闸管对电容的能量进行瞬间泄放。从而将电能转换成子弹的动能,并发射出去。
测试方案与测试结果
测试方案
硬件测试
电路焊接完成后,用万用表检测是否有断路、断路等各种故障。检测无误后,进行整体安装,将电路安装在支架适当位置。同时检测各个元器件的好坏,例如,红外探头、舵机、电磁炮控制电路等等。
软件仿真测试
根据要求,由于电磁炮的瞬间电压较大,因此在控制之前要进行软件仿真模拟,通过对单片机程序的烧录,然后通过示波器检测引脚的波形图,验证信号输出的正确性, 因此在不断的输出后 不断的验证,达到软件的仿真验证。
硬件软件联调
根据比赛的要求,自己制作类似的靶子以及标志物,然后进行比赛仿真模拟练习。硬件部分安装完成以后,将程序完全下载到单片机中,在场地上试运行,观察电磁
炮的发射状况,以及显示屏的显示情况。然后根据实际落炮点偏差情况,对程序进行改正优化。使其运行显示逐步精确。
测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表。
测试结果及分析
测试结果(数据)
实验次数 | 蓄能时间(ms) | 电压值 | 射程 |
---|---|---|---|
1 | 5000 | 71.8 | 85 |
2 | 5500 | 75 | 160 |
3 | 5750 | 78 | 200 |
4 | 6000 | 80.6 | 220 |
5 | 7500 | 89 | 260 |
测试分析与结论
根据反复调整测试,由此可以得出以下结论:
- 电磁炮一键发射,通过定时器控制定时时间的长度,来达到蓄能的目的,然后,单片机关闭蓄电的继电器,然后,控制晶闸管来释放电能,达到发炮的效果。
- 当炮台检测到红色的标志物之后,可以调整舵机的转向,瞄准目标,通过摄像头测量距离,计算蓄能时间,然后自动的完成开炮的行动。
- 自动寻找目标,自动识别距离角度等参数,自行计算发炮的角度和蓄能电压。
- 通过添加外加电路,在测距和颜色识别基础上实现,通过液晶屏对结果进行显示,使炮台运动情况一目了然。
综上所述,本设计达到设计要求。