news 2026/5/7 13:32:56

玩过电机的都知道,BLDC控制最刺激的就是在无传感和有传感之间反复横跳。今天带大家扒一扒基于STM32F1的这套双料方案,手把手看代码怎么把电机治得服服帖帖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
玩过电机的都知道,BLDC控制最刺激的就是在无传感和有传感之间反复横跳。今天带大家扒一扒基于STM32F1的这套双料方案,手把手看代码怎么把电机治得服服帖帖

电机控制源码 电机控制源码,BLDC无刷直流电机基于stm3 2F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序识货的赶紧上车。 无传感的的实现是基于反电动势过零点实现的,无传感是霍尔实现,可供学习参考,程序有详细注释。 实验学习内容 1)直流无刷霍尔传感方波速度、电流、双闭环PID控制实验2)直流无刷无传感方波速度、电流、双闭环PID控制算法

先说带霍尔的方案,这玩意儿稳得像老司机。霍尔信号直接给转子位置导航,代码里用EXTI中断捕获三个霍尔脚的状态变化。来看这段硬核操作:

//霍尔信号处理 void HALL_IRQHandler(void){ static uint8_t last_hall = 0xFF; uint8_t current_hall = (HALL3_GPIO->IDR & HALL3_Pin) ? 0x01 : 0 | (HALL2_GPIO->IDR & HALL2_Pin) ? 0x02 : 0 | (HALL1_GPIO->IDR & HALL1_Pin) ? 0x04 : 0; if(current_hall != last_hall){ Commutation_Table_Update(current_hall); //换相表更新 last_hall = current_hall; } }

这个中断服务函数每0.5ms触发一次,用位操作提取三个霍尔信号的状态组合。CommutationTableUpdate函数会根据当前状态切换PWM输出相位,比女朋友变脸还快。

双闭环PID才是重头戏,代码里用结构体封装得明明白白:

typedef struct{ float Kp,Ki,Kd; float Err_prev,Integral; float OutputMax; }PID_Handler; float PID_Calculate(PID_Handler *h, float target, float feedback){ float err = target - feedback; h->Integral += err * 0.001f; //1ms周期 float output = h->Kp * err + h->Ki * h->Integral + h->Kd * (err - h->Err_prev)/0.001f; h->Err_prev = err; return __MAX(-h->OutputMax, __MIN(output, h->OutputMax)); }

注意那个0.001是采样周期,调参时改这里能让整个系统性格大变。OutputMax限幅防止积分饱和,实测不加这个电机能给你表演原地起飞。

无传感方案才是真刺激,全靠反电动势过零点玄学。ADC采样相电压后,这个函数在中断里搞事情:

void BEMF_Detection(){ static uint8_t zero_cross_count = 0; float bemf = Get_PhaseVoltage() - (Vbus/2); if((bemf > 50) || (bemf < -50)){ //噪声过滤 if(++zero_cross_count >= 3){ Motor.Phase += 1; //换相 zero_cross_count = 0; } }else{ zero_cross_count = 0; } }

那个50mV的阈值是关键,太小了容易误触发,太大了电机就抖得像蹦迪。三次检测过零才换相是防抖绝招,实测比软件滤波来得直接。

最后说电流环,ADC+DMA双buff交替采样玩得飞起:

ADC_RegularChanConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_239Cycles5); DMA_Cmd(DMA1_Channel1, ENABLE); while(!DMA_GetFlagStatus(DMA1_FLAG_TC1)); //等采样完成 Current_PhaseU = (int16_t)(ADC_ConvertedValue[0]*3.3/4096 - 1.65)/0.01;

这个公式把ADC原始值换算成实际电流,3.3V参考电压对应0.01Ω采样电阻。注意while循环会死等DMA完成,放在低速循环里会卡成PPT,必须扔进定时器中断。

代码仓库里注释比代码还多,每个PWM通道对应哪几个MOS管都标得清清楚楚。建议先用有传感方案上手,等电机转顺了再挑战无传感模式——毕竟看着电机自己猜位置的样子,像极了第一次约会的直男。源码里那些魔改的PID参数,都是熬夜调出来的祖传秘方,拿走不谢。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 21:23:30

亚马逊、temu、希音等平台自养号采购、代采系统怎么搭建?

构建稳定、安全、高效的自养号采购系统&#xff0c;远不止于批量注册账号&#xff0c;而是一项需要从技术底层到操作流程全方位设计的系统工程。其关键在于创建多个独立、可信的数字身份&#xff0c;形成可长期运作的采购网络。以下是构建此类系统的核心要素与实施路径。一、环…

作者头像 李华
网站建设 2026/5/6 9:41:37

智慧边检空间智能平台建设方案——基于空间视频感知与统一空间智能底座的新一代边检监管体系

智慧边检空间智能平台建设方案——基于空间视频感知与统一空间智能底座的新一代边检监管体系建设单位&#xff1a;镜像视界&#xff08;浙江&#xff09;科技有限公司一、建设背景&#xff1a;边检监管进入“全过程智能化”阶段随着国际人员流动规模持续扩大&#xff0c;口岸边…

作者头像 李华
网站建设 2026/5/3 12:11:57

10种实测靠谱的降ai率工具名单:教你如何科学降低ai率,实现ai降ai,目前最全的免费降低ai率教程。

又到了论文开题季&#xff0c;很多同学发现&#xff0c;自己用AI辅助写完的论文&#xff0c;AIGC率高得吓人。明明只是润色&#xff0c;检测却显示“高风险AI生成”。面对这个论文降ai的难题&#xff0c;盲目手改往往收效甚微。 别慌。市面上已经有很多工具可以辅助降低ai率。今…

作者头像 李华
网站建设 2026/5/3 11:51:04

Node.js 真的是单线程?前端老铁别被忽悠瘸了!

Node.js 真的是单线程&#xff1f;前端老铁别被忽悠瘸了&#xff01;Node.js 真的是单线程&#xff1f;前端老铁别被忽悠瘸了&#xff01;先给“单线程”这仨字儿上柱香主线程日常&#xff1a;一个 event loop 的社畜生活libuv&#xff1a;藏在床底下的“时间管理大师”Worker …

作者头像 李华
网站建设 2026/5/2 14:01:06

HDFS 在大数据领域的数据存储发展方向

HDFS 在大数据领域的数据存储发展方向 关键词:HDFS、大数据存储、分布式文件系统、数据湖、存储架构、数据管理、未来趋势 摘要:本文深入探讨了Hadoop分布式文件系统(HDFS)在大数据领域的数据存储发展方向。我们将从HDFS的基本原理出发,分析其当前的技术架构和局限性,然后详…

作者头像 李华
网站建设 2026/5/4 15:43:35

如何构建生物制药企业一体化管理体系,赋能全产业链协同?

某国资体系生物技术公司是从事传染病相关研究和生物制品生产的机构&#xff0c;是一家集科研、生产、销售以及研究生培养为一体的综合性生物制药企业。 企业组织机构庞大、分布地域广&#xff0c;在管理行涉及的核心业务包括产品管理、批号管理、生产过程管理、设备管理、质量管…

作者头像 李华