问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32的电磁炮设计与实现

创作时间:
作者:
@小白创作中心

基于STM32的电磁炮设计与实现

引用
CSDN
1.
https://blog.csdn.net/weixin_52531699/article/details/141437002

本文介绍了一个基于STM32F407单片机的电磁炮设计项目。该项目通过Boost电路实现60V电压输出,采用IGBT作为开关管,电解电容作为储能元件。文章详细介绍了升压电路、降压电路、控制电路的设计原理,并提供了完整的硬件参数、电路图和软件代码。

项目简介

该项目是一个简易电磁炮设计,主要用于测试电磁炮原理。系统采用Boost电路进行升压,IGBT作为开关管,电解电容作为储能元件。整个系统由STM32F407单片机控制,通过两个独立按键实现子弹发射和复位重置功能。

项目功能

  • 基于STM32F407单片机设计
  • 两个独立按键:子弹发射和复位重置
  • Boost升压电路提供60V电压
  • 电容充电约10秒后可发射子弹

项目参数

  • 控制部分:STM32F407
  • Boost电路芯片:LGS6302B5(Legend-Si)
  • 5V电源芯片:MP2225GJ-Z
  • 3.3V电源芯片:MP2225GJ-Z
  • 电压隔离芯片:PC817C光耦
  • 发射电路开关管:IGBT(FGH60N60SMD,onsemi)

原理解析(硬件说明)

整体设计分为三部分:升压电路、降压电路和控制电路。

Boost 60V升压电路

Boost电路采用LGS6302,这是一种集成功率开关的异步升压转换器,具有3V到60V的宽输入电压范围。输出电压可通过外部电阻配置,推荐使用5脚设计。

输出电压计算公式:

当输出电压为60V时,若RG=8K,则RF应为392K(实际使用390K)。

电容和电感选择:

  • 输入电容CIN建议使用10uF陶瓷电容
  • 电感值计算公式:(具体计算过程略)
  • 输出电容应尽量选择较大值

Buck 5V、3.3V降压电路

降压电路采用MP2225GJ-Z芯片,具体设计可参考工科男孙老师的B站视频教程。

控制电路

发射部分核心器件:

  • IGBT(绝缘栅双极型晶体管):

  • 结构:发射极、集电极和栅极

  • 特点:高输入阻抗、高电流承载能力

  • 主要参数:VGE = 4.5V,VCE = 1.9V

  • 光耦:

  • 作用:电气隔离和信号传递

  • 关注参数:开关时间

发射控制原理:

通过STM32的PB5引脚控制光耦(PC817)导通,进而控制IGBT的开关状态。当PB5为低电平时,光耦导通,IGBT开启;当PB5为高电平时,光耦截止,IGBT关闭。

电容充电部分:

采用简单的开关控制电路,拨码开关打开时开始充电,充电电压为60V。

控制部分

整体设计思路如图所示,按键采用上拉电阻接法,后续可扩展舵机控制和串口通讯功能。

软件代码

时钟配置: 外部时钟

系统烧录方式:(具体方式略)

输入输出引脚配置: PB5输出,PB8、PB9采用外部中断

中断服务函数:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == KEY1_Pin) 
    {
        HAL_GPIO_WritePin(launch_GPIO_Port, launch_Pin, GPIO_PIN_RESET);
        for(uint64_t j=0;j<150000;j++)
        for(uint64_t i;i<100000;i++);
        HAL_GPIO_WritePin(launch_GPIO_Port, launch_Pin, GPIO_PIN_SET);
        for(short i;i<30000;i++);
    }
    if(GPIO_Pin == KEY2_Pin) 
    {
        HAL_GPIO_WritePin(launch_GPIO_Port, launch_Pin, GPIO_PIN_SET);
        for(short i;i<25000;i++);
    }
}

主函数:

int main(void)
{
  /* USER CODE BEGIN 1 */
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
  key1=HAL_GPIO_ReadPin(GPIOB,KEY1_Pin);
  key2=HAL_GPIO_ReadPin(GPIOB,KEY2_Pin);
  HAL_GPIO_WritePin(launch_GPIO_Port, launch_Pin, GPIO_PIN_SET);
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
    key1=HAL_GPIO_ReadPin(GPIOB,KEY1_Pin);
    key2=HAL_GPIO_ReadPin(GPIOB,KEY2_Pin);
  }
  /* USER CODE END 3 */
}

实验测试及结果

  • 5V电压输出测试
  • 3.3V电压输出测试
  • 60V电压输出测试

实物图




项目资源

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号