无刷直流电机学习(3)
一.内容
此次学习主要完成了无霍尔传感器的电机的程序的学习理解和相关参数的认识。
二.知识点
- 三段式启动
三段式启动是在定时器TIM1的中断处理函数中。由于电机在静止时反电动势为0或者反电动势很低,无法根据反电动势信号确定转子磁极的位置,因此需要等反电动势能检测到过0时,再切换至无刷直流电机运行状态。
switch(MotorA.State) { case 0: //定位 if(MotorA.PWMTicks >= 1000) {MotorA.State++; TIM1->CCR1=0; //A+ Delay1Us(); T1CH1NOFF(); T1CH2NOFF(); //B- Delay1Us(); TIM1->CCR2=0; T1CH3NOFF();//C TIM1->CCR3=0; BEMF_Cnt = 0; usPWMSpd=(Period-1-My_PWM); } break; case 1:if(MotorA.PWMTicks >= usPWMSpd) //4000->400 {usPWMSpd-=(usPWMSpd/16+1); BLDC_SwitchStep(); //step2 BEMF_Cnt ++;} if(BEMF_Cnt >= 36) {MotorA.State++; BEMF_Cnt=0; } break; case 2: //启动 if (MotorA.PWMTicks >= 8)//过滤电动势 {if ( BEMF()) { BLDC_SwitchStep(); BEMF_Cnt++;} } if (BEMF_ADC_Cnt < ADN) //记录启动过程bemf数据 { ADC_Value[BEMF_ADC_Cnt][0]= ADCConvertedValue_2[0]; ADC_Value[BEMF_ADC_Cnt][1]= ADCConvertedValue_2[1]; ADC_Value[BEMF_ADC_Cnt][2]= ADCConvertedValue_2[2]; BEMF_ADC_Cnt++; } if (BEMF_Cnt >= 50) //50次换向之后,认为达到平稳状态 { MotorA.State++; BEMF_Cnt = 0; } break; case 3: if (MotorA.FlagBEMF == 0) //未检测到过零事件 {if (MotorA.PWMTicks >= 4)//消磁 { if ( BEMF())//判断是否过零点 {MotorA.FlagSwitchStep = MotorA.PWMTicksPre >> 4; //延迟30电角度 MotorA.FlagBEMF = 1; //检测到过零事件,不再检测 } } } else { if (MotorA.FlagSwitchStep == 0) //延迟时刻到 { BLDC_SwitchStep(); //换向 BEMF_Cnt++; //换向计数 } else {MotorA.FlagSwitchStep--;//计时时刻未到自减} } if (BEMF_Cnt >= 800000) //50000次换向之后,停止 { BEMF_Cnt = 0; } Break; case 4: BLDC_Stop(); break; case 5: break; default: break; } }
主要函数
BLDC_SwitchStep(): 换相函数,和有感无刷直流电机一样,还是六步换相;
BEMF():过零点检测函数,作为是否能够检测到零点的依据;
主要参数:MotorA.State:三段式启动的条件参数,作为三种状态转换的依据;
BEMF_Cnt:换相次数,作为状态是否稳定的标志; MotorA.FlagBEMF:过零点检测标志;
2. 六步换相
无感无刷直流电机也是采用二二导通方式,通过六个步骤依次运行来实现控制电机的转动
void BLDC_SwitchStep(void)
{
if (ClockDir==0){MotorA.Step = (MotorA.Step + 1) % 6;}
else {MotorA.Step = (MotorA.Step + 6-1) % 6;}
MotorA.PWMTicksPre = MotorA.PWMTicks;
MotorA.FlagBEMF = 0;
MotorA.PWMTicks = 0; //6步法驱动
switch (MotorA.Step) {case 0://step1 TIM1->CCR1=My_PWM; //A+ Delay1Us(); T1CH1NON(); T1CH2NOFF(); //B- Delay1Us(); TIM1->CCR2=0; T1CH3NON(); //C TIM1->CCR3=0; break; case 1://step2 TIM1->CCR1=My_PWM; //A+ Delay1Us(); T1CH1NON(); T1CH3NOFF(); //C- Delay1Us(); TIM1->CCR3=0; T1CH2NON(); //B TIM1->CCR2=0; break; case 2://step3 TIM1->CCR2=My_PWM; //B+ Delay1Us(); T1CH2NON(); T1CH3NOFF();//C- Delay1Us(); TIM1->CCR3= 0; //12.5%占空比 T1CH1NON(); //A TIM1->CCR1=0; break; case 3://step4 TIM1->CCR2=My_PWM; //B+ Delay1Us(); T1CH2NON(); T1CH1NOFF(); //A- Delay1Us(); TIM1->CCR1=0; T1CH3NON(); //C TIM1->CCR3=0; break; case 4://step5 TIM1->CCR3=My_PWM; //C+ Delay1Us(); T1CH3NON(); T1CH1NOFF(); //A- Delay1Us(); TIM1->CCR1 = 0; // 37.5%占空比 T1CH2NON(); //B Delay1Us(); TIM1->CCR2=0; break; case 5://step6 TIM1->CCR3=My_PWM; //C+ Delay1Us(); T1CH3NON(); T1CH2NOFF(); //B- Delay1Us(); TIM1->CCR2=0; T1CH1NON(); //A TIM1->CCR1=0; break; default: break; }}
从程序中可以看出,程序的实现是通过导通两个定时器,而关闭一个定时器,但启动的两个定时器中,只有一个设置了CCR,实际上也就是三相一相通正电,一相通负电,一相不通电,这也就是二二导通方式的实质所在,原理和有感的基本相似,只不过有感的条件参数是通过霍尔传感器得到HALL序列,而无感的是通过函数计算得到的MotorA.Step。
三、学习总结
这半个月花在学习上的时间较少,导致学习进展不大,下个月需要加紧进展。总体上来说,这个月整体上把无感无刷电机的框架建立。
无刷直流电机学习(3)相关推荐
- 无刷直流电机学习笔记3
一. 内容 本期学习的内容,主要是结合<现代永磁同步控制原理及MATLAB仿真>一书与网上材料,对三相PMSM坐标变换原理,三相电斥源逆变器 PWM 技术的基本原理以及三相 PMSM 矢量 ...
- 无刷直流电机学习笔记10
一.内容 本期的学习内容主要是:基于基波数学模型的三相永磁同步电机无传感器控制,其重点是学习滑模观测器算法的相关原理,并对该算法进行详细的分析和建模,从而正确的认识PMSM是如何获得准确的转子位置及转 ...
- STM32驱动无刷直流电机学习(2)
stm32 通过 IRS2101S 将驱动io 升压,再驱动 N沟道MOS管 IRF540NS N沟道MOS管是通过 高电平导通 低电平禁止的 PWM1H PWM2H PWM3H 分别接 PA8 PA ...
- 无刷直流电机(无传感器)学习 (2)
一.内容 此次学习主要完成了无霍尔传感器的电机的工作原理及对应程序的学习. 二.知识点 1.无感无刷直流电机 经过前面的学习,了解到了有传感器的工作原理.简单的来说,就是通过通断更改绕组的磁场,使得永 ...
- 无刷直流电机的无位置传感器控制学习笔记
BLDC与PMSM关系 关于这个问题,很多人不太注意,我见过很多人把无刷直流电机和永磁同步电机不区分,以至于出现了正弦波无刷直流电机这样的叫法.实际上,在学校里面学习的时候,这个还是区分开的.一般把梯 ...
- 【学习笔记·1】无刷直流电机基础
一.了解直流有刷电机 二.了解直流无刷电机 2.1 高中物理电磁知识 磁体在磁场中受力方向与磁场的磁感线方向有关, 磁体的N极受力方向与磁感线切线方向一致, 磁体的S极受力方向与磁感线切线方向相反. ...
- BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序
BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...
- STM32F407控制 无刷直流电机和永磁同步电机
STM32F407控制 无刷直流电机和永磁同步电机 STM32F407控制 无刷直流电机和永磁同步电机 有PCB,原理图,说明文档,HAL库.LL库多例程程序代码及讲解. 适合网络通信.FreeRTO ...
- 【2022项目复盘】无位置传感器的无刷直流电机驱动设计
目录 概述 BLDC发展 历史 现状 未来前景 工作原理 BLDC结构 六步法 启动方式 转子预定位 转子的同步加速 切入转子正常旋转程序 反电动势检测法 硬件设计 控制模块最小系统 三相逆变器电路及 ...
最新文章
- cobaltstrike安装_Cobalt Strike发送钓鱼邮件
- get_sheet_of_light_result_object_model_3d算子说明
- mysql宠物种类表,mysql中的表操作
- mysql5.6 replication_MySQL5.6 Replication主从复制(读写分离) 配置完整版
- pixel 解锁_如何在Google Pixel 4和Pixel 4 XL上禁用面部解锁
- 研究表明:喝酒“上脸”是基因突变,不仅容易老年痴呆,还容易得胃癌
- 【渝粤教育】电大中专Office办公软件 (4)作业 题库
- [react] 在React中如果去除生产环境上的sourcemap?
- (王道408考研操作系统)第一章计算机系统概述-第一节1:操作系统基本概念以及目标和功能
- python3.x和python2.x唯一区别_Python3.x和Python2.x的区别 (转)
- python 编程刷题_一起刷题吧 | 100+Python编程题带你快速上手(附答案)
- linux deploy下载地址,Linux部署 Linux Deploy
- 在线教育与计算机网络的融合发展,[浅谈线上教育和线下教育的融合]
- 如何使用Teamtoken工具软件做员工股权激励
- K线形态识别—K线反转形态之底部反转形态
- matlab锂电池充电电路,锂离子电池充放电电路模型及其仿真.doc
- vue啦啦啦啦啦啦啦啦
- 解决挖矿程序(imWBR1,ddg)步骤
- 余弦定理对比文本相似度实现查重
- telnet -测试端口号
热门文章
- return R.ok()
- 《信息安全技术关键信息基础设施安全保护要求》获批准通过
- 正整数 n 分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大
- QQ钱包,微信,京东钱包,百度钱包,支付宝AGENT
- Windows exploit初探-栈溢出
- 网易游戏实习电话面试
- JAVA:实现十进制转二进制算法(附完整源码)
- 2.参考线平滑算法解析及实现
- 《完美主义扼杀效率 》读书笔记
- Survey of Low-Resource Machine Translation阅读笔记