BLDC (无刷直流电机) 六步式控制方法
1本文目的
最近在参与BLDC电机控制的项目,在网上也查看了无刷电机相关控制原理和方式。
但最终此项目使用的是六步式控制方式控制轮毂电机,所以此篇简述六步式的控制方法,以备之后查阅。(六步式的控制方式相较于FOC和SVPMW是比较简单的,这两个内容在CSDN上有非常经典的文章)
轮毂电机线束
轮毂电机有U、V、W三个控制线和A、B、C三根霍尔位置信号线,2根霍尔传感器电源线,(可能还有其它线束,因未使用,不描述)
至于控制线的定义被叫做UVW还是ABC,这个与无刷电机的控制原理有关,此篇中不再描述。
2控制器的主要电路
3控制方法说明
对应控制框图中的MOS的序号,表3和表4中相电流的控制就是六步式要描述的内容。
表3表4中的霍尔传感器输入ABC的值,不同的电机会有不同的值,这个值的对应关系是需要标定的。
序号1-6对应的相电流,比如A关闭,B是DC-,C是DC+, 描述的是电机C端为高电势、B端为低电势,A端断开。电流方向如下图所示
其实序号1-6对应的步骤,也就是对MOS的通断控制,哪一个步骤作为第一步都是可以的,然后按着顺序完整这六步就可以。
4实际项目调试
1说明
项目为自研项目、轮毂电机控制器也是临时找了个控制器。当前阶段只实现前进、后退、停止、变速控制即可。
6路PWM控制依据六步的顺序分别控制Q0-Q5的通断,使用高边MOS常开, 控制低边MOS的PWM占空比的方式实现电机转速的调整。这里提到的控制都是开环控制。
通过IO中断或IOC中断捕获ABC的上升沿和下降沿事件,并且读取ABC的电平状态,与控制步骤结合形成新的控制表,如表3表4所描述。
#2调试方式
(1)调试MCU程序、具备6路PWM控制、霍尔位置信号的捕捉;示波器监控ABC三路波形变化
(2)先按固定顺序、固定时间,分别按控制步骤1、2、3…6的顺序控制电机;
例如每个1s,控制步骤加1,观察ABC位置信号波形变。
找到控制步骤与ABC位置信号的值的关系。形成新的表。 如下表,就是新标定出来的表
(3)程序控制
通过IO的上升沿或者下降沿采集位置信号ABC的变化,所以在变换步骤前,需要轮毂电机有个初始的位移,可以通过读取当前ABC的值,确定驱动的初始步骤是哪个。然后在ABC位置信号的IO上升沿下降沿中断中按表顺序执行控制步骤。
控制步骤= ABC对应的步骤+1;
#2实际程序节选
以下代码段实现了根据ABC的电平状态,得到控制步骤的功能。
const unsigned char HOLL_TABLE_P[holl_table_num] = {0x55, 2, 3, 1, 5, 4, 6}; //0x55用于站位,为无效值
const unsigned char HOLL_TABLE_N[holl_table_num] = {0x55, 5, 1, 3, 2, 6, 4}; //0x55用于站位,为无效值`unsigned char PositionDetectABC(TYPE_POSITION_ABC holl)
{unsigned char holl_table_index = 0; //holl值在holl表中对应的序号unsigned char step_run = 0;unsigned char i=0;if(holl.ha == 1) /*A位置信号高电平*/{holl_val |= 0x04;}else /*A位置信号低电平*/{holl_val &= 0xFB;}if(holl.hb == 1){holl_val |= 0x02;}else{holl_val &= 0xFD;}if(holl.hc == 1){holl_val |= 0x01;}else{holl_val &= 0xFE;}holl_val &= 0x07;if(holl.dir == M_ABC_P){for(i=0; i<holl_table_num; i++){if(HOLL_TABLE_P[i] == holl_val){holl_table_index = i;}}step_run = holl_table_index + 1;if(step_run == 7){step_run = 1;}if(holl_table_index == 0){step_run = 0;}}else if(holl.dir == M_ABC_N){for(i=0; i<holl_table_num; i++){if(HOLL_TABLE_N[i] == holl_val){holl_table_index = i;}}step_run = holl_table_index + 1;if(step_run == 7){step_run = 1;}if(holl_table_index == 0){step_run = 0;} }else{step_run = 0;}return(step_run);
}
BLDC (无刷直流电机) 六步式控制方法相关推荐
- BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序
BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...
- STC单片机驱动BLDC无刷直流电机(无HALL)官方示例
STC单片机驱动BLDC无刷直流电机(无HALL)官方示例 示例代码在STC8系列文档第20章里面:http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pd ...
- BLDC无刷直流电机和PMSM永磁同步电机
BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...
- ,bldc 无刷直流电机和pmsm永磁同步电机 主控TMS28335
28335主控,bldc 无刷直流电机和pmsm永磁同步电机 主控TMS28335,,有原理图,以下代码 三相异步电机 VF变频调速程序 三相永磁同步电机 无感 双闭环FOC程序 三相永磁同步电机 有 ...
- BLDC无刷直流电机仿真设计simulink 转速电流双闭环 调速系统 matlab simulink仿真
BLDC无刷直流电机仿真设计simulink 转速电流双闭环 调速系统 matlab simulink仿真 有整理好的文档,资料很详细,可以直接用,有参考资料, ID:3230671328383169 ...
- BLDC无刷直流电机转速控制Simulink模型(分别采用数学方法和SimScape库搭建,后者仿真效果更好)
BLDC无刷直流电机转速控制Simulink模型(分别采用数学方法和SimScape库搭建,后者仿真效果更好) 版本:marlab2018a,可生成低版本 算法采用PI控制 仿真时设期望转速为800r ...
- 微软纯净系统刷机六步走
第一步打开百度搜索 微软镜像官网 第二步点击进入 点击立即下载工具 第三步打开下载的工具 一直点点点 到这个页面 第四步选择你要安装的系统(不懂默认就行) 第五步选择U盘 第六步 等待下载成功 一个介 ...
- BLDC(无刷直流电机)应用相关
1.基于XC866的直流无刷电机简易正弦波控制 http://blog.gkong.com/hushunlin_219521.ashx 2.无刷直流电机的PWM调制方式介绍 http://blog.g ...
- BLDC无刷直流电机之电机驱动的组成
1.组成 框图如下 五大组成分析: 1.MCU:主要是信号的处理,反馈信号故障信号的处理,同时会给出6路PWM波,给到门极驱动 2.门极驱动:带动功率器件,带动电机的旋转,电机也会给出转子的位置信号或 ...
- BLDC无刷直流电机之结构与优势
1.无刷与有刷的结构比较 无刷:线圈绕在定子上,使用永磁体作为转子,转子和定子之间没有换向器. 有刷:有换向器. 2.优势比较(BLDC vs BDC) 1.同等质量下,BLDC电机会有更大转矩 2. ...
最新文章
- 斯坦福大学、DARPA与硅谷公司共同分析前沿科技发展趋势
- sql join 与where的区别
- Mysql练习_mysql练习题
- WebRTC 的 log 系统实现分析
- [蓝桥杯][基础练习VIP]报时助手
- JavaOne 2012:调查JVM水晶球
- 抓球球的机器人应该怎么玩_王者荣耀:在游戏中当自己优势队友劣势的时候应该怎么玩?...
- SpringCloud大致架构
- Hadoop HDFS概念学习系列之两个和HDFS读写操作最为密切的Hadoop包(二十)
- BZOJ 1779. [Usaco2010 Hol]Cowwar 奶牛战争
- pop3通过时间或者条件取邮件_Python 进阶(三):邮件的发送与收取
- java 内部类_Java内部类总结有哪些 没有基础该怎么学Java?
- tensorflow入门书籍推荐_架构书籍推荐(入门读)
- 我的项目经验v3.0
- NISP和CISP考试通过率怎样?
- ubantu 安装火狐浏览器插件
- nginx的介绍和安装
- 财务软件虚拟服务器,新中大财务软件远程虚拟化办公方案
- android全面屏像素密度,屏幕像素密度超400ppi,让你感受视觉的极限
- Python实现汉字人名按拼音或笔画顺序排序