如果本文帮到了你,帮忙点个赞;

如果本文帮到了你,帮忙点个赞;

如果本文帮到了你,帮忙点个赞;

创作不易 谢谢支持

1 电流采样的作用

在FOC算法中,电流采样在反馈环节是相当重要的一部分,无论是有感FOC,还是无感FOC,相电流是交流三相同步电机在进行坐标变换的关键,最终通过SVPWM实现电机转子磁场和定子磁场的同步转动,通常这里有三种方案,单电阻采样,双电阻采样,三电阻采样,关系到整体系统的成本,算法的复杂程度和最终运行的效果,这里需要更加项目的具体需求进行选择。本文参考ST的单电阻和三电阻采样以及TI的双电阻采样,还有microchip的资料,结合实际中可能需要注意的地方进行总结分析。

几种电流采样方案的对比;

电流采样 成本 算法
单电阻 复杂
双电阻 适中 适中
三电阻 简单

2 硬件架构

硬件上的设计通常是采集三相电流,通过运算放大器加偏置电压,这样可以就可以采集正负电流,最终在MCU中处理的时候减去偏置电压就行,以Infineon XC167CI SK Board单电阻的方案为例子,具体电路拓扑图如下;



下面是TI C2000 的方案

AP1608410 原文链接

运算放大器

3 采样关键

采样的关键是需要在三相逆变器高端关闭,低端打开的情况下进行采样,这是整体的采样点。因此,采样会存在窗口时间,因为ADC转换完成需要一定数量级的时间,也就是说,在ADC转换完成之前,桥低端是不能关闭的,在这里,双电阻和单电阻采样需要考虑窗口时间的限制,而三电阻采样则不存在窗口时间(PWM占空比接近100%),可以根据SVPWM当前所在象限,进行分类,只需要采集其中不受窗口时间限制的两相电流,然后根据 Ia+Ib+Ic=0I_{a}+I_{b}+I_{c} = 0Ia​+Ib​+Ic​=0,进行电流的重构。

4 采样方案

电流采样比较关键的地方主要是硬件的设计和采样点的设置,这里在后面会涉及到通过相应的触发信号去通知ADC进行电流采样,最后进行电流重构。

5 三电阻采样

TI的三电阻采样

5.1 三电阻采样点

正如前面所提到的三电阻采样可以避免窗口时间,如下图所示;在不同扇区需要采样的相电流,可以看到,共同点是避免去采样PWM占空比接近100%的那一相电流。



可以参考一下ST的电机库的做法,通过TIMER_CH4作为ADC采样的触发信号,而采样则可以通过修改TIM_CCR4寄存器去改变采样点,相当灵活的做法;

5.2 双电阻采样

双电阻采样无法避免窗口时间,所以需要限制最终PWM的占空比,为ADC转换预留足够的时间;

5.3 双电阻采样点

5.4 单电阻采样

单电阻采样需要在一个PWM周期内进行两次采样,下面需要在SVPWM六个扇区进行相电流的分类,这里可以对SVPWM的原理进行分析,从而了解如何对电流进行重构;单电阻的电路结构如下图所示;



为了便于理解整个采样的过程,为了表示逆变器的开关管的状态,

Sa表示A相的上下管,同理Sb表示B相的上下管;

这里规定:

Sa = 1表示上管导通,下管断开;

Sa = 0表示下管导通,上管断开;

SbSc以此类推;

5.4.1 Sa Sb Sc:100

5.4.2 Sa Sb Sc:110

5.4.3 SVPWM的开关状态

开关状态 AH BH CH 电流
0 0 0 0 0
1 1 0 0 IAI_{A}IA​
2 1 1 0 −IC-I_{C}−IC​
3 0 1 0 IBI_{B}IB​
4 0 1 1 −IA-I_{A}−IA​
5 0 0 1 ICI_{C}IC​
6 1 0 1 −IB-I_{B}−IB​
7 1 1 1 0

因此,单电阻采样,需要在一个PWM周期内进行两次采样;具体如下图所示;



图中的SAL,SBL,SCL分别对应整流桥的下管,因此在一个周期内分别进行了Sample 1Sample 2这两次采样,对照上表可以推出;

  • Sample 1:采集了开关管状态为SAL SBL SCL:101==>SAH SBH SCH:010,此时采样电流为 IBI_{B}IB​;
  • Sample 2:采集了开关管状态为SAL SBL SCL:100==>SAH SBH SCH:011,此时采样电流为 −IA-I_{A}−IA​;

原理搞清楚之后,下面要注意的地方还有两点采样点的确认和窗口时间的限制;

5.4.4 ST方案

6 总结

本文介绍和对比了三种电流采样方案,简单给出了需要注意的地方,由于本人能力有限,文中难免出现错误和纰漏,请大佬不吝赐教。

7 附录

microchip 资料汇总

TI 1-, 2-, and 3-Shunt FOC Inverter Reference Design

FOC 电流采样方案对比(单电阻/双电阻/三电阻)的更多相关文章

  1. FOC 电流采样为什么不准?你忽略了这个细节

    文章目录 1 引言 2 延迟类型及典型时间 3 延迟源详细分析 3.1PWM死区时间插入 3.2 光耦延迟和预驱动器延迟 3.3晶体管开关延迟 3.4其他延迟 4 结语 在电机驱动的FOC控制开发过程 ...

  2. python中的单引号,双引号,三引号

    转载自: http://blog.csdn.net/wanghai__/article/details/6285310 先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 ...

  3. FOC中的电流采样

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

  4. [硬件项目] 2、汽车倒车雷达设计——基于专用倒车雷达芯片GM3101的设计方案与采用CX20106A红外线检测芯片方案对比

    前言 尽管每辆汽车都有后视镜,但不可避免地都存在一个后视镜的盲区,倒车雷达则可一定程度帮助驾驶员扫除视野死角和视线模糊的缺陷,提高驾驶安全性.上一节已经分析清倒车雷达的语音模块(上一节),本节将深入分 ...

  5. 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)

    算法原理请参考此文:  kinect fusion 3D重建基本算法  http://log.csdn.net/xiaohu50/article/details/51592503 三维重建为三维空间实 ...

  6. 烂泥:nagios监控单网卡双IP

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 公司的业务有几台服务器存放在IDC机房中,说是双线路.但是我看到网卡的配置是单网卡双IP的形式.如下: 而公司这边的线路是联通的IP,如下: nagio ...

  7. hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)

    数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...

  8. Word中一条删除不掉的单或双横线的解决办法

    Word中一条删除不掉的单或双横线 有时你或许会遇到这样一种情况:在word中,有一条单或双横线怎么都删除不了,并且具有这样的特点: 在上面输入文字,横线会自动下调一行,如果文章过页,每页的尾部会有一 ...

  9. 数据结构与算法之PHP实现链表类(单链表/双链表/循环链表)

    链表是由一组节点组成的集合.每个节点都使用一个对象的引用指向它的后继.指向另一个节点的引用叫做链表. 链表分为单链表.双链表.循环链表.   一.单链表 插入:链表中插入一个节点的效率很高.向链表中插 ...

随机推荐

  1. Daily Scrum 12/16/2015

    Process: Dong&Minlong : 继续对Oxford Speech 接口进行调试,并且完成了相应工作的转接. Yandong@Zhaoyang: 完成了对一些Bug的修复工作,程 ...

  2. C++养成好的代码习惯

    [C++小技巧] -------------------------------------------------------------#ifdef _DEBUG    imwrite(" ...

  3. tensorflow1.0 placeholder占位符

    import tensorflow as tf #(tf.float32,[2,2]) input1 = tf.placeholder(tf.float32) input2 = tf.placehol ...

  4. Python机器学习笔记:K-Means算法,DBSCAN算法

    K-Means算法 K-Means 算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means 算法有大量的变体,本文就从最传统的K-Means算法学起,在其基础上学习 ...

  5. GitHub 如何忽略文件或者文件夹

    在我们开发项目的时候,往往会产生一些不必要的文件,我们会选择忽略他们,不提交到版本控制中,那我们该如何做呢? 步骤一:在项目根目录下,右键,git bash,在弹出的命令行输入框中输入命令:touch ...

  6. python学习03字符串基本操作

    '''字符串可以用单引号,双引号,三引号表示 '''#1.读取str1='I am a student!'#每一个字符对应一个下标,可以利用下标的方式来读取字符串对应的值——索引print(str1[ ...

  7. [Qt] 去除窗体右上角的问号

    this->setWindowFlags(windowFlags()&~Qt::WindowContextHelpButtonHint);

  8. 如何在Spring boot中修改默认端口

    文章目录 介绍 使用Property文件 在程序中指定 使用命令行参数 值生效的顺序 如何在Spring boot中修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值.但是有时 ...

  9. Uva 1754 Posterize

    #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) #defi ...

  10. material UI中withStyles和makeStyles的区别

      在material UI中,withStyles和makeStyles是经常使用的两个用于封装样式的函数.对于刚使用material UI的开发者而言,可能不太清楚这两者的区别.   本文简要探究 ...