在电机驱动的FOC控制开发过程中,您是否遇到过电机噪声过大、效率偏低甚至无法运转的情况?这一切有可能源于相电流的采样异常,从而导致FOC算法中无法重建正确的三相电流!小编这里给大家分析影响电流采样的一个因素——延迟源!

1 引言

在双电阻采样的电机驱动FOC控制中,采样点设置为驱动桥下管打开的中间时刻。注意,这里是驱动桥下管打开的中间时刻,而不是MCU输出的PWM周期中间时刻。因为从MCU计算生成PWM到电流信号送入MCU的ADC模块,这个典型的驱动拓扑中,存在多达七个延迟源!

2 延迟类型及典型时间

下面表格详细指明了电机驱动系统拓扑中存在的七个延迟源及其典型的时间。这些延迟将叠加在一起,产生的影响是:实际输出PWM波形滞后于MCU计算预期输出的PWM波形,按照这个计算,相电流采样点需要滞后于MCU计算预期输出的PWM波形的中间时刻。

3 延迟源详细分析

3.1PWM死区时间插入

在三相无刷电机驱动系统中,需要三个桥臂来控制相线电流流向,在每个桥臂上有两个功率器件,如MOSFET、IGBT。这一对功率器件不能同时导通,否则就会出现短路的情况。这里以MOSFET作为功率器件来说明。在控制中,必须插入死区时间以确保上部和下部MOSFET不会同时处于打开状态。死区时间的典型值可能在100ns到2μs之间,具体取决于系统中的各种因素,如MOSFET驱动电压、MOSFET型号。

在所需的PWM波形插入死区时间之后,我们得到的是PWM中点和上升沿都向右移动。因此,在FOC控制算法计算出适当的PWM之后,我们立即开始看到第一个延迟,即死区时间。

3.2 光耦延迟和预驱动器延迟

在MCU控制FTM模块输出PWM波形到MOSFET栅极受控制的那一刻之间,各种光电耦合器和预驱动器的信号响应导致了额外的延迟。

与MCU引脚输出的波形相比,预驱动器的输出延迟了一段时间(Delay1)。

3.3晶体管开关延迟

经过预驱动器后,PWM波形到达MOSFET晶体管,但由于其固有特性,所有晶体管都需要一定的时间导通和截止。根据晶体管类别及导通/截止之间切换所需要的电压电平,此延迟时间有所不同。

Delay2为相线电压理论切换点(CMP2)与实际切换点的时刻之间的整个延迟。

最后,栅极电压到达了能令晶体管导通的程度,电流通过相线和采样电阻,在采样电阻两端产生电压差,红色波形为理想状态下的相电流波形。此时与MCU计算生成的PWM周期中点存在延迟总时间如图中“相电流中点移位”。

3.4其他延迟

如下图所示,影响电流采样的最后延迟链是由放大器转换速率、MCU引脚上的低通滤波器和ADC转换速率构成的。图中用红色圆圈标记的时刻为正确的电流采样时刻,可以看出,与FTM输出的PWM中点相比,相电流采样点大大延迟。

4 结语

所有的电子电路中,都会存在信号的延迟问题。信号延迟不可能被完全消除,但可通过选用低延迟的器件以减小影响。

在电机驱动中,除了选用合适的器件外,还需要对信号延迟进行软件补偿。文中提及的这些延迟源的精确延迟时间,我们可以通过示波器和计算得出,在软件上补偿这些延迟,才可得出正确的电流采样时刻。这样在正确的时刻采集到的数据才能作为FOC控制中重建电机三相电流的数据来源。

原文标题:FOC电流采样为什么不准?你忽略了这个细节

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】

FOC 电流采样为什么不准?你忽略了这个细节的更多相关文章

  1. FOC 电流采样方案对比(单电阻/双电阻/三电阻)

    如果本文帮到了你,帮忙点个赞: 如果本文帮到了你,帮忙点个赞: 如果本文帮到了你,帮忙点个赞: 创作不易 谢谢支持 文章目录 1 电流采样的作用 2 硬件架构 3 采样关键 4 采样方案 5 三电阻采 ...

  2. FOC中的电流采样

    电流采样是FOC的基础,具体有电流传感器采样.电阻采样,电阻采样以其简单低成本的应用广泛使用. 电阻法采样有单电阻采样.双电阻采样.三电阻采样. 一. 单电阻采样 单电阻采用分时采样,在一个PWM周期 ...

  3. 学习Java,容易被你忽略的小细节(3)

    在<学习Java,容易被你忽略的小细节(2)>中我们已经深入讨论过String类中equals()方法的使用,在本文中我们将进一步讨论equals()方法在其他境况下的使用方法. 首先,我 ...

  4. 学习Java,容易被你忽略的小细节(2)

    昨天心情真的太糟糕了,写完<学习Java,值得注意你注意的问题(1)>之后,迎来些许的支持以后就是一片片的谴责.我的主页上涌现出许许多多Java方面的牛人,谴责我水平太低,写的问题太初级. ...

  5. 学习Java,值得你留意的问题(1)更名为《学习Java,容易被你忽略的小细节(1)》

    记得大二快要结束的时候,有个女孩子突然问我“你会Java吗,帮我做大作业好吗?” 实话说,那个女孩真的很漂亮,我当时也非常想帮她.但是我从来没有接触过Java,让我在短短的几天内完成Java程序设计课 ...

  6. 被忽略的js细节

    今天在写一个程序,出了一点小bug,找了许久许久,终于把问题给揪了出来,真相大白那一刻感觉好蛋疼--深刻体会到了语言之间的差异. <script type="text/javascri ...

  7. 新手在sae部署程序容易忽略的一个细节

    从来没用过这类云空间服务,尝了下鲜试用一下sae,但是部署的时候发现问题了,各种404..各种无奈啊..虽然百度无数篇介绍,但是都千篇一律没什么启发.. 但是巧在我部署的应用有个欢迎页面,点击链接的时 ...

  8. android 获取wifi列表,如果你忽略了这个细节,可能你的软件会崩溃

    一:业务描述 最近公司有一个小需求,用户点击wifi扫描按钮(注意:是用户主动点击wifi扫描按钮),app去扫描附近的wifi,显示在listView中,仅此而已,app都不用去连接某个wifi,看 ...

  9. 纯小白创建第一个Node程序失败-容易忽略的一个细节

    一直觉得自己基础还很差,所以自觉不敢去碰node.js,但又对其心怀好奇.恰巧最近有一点空闲时间,忍不住去试了一下水   这不,在创建第一个node程序时就吃了闭门羹,总是提示我没有定义,如下图, 这 ...

随机推荐

  1. google无法播放mp4 chrome无法播放h264

    写在前面 我在chrome上无法播放h264+Acc的mp4,在firefox.ie都可以播放,而且此mp4在vlc终可以正常播放. 视频链接:http://106.14.221.185:7001/p ...

  2. 小知识点:session的存放位置

    在php.ini里的配置session.save_path是注释掉的,那么Seesion保存的路径在不同类型操作系统保存在什么位置? Linux: /tmp 或 /var/lib/php/sessio ...

  3. SpringMVC Spring Mybatis整合篇

    1.创建WEB项目 创建项目:(ssmbuild)步骤略........ 给项目添加lib文件夹,用于存放jar包: 在WEB-INF目录下创建lib文件夹: 创建完成:运行项目时需要把jar导入到l ...

  4. 快速从零开始安装Laravel5.2教程

    前面 本文默认你Win电脑什么都没装,也就是从零开始安装Laravel,并且环境都由我来指定分配哈! 环境 首先搭建运行环境,先到 PhpStudy官网 下载PhpStudy的Windows版本.然后 ...

  5. 前端以BASE64码的形式上传图片

    前端以BASE64码的形式上传图片 一直有一个很苦恼的问题困扰着铁柱兄,每次上传图片的时候前端要写一大堆js,然后后台也要写一堆java代码做处理.于是就在想,有没有简单又方便的方法把图片上传.今天算 ...

  6. python爬虫实战之爬取智联职位信息和博客文章信息

    1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author  ...

  7. 在 Azure CentOS VM 中配置 SQL Server 2019 AG - (上)

    前文 假定您对Azure和SQL Server HA具有基础知识 假定您对Azure Cli具有基础知识 目标是在Azure Linux VM上创建一个具有三个副本的可用性组,并实现侦听器和Fenci ...

  8. python25之进制转换

    一.进制转换函数 bin():将十进制转换为二进制 oct():将十进制转换为八进制 hex():将十进制转换为十六进制 >>> x=1234>>> bin(x)' ...

  9. hash算法解决冲突的方案

    1, 开放定址法: 所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 公式为:fi(key) = (f(key)+di) MOD m ...

  10. 【集群实战】sersync

    1. sersync介绍 sersync功能: 实时同步: sersync组成: sersync==inotify+rsync inotify: 监控某个目录下面"文件/目录"是否 ...