控制电机电流高精度采样的方法及系统和伺服电机与流程

文档序号:16691556发布日期:2019-01-22 18:54阅读:1289来源:国知局
控制电机电流高精度采样的方法及系统和伺服电机与流程

本发明涉及电机技术领域,尤其涉及一种控制电机电流高精度采样的方法及系统和伺服电机。



背景技术:

对于数字化伺服电机控制系统,电流环的性能直接影响着系统的控制效果,而电流采样的精度和实时性很大程度上决定了系统的动、静态性能,精确的电流检测是提高系统控制精度、稳定性和快速性的重要环节,也是实现高性能伺服闭环控制系统的关键。大多数伺服驱动器使用精密采样电阻+线性光耦+ad采样芯片的方案,成本虽然较低,由于受线性光稱、ad采样芯片的影响,有效精度一般在11位左右,响应一般在10μs左右,难以满足高精度高响应的要求。线性光耦后的ad一般采用mcu自带的ad端口采集电流,精度一般在12位左右,采样之后由于光耦经过σ-δ调制,所以必须经过sinc3滤波才能取出电流数据,最后把电流数据给到控制模块对电机进行控制。这种方案由于dsp的ad端口精度有限,加上dsp自己做sinc3滤波会让整个程序变得很复杂,大大增加调试难度和bug风险,也增加了响应时间,所以难以满足高精度高响应的要求。

因此,提供一种能成本较低的,且动、静态性能优异的电流检测方法成为了迫切需要解决的问题。图1示出了现有技术中的电机电流采样的结构原理图,其中c797为电流采样芯片,这一类芯片输出的mclk为一个时钟,mdat为电流数据,mdat的占空比代表电流,具体关系如图2所示,其为c797中模拟电流和mdat占空比对应关系,由于占空比和模拟电流量是线性关系,使用mclk采样mdat,计算高低电平比值就可以得到电流,sinc3滤波器就可以实现这种功能。经过sinc3滤波以后电流采样值就直接出来了,可以达到16位电流采样精度。sinc3滤波器一般是由一个fpga来完成,因为cpu计算耗时长实时性不高,这样不能达到很好的效率。sinc3计算部分和mcu之间一般有spi或者fsmc之类的通信接口以方便mcu用来随时读取采样电流数据。

sinc3滤波器所依据计算的时钟是电流采样芯片所输出的10m时钟(mclk),而mcu的总线运行是自己晶振产生的时钟,电流采样芯片所输出的时钟与mcu所产生的时钟完全异步,而电流数据必须频繁的从sinc3滤波器中读回去,这样就导致了有可能sinc3滤波器所计算出的电流值正在更新的时候,mcu同时进行读取过程,而此时读回去的电流值就是错的,并且错误可能是随机的。这种出错概率很低,但是随着时间的增长也会出现,具体现象就是电机会有偶发性的异响。为了规避这个错误,后面要加中值滤波模块,滤掉不正常的电流值,但是这样缺点就是延长了伺服响应时间,同样的参数加了中值滤波后其导致伺服电机响应明显变慢。



技术实现要素:

本发明的目的在于克服现有技术的不足,本发明提供了一种控制电机电流高精度采样的方法及系统和伺服电机,通过sinc3滤波器完成电流值计算后,mcu发出使能信号能正确无误的将电流值采集回去,不需要牺牲更多代价。

为了解决上述技术问题,本发明实施例提供了一种控制电机电流高精度采样的方法,所述方法包括:

基于采样电路获取电机上的采样电流;

采样电路根据所获取的采样电流输出时钟信号和电流数据;

sinc3滤波器根据时钟信号和电流数据计算出电流值;

处理器触发使能信号读取sinc3滤波器所计算出的电流值至跨时钟域同步模块中,并基于总线接口提取跨时钟域同步模块所读取的电流值。

所述处理器触发使能信号读取sinc3滤波器所计算出的电流值至跨时钟域同步模块中包括:

处理器向时序控制模块发送使能信号;

时序控制模块基于使能信号控制跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值,所述电流环周期与所述采样电路所输出时钟信号的周期相同。

所述时序控制模块基于使能信号控制跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值包括:

时序控制模块基于电流环周期进行时间计数,在总时间计数值达到预设时间阈值时,触发使能脉冲至跨时钟域同步模块,促使跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值。

所述促使跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值还包括:

所述跨时钟域同步模块在一个电流环周期内读取一次电流值,所述电流值随着电流环周期进行更新,所述跨时钟域同步模块基于所述电流环周期保存电流值。

所述总时间计数值与使能脉冲取值时间之和大于等于一个电流环周期。

所述方法还包括:

处理器基于所读取的电流值进行电机控制过程。

相应的,本发明实施例还提供了一种控制电机电流高精度采样的系统,所述系统包括:

采样电路,用于获取电机上的采用电流,并根据所述获取的采样电流输出时钟信号和电流数据;

sinc3滤波器,用于根据时钟信号和电流数据计算出电流值;

处理器,用于触发使能信号读取sinc3滤波器所计算出的电流值至跨时钟域同步模块中,并基于总线接口提取跨时钟域同步模块所读取的电流值;

跨时钟域同步模块,用于受控于处理器所触发的使能信号读取sinc3滤波器所计算出的电流值。

所述系统还包括:

时序控制器,用于接收处理器发送的使能信号,并基于使能信号控制跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值,所述电流环周期与所述采样电路所输出时钟信号的周期相同。

所述时序控制模块基于电流环周期进行时间计数,在总时间计数值达到预设时间阈值时,触发使能脉冲至跨时钟域同步模块,促使跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值。

相应的,本发明实施例还提供了一种伺服电机,包括以上所述的系统,以及电机,所述电机受控于处理器基于所读取的电流值进行控制。

在本发明实施例中,针对电流采集突变导致伺服电机上电流增益设置过大可能导致电机出现异响,采用使能信号驱动跨时钟域同步模块读取正确的电流值,有效避免电流突变点的提取,提高电流环相应时间,其整个性能优化较好适应了高精度电流环伺服供,将电流数据正确的传递到cpu,并且并不用过于复杂的控制逻辑,成本低。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是现有技术中的电机电流采样的结构原理图;

图2是现有技术中的c797中模拟电流和mdat占空比对应关系示意图;

图3是本发明实施例中的伺服驱动电机的结构原理示意图;

图4是本发明实施例中的时序控制模块约定的工作时序原理示意图;

图5是本发明实施例中的时序控制模块下的原理示意图;

图6是本发明实施例中的跨时钟域同步模块下的实现时序图;

图7是本发明实施例中的控制电机电流高精度采样的方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明实施例所提供的控制电机电流高精度采样的方法,其基于采样电路获取电机上的采样电流;采样电路根据所获取的采样电流输出时钟信号和电流数据;sinc3滤波器根据时钟信号和电流数据计算出电流值;处理器触发使能信号读取sinc3滤波器所计算出的电流值至跨时钟域同步模块中,并基于总线接口提取跨时钟域同步模块所读取的电流值。

具体的,图3示出了本发明实施例中的伺服驱动电机的结构原理示意图,其包括:

采样电路,用于获取电机上的采用电流,并根据所述获取的采样电流输出时钟信号和电流数据;

sinc3滤波器,用于根据时钟信号和电流数据计算出电流值;

处理器,用于触发使能信号读取sinc3滤波器所计算出的电流值至跨时钟域同步模块中,并基于总线接口提取跨时钟域同步模块所读取的电流值;

跨时钟域同步模块,用于受控于处理器所触发的使能信号读取sinc3滤波器所计算出的电流值;

时序控制器,用于接收处理器发送的使能信号,并基于使能信号控制跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值,所述电流环周期与所述采样电路所输出时钟信号的周期相同;

电机,其受控于处理器基于所读取的电流值进行控制。

具体是实施过程中,时序控制模块基于电流环周期进行时间计数,在总时间计数值达到预设时间阈值时,触发使能脉冲至跨时钟域同步模块,促使跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值。

具体实施过程中,跨时钟域同步模块在一个电流环周期内读取一次电流值,所述电流值随着电流环周期进行更新,所述跨时钟域同步模块基于所述电流环周期保存电流值。该总时间计数值与使能脉冲取值时间之和大于等于一个电流环周期。

时序控制模块主要作用受cpu给出的启动信号进行周期性技术,计数到一定时间点发送使能脉冲至跨时钟域同步模块,跨时钟域同步模块在接收到使能脉冲才会更新电流值,其他时候一律保持上一个电流环周期下的电流值,直至下一次时序控制模块发出使能脉冲,触发跨时钟域同步模块重新采集sinc3滤波器中所计算出的电流值。

图4为时序控制模块约定的工作时序原理示意图,由于一个电流环周期内只需要上一次的电流值做一次计算就可以,所以一个电流环内只更新一次电流值就可以了。每次电流环启动的时候,cpu发送使能信号至时序控制模块,时序控制模块用10m时钟(与mclk相同的时钟)计数,当计数到距离电流环周期t还有5us的时候,发出使能脉冲让跨时钟域模块更新电流数据到cpu的时钟域下,在t结束的时候再从sinc3滤波器中读走电流值。这样在读走电流的时候,电流提前了5us准备好,电流一定是稳定的,不存在同时读写一个寄存器的时刻,完美的避开了亚稳态的产生,从而保证了从sinc3滤波器中所获取的电流读取正确。

图5示出了时序控制模块下的原理示意图,该en是mcu给的使能信号,pulse是输出使能脉冲,给跨时钟域同步模块用,由cpu通过总线给过来控制,clk是时钟mclk,来自于电流采样芯片,num是某个计数值。运行过程如下:

1、en=1?如果是则进入2,否则停留在这一步;

2、计数器根据clk计数,计数值==num?如果等于进入3,否则停留在2;

3、计数器清0,进入4;

4、产生一个高脉冲,回到1。

计数到这个值的时候刚好距离电流环周期结束还有5us。

图6示出了跨时钟域同步模块下的实现时序图,clk1是电流采集芯片发出的时钟,电流是经过sinc3滤波器以后输出的电路,“使能”是时序控制模块发出的脉冲,该脉冲会保证大于一个clk1时钟周期,所以一定会被采到,在使能为高,并且是clk1的上升沿的时候“电流”更新到“更新后电流”这里,后面对接的是mcu的总线,可以随时从这里取走电流值。

具体的,图7示出了本发明实施例中的控制电机电流高精度采样的方法流程图,包括如下步骤:

s701、基于采样电路获取电机上的采样电流;

s702、采样电路根据所获取的采样电流输出时钟信号和电流数据;

s703、sinc3滤波器根据时钟信号和电流数据计算出电流值;

s704、处理器向时序控制模块发送使能信号;

s705、时序控制模块基于使能信号控制跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值;

需要说明的是,这里的电流环周期与采样电路所输出时钟信号的周期相同。

需要说明的是,这里的时序控制模块基于电流环周期进行时间计数,在总时间计数值达到预设时间阈值时,触发使能脉冲至跨时钟域同步模块,促使跨时钟域同步模块在电流环周期结束时读取sinc3滤波器所计算出的电流值。跨时钟域同步模块在一个电流环周期内读取一次电流值,电流值随着电流环周期进行更新,跨时钟域同步模块基于所述电流环周期保存电流值。

s706、处理器基于总线接口提取跨时钟域同步模块所读取的电流值。

需要说明的是,处理器基于所读取的电流值进行电机控制过程。

本发明实施例中的采样电路可以使用c797芯片,但电流采集芯片多种多样,电机电流采样用的芯片都可以输出mclk和mdat用来做sinc3滤波器的电流值计算过程,sinc3滤波器滤波完成后的输出就是电流值,并且mclk都是芯片主动供给。

本发明实施例针对电流采集突变导致伺服电机上电流增益设置过大可能导致电机出现异响,采用使能信号驱动跨时钟域同步模块读取正确的电流值,有效避免电流突变点的提取,提高电流环相应时间,其整个性能优化较好适应了高精度电流环伺服供,将电流数据正确的传递到cpu,不需要针对cpu中设置中值滤波就可以实现,其外部搭建起来的控制逻辑比较简单,成本低等。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。

另外,以上对本发明实施例所提供的控制电机电流高精度采样的方法及系统和伺服电机进行了详细介绍,本文中应采用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1