原创 MCX314四轴联动步进电机驱动芯片应用笔记-速度、位置控制与插补

2014-3-24 09:09 4337 22 22 分类: 工业电子 文集: 步进电机驱动笔记
首先,看看MCX314是一颗什么样的芯片。

主要功能描述

MCX314是一个用于4轴运动控制的芯片,控制步进电机驱动器或者脉冲型的伺服电机驱动,带位置,速度和插补功能。
用于运动控制卡中。它的功能都是通过寄存器来控制的,包括命令寄存器,数据寄存器,状态寄存器和配置寄存器。
从大体上来看,整个芯片的框架包括了X,Y,Z,U四轴的控制模块,包括了直线,圆形,和位模式插补三个模块,都由插补控制模块来控制,另外由中断信号的发生器,以及指令的处理模块来管理。
功能包括:
  • 4轴控制:允许3轴联动,包括恒速,线性和S曲线驱动。
  • 脉冲输出:单脉冲和双脉冲两种模式
  • 恒速控制:就是不管切换其他的插补,速度不变。
  • 速度控制:生成1HZ~4MHZ的任何脉冲频率。
  • 位置控制:理论上的一个位置值和一个实际采样回来的位置值。
  • 比较寄存器和复位:比较值输出,假如偏差太多,可选复位。
  • 三大插补:直线插补,圆形插补,位模式插补。
  • 连续插补:相当于可以随意切换
  • 单步插补:相当于输出一个脉冲
  • 中断信号:有很多种中断,比如一次运动的开始和结束,比较寄存器触发等。
  • 由外部信号驱动:减轻CPU负担
  • 输入输出信号:4个输入信号,8个输出信号,输入信号实现刹车用的。8个输出位通用的输出点。
  • 伺服电机反馈信号:输入连接管脚,包括伺服报警,到位信号等
  • 实时监控:寄存器可以读出,实现监控
  • 8位和16位数据总线:连接CPU
MCX314的工作方式
与MCX314的通信,主要是通过8个可读和可写的寄存器来实现的,其中包括:
  • 命令寄存器WR0:设定诸多命令,有写还必须先写入WR6和WR7以后才行。
  • 模式寄存器有三个:
    • WR1:中断时能,输入时能,减速状态和比较结果寄存器设置。
    • WR2:设定限位开关输入,反馈类型以及伺服的反馈信号。
    • WR3:设定手动减速,单独减速,S减速,外部操作模式和通用输出的设定。
  • 输出寄存器:WR4,用于设置各轴的通用输出信号。
  • 插补模式寄存器:WR5
  • 数据寄存器WR6和WR7:写入WR0之前,WR6存放低字,WR7存放高字。
可读的也包括8个:RR0~RR7
  • RR0:各轴驱动与错误状态
  • RR1:各轴的运动状态和限位状态
  • RR2:各轴出错误的原因
  • RR3:中断的来源
  • RR4和RR5:通用输入寄存器
  • RR6和RR7:读取命令的高字和低字
芯片管脚定义
芯片管脚一共144个,看这样数量的引脚如何实现上面的功能。
  • CLK:输入时钟,内部默认位16M,可以修改
  • D0~D15:16位或者8位的数据总线。
  • A0~A3:有了数据总线,还得知道数据发到那个寄存器
  • CSN:片选
  • WRN:写时置为低
  • RDN:读信号
  • RESETN:复位
  • EXPLSN:外部脉冲输入
  • H16L8:16位和8位选择
  • TESTN:测试用
  • BUSYN:忙
  • INTN:中断发给MCU
  • SCLK:系统时钟,为CLK的一半。
  • XYZU轴脉冲输出和方向输出
  • XYZU轴反馈信号输入,一共AB两组
  • 各轴的运动状态,停止时为高,运行时为低
  • 各轴都有通用用途的8位输出位,共32位
  • 各轴,接受伺服驱动器输入状态的反馈
  • 各轴,伺服警告的反馈引脚
  • 各轴,超量程,各轴将减速到停止
  • 各轴,4个引脚,立即停止的各轴,计数器的锁存
  • 各轴外部驱动信号时能,正负信号
  • EMGN:紧急停止所有输出信号,为输入。
  • 电源和地:13个地引脚和7个VDD引脚。
功能和相关技术参数
脉冲输出的模式有两种,一种是定长输出,一种是连续输出,下面讲述
  • 定长脉冲输出驱动
    这个相当于一个梯形,当然需要知道一些重要的参数,范围R,加减速AD,驱动速度,初始适度,和输出脉冲数。
    在驱动的时候,可以随时更换脉冲数,包括增减脉冲数。
20140324090504540.jpg
    减速点在频繁更改脉冲数和插补时需要手动设置,加速点和减数点可以改变,MCX314会自动设置在哪里开始减速。
  • 连续脉冲驱动输出
    这个相当于一直已某个频率输出脉冲,直到有中断信号或者停止命令。这个主要用于寻找机械原点,示教和速度控制。四个通用输入也可以用来设置中断信号。

速度曲线
速度曲线一共有三种:
  • 恒速
    当驱动速度低于初始化速度的时候,直接开始恒速运行,这个用于有传感器反馈的零点,随时开始,到零点有传感器反馈立即结束。
  • 线性加减速
    就是上面的梯形的例子,一般设置加速后,减速自动计算脉冲个数和减速的位置,如果要单独设置,可以设置WR3的D1位,这个时候,需要手动减速。
  • S曲线方式加减速
    简单来说,加速度为两个梯形,上身的过程中,开始是加速度增加,增加到一定值后开始保持加速度,然后加速度减小到0,减速的时候过程正好相反。见下图:
20140324090533130.jpg
    这种情况下,显然有如下的参数要设置,范围,加速度率,加速度和减速度的最大值,也就是什么时候开始保持,然后减小,初始速度,驱动速度,输出脉冲数。
    这里出现一种特殊情况,如果还没有过加速度增加的这个过程,就需要减速呢,这样,就会出现一个三角波,这个肯定是不行的,因为我们的速度曲线必须平滑,这样,当S曲线加速的脉冲比总脉冲的1/12大的话,将停止加速,开始减速,这个时候还是一个平滑的波形,如下图:
20140324090624696.jpg
当然,手动立即减速时,为了速度曲线的平滑,也会是先加速度减小到0,然后再开始减速。
    S加速曲线也有一些限制,包括,在定长运动中,速度不能修改,手动强制修改会导致工作不正常,插补运动的时候也不能工作,如果减速到初始速度之前,已经没有脉冲了,或者还有比较多的脉冲没有用完,可以修改脉冲数或者减速参数来避免。
    另外还有一个完全S和一个部分S的曲线,完全S就是加速度加到一定值开始减小,不保持。这样,加速度增加和减小是一样的时间,可以根据这个来计算所需要的加速度,并进行设置。
  •    脉宽和速度精度 
    占空比,本来应该是50%的占空比,但是在加速或者减速的时候,占空比会进行变化,只有在匀速区域占空比才不会变化。
    但是驱动速度会麻烦一点,因为这个速度是基于SCLK的,也就是说,必须设置为整数倍,否则数个数的时候,会数不准确。实际上,就算不是整数倍,MCX314自己也会进行调整,并且精度控制在125ns,这样实际是不会影响到精度的,因为机械的惯性会吸收这样的误差。

位置管理
每个轴都有2个32位的往返计数器,两个寄存器和当前位置进行比较。
逻辑位置寄存器:既然是位置,就会有一个正向一个反向,并且有一个边界,这个正向和方向寄存器就是逻辑位置寄存器,边界则位比较寄存器。如果逻辑计数器大于比较寄存器,将会减速至停止。

插补
    圆形插补只限于两轴,直线插补和位模式插补可以拓展到3轴,插补的时候,所有的计算都是基于AX1,所以必须在插补之前将AX1赋给具体的轴,并且设置好所有的其他参数。
    直线插补种,如果遇到了硬件限位或者软件限位,则会立刻停止插补,限位传感器也会导致MCX314停止插补。而其他两种模式不会中断插补。

  • 直线插补
    长轴和短轴,我们将移动多一点的轴称为长轴,另外的叫做短轴。以2轴直线插补为例,只要设置好当前位置,则两个轴需要做怎么样的运动,以达到一个标准的平面斜线,我们就不需要管了,MCX314自己来分配。比如平面斜线,设置方法如下:
WR5=0004H;将AX1设置位X轴,AX2设置位Y轴。
WR6=1200H;设置范围
WR7=007AH;
WR0=0100H;
……
    然后设置寄存器,分别设置初始速度,驱动速度,X轴终点,Y轴终点,写入2轴直线插补命令就OK了。
3轴插补跟2轴类似,走的是立体面的斜线,设置坐标位3个而已。如下图:
20140324090718322.jpg
  • 圆弧插补
    圆形插补分为顺时针和逆时钟,并且长轴不是固定的,下面可以看出来,0,3,4,7时AX1位长轴,其他位置AX2为长轴。
20140324090736661.jpg
    圆形插补会有一个位置检查,因为圆形插补的时候,会有一个最小的有效位的误差,显然,短轴运动距离更小,落在短轴上比较合适,所以位置检查就会根据这个,在短轴位置停止。比如要进行一个顺时针的圆弧插补,则需要:
定义长短轴
范围
2轴的恒定线速范围
初始速度
驱动速度
圆心X,和Y
终点
顺时针,圆弧插补命令
这里可以看出来,一个是进行恒速,一个进行插补。
  • 位模式插补
    位模式插补的脉冲是有MCU来控制的,可以画出任何的图形,比如要画出下面的图形,输出的方块数据如下:
20140324090759373.jpg
20140324090816820.jpg
可以看出,XPP和XPM分别表示正向插补和反向插补,显然只有可能一个有数据,另外一个肯定为0,一旦开始插补,则从D0开始输出脉冲。
另外还有一个堆栈计数器SC,这个是用于数据写入到哪个轴的缓冲中的。这样,可以按照顺序来发数据,写入SC=3当然是无效的,因为只有三轴嘛,当SC从2变化到1则开始请求MCU发数据,不至于当SC=0的时候,数据还没有刷新。
这里显然还有一个速度的限制,也就是MCU刷新数据的速度。另外MCX314也有一个速度限制。

文章评论0条评论)

登录后参与讨论
我要评论
0
22
关闭 站长推荐上一条 /2 下一条