电机学习-有感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的原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《中华人民共和国网络安全法》及其所在国家地区相关法…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...