高压无感BLDC方案,主控芯片APT32F1023 | 接口功能全面,资料完备的控制方案
高压无感bldc方案,主控芯片apt32f1023。 接口包括 高压无感bldc方案,主控芯片apt32f1023。 接口包括启停控制,正反转控制,旋钮调速控制。 资料包括原理图,pcb,程序。
无感BLDC的控制总让人头秃,尤其是高压场景下既要性能又要稳定。最近折腾APT32F1023搞了套高压无感方案,实测驱动800W电机稳如老狗,分享几个关键实现点。
先看硬件配置,APT32F1023这颗国产MCU真香——72MHz主频带硬件乘除法器,6路PWM互补输出自带死区控制,关键是有个16位高精度ADC。原理图上MOS驱动用的是HIP4081A,配合自举电路实现高压侧驱动,这部分布线要注意栅极电阻靠近MOS管放置。
启动控制最考验技术,这里用三段式启动:
void Motor_Start(void)
{
// 预定位阶段
PWM_Output(PhaseA_H, DUTY_10); //强制A相导通
delay_ms(500);
// 外同步加速
for(uint8_t i=0;i<50;i++){
Commutation_Next(); //强制换相
delay_us(2000 - i*30);
}
// 切入反电动势检测
BEMF_Check_Enable = 1;
}
预定位时的占空比不能太大,否则电机可能"咯噔"一下抖动。切入闭环的时机要根据电机特性调整,我们在ADC里做了个速度阈值判断,超过200RPM才切换。

高压无感bldc方案,主控芯片apt32f1023。 接口包括 高压无感bldc方案,主控芯片apt32f1023。 接口包括启停控制,正反转控制,旋钮调速控制。 资料包括原理图,pcb,程序。
正反转实现有个骚操作——直接改换相顺序表:
const uint8_t PhaseOrder_CW[6] = {0x05,0x01,0x03,0x02,0x06,0x04}; //正转
const uint8_t PhaseOrder_CCW[6] = {0x06,0x02,0x03,0x01,0x05,0x04}; //反转
void Set_Direction(MotorDir dir)
{
if(dir == CW){
memcpy(CurrentPhaseOrder, PhaseOrder_CW, 6);
}else{
memcpy(CurrentPhaseOrder, PhaseOrder_CCW, 6);
}
// 立即执行换相避免失步
Commutation_Force();
}
注意切换方向时要立即执行换相,否则可能造成堵转。实测中加了方向切换去抖动,防止操作面板误触发。
调速部分用ADC采集电位器信号,但要注意软件滤波:
#define SPEED_FILTER_COUNT 8
uint16_t Speed_ADC_Filter(void)
{
static uint16_t filter_buf[SPEED_FILTER_COUNT];
static uint8_t filter_index = 0;
uint32_t sum = 0;
filter_buf[filter_index++] = ADC_GetValue(3);
if(filter_index >= SPEED_FILTER_COUNT) filter_index = 0;
for(uint8_t i=0;i<SPEED_FILTER_COUNT;i++){
sum += filter_buf[i];
}
return (sum >> 3); // 8次平均
}
滑动滤波比复杂的算法更实用,采样周期建议在1ms左右。ADC校准记得上电时先读取零点值,硬件上要在电位器两端并104电容。
遇到最坑的问题是过零检测——高压下的反电动势毛刺特别多。后来用比较器+迟滞比较搞定:
void BEMF_Init(void)
{
CMP_InitTypeDef cmp;
cmp.CMP_Channel = CMP_CHANNEL_1;
cmp.CMP_Hysteresis = CMP_HYSTERESIS_50MV; //迟滞电压设大点
cmp.CMP_OutputPolarity = CMP_OUTPUTPOL_NORMAL;
APT_CMP_Init(&cmp);
ADC_Filter_Enable(ADC_CH7, ENABLE); //开启硬件滤波
}
比较器输出接外部中断,在PWM波形的特定点采样。注意中断响应时间要足够快,必要时把中断优先级提到最高。

这套方案跑起来后,实测效率比之前用的STM32方案高了3%,看来APT32F1023的PWM死区控制确实精准。最后提醒下PCB布局:高压部分和信号地要分区域布局,MOS驱动信号走线尽量等长,软件上做好过流保护,别问我怎么知道的(烟雾报警器响了两次...)
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)