汽车电子笔记之-012:旋变工作原理及软解码硬解码

目录

1、旋变

1.1、激励的产生

1.2、旋变的标定

2、旋变解码

2.1、旋变硬解码

2.2、软解码


1、旋变

        旋转变压器(旋变),是电机控制中常用的一种位置传感器,用来反应电机的转子位置,提供给软件做电机控制等相关算法。

        如上图所示,旋变也可以理解为是一个小电机,也分定子与转子,通常旋变的转子安装在电机的转轴上,与电机同步旋转,并在定子线圈中感应出位置信息,由定子线圈传递出来,得到最终的位置。       

        旋变的结构示意图如上图所示,中间的R1R2线圈为转子线圈,S1S2、S3S4分别为互相垂直的定子线圈,当R1R2中通入的是高频正弦信号,我们通常称该信号为激励信号;此时会在次级线圈中感应出高频的感应信号,这个信号就包含了具有位置信息的包络信号;我们将返回的感应信号提取包络,就可以获取对应的正余弦信息;通过硬解码/软解码等方式解码后,可以得到定子的绝对位置信息(这里注意强调一下是绝对位置)。下面我们来推导一下这个过程:

假设激励信号为:

        如上图中的位置所示,旋变的激励线圈与水平的夹角为θ

        那么结合激励线圈中的信号,可以分别得到两个感应线圈中的信号分别为:

所以,我们能分别得到激励、正弦及余弦的波形如下:

        其中正余弦的波形是幅值不断变化的正弦曲线,结合上面的方程不难理解,正弦曲线其实是激励源产生的,而之所以幅值会不断变化是因为旋转过程中,激励线圈与次级线圈的夹角 θ不断变化,所以产生了这种波形。而这个波形的外包络(即图中的黑线部分)就是我们所需要的正余弦信号。

        所以,我们在解码过程中,只需要能够提取正余弦信号的外包络,就可以获取转子的绝对位置信息了。

        那么,基于以上分析,了解了旋变的主要结构和工作原理以后,旋变的应用很重要的两个功能就是激励信号的产生和回采正余弦信号的外包络提取及角度计算(这一部分通常称为旋变解码)。

1.1、激励的产生

        注意激励信号sin+与sin-是差分信号。

        通过前面的介绍,我们知道旋变的工作需要一个高频的正弦信号输入,我们通常称为激励信号。而在实际的应用过程中,正弦曲线是无法通过MCU某个模块直接得到的。所以,我们很自然的能想到PWM调制技术,与电机控制一样,都是通过高频PWM的脉宽调制,最终达到近似输出正余弦电压的效果。

        另一方面,除了MCU输出的高频PWM信号外,控制器硬件上也需要相关电路的匹配设计,硬件需要完成的功能有调整比例、调整偏置、增加驱动能力等,软硬件结合后才能够最终得到我们所需要的激励信号波形。关于旋变的硬件电路这部分,网上有很多可用的资源作为参考,这里不过多的介绍。

        单片机产生的是输入信号,产生

产生的激励正负结果:

        仿真得到的激励波形在峰值点有点削波的情况,这是由于在PWM生成的地方有两个relay模块,在PWM小脉宽的时候,可能不满足relay中buffer的设定,所以在峰值点的时候波形存在缺失。

1.2、旋变的标定

        旋变的标定在日常工作中有很多通俗的说法,比如说零位角标定、电机角标等等。虽然说法不同,但是内容及功能是一致的,就是要知道旋变的零位与电机的零位之间的角度偏差。

        旋变是一种绝对位置传感器,获取的是电机转子位置的绝对位置。但是我们电机控制的本质是定子磁场与转子磁场的相互作用,而定子磁场是通过输出电流得到的,所以我们需要的并不是转子的绝对位置,而是转子与定子之间的相对位置,有了相对位置,定子磁场才可以准确的输出。

        旋变的标定需要寻找的是旋变的零位和电机零位的偏差,又由于旋变可以获取的是绝对位置,所以,实际应用过程中我们只要找到电机零位对应的旋变位置,其实就是旋变零位与电机零位的偏差了。

        旋变其实也可以理解为一个小电机,因为旋变也有极对数的概念,为了方便我们通常会与大电机极对数相同的旋变来作为传感器,这样旋变解码出来的角度就是电机的电角度。如果二者之间的极对数不相等,那还存在换算的关系。

2、旋变解码

        既然有了正确的激励,就有正确的返回值,当然也会经过一段sin/cos的电路,这部分不做分析了。然后就会到我们的MCU或者解码芯片了,由于回采的信号是带有sin/cos的外包络的高频信号,所以如何解码就成为获取电机转子位置很重要的一环了。既然有了正确的激励,就有正确的返回值,当然也会经过一段sin/cos的电路,这部分不做分析了。然后就会到我们的MCU或者解码芯片了,由于回采的信号是带有sin/cos的外包络的高频信号,所以如何解码就成为获取电机转子位置很重要的一环了。

注意上图波形sin的顶点与激励的(正负)顶点是对齐的。

        这里按照解码的途径来分类有两种,分别是软解码和硬解码;如果按照解码的思路来分类也分为两种,可以分为反正切和锁相环。无论是什么样的处理思路,都需要先提取正余弦返回信号的外包络,这里也分为两种方式,分别是取极值点和积分法。

2.1、旋变硬解码

        所谓旋变硬解码就是利用硬件来对旋变信号进行处理,当然也包括激励信号的生成。只不过是一颗独立的解码芯片来完成而已。同样的,对于反馈正余弦信号的处理也是由解码芯片完成,最终将解码的结果通过SPI/并口/ABZ等通信的方式传输给MCU。MCU获取的就是最终我们所需要的位置信息或者转速信息。

        接下来以AD2S1200为例,简单的介绍一下硬解码的解码方式和解码原理:

        关于具体功能,大家可以参看datasheet中的说明,这里强调一点,就是激励信号为什么要搭配外围的电路。因为无论是MCU产生的高频PWM还是解码芯片产生的激励信号,输出能力都是不够的,所以外围要增加缓冲放大电路来保证性能

        AD2S1200中采用的是Type II型闭环跟踪原理,这部分在芯片的datasheet中有描述。我们软解码中其实应用的也是这个原理,只不过是用软件实现了。下面简单介绍一下II型闭环跟踪原理:

        转换器产生输出角ϕ(追踪的这个角来自于芯片内部的计算,将前一次输出的转速经过积分得到的角度,再次给到下一个周期的输入),反馈后与输入角θ进行比较,借此来达到跟踪轴角θ的目的;两个角度之差即为误差,如果转换器正确跟踪输入角,误差趋于0。为了测量误差,将S3-S1乘以cosϕ,并将S2-S4与sinϕ相乘。得到手册中的公式:

上面两式作差

        括号外面的部分是激励信号的表达式,而括号中的角度是我们需要的追踪结果,所以,我们只需要看括号内的表达式,利用和差化积可以将括号中的表达式进行转化:

        

        Type-II跟踪环路消除了误差信号,完成该操作后,ϕ等于旋转角θ。由于计算的相邻周期间的角的误差,所以得到的结果是加速度,积分后得到速度,再积分后得到位置信息。

        而手册中在CIRCUIT DYNAMICS中,又详细介绍了Type-II跟踪环路系统:

        首先是当前的sin/cos输入,并与上一个周期的结果作差,然后经过和差化积运算,可以得到角度差,即为加速度。经过第一个积分器,可以得到速度。中间经过一个补偿滤波器(compensation filter),用于提供相位裕量并减小高频噪音的增益。速度结果再经过第二个积分器,得到最终的位置输出。然后该位置结果经过正余弦的查表,得到正余弦结果再跟下一个周期采集到的正余弦信息计算下一个周期的结果。

        在硬解码中,很重要的一点理解就是高频返回信号的解码,这里有一个模块叫做检波器,配合激励的波形,这个检波器最重要的功能就是将包络提取出来,具体的电路形式可以搜索获取,比如包络检波器、极值检波器等等,匹配好电路中低通滤波器及检波器的参数,就可以实现基本的功能。实现了外包络提取后,再进行积分运算。

        

2.2、软解码

        与硬解码的原理相同,完成位置信号获取最重要的是激励信号的产生、外包络的提取及角度的计算。激励的产生原理与硬解码相同,下面主要介绍一下外包络的提取方式及角度的解码方式。

        外包络的提取方式主要可以分为两种:峰值提取和积分提取。

        峰值提取法顾名思义就是要提取每个高频正余弦波的峰值,如下图所示

在前一篇文章中我们提到过,返回的正余弦高频信号的方程分别为:

        用Vb/Va=tan(θ),可以用这个结果直接利用查表(acrtan表格)就可以得到转角θ。

        积分方式提取,我们比较常用的是直接借助英飞凌的DSADC模块完成软解码的功能。与硬解码原理相似,主要的差异体现在正余弦外包络提取的方法上,采用的是DSADC中的积分器完成。

        首先介绍一下整个的解调原理:

主要过程分为以下几个步骤:

·滤波;

·展开:将一个载波周期内的波形展开,并提取其中的滤波结果(图中为14个点)

·符号:在载波信号生成的同时会生成一个符号,当在载波信号生成的正半周期时,符号为+1;当在载波周期的负半周期时,符号为-1;

·整形:结合前一步的符号信息,将一个载波周期内的波形进行翻转,正半周期的波形向正半轴翻转;负半周期向负半轴翻转;

·聚拢:同样的方法对每一个载波周期的波形进行处理,可以得到上图中第五步的波形,正半周期的波形全部为正;负半周期的波形全部为负;

·积分:分别对两个波形进行积分:

        由上式可以看出,经过积分后的波形只与激励的幅值和当前的角度θ相关,与激励是无关的。所以,通过积分提取外包络得到实现。

        在这个过程中,其实最重要的就是整形这一步,因为其他部分的原理与硬解码基本类似,而且整形这个过程牵扯到如何准确的实现波形的翻转,是得到正确积分结果的基础。

        在前面的载波生成中我们提到过,在生成载波的同时也会同步生成一个符号,用来区分载波的正半周期和负半周期。

        首先需要介绍几个概念,第一个是捕捉的延时CAP值,这个是指实际的正余弦翻转与载波生成的翻转信号之间的延时;第二个是抽取率M,这个指标确定了在一个周期内,我们的数据个数,或者说在一个完整的载波周期内的PWM个数。其实不难理解,这个PWM的个数与总线频率和正弦频率有关,假设一个周期内的PWM周期有32个,那么很容易得到半个周期就是16个,再加上延时的CAP值,那么我们就得到了正负翻转的计数点为16+CAP。这个模块中的CAP每捕捉一次就会触发一个中断,在中断里会刷新这个延时。当载波符号改变后,表示生成的载波已经改变了方向,此时开始计数;直到滤波后第一个符合符号的结果出现,这个计数的结果就是CAP的延时。

        关于时序的问题,以TC277为例,它的总线频率为200MHz,按照配置的方式,我们可以产生的PWM频率为312.5kHz;而一个包络的周期包含32个PWM周期,所以正余弦的周期为9.76kHz。而我们通常的控制频率(电流环)都不是9.76kHz,意味着如果在电流环中处理角度的话,电流环与软解码之间是不同步的,存在时间差,在实际应用过程当中,一定要注意两个不同频率之间的角度差。再一个需要补偿采样、计算等方面的延时,否则角度也会存在偏差。

        关于角度计算,我们提出了两种计算方式,分别是反正切查表和观测器的方式实现,两种方式的优缺点为:

·反正切:

抗噪性较差,

静态波动较大,

无额外延迟

计算时间长

·观测器:

抗噪性好

静态数据稳定

加减速时有静态误差

同时产生速度值

        最后补充一句,在软解码的实现过程中,旋变的反馈波形并不一定很完美,这里可能需要对幅值、相位、中性点等进行校正。校正的算法目前比较成熟且统一,不做介绍了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/838825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础之对线程的理解

目录 程序、进程、线程 什么是进程? 什么是线程 线程与进程的区别? 二、多线程 实现多线程方式一:继承Thread类 实现多线程方式二:实现Runnable接口 实现多线程方式三: 实现Callable接口 ​ 三种实现方式的对比 设置和获…

【WEEK12】 【DAY3】整合MyBatis框架【中文版】

2024.5.15 Wednesday 目录 13.整合MyBatis框架13.1.整合测试13.1.1.新建springboot-05-mybatis项目13.1.2.导入MyBatis需要的依赖13.1.3.配置数据库连接信息13.1.3.1.修改application.properties13.1.3.2.修改Springboot05MybatisApplicationTests.java并测试 13.1.4.新建pojo文…

InnoDB 事务处理机制

文章目录 前言1. 事务处理挑战1.1 事务机制处理的问题1.2 并发事务带来的问题 2. InnodDB 和 ACID 模型2.1 Innodb Buffer Pool2.2 Redo log2.3 Undo log2.4 应用案例 3. 隔离级别和锁机制3.1 事务隔离级别3.1.1 READ UNCOMMITTED3.1.2 READ COMMITTED3.1.3 REPEATABLE READ3.1…

SpringBoot应用

文章目录 第一章、SpringBoot基础内容一、Spring和SpringBoot1、Spring介绍2、SpringBoot介绍 二、SpringBoot2入门操作1、在线构建2、idea构建 三、浅谈自动装配的原理 第二章、SpringBoot核心功能一、配置文件1、配置文件介绍2、语法规则3、数据类型4、案例使用 二、WEB开发1…

如何管理测试用例?测试用例有什么管理工具?YesDev

3.1 测试用例 测试用例(Test Case) 是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果等。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条…

CPT7数据保存详细步骤

一、连接设备、打开NovAtelConnect 软件 (1)点击1,并在2中输入如下命令: LOG RANGEB ONTIME 1 // 输出原始数据记录在板卡LOG RAWEPHEMB ONTIME 1 // 输出 GPS 原始星历记录在板卡LOG bdsephemerisb ONTIME 1 // 输出

在澳门写代码;技术入股2次融资被踢;现在只想做独立开发

本期我们邀请的程序员是Albert,先后在广州、澳门、珠海、香港工作过,打工上班、合伙创业、远程工作、独立开发,工作经历丰富,如果你想知道哪些程序员踩过的坑,请别错过他的故事。 广州:第一份工作2000块一…

C++ 结构体内存对齐

定义了两个结构体 typedef struct Cmd {uint8_t ua;uint8_t ub;uint8_t uc;uint32_t ue; } Cmd_t;typedef struct Cmd_tag {uint8_t value;uint8_t data[1]; // 将 data 定义为指向 Cmd_t 结构体的指针 } tag_t;在实际使用中,看见前人的代码是,new 一块内…

MySQL第三次作业--DML语句(INSERT)

目录 一、在数据库中创建一个表student,用于存储学生信息 二、向student表中添加一条新记录,记录中id字段的值为1,name字段的值为"monkey",grade字段的值为98.5 三、向student表中添加多条新记录: 2,&qu…

详解动态规划之01背包问题及其空间压缩(图文并茂+例题讲解)

1. 动态规划问题的本质 记忆化地暴力搜索所有可能性来得到问题的解 我们常常会遇到一些问题,需要我们在n次操作,且每次操作有k种选择时,求出最终需要的最小或最大代价。处理类似的问题,我们一般需要遍历所有的可能性(相当于走一遍…

SpringMVC核心组件之HandlerMapping详解

文章目录 前言一、AbstractHandlerMapping抽象类initApplicationContextgetHandler 二、MatchableHandlerMapping类二、AbstractUrlHandlerMapping类 前言 当一个web请求到来时,DispatcherServlet负责接收请求并响应结果。DispatcherServlet首先需要找到当前请求对…

普通人也能创业!轻资产短视频带货项目,引领普通人实现创业梦想

在这个信息爆炸的时代,创业似乎成为了越来越多人的梦想。然而,传统的创业模式 keJ0277 往往伴随着高昂的资金投入和复杂的管理流程,让许多普通人望而却步。然而,现在有一种轻资产短视频带货项目正在悄然兴起,它以其低…

2024做安全测试必须要知道的几种方法!

前言 安全性测试(Security Testing)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程,其主要目的是查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,安全指标不同,测试策略也不同。 但安全…

『Apisix安全篇』快速掌握APISIX Basic-Auth插件高效使用

📣读完这篇文章里你能收获到 👨‍💻 学习如何快速安装并配置APISIX Basic-Auth插件,为您的API安全保驾护航。🛠️ 文章详细介绍了如何创建带有basic-auth配置的Consumer,以及如何在Route中启用该插件。&am…

微信自主创建表单投票小程序源码系统 带充值刷礼物功能 附带源代码以及完整的安装部署教程

系统概述 本小程序实现的核心功能包括:用户注册登录、表单提交投票、查看投票结果、在线充值以及赠送礼物等。其中,投票表单可以根据实际需求进行自定义设置,满足不同类型的调查或评选活动。同时,通过引入第三方支付接口&#xf…

Django Celery 的配置及使用---最详细教程

Django Celery 的配置及使用 Redis提供队列消息功能 一、安装redis 系统版本:Ubuntu 20.041、获取最新软件包 sudo apt update sudo apt install redis-server2、安装完成后,Redis服务器会自动启动。查看redis是否启动成功 sudo systemctl status …

LLM大模型多模态面试题(二)

1. 介绍transformer算法 Transformer本身是一个典型的encoder-decoder模型,Encoder端和Decoder端均有6个Block,Encoder端的Block包括两个模块,多头self-attention模块以及一个前馈神经网络模块;Decoder端的Block包括三个模块&…

uniapp 实现下拉刷新 下滑更新

效果图 在app或者小程序中向下滑动 会出现刷新数据 ,而上拉到底 需要更新数据 功能实现 主要俩种方式 依赖生命周期 在page.json中开启 page.json "style" : {"navigationBarTitleText" : "小小练习","backgroundTextStyle": &qu…

狙击策略专用术语以及含义,WeTrade3秒讲解

想必各位交易高手对狙击策略不会陌生吧!但你想必不知道狙击策略的开发者为了推广狙击策略,在狙击策略基础的经典技术分析理论引入了自己的术语。今天WeTrade众汇和各位投资者继续了解狙击策略专用术语以及含义。 一.BL 银行级别(BL)是前一日线收盘的级别。时间是格…

微信小程序开发中怎么配置SSL证书?

在微信小程序开发中,配置SSL证书主要用于实现HTTPS请求,以保证数据传输的安全性。以下是配置SSL证书的基本步骤: 一、获取SSL证书 首先,你需要获取一个有效的SSL证书。SSL证书可以被广泛信任的证书颁发机构申请,如Jo…