核心内容摘要
Python 微信小程序的校园新闻发布系统
低压无感BLDC方波控制全部源码方便调试移植
通用性极高图片中的电机一套参数即可启动。
ADC方案
电转速最高12w
电感法和普通三段式
按键启动和调速
开环速度环限流环
参数调整全部宏定义方便调试 代码全部源码绝对超值在低压无感BLDC方波控制领域一套参数通吃不同电机是真的香。
这次撸的代码直接把启动参数扔进宏定义随便换个电机拧上就能转。
比如用ST的G系列主控驱动24V电机ADC电流环采样周期压到5us以内实测电转速飙到12万RPM不带喘的。
低压无感BLDC方波控制全部源码方便调试移植
通用性极高图片中的电机一套参数即可启动。
ADC方案
电转速最高12w
电感法和普通三段式
按键启动和调速
开环速度环限流环
参数调整全部宏定义方便调试 代码全部源码绝对超值ADC方案整得贼暴力三电阻采样配合DMA双缓冲。
下面这段电流检测代码直接把硬件特性榨干void ADC_Init(void) { hadc
Instance-CR2 | ADC_CR2_DMA; // 硬核寄存器操作 hadc
DMA_Handle-Init.Mode DMA_CIRCULAR; HAL_ADC_Start_DMA(hadc1, (uint32_t*)adc_buffer,
; }配合窗口比较器自动触发采样连CPU中断都省了。
电流环响应速度比传统方案快三倍堵转时电流瞬间锁定在设定值。
电感法启动骚操作在于动态阈值判定传统三段式经常卡在换相点抖动。
看这个换相逻辑if(EMF_ZERO_CROSS){ COMMUTATE_NEXT(); g_speed 1000000/(now - last_commute_time); // 实时计算转速 last_commute_time now; }配合斜率补偿低速换相误差控制在±3电角度。
按键调速直接映射到PWM占空比连电位器都省了void KEY_Handler() { if(UP_KEY) target_speed 500; if(DOWN_KEY) target_speed - 500; target_speed CLAMP(target_speed, 0, MAX_SPEED); }速度环用了个改良的变参数PID参数调整全在头文件里摆着#define SPEED_KP (
5f) // 速度环比例 #define CURRENT_KI (
02f) // 电流环积分 #define DEAD_TIME (
// 硬件死区时间ns最狠的是过流保护硬件比较器软件双保险。
电流突变超过阈值直接关断PWM比看门狗反应还快__attribute__((section(.fastcode))) void PWM_OC_Handler() { PWM_DISABLE(); fault_flag | OVER_CURRENT_FLAG; }这套代码在12V~36V电机上实测通吃从航模电机到电动车轮毂电机改改驱动MOS就能适配。
源码里到处是//TODO注释位明显是留着给魔改的空间。
比如把速度环换成滑模控制或者加个CAN总线接口半小时就能整出新花样。