STM32G431无刷电机驱动板,板载0.96寸LCD显示屏、IIC接口、HALL接口、SPI接口、低端电流采样、反电动势采样,可用于有感FOC、无感FOC控制算法学习。
无刷电机FOC控制算法学习
1.产品简介
一款高性价比的无刷电机(BLDC、PMSM)FOC控制器,板载HALL接口、SPI接口、IIC接口、反电动势检测、相电流检测、电位器调速、0.96寸LCD显示屏,可以用于有感FOC、无感FOC控制算法的学习研究。工程使用STM32CubeMX进行配置,使用FreeRTOS进行开发设计,测试程序请下载附件进行验证。
2.应用场景
- 有感FOC控制算法学习:电流环、速度环、位置环
- 无感FOC控制算法学习:龙伯格观测器、滑膜观测器、扩展卡尔曼滤波器、高频注入算法。
- BLDC/PMSM电机:适用于市面上所有的12V~24V无刷直流电机
- 机器人关节,相机云台,力反馈旋钮,航模电机,智能车
3.产品概述
- 制作成本低,物料成本30~50元
- 主控:STM32G431CBT6,ARM Cortex-M4内核,带有FPU,CPU主频高达170MHz,RAM:32KB,Flash:128KB。
- 电阻电容均采用0603封装,便于复刻焊接
- 电源输入接口带有24V的TVS二极管,可以防止开关瞬间的尖峰电压损坏后级电路
- 板载0.96寸LCD显示屏(驱动IC:ST7735S),可用于系统工作状态的显示
- 板载UART接口、SWD接口,可用于程序的下载和调试
- 板载三相电流低端检测模块,可用于无刷直流电机“电流环”的控制
- 板载三相反电动势检测模块,可用于无感FOC控制
- 板载一个电位器,可用于调速和闭环位置控制的程序设计,板载三个用户自定义按键和一个用户自定义LED。
- 兼容SimpleFOC控制程序,可移植FreeRTOS,便于进行多线程开发。
4.产品参数
- 供电接口:DC005公头,输入电压范围:12V~24V,推荐使用12V或24V的电源适配器进行供电
- 最大采样电流:10A,与选用的采样电阻、运算放大器增益配置、N-MOS有关,推荐采样电流控制在8A以下。
- 板载电源模块:24V转12V,12V转5V,5V转3.3V,ADC基准电源单独供电。
- 三相半桥驱动IC采用EG2133,自带闭锁功能,无需在程序中设置死区时间,仅输入三路PWM控制信号即可。
- 板载外设接口:IIC、SPI、HALL、UART
- PCB参数:双层板,板子尺寸:99.568mm*61.016mm,可在嘉立创免费打样,可以任意选择你喜欢的板子颜色。
- GPIO引脚分配:
程序下载、调试接口:
自定义LED、按键接口:
三相电流采集:推荐配置ADC为“定时器触发”+“注入组”
三相电压采集:推荐配置ADC为“定时器触发”+“规则组”+“多通道”+“DMA”
母线电压采集:
电位器接口:
0.96寸LCD接口:FPC接口型号为0.5mm,上接式8P
HALL信号接口:
板载IIC接口:
板载SPI接口:
STM32CubeMX引脚分配图:
3D简介图:
5.使用说明
- 推荐STM32CubeMX进行工程配置
- 如果所用无刷电机工作电压为12V,请使用12V的电源适配器进行供电。如果无刷电机的工作电压为24V,请使用24V的电源适配器进行供电
- 下载程序时,请先停止电机的转动,再使用SWD接口进行下载
- 焊接好PCB后,可以使用附件中的测试程序进行验证。
- 详细GPIO分配,以及运放配置,分压电阻的计算,请参考原理图中的设计进行程序设计。
- PCB焊接备注说明:请先下载附件中的“焊接辅助位图”,再进行对照焊接。所有外设均已得到验证,如遇到问题,请先检查焊接问题,如果个人无法解决,请在讨论区分享你的问题。
- 首先焊接电源模块:24V转12V,如果输入电源为12V,输出电压应为9.6V左右
- 焊接12V转5V电源模块,焊接完成后使用万用表测量输出是否为5V左右
- 焊接5V转3.3V,共有两路3.3V的电源,其中一路给ADC的基准电源单独供电,详细信息请参考电路原理图。
- 焊接EG2133三相半桥驱动电路,使用万用表测试是否有短路问题
- 焊接三相逆变电路,注意焊接MOS管时,先使用万用表测量一下MOS的好坏,注意焊接温度和焊接时间,以免损坏MOS管造成短路问题。
- 焊接运放电路
- 焊接主控电路及按键
- 焊接0.96寸LCD,FPC接口
【20240126更新】焊接完这两个滤波电容后,可能会挡到FPC座的抽拉。
6.备注
【20240126更新】请下载附件中的Gerber文件,在嘉立创下单助手中进行PCB打样,可以使用免费打样卷,双层板,可以选择任意PCB颜色。
- 所有元器件均可在立创商城购买到
- 代码下载方式:提供测试程序,使用STLINK或DAPLINK在KEIL中进行编译下载
- 附件中的文件:
- 焊接辅助位图:用于PCB焊接
- 测试程序源码1:DSP+UART,使用STM32裸机开发,可实现FPU运算浮点数据,提供UART堵塞式发送数据、DMA发送数据,使用HAL库进行开发,对UART数据发送函数已进行封装处理,可直接进行调用
- 测试程序源码2:使用STM32裸机开发,可以用于0.96寸LCD显示功能测试,屏幕驱动IC:ST7735
- 测试程序源码3:使用STM32裸机开发,可以用于SVPWM开环驱动无刷电机,可以串口输出三相占空比波形进行观察,波形应为三相相位差120°的马鞍波
- 测试程序源码4:使用STM32+FreeRTOS进行开发,主要用于测试ADC功能,定时器TIM1_CH4触发ADC1注入组,采集三相电流。定时器TIM4_CH4触发ADC1规则组转换、ADC2规则组转换。使用FreeRTOS创建多线程,各任务配置如下,详细配置请参考该附件中的源码。
HEX固件:提供的各测试程序中,均已包含生成的hex文件,查找方法如下:以测试程序源码4为例,其他测试程序的固件路径类似。
7.测试视频/图片
注意:每次上传程序时,请先让电机停止转动,再上传程序。工程使用STM32CubeMX进行配置,使用FreeRTOS进行开发。前3个测试程序可以不看,但是第四个测试程序,强烈建议下载看一下,相信你会有所收获!
- 测试程序1:验证串口+DSP库,使用vofa+进行串口调试。请注意将USART1的TX和RX,重映射到PB6和PB7。完整版测试程序,请下载附件“测试程序1:DSP+UART”
使用DSP库时,需要添加的宏定义:,__TARGET_FPU_VFP, __FPU_PRESENT=1U, ARM_MATH_CM4
输出结果:
- 测试2:0.96寸LCD,完整版程序请下载附件“测试程序2:0.96LCD”
- 测试3:SVPWM开环运行测试,本次测试使用的为24V无刷电机,使用24电源适配器进行供电。完整版程序请下载“测试程序3:SVPWM开环”
- 测试4:按键控制任务的启停+三相电流采集+三相电压采集+电位器,使用“JustFloat协议”串口输出电压电流数据。完整版程序,请下载附件“测试程序4:ADC采集”
- 按下按键PC15,电机开始转动,再次按下按键PC15,电机停止转动。
点赞