电机学习-有感BLDC开环控制(六步换相)
文章目录
- 1. 简介
- 2. 六步换向控制
- 3. 机械角度和电角度
- 4.转子位置获取
- 5.霍尔传感器读取测试
- 6.速度开环控制
- 6.1 PWM设置
- 6.2死区时间
1. 简介
BLDC的反电动势一般是梯形的反电动势,所以采用方波控制。如图2-1所示,是一个简化的内转子无刷直流电机。我们通过控制ABC三相的导通顺序来产生不同的磁场,使电机的转子转动。

图2-1
2. 六步换向控制
对于ABC三相,我们每次选取其中两相来导通,那么总共有6种排列组合的方式,如图2-2所示。

图2-2
我们可以通过控制三相导通的顺序使电机转起来。
| 步骤 | A相 | B相 | C相 |
|---|---|---|---|
| 第一步 | 正 | 负 | 悬空 |
| 第二步 | 悬空 | 负 | 正 |
| 第三步 | 负 | 悬空 | 正 |
| 第四步 | 负 | 正 | 悬空 |
| 第五步 | 悬空 | 正 | 负 |
| 第六步 | 正 | 悬空 | 负 |
当电机转第六步的时候再循环第一步到第六步,这样电机就顺时针转了起来,如果要逆时针旋转,那么就反过来从第六步开始。当然,实际使用的过程中电机转子的初始位置我们是不知道,这里只是一个举例说明六步换向的控制原理。另外电机的速度也不是由换向频率来决定的。因为换向使一个被动的动作,只有转子到达了某一位置我们才可以进行换向来促使转子到达下一个位置,如果想要控制电机转速,就需要控制电流(两相之间的电压),从而控制磁场强度(转子受到的作用力)来控制电机的速度。
3. 机械角度和电角度
机械角度就是电机实际的角度,一圈是360°。而对于电角度的个人理解是一个定子上电压(电流)变化一个周期为360°。电角度=机械角度*P,P为电机极对数。
在六步换向控制电机的过程中,六步换向一个周期经过的电角度是360°,A相的电压如图2-3所示,在一个周期中正电压的持续周期时间是120°,悬空持续的时间是120°,负电压的持续时间是120°。

图2-3
4.转子位置获取
在进行六步换向的过程中,我们需要确定当前转子的位置来对ABC相进行控制。在有感控制中,通过霍尔原件来确定转子的位置,在无感控制中是根据反电动势来判断电机的位置。霍尔传感器在电机中一般有两种安装方式一种是三个传感器间隔120°电角度,一种是三个传感器间隔60°电角度安装。这样安装可以保证在六步换向的一个周期中,每一步对应的传感器编码不一样,我们可以根据传感器的编码来确定转子是否到达位置从而进行换向,三个相隔120°电角度的霍尔传感器在一个周期中的编码如图2-4所示。关于下图的理解:在一个六步换向的周期中,每个相都会经历一个从正电压—>悬空---->负电压—>悬空的一个过程。假设正电压的时候该相上是N极,它吸引转子的一个S极过来,并推走当前的N极,直到S与该相正对上,此时它悬空,然后另外两相通电,将S极转走,S极转走后,该相变为负电压产生S极,将转子的下一个N极吸引过来,此时它再悬空,另外两相通电将N极转走。在这个过程中,它经历了转子一个完整的N极和S极。那么三个霍尔传感器也会经历一个N极和S极。又因为三个传感器相差120°的电角度,所以b传感器的高电平延时a传感器120°,c传感器的高电平延时b传感器120°。因此我们可以看到在一个六步换向周期中,abc组成的编码有6种,我们可以根据编码器的值来判断电机换向的时机。

图2-4
实际上,我们电机厂商会给一个配套的真值表,如图2-5所示。

图2-5
上图的意思是,当霍尔传感器的值是001的时候我们需要A相悬空,C相正电压,B相负电压;随着电机转动,当检测到霍尔传感器的值变为101的时候就需要A相正电压,B相负电压,C相悬空,因此类推进行六步换向。需要注意的是如果电机在六步换向过程中如果保持位置不变的话,此时电路中的电能将只能转换为热能,不能转换为机械能,而我们的电机绕组时候的是漆包铜线,其内阻非常的小,电流就会非常的大,这将会产生大量的热而导致电源或者电机被烧毁。
5.霍尔传感器读取测试
霍尔传感器的读取电路图很简单如图2-6所示,三个上拉电路,GPIO设置为输入模式就可以了, 开发板使用的是STM32F405。

图2-6
例程:方波控制-霍尔信号采集
6.速度开环控制
能够读取到霍尔传感器的数据后,就可以对电机进行六步换向控制了,电机三相控制的逆变电路如图2-7所示。

图2-7
如图所示,导通Q1和Q5,其他都不导通,那么电流将从Q1流经U相再从V相流到Q5,同理导通Q1Q6,Q2Q4,Q2Q6,Q3Q4,Q3Q5来驱动电机,可以通过PWM来控制电机的速度。
6.1 PWM设置
PWM控制的时候总过有5中方式,如图2-8所示:
-
PWM-ON型,在控制过程中,上下桥臂导通的120°电角度内,前60°保持恒通,后60°使用PWM
-
ON-PWM,在控制过程中,上下桥臂导通的120°电角度内,前60°使用PWM,后60°保持恒通
-
H_PWM_L_ON型,在控制过程中,上桥臂使用PWM,下桥臂保持恒通
-
H_ON_L_PWM,在控制过程中,上桥臂保持恒通,下桥臂使用PWM控制
-
H_PWM_L_PWM,在控制过程中,上下桥臂都使用PWM

图 2-8
在实际控制过程中,不同的控制方式效果不同,我们需要尝试多种控制效果,然后选择最佳的一种方式。本次测试PWM使用的频率为20Khz.一般选用16Khz以上,20KHz左右的PWM因为人类能够听到的声音一般是16Khz以下,在16Khz以下的时候人类就会慢慢听到噪声,PWM的频率也不能过高,过高会导致电机转矩降低,另外也要注意满足MOS管的开关频率。
6.2死区时间
在控制过程中,还需要注意不能使上下MOS管同时导通,这样会导致短路。MOS的关闭需要一个时间,因此在进行上下管开关切换的时候,需要一个延时,这个延时就是死区时间。如图2-9所示,是我使用的MOS管的硬件手册。td(on)是开启的延时,tr是电流上升的时间;td(off)是关闭的延时,tf是电流下降的时间。开启总时间为td(on)+tr,关闭的总时间是td(off)+tf,所以死区的最短时间是td(off)+tf-tr-td(on),加上死区时间后MOS管关闭完正好另一个MOS管刚刚开启。实际使用中死区时间通常设置的比计算的多一些。

图2-9
在实际应用中,驱动电路可能还有别的一些芯片,因为单片机的引脚可能不足以驱动MOS管。我使用的板子在MOS管的前一级还带了一个MOS管栅极驱动芯片,其内部自带死区控制电路。其硬件手册如图2-10所示,可以看出其高端开启时间大于低端关闭时间,低端开启时间大于高端关闭时间。开启时间与关闭时间相差了大约85ns,为了保险起见我们也可以在定时器中再设置一个死区时间。

图2-10
例程:方波控制-有感开环控制
源码链接:https://github.com/IJustLoveMyself/MotorControl
相关文章:
电机学习-有感BLDC开环控制(六步换相)
文章目录 1. 简介2. 六步换向控制3. 机械角度和电角度4.转子位置获取5.霍尔传感器读取测试6.速度开环控制6.1 PWM设置6.2死区时间 1. 简介 BLDC的反电动势一般是梯形的反电动势,所以采用方波控制。如图2-1所示,是一个简化的内转子无刷直流电机。我们通过…...
《深度学习》PyTorch框架 优化器、激活函数讲解
目录 一、深度学习核心框架的选择 1、TensorFlow 1)概念 2)优缺点 2、PyTorch 1)概念 2)优缺点 3、Keras 1)概念 2)优缺点 4、Caffe 1)概念 2)优缺点 二、pytorch安装 1、安装 2、…...
Linux:进程(四)
目录 一、进程优先级 二、Linux调度与切换 1.背景 2.进程切换 一、进程优先级 背景:在计算机中,软硬件资源是有限的,而进程想要访问某一种资源,就得通过排队来保证访问资源的过程是有条不紊的。 Linux下对优先级的定义。执行命…...
CTC loss 博客转载
论文地址: https://www.cs.toronto.edu/~graves/icml_2006.pdf 为了对应这个图,我们假设一种符合的模型情况: 英文OCR,37个类别(26个小写字母10个汉字空格),最大输出长度8个字符 模型预测结果…...
TryHackMe 第3天 | Pre Security (中)
该学习路径讲解了网络安全入门的必备技术知识,比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识,本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…...
c语言中“qsort函数”和“结构体成员访问变量”
qsort函数: qsort是c语言中的库函数,这个函数是对数据进行排序(对任意) 冒泡排序中排列整数顺序用的函数只适用于整形,而qsort函数适用与所有数据 排序算法 冒泡排序 插入 选择 快速 void qsort{ void * base&…...
【MySQL】在MySQL中STR_TO_DATE()
1.在MySQL中STR_TO_DATE() 在MySQL中,STR_TO_DATE() 函数用于将字符串转换为日期格式。这个函数非常有用,当你需要将文本数据转换为可由MySQL日期和时间函数处理的格式时。 1.1 语法 STR_TO_DATE() 函数的基本语法如下: STR_TO_DATE(date…...
PCIE集成验证(五)MSI/MSI-X中断
PCI 总线最早采用的中断机制是 INTx,这是基于边带信号的。后续的 PCI/PCI-X版本,为了消除边带信号,降低系统的硬件设计复杂度,逐渐采用了 MSI(Message Signaled Interrupt)/MSI-X(消息信号中断)的中断机制。…...
leetcode 380.O(1) 时间插入、删除和获取随机元素
实现RandomizedSet 类: RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 val 存在时࿰…...
基于MicroPython的ESP8266控制PS2摇杆模块的设计方案
以下是一个基于MicroPython的ESP8266控制PS2摇杆模块的设计方案: 一、硬件准备: 1. 一块ESP8266开发板,如NodeMCU 2. 一个带有X、Y轴模拟输出和Z轴(按钮)数字输出的PS2摇杆模块 3. 杜邦线若干 4. 3.3V直流电源 二、硬件连接:…...
Spring Boot 3项目使用Swagger3教程
Spring Boot 3项目使用Swagger3教程 Swagger:自动生成接口文档 添加依赖(pom.xml) <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1…...
linux-系统备份与恢复-系统恢复
Linux 系统备份与恢复:系统恢复 1. 概述 Linux 系统的恢复是系统管理的重要组成部分,它指的是在系统崩溃、硬件故障、误操作或安全问题后,恢复系统到可用状态的过程。良好的系统恢复计划可以有效避免数据丢失和业务中断,并确保系…...
【Rust语言】std::collections::HashMap用法
HashMap用法文档 文章目录 创建键的要求 增删改查增: insert删: remove/remove_entry改单点修改 get_mut整体修改 values_mut/iter_mut 查集增改于一身的entry 遍历只读遍历into_values() 与 into_keys()容量、实际长度、判空导出清除重定容量 use std::collections::HashMap;创…...
使用SoapUI、Postman工具调用Webservice方法
SoapUI工具更适合调用Webservice使用。 1.使用SoapUI工具调用Webservice 创建“New SOAP Project” 自行定义一个项目名称,输入wsdl地址: 在左侧列表找到方法名,双击“Request 1”, 在请求数据中,添加对应的参数,然…...
js 与 C++引用和指针的关系
js 与 C引用和指针的关系 js 中既有引用的影子, 也有指针的影子。 1、引用用法 这里相当于C 中的引用, b是a的引用, 修改b ,a也改变。 var a { 1: 1 }var b a;a null;b[2] 2;console.error(b); // { 1: 1, 2: 2 }2、指针用法 这里 a,b应该按照指针理解。 var a undef…...
python --PyAibote自动化
官文: https://www.pyaibote.com/ 下载安卓集成环境: 可以看到开发的一些信息...
Ubuntu系统开发环境搭建
一,Android源码编译环境搭建 1 安装Java Development Kit (JDK) sudo apt-get update sudo apt-get install openjdk-8-jdk 2,确认JDK安装成功 java -version 3,安装编译所需的依赖项 sudo apt-get install git-core gnupg flex bison gperf build-essential zip cu…...
lvs-dr模式实验详解
华子目录 lvs-dr(企业当中最常用)dr模式数据逻辑dr模式数据传输过程dr模式的特点实验拓扑实验主机准备解决vip响应问题限制响应级别:arp_ignore限制通告级别:arp_announce 实验步骤1.client的ip设定2.router上的ip设定3.router开启路由转发功能4.lvs主机…...
【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具
目录 简介 工具要求 语法 例子和参数 例子 更多参数 其他工具和查询 简介 mlxconfig 工具允许用户在不重新烧录固件的情况下更改某些设备配置。 配置在重启后仍然保留。 默认情况下,mlxconfig 显示将在下次启动时加载的配置。对于第五代设备,还…...
跨站请求伪造(CSRF)漏洞详解
免责申明 本文仅是用于学习检测自己搭建的DVWA靶场环境有关CSRF的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其所在国家地区相关法…...
机器学习结合基因无关通路映射:从临床数据挖掘新药靶点
1. 项目概述:当机器学习遇见代谢通路,如何从数据中“挖”出新药靶点?在生物医学研究的前沿,我们正面临一个核心矛盾:一方面,我们拥有海量的临床数据,比如血糖、血压、BMI等指标;另一…...
环境光遮蔽(Ambient Occlusion):揭秘那个让虚拟世界“有重量感“的阴影魔法
一、一个让我"开窍"的老木匠故事 我有个朋友是传统家具的修复师,他给我讲过一个让我至今难忘的故事。他说他刚入行时跟着一位 70 多岁的老木匠师父学习——师父让他做的第一件事不是雕花、不是榫卯——而是"看阴影"——这个看似奇怪的训练改变了…...
第二周(第12周)
1.单电源供电的二阶低通滤波器2.功率放大电路...
物联网与云技术赋能咖啡后处理:CeriTech 的实时监控系统实践
1. 项目概述:用物联网与云技术重塑咖啡后处理在印尼的咖啡农场里,传统的发酵与干燥过程很大程度上依赖“感觉”和“经验”。一位有经验的农人可能会用手触摸、用鼻子闻,或者根据天气和日照时间来估算发酵是否完成、干燥是否均匀。这种方法固然…...
Redis分布式锁进阶第二十篇
一、本篇前置衔接 第二十篇我们完成了全系列终局复盘,整理了故障排查SOP与企业级落地铁律。常规单资源锁、热点分片锁、隔离锁全部讲透,但真实复杂业务永远不是单一资源:下单要扣库存、扣优惠券、扣积分、冻结余额,多资源并行争抢…...
解决Claude Code访问不稳定与Token不足的痛点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code访问不稳定与Token不足的痛点 许多开发者将Claude Code作为日常编程的得力助手,用于代码生成、问题调试…...
ARM PMU性能监控单元原理与实践指南
1. ARM PMU性能监控单元概述性能监控单元(PMU)是现代ARM处理器中用于硬件级性能分析的核心组件。它通过一组可编程的硬件计数器,实现对处理器内部各种关键事件的精确测量。这些事件涵盖了从指令执行、缓存访问到内存子系统行为等处理器活动的…...
【MySQL数据库 | 第一篇】 概述
数据库相关概念: 数据库(Database):数据库是指一组有组织的数据的集合,通过计算机程序进行管理和访问。数据库管理系统:操纵和管理数据库的大型软件SQL:操作关系型数据库的编程语言,定义了一套操作关系型数…...
当 AI Coding 进入复杂企业系统,为什么提效远没有宣传里那么美好 ?
以 Claude Code、Codex 为代表的自主编码智能体(Coding Agents),正在以惊人的速度席卷软件开发者生态。与此同时,类似“10 倍开发效率”“普通人也能随手构建软件”“程序员即将失业”的说法,也随处可见。这种不分场景…...
AI圈内火热的Agent、MCP、Skill、CLI是啥?用装修房子讲透,看完秒懂
本文用装修房子的比喻,详细解释了AI领域的四个核心概念:Agent如同会自主规划任务的私人助理;MCP是AI与外部工具数据的统一接口,类似USB-C;Skill是指导AI按标准操作执行的手册;CLI则是不依赖图形界面的命令行…...
