Skip to content

About

仿生蝴蝶四翼扑动控制固件:STM32G031、ELRS/CRSF 遥控、角度反馈与 PID 电机闭环。

Topics

Resources

Stars

11 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Bionic Butterfly — Four wings. One control system.

基于 STM32G031 的仿生蝴蝶扑翼控制系统

MCU: STM32G031 Control: PID Protocol: CRSF

主要功能 · 硬件平台 · 编译与烧录 · 项目文档

1. 项目简介

本项目是一个基于 STM32G031G8U 的仿生蝴蝶扑翼控制固件,实现了从 ELRS/CRSF 遥控接收、4 路磁编码器角度采集,到四路空心杯电机 PWM 驱动与 PID 闭环控制的完整链路。

当前工程使用 STM32 HAL + 裸机轮询调度方式实现,主要目标是完成仿生蝴蝶四翼机构的多模式扑翼控制与基础安全保护。

2. 主要功能

  • 基于 USART1 + DMA + 空闲中断 接收并解析 ELRS/CRSF 遥控数据
  • 基于 ADC1 + DMA 采集 4 路角度反馈信号
  • 基于 TIM2 / TIM3 输出 4 路双向 PWM,驱动四个空心杯电机
  • 基于位置式 PID 实现四路电机闭环角度控制
  • 支持多种控制模式:
    • Mode 0:中立/复位模式
    • Mode 1:姿态锁定模式
    • Mode 2:扫描/扑翼模式
  • 集成基础安全逻辑:
    • 遥控信号丢失保护
    • 编码器健康检测
    • 电机堵转保护

3. 硬件平台

MCU

  • STM32G031G8U
  • Cortex-M0+
  • 64KB Flash
  • 8KB SRAM
  • 系统时钟:HSI 16MHz + PLL = 64MHz

外设使用

  • USART1

    • PB6 -> TX
    • PB7 -> RX
    • 波特率:420000
    • 用于接收 ELRS 接收机 输出的 CRSF 数据
  • ADC1 + DMA

    • PA0 / PA1 / PA6 / PA7
    • 4 路角度采样输入
  • TIM2 PWM

    • PA15 / PB3 / PA2 / PA3
    • 对应 2 路电机双通道输出
  • TIM3 PWM

    • PB4 / PB5 / PB0 / PB1
    • 对应另外 2 路电机双通道输出

4. 控制链路

项目的主控制流程如下:

ELRS遥控器
  -> ELRS接收机
  -> USART1 CRSF数据解析
  -> 通道映射
  -> 目标角生成
  -> ADC采集编码器角度
  -> PID计算
  -> TIM2/TIM3 PWM输出
  -> 四路电机驱动扑翼机构

5. 软件架构

工程采用较直接的分层组织方式:

Core/
  STM32CubeMX 生成的外设初始化代码

User/App/
  业务控制逻辑
  - motor_app.c
  - encoder_app.c
  - elrs_app.c

User/Driver/
  设备驱动与控制底层
  - motor_bsp.c
  - encoder_bsp.c
  - elrs_bsp.c

User/Module/
  通用功能模块
  - pid/

User/
  调度器与公共头文件
  - Scheduler.c
  - Mydefine.h

关键模块说明

  • User/Scheduler.c

    • 简单裸机周期调度器
    • 当前以 10ms 周期运行编码器采集与电机控制任务
  • User/Driver/elrs_bsp.c

    • CRSF 帧接收与通道解包
    • 将遥控输入映射为 Yaw / Pitch / Roll / Mode / Switch 等控制量
  • User/Driver/encoder_bsp.c

    • 4 路 ADC 采样
    • 角度中点标定与归一化处理
    • 编码器卡死/噪声等健康检测
  • User/Driver/motor_bsp.c

    • 四路位置式 PID
    • 目标角就近展开
    • 双通道 PWM 输出控制
  • User/App/motor_app.c

    • 扑翼模式逻辑
    • 扫描轨迹生成
    • 遥控失联保护、堵转保护联动

6. 遥控通道定义

根据当前代码实现,主要使用以下通道:

通道 说明 当前用途
CH1 Yaw 左右转向控制
CH2 midpoint 中位微调
CH3 Pitch 已解析,当前主要为预留量
CH4 Roll 已解析,当前主要为预留量
CH5 Switch 电机总使能
CH6 Mode 模式切换

7. 编译与烧录

开发环境

  • Keil MDK-ARM
  • 工程文件:MDK-ARM/hudie_fly_01.uvprojx
  • CubeMX 配置文件:hudie_fly_01.ioc

编译步骤

  1. 使用 Keil 打开 MDK-ARM/hudie_fly_01.uvprojx
  2. 选择目标 hudie_fly_01
  3. 执行 Build
  4. 连接下载器后烧录到 STM32G031G8U

说明

  • Core/ 和 Drivers/ 目录主要为 CubeMX / HAL 生成代码
  • MDK-ARM/hudie_fly_01/ 目录下大多是构建产物,如 .axf、.o、.map、.hex

8. 项目文档

仓库内已包含若干说明文档,可配合源码阅读:

9. 当前特点与限制

特点

  • 工程结构简单,便于快速调试
  • 控制链路完整,适合做扑翼控制实验
  • 已加入基础保护逻辑,便于联调和排障

限制

  • 当前为裸机周期调度,不是 RTOS 架构
  • 遥控通道中 Pitch / Roll 已解析,但现阶段未完全参与核心扑翼控制
  • PID 参数、中点标定值与机构装配状态强相关,需要结合实物继续整定

10. 仓库整理建议

如果后续上传到 GitHub,建议优先提交以下内容:

  • Core/
  • Drivers/
  • User/
  • docs/
  • MDK-ARM/*.uvprojx
  • MDK-ARM/*.uvoptx
  • MDK-ARM/startup_stm32g031xx.s
  • hudie_fly_01.ioc
  • .mxproject

通常不建议提交:

  • MDK-ARM/hudie_fly_01/ 下的编译产物
  • *.o
  • *.d
  • *.crf
  • *.axf
  • *.map
  • *.htm
  • *.hex

About

仿生蝴蝶四翼扑动控制固件:STM32G031、ELRS/CRSF 遥控、角度反馈与 PID 电机闭环。

Topics

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages