2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮

2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮

前言

首先要肯定电子设计竞赛的含金量,而也正是电子设计竞赛给了我本科阶段最好的体验。此文章介绍的作品是我所在团队于2019年参加电赛的参赛作品,在队友、指导老师的共同努力下有幸获得国家级二等奖。诚然,此作品确实存在很多不足,在此只是分享一下我们当时的方案和经历,供日后参加电赛的学生朋友们参考,不足之处望大家见谅。

完整题目

来自电赛官网:H题模拟电磁曲射炮

实现方案

本系统为自行设计并制作的模拟电磁曲射炮,采用STM32F1单片机作为控制核心,通过串口与外设模块进行通信;采用OpenMV作为图像传感器、TFmini激光测距模块作为距离传感器,通过PID等控制算法实现题目炮击功能。
云台:选用带有平台大圆盘底座的二自由度舵机云台
OpenMV:星瞳科技文档及教程
TFmini:北醒
HMI串口屏:淘晶驰
电磁炮:炮弹选用磁铁,注意炮管尺寸与炮弹形状匹配;线圈使用漆包线自行绕制,注意绕线尽量工整,线圈匝数适量;选用1000uf电容,充放电电路由直流稳压电源经升压模块升压后由12V升为75V,再经过继电器1与电容相连,通过使用单片机控制继电器1常开触点的通断来给电容充电。为了防止充电电流过大损坏继电器,在回路中串联了15欧姆的限流电阻。电容通过继电器2与电磁炮线圈相连,通过使用单片机控制继电器2常开触点的通断来给电容放电实现电磁炮的发射。2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮_第1张图片
2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮_第2张图片
功能实现:硬件搭建结束后进行大量的舵机摆角和出射距离的测试,再进行线性拟合,确定部分区间的补偿偏置可近似实现给定距离的发射;发挥题目涉及自动寻靶,采用PID对舵机摆角进行调整,使靶心位于视野中央发射。

程序设计逻辑

外设逻辑:OpenMV实时处理图像确定目标靶位置,OLED实时显示由TFmini测得与目标靶的距离信息,HMI屏幕实时接收操控指令。以上OpenMV、TFmini、HMI各占用一个Usart,OLED遵循IIC协议。
开关逻辑:这里的开关指电磁炮充放电发射开关,依靠继电器实现。

/*
**********************************************************************
*函数名称:void vRelayContorl(void)
*函数功能:继电器控制电容充放电
*				
*使用说明:无
*入口参数:无
*返 回 值:无
*
*函数作者:YJ_Xar
*创建日期:2019-8-8 11:26:28
**********************************************************************
*/
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单片机中,用触摸屏控制系统完成题目中的各项要求指标并记录。
2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮_第3张图片

根据上述测试数据,系统仍存在偏差,此偏差由激光测距模块长距离测量偏差造成;考虑到子弹外径与炮管内径的偏差,子弹在炮管中运动时速度发生改变,炮击精度较差。

程序源码

链接:https://pan.baidu.com/s/1gOhM6ySnaQ1uQtsrI-b76A
提取码:s1xl
复制这段内容后打开百度网盘手机App,操作更方便哦
2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮_第4张图片
2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮_第5张图片

你可能感兴趣的:(工程项目,嵌入式,stm32,单片机)