【零基础玩转BLDC系列】基于反电动势过零检测法的无刷直流电机控制原理

无刷直流电动机基本转动原理请参考《基于HALL传感器的无刷直流电机控制原理》,基本原理及基础知识本篇不再赘述。

目录

反电势过零检测法的原理

反电势过零检测实现方法


位置传感器的存在限制了无刷直流电机在某些特定场合中的应用,如:使电机系统的体积增大,连接导线增多,且位置传感器在高温、高压和湿度较大等恶劣工况下运行时灵敏度变差,使系统运行可靠性降低等。

依据检测原理的不同,无刷直流电机无位置传感器控制方法主要包括:反电动势法、磁链法、电感法和人工智能法等。其中,反电动势法是目前技术最成熟、应用最广泛的一种位置检测方法。

反电势过零检测法的原理

根据法拉第电磁感应定律和楞次定律,转子旋转的时候会在定子绕组中产生感应电势,该感应电势的方向与绕组的电压相反,极性与励磁电压相反,故一般称为反电动势或反电势。

当转子在0角度时,A相反电动势过零点,再延后30度时,HALL 传感器检测到边沿信号,此时需要换相,即在30度时,AB绕组通电,开始检测C相绕组反电动势。

当转子位置60度时,C相反电动势过零点,再延后30度,HALL传感器检测到C相边沿信号,此时需要换相。以此类推,反电动势的检测总是在第三相未通电的绕组上进行,然后在延迟30度进行换相。

对比三相反电动势和三相绕组导通情况,6个反电动势过零点事件都是发生在未导通悬空相的绕组上,而所有的换相点都滞后相应的反电动势过零点30°电角度。反电动势过零点信号再延迟30°电角度,可得到6个离散的转子位置信号。

无刷直流电机绕组的反电动势过零点严格地反映了转子磁极的位置,当BLDC的某相绕组反电动势过零时,转子直轴与该相绕组交轴恰好重合,因此,只要能够准确的检测到绕组反电势的过零点信号,就可以判断出转子的关键位置。理论上,理想的换相点滞后反电动势过零点30°电角度,这样就能够实现无刷直流电机的换相操作,保证电机按照固定的方向连续旋转,从而保证了电机达到最大输出转矩,减小转矩脉动。

BLDC的反电动势大小取决于以下因素:转子角速度、转子磁体产生的磁场,定子绕组的匝数和气隙。电机设计完成后,转子磁场,定子绕组的匝数和气隙都是固定的,随着转子转速的提高,反电动势也随之增加。

BLDC在静止或低速时反电势为零或很小,无法用来判断转子位置,因此需要采用特殊的启动技术来进行启动,常用“三段式”自启动方法。

反电势过零检测实现方法

1.ADC检测法检测反电动势

AD检测法是一种软件计算反电动势过零点的方法,通过电压采样电路直接检测BLDC的三相端电压,然后通过软件方法,计算悬空相反电动势过零点。

为了使三相电压信号MOTOR_U/ MOTOR_V/ MOTOR_W落在MCU片上ADC模块的采样范围,对其进行电阻分压处理,再将分压后获得的AD_VOLTAGE_U/ AD_VOLTAGE_V/AD_VOLTAGE_W信号直接送入ADC的采样引脚进行处理。

ADC检测法需要在每个控制周期内采集母线电压,以确定理论中性点电压,并将其与悬空相的端电压进行比较,从而获得反电动势过零点,在检测到反电动势过零之后,延时30°电角度即可进行换相操作。

2.硬件比较器法

采用硬件比较器获取过零点的方法:通过悬空相反电动势( PHASE_U/V/W )与虚拟中性点电压(MITTLE)比较得到过零点。这种方法不需要考虑在哪个时刻进行过零采样,只需实时检测硬件比较后的I/O状态,即可判断换相时刻。

虚拟中性点计算电路如下图

图中,MOTOR_U,MOTOR_V,MOTOR_W分别接电机的A,B,C相,经过一个分压网络后分别得到PHASE_U,PHASE_V,PHASE_W三个信号并连接到ADC通道引脚。MITTLE为虚拟的估测后的中点电压,只要在AB通电期间开通MOTOR_W和MITTLE的比较,AC通电期间开通MOTOR_V和MITTLE的比较,BC通电期间开通MOTOR_U和MITTLE的比较,就可以成功检测出各相的过零点。

  • 52
    点赞
  • 384
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
Java图书管理系统的图形化界面可以使用Java Swing库来实现。下面是一个简单的实现步骤: 1. 创建Java Swing项目:在Eclipse或IntelliJ IDEA中创建Java Swing项目。 2. 设计界面:设计图书管理系统的界面,包括菜单栏、工具栏、按钮、文本框、表格等控件。 3. 编写代码:使用Java Swing库中的类和方来实现各个控件的功能,例如JMenuBar、JToolBar、JButton、JTextField、JTable等。 4. 实现功能:通过编写Java代码实现图书管理系统的各种功能,如添加图书、删除图书、查询图书、借阅图书等。 5. 测试和调试:对图书管理系统进行测试和调试,确保其正常运行和响应用户的操作。 下面是一个简单的Java图书管理系统的图形化界面实现的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class BookManager extends JFrame { private JMenuBar menuBar; private JMenu fileMenu, editMenu, helpMenu; private JMenuItem newItem, openItem, saveItem, exitItem; private JButton addButton, deleteButton, searchButton, borrowButton; private JTextField titleField, authorField, publisherField, yearField; private JTable bookTable; public BookManager() { // 初始化菜单栏 menuBar = new JMenuBar(); fileMenu = new JMenu("文件"); editMenu = new JMenu("编辑"); helpMenu = new JMenu("帮助"); newItem = new JMenuItem("新建"); openItem = new JMenuItem("打开"); saveItem = new JMenuItem("保存"); exitItem = new JMenuItem("退出"); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.addSeparator(); fileMenu.add(exitItem); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(helpMenu); setJMenuBar(menuBar); // 初始化工具栏 JToolBar toolBar = new JToolBar(); addButton = new JButton("添加"); deleteButton = new JButton("删除"); searchButton = new JButton("查询"); borrowButton = new JButton("借阅"); toolBar.add(addButton); toolBar.add(deleteButton); toolBar.add(searchButton); toolBar.add(borrowButton); add(toolBar, BorderLayout.NORTH); // 初始化表格 Object[][] data = { {"Java程序设计", "张三", "清华大学出版社", 2019}, {"Python编程", "李四", "人民邮电出版社", 2018}, {"HTML5与CSS3", "王五", "机械工业出版社", 2017} }; Object[] columnNames = {"书名", "作者", "出版社", "出版年份"}; bookTable = new JTable(data, columnNames); JScrollPane scrollPane = new JScrollPane(bookTable); add(scrollPane, BorderLayout.CENTER); // 初始化输入框 JPanel inputPanel = new JPanel(new GridLayout(4, 2)); inputPanel.add(new JLabel("书名:")); titleField = new JTextField(); inputPanel.add(titleField); inputPanel.add(new JLabel("作者:")); authorField = new JTextField(); inputPanel.add(authorField); inputPanel.add(new JLabel("出版社:")); publisherField = new JTextField(); inputPanel.add(publisherField); inputPanel.add(new JLabel("出版年份:")); yearField = new JTextField(); inputPanel.add(yearField); add(inputPanel, BorderLayout.SOUTH); // 设置窗口属性 setTitle("图书管理系统"); setSize(600, 400); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new BookManager(); } } ``` 运行上面的代码可以看到一个简单的Java图书管理系统的图形化界面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值