无刷直流电机(BLDC,也称为马达驱动)是电机和控制技术相结合的产品,电调控制电机的运行,从电流驱动角度来看,无刷直流电机可分为正弦波驱动和方波驱动。通常,以方波驱动的电机称为无刷直流电机(BLDC),正弦波驱动的电机则为永磁同步电机(PMSM)。无刷直流电机,跟永磁同步电机,基本结构相似,主要区别在于控制器电流的驱动方式不同。产生相位差120度的正弦三相电,要不断的调整三路、或是六路PWM的占空比,这要求较高的处理速度。给电机供相位差120度的方波,电机运转噪音虽大一些,但电机仍可以基本平稳的运转,方波驱动方式对处理器的速度要求低了很多。所以方波驱动方式就广泛应用开来。

一、方波控制理论基础

方波控制也叫六步控制,在一个电周期中,电机只有六种转态,或者说定子电流有六种状态(三相桥臂有六种开关状态)。

每一种电流状态都可看作合成一个方向的矢量力矩,六个矢量有规律地、一步接一步地转换,矢量旋转方向决定了电机旋转方向(顺时针或是逆时针),电机转子会跟着同步旋转。

在方波控制里,主要是对两个量进行控制,一个是电机转子位置对应的开管状态,有Hall时,通过Hall信息获取转子位置,无传感器时,通过反电动势信息获取转子位置,从而决定开管状态;第二个是PWM占空比的控制,通过控制占空比的大小来控制电流大小,从而控制转矩和转速。

二、方波算法实现步骤

(1)Hall 方波控制:

1.读取母线电流采样的AD 值,计算母线电流

2.电流环计算应该给的PWM 占空比,控制电流为给定电流大小

3. 读取hall 状态,根据Hall 状态与三相桥臂开管状态关系数组,得到相应的开管状态,每次hall 状态的跳变沿及为三相桥臂状态切换的时间点(也称为换相点)。

4. Hall 相邻状态间的扇区为一个电周期的六分之一,即为60°,用定时器可记录60°扇区所用的时间,从而计算电流频率,从而得到电机转速。

5. 以电流环作为内环,速度环作为外环,电机进行闭环控制,如Hall 方波控制框图。对于Hall 方波控制来说,电机启动时,就已经知道电机转子位置,直接用hall 状态对的矢量力矩去拉电机,就可启动电机,并可直接进闭环控制。

(2)BEMF 方波控制:

1.读取母线电流采样的AD 值,计算母线电流。

2.电流环计算应该给的PWM 占空比,控制电流为给定电流大小

3. 保持一种开管状态(即保持一个方向矢量定位),定位完成,然后按一定频率改变开管状态,并按规律提升改变频率。到达切换电频率,然后切换到反电动势模式。

4. 用一个较高频率定时器中断读取相比较器输出状态,若相比较器输出电平发生翻转,则说明该相反电动势产生过零,此时,读定时器D 时基计数值,保存,然后清定时器D,并配置定时器D 的比较寄存器0 的比较值,开定时器D 开始计时,直到产生PWMD0 中断,在中断中改变开关管状态,也就是找到过零点延迟30°电角度再换相。

5. 以电流环作为内环,速度环作为外环,电机进行闭环控制,对于BEMF 方波控制来说,电机启动时,是不知道电机转子位置,所以需要用外同步方式启动电机,让定子电流按给定大小和频率拖动电机转子跑,然后电机达到切换电频率,就可切换到反电动势模式跑电机,并运行速度和电流闭环控制。

BLDC无刷直流电机的原理及驱动基础的更多相关文章

  1. BLDC(无刷直流电机)应用相关

    1.基于XC866的直流无刷电机简易正弦波控制 http://blog.gkong.com/hushunlin_219521.ashx 2.无刷直流电机的PWM调制方式介绍 http://blog.g ...

  2. 【电子基础】液晶显示器原理·LCD驱动基础

    LCD显示器概述   ——>液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像.   ——&g ...

  3. linux驱动基础系列--Linux mmc sd sdio驱动分析

    前言 主要是想对Linux mmc子系统(包含mmc sd sdio)驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.块设备驱动.设备模型等也不进行详细说明原 ...

  4. linux驱动基础系列--linux spi驱动框架分析

    前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi ...

  5. linux驱动基础系列--Linux I2c驱动分析

    前言 主要是想对Linux I2c驱动框架有一个整体的把控,因此会忽略协议上的某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型.sysfs等也不进行详细说明原理,涉及到i2c协议部分也只 ...

  6. 开源纯C#工控网关+组态软件(四)上下位机通讯原理

    一.   网关的功能:承上启下 最近有点忙,更新慢了.感谢园友们给予的支持,现在github上已经有.目标是最好的开源组态,看来又近一步^^ 之前有提到网关是物联网的关键环节,它的作用就是承上启下. ...

  7. Unit01: JDBC原理 、 JDBC基础编程

    Unit01: JDBC原理 . JDBC基础编程 这个文件里面有两块内容: 1.用比较麻烦的方式连接数据库,test1(),test4() 2.创建DBTool,测试DBTool连接数据库 ,tes ...

  8. linux驱动基础系列--Linux 串口、usb转串口驱动分析

    前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...

  9. linux驱动基础系列--Linux下Spi接口Wifi驱动分析

    前言 本文纯粹的纸上谈兵,我并未在实际开发过程中遇到需要编写或调试这类驱动的时候,本文仅仅是根据源码分析后的记录!基于内核版本:2.6.35.6 .主要是想对spi接口的wifi驱动框架有一个整体的把 ...

随机推荐

  1. NAT原理简介、各种 ADSL Modem 及路由器的端口映射方法

    NAT原理简介 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force ...

  2. How to rename table name

    How to rename table name eg.  rename emp to emp01; see aslo: https://docs.oracle.com/javadb/10.8.3.0 ...

  3. 沉淀再出发:PHP的中级内容

    沉淀再出发:PHP的中级内容 一.前言     前面我们介绍了PHP的简单的语法知识以及相关的用法,接下来我们将PHP+mysql以及PHP+ajax结合起来进行研究. 二.PHP+mysql     ...

  4. ZT 匿名内存映射

    mmap函数使用 分类: Linux/Unix C/C++ 2008-01-22 17:03 6089人阅读 评论(1) 收藏 举报 unix编程null网络 UNIX网络编程第二卷进程间通信对mma ...

  5. python使用SQLAlchemy对mysql操作

    安装SQLAlchemy pip install sqlalchemy 在MySQL的test数据库中创建的user表,用SQLAlchemy来试试 数据库连接 第一步,导入SQLAlchemy,并初 ...

  6. 关于Class类的getResource().getPath()方法

    程序中配置文件如果放置在classes文件夹,那么我们就可以使用Class类的getResource().getPath()方法获取文件路径. 例如: String path = DBUtil.cla ...

  7. python接口测试:自动保存cookies

    接口测试中遇到上一个请求返回响应包含cookie(如下图登录请求的响应结果).需将cookies保存下来,后续请求自动带入,否则会提示未登录. python requests的cookie类型是< ...

  8. WebKit由三个模块组成-Webkit模块介绍

    2.       Webkit 源代码由三大模块组成: 1). WebCore, 2). WebKit, 3). JavaScriptCore. WebCore:排版引擎核心,WebCore包含主要以 ...

  9. [19/04/14-星期日] 网络编程_java.net包(InetAddress类、InetSocketAddress类、URL类)

    一.概念 Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能.Java虚拟机负责提供与操作系统的实际连接. InetAddress    作用:封装计算机的IP地址和 ...

  10. 【node.js】REPL(交互式解释器)

    Node 自带了交互式解释器,可以执行以下任务: 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中. 执行 - 执行输入的数据结构 打印 - 输出结果 循环 - 循环操作 ...