前言
以下代码源于比赛时的源代码,实现赛题的基本部分即定点打击,没有实现扩展部分openMV识别打击,没贴出openMV部分代码,两个部分代码是独立的,可以通过串口通信建立联系,比赛当时因为元件邮寄时间耽误,没来得及尝试,读者可自行尝试。
硬件
- 电磁炮
1个线圈(线圈得耐心绕紧密,可边绕边滴胶水)、1个高压电容(建议用220V)、1个升压模块、1个炮管(普通的塑料管)、两个开关(充电和放电,充电开关可用高电压继电器,放电开关建议用可控硅,有的同学用继电器也不会烧,得结合具体情况)、电池(有条件用锂电池比较稳定)
- 控制云台
2个舵机、1个云台、1块开发板(下面代码用的是F407)、1个机械键盘、1个OLED、1个openMV(用于识别靶心)、1个超声波(用于测试距离)
- 电磁炮的基本电路图
软件
-
数学建模
-
建立方程:
方程1:f1(垂直方向角度,射程)=0
方程2:f2(垂直方向角度,PWM1)=0
方程3:f3(水平方向角度,PWM2)=0 -
解方程
从极端值开始,间隔为5度或者更小,每组取5到8个个点取平均值,取得数据,利用Matlab或者Exel数学工具,拟合出垂直和水平方向的方程 -
代码
以下代码是stm32主函数部分代码:
具体代码下载地址
#include "sys.h"
#include "delay.h"
#include "key16.h"
#include "usart.h"