2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮
前言
首先要肯定电子设计竞赛的含金量,而也正是电子设计竞赛给了我本科阶段最好的体验。此文章介绍的作品是我所在团队于2019年参加电赛的参赛作品,在队友、指导老师的共同努力下有幸获得国家级二等奖。诚然,此作品确实存在很多不足,在此只是分享一下我们当时的方案和经历,供日后参加电赛的学生朋友们参考,不足之处望大家见谅。
完整题目
来自电赛官网:H题模拟电磁曲射炮
实现方案
本系统为自行设计并制作的模拟电磁曲射炮,采用STM32F1单片机作为控制核心,通过串口与外设模块进行通信;采用OpenMV作为图像传感器、TFmini激光测距模块作为距离传感器,通过PID等控制算法实现题目炮击功能。
云台:选用带有平台大圆盘底座的二自由度舵机云台
OpenMV:星瞳科技文档及教程
TFmini:北醒
HMI串口屏:淘晶驰
电磁炮:炮弹选用磁铁,注意炮管尺寸与炮弹形状匹配;线圈使用漆包线自行绕制,注意绕线尽量工整,线圈匝数适量;选用1000uf电容,充放电电路由直流稳压电源经升压模块升压后由12V升为75V,再经过继电器1与电容相连,通过使用单片机控制继电器1常开触点的通断来给电容充电。为了防止充电电流过大损坏继电器,在回路中串联了15欧姆的限流电阻。电容通过继电器2与电磁炮线圈相连,通过使用单片机控制继电器2常开触点的通断来给电容放电实现电磁炮的发射。
功能实现:硬件搭建结束后进行大量的舵机摆角和出射距离的测试,再进行线性拟合,确定部分区间的补偿偏置可近似实现给定距离的发射;发挥题目涉及自动寻靶,采用PID对舵机摆角进行调整,使靶心位于视野中央发射。
程序设计逻辑
外设逻辑:OpenMV实时处理图像确定目标靶位置,OLED实时显示由TFmini测得与目标靶的距离信息,HMI屏幕实时接收操控指令。以上OpenMV、TFmini、HMI各占用一个Usart,OLED遵循IIC协议。
开关逻辑:这里的开关指电磁炮充放电发射开关,依靠继电器实现。
void vRelayContorl(void)
{
ui_Timer1ms++;
if(ui_Timer1ms <= 3500)
{
HAL_GPIO_WritePin(C_Save_GPIO_Port, C_Save_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(C_Release_GPIO_Port, C_Release_Pin, GPIO_PIN_RESET);
}
else if(ui_Timer1ms > 3500 && ui_Timer1ms <= 5000)
HAL_GPIO_WritePin(C_Save_GPIO_Port, C_Save_Pin, GPIO_PIN_RESET);
else if(ui_Timer1ms > 5000 && ui_Timer1ms <= 10000)
HAL_GPIO_WritePin(C_Release_GPIO_Port, C_Release_Pin, GPIO_PIN_SET);
else if(ui_Timer1ms > 10000 && ui_Timer1ms <= 11000)
HAL_GPIO_WritePin(C_Release_GPIO_Port, C_Release_Pin, GPIO_PIN_RESET);
}
启动逻辑:先通过HMI选择题目序号,PID调整舵机角度,继电器控制电容充放电,实现题目功能。
测试方案
将系统接上电源,把完整程序下载至STM32F1单片机中,用触摸屏控制系统完成题目中的各项要求指标并记录。
根据上述测试数据,系统仍存在偏差,此偏差由激光测距模块长距离测量偏差造成;考虑到子弹外径与炮管内径的偏差,子弹在炮管中运动时速度发生改变,炮击精度较差。
程序源码
链接:https://pan.baidu.com/s/1gOhM6ySnaQ1uQtsrI-b76A
提取码:s1xl
复制这段内容后打开百度网盘手机App,操作更方便哦