回零及编码器

2024-08-26 04:12
文章标签 编码器 回零及

本文主要是介绍回零及编码器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

回零

 

回原点的原理基本上常见的有以下几种。
一、伺服电机寻找原点时,当碰到原点开关时,马上减速停止,以此点为原点。这种回原点方法无论是选择机械式的接近开关,还是光感应开关,回原的精度都不高,受温度、噪音、粉尘、电源波动等等的影响,信号的反应时间会每次有差别,再加上从回原点的高速突然减速停止过程,可以百分百地说,就算排除机械原因,每次回的原点差别在丝级以上。
二、回原点时直接寻找编码器的Z相信号,当有Z相信号时,马上减速停止。这种回原方法一般只应用在旋转轴,且回原速度不高,精度也不高。
三、应用在数控机床上比较精准的方式:电机先以第一段高速去找原点开关,有原点开关信号时,电机马上以第二段速度寻找电机的Z相信号,第一个Z相信号一定是在原点档块上(所以你可以注意到,其实高档的数控机床及中心机的原点档块都是机械式而不会是感应式的,且其长度一定大于电机一圈转换为直线距离的长度)。找到第一个Z相信号后,此时有两种方试,一种是档块前回原点,一种是档块后回原点(档块前回原点较安全,欧系多用,档块后回原点工作行程会较长,日系多用)。以档块后回原为例,找到档块上第一个Z相信号后,电机会继续往同一方向转动寻找脱离档块后的第一个Z相信号。一般这就算真正原点,但因为有时会出现此点正好在原点档块动作的中间状态,易发生误动作,且再加上其它工艺需求,可再设定一偏移量;此时,这点才是真正的机械原点。此种回原方法是最精准的,且重复回原精度高。

严格的说 Z相是同步信号,编码器旋转一周输出一或N个脉冲,
在数控机床中,回零操作也叫做“原点复归” 或“ZRN”  使用原点开关实线原点复归过程为:
以设定的原点复归速度快速趋进原点开关,原点开关上升沿,转为以接近速度继续运动,原点开关出现下降沿后 出现第一个z脉冲时从事 电机立即停止完成定位。

一、回零控制原理:

  1、回零信号

 回零信号可采用限位传感器、home原点传感器、编码器或光栅尺Z(C)相信号。

  • 限位传感器(Limit±输入):普通IO方式
  • home传感器(Home输入):home捕获方式
  • index信号(轴通道编码器Z相信号):index捕获方式()

  限位信号采用普通IO触发方式,Home及Index信号使用FPGA捕获方式。

  2、回零方式

  通过限位、Home、Index三种信号组合共计7种回零方式:

  • 限位回零
    需要设置回零方向(触发正限位还是负限位)、反向脱离步长(轴第一次触发限位后反向离开距离),轴在触发正(负)限位后先反向移动反向脱离步长的距离再以低速回到限位。
  • Home回零
    需要设置回零方向(从轴的哪边寻找Home信号),轴在捕获到Home信号时会立即捕获当前编码器位置并停止,重新将捕获位置设为目标位置并低速移动到目标位置(因为速度较高寻找Home时,捕获到Home位置后可能电机并不能立即停下,所以会有这样一个过程,即再以低速返回捕获位置,若回零设置速度低,该过程不明显)。缺点:回零初始方向不太好设定,轴停止在Home信号左边和右边不好判断。
  • Index回零:在电机单圈内寻找编码器Index信号,轴在捕获到Index信号时会立即捕获当前编码器位置并停止,重新将捕获位置设为目标位置并低速移动到目标位置(因为速度较高寻找Index时,捕获到Index位置后可能电机并不能立即停下,所以会有这样一个过程,即再以低速返回捕获位置,若回零设置速度低,该过程不明显)。
  • 限位+Home回零: 轴先寻找限位再寻找Home信号。(最常见方式。)
  • 限位+Index回零: 轴先寻找限位再寻找Index信号。(直线电机常见回零方式。)
  • Home+Index回零:轴先寻找Home再寻找Index信号。
  • 限位+Home+Index回零:轴先寻找限位再寻找Home再寻找Index信号。
     

  二、回零程序

  1、回零参数设置与启动

 //举例:线程内单轴回零*/private void btn_homeStart_Click(object sender, EventArgs e){Thread threadHome;        //回零线程short cardNo = 0;        //卡号为0short axis = 1;         //回零轴mc.THomePrm tHomePrm = new mc.THomePrm();        //回零参数threadHome = new Thread(() =>{short sRtn = 0;mc.THomeStatus pHomeStatus;//使用home回零或home+index回零,若轴停止在home点则需要先移开home点在开启回零。由实际情况确认。sRtn = gts.mc.GT_ClrSts(cardNo, axis, axisNum);//回零前先清除状态sRtn = gts.mc.GT_ZeroPos(cardNo, axis, 1);//清除规划和实际位置sRtn = gts.mc.GT_GetHomePrm(cardNo, axis, out tHomePrm);//读取回零参数tHomePrm.mode = 11;                //限位加home回零方式 宏定义11tHomePrm.searchHomeDistance = 0;    //搜索Home距离,0表示最大距离搜索tHomePrm.searchIndexDistance = 0;   //搜索index距离,0表示最大距离搜索tHomePrm.moveDir = 1;       //回零方向 1为正 -1为负tHomePrm.indexDir = 1;           //搜索index方向 1为正 -1为负tHomePrm.velHigh = 20;                        //寻找限位速度tHomePrm.velLow = 5;                         //寻找home、index速度tHomePrm.smoothTime = 10;                         //平滑时间,运动加减速平滑tHomePrm.acc = 1;                            //加速度tHomePrm.dec = 1;                                //减速度tHomePrm.escapeStep = 10000;        //限位回零后方式时第一次找到限位反向移动距离tHomePrm.homeOffset = 0;            //原点偏移 = 0sRtn = gts.mc.GT_GoHome(cardNo, axis, ref tHomePrm);//启动SmartHome回原点do{sRtn = mc.GT_GetHomeStatus(cardNo, axis, out pHomeStatus);//获取回原点状态}while (pHomeStatus.run == 1 & pHomeStatus.stage == 100); // 等待搜索原点停止run和stage来判断是否回零完成。Thread.Sleep(1000);     //等待电机完全停止,时间由电机调试效果确定也可采用到位判断sRtn = gts.mc.GT_ZeroPos(cardNo, axis, 1);  //回零完成手动清零设为原点}){ IsBackground = true };threadHome.Start();}

2、回零状态检测判断

private void timer1_Tick(object sender, EventArgs e)
{mc.THomeStatus tHomeStatus = new mc.THomeStatus();sRtn = mc.GT_GetHomeStatus(cardNo, axis, out tHomeStatus);homeRunning = tHomeStatus.run;//回零状态:0已停止运动 1正在运动homeStage = tHomeStatus.stage;//0-100 对应宏定义,请查阅固高手册可以查询回零过程,stage = 100表示回零成功。homeError = tHomeStatus.error;//回零错误代码请查阅固高手册可以查询回零错误,0表示回零过程无错误
}

三、注意事项
  1、回零前确认事项

  • 先通过点位或JOG运动确认规划位置与实际位置是否一致且方向相同,若是使用步进电机请将.cfg配置文件中的脉冲计数源选择为计数器。
  • 确认编码器或光栅尺带Z相信号才可以使用Index回零方式

  2、回零注意

  • 限位加Index回零方式时回零方向与搜索Index方向应相反。(触发限位后不可再往该限位方向运动)。
  • 回零前先调用 GT_ZeroPos 把规划位置和实际位置清零,防止规划位置和实际位置不一致造成回零不准确。
  • 回零前,先确定规划位置和实际位置是否同向,即 GT_GetPrfPos 和
    GT_GetEncPos(如果使用了当量变化,请参照相应指令)获取的位置值同正或同负。
  • 回零前需要用户判断电机当前位置是否处于原点触发位置或限位触发位置,如果处于原点触发位置,应该先把电机移开远离原点一段距离后再启动回零。
  • 回零时,要查看回零状态,如果发现电机不动了,并已经运动到设定的位置,但是回零状态没有显示回零完成,需要检查一下零点搜索范围是否合理,原点开关是否异常。
  • 使用 SmartHome 回零完成后不会自动清零位置,需要用户调用 GT_ZeroPos 把当前位置清零来确定零点。

1,限位回原点(用于装有限位开关而未装有零点开关,精度要求不高的场景)

a,调用回原点指令

b,电机以较高速度运动到限位,

c,碰到限位后反向运动,

d,脱离限位后再以较低速度往限位方向动,

e,再次碰到限位时停止运动,所听位置即为我们要找的原点。

此种方式用的最多,很多模组类型的运控系统都是x,y,z轴,且都是只装上下限位开关而不装零点开关的。

2,限位加Home回原点

a,调用回原点指令

b,电机以较高速度运动到限位,

c,碰到限位后反向运动,开启高速硬件捕获,

d,在设定范围内搜索Home位置

e,触发Home开关,电机以较低速度运动到Home处,此即原点处。(这里触发Home开关后还是会运动一定位置,这个距离很小,我们感觉不到,但实际是运动了一段距离的)

第二种回零方式使用于既装了限位开关,又方便安装Home开关且精度要求较高的情形。

例如z轴的上下限位都安装了,但是回零时不希望轴停在限位开关处,可用这种方式进行回零操作。

3,Home回原点

a,调用回原点指令

b,电机以较高速度运动并开启告诉硬件捕获,

c,在设搜索范围内搜索home,

d,触发home开关,电机以较低速度运动到捕获的位置,此即我们要找的零点位置。

d段这里会返回去可能是因为b段这里开始是高速运动的,捕获到Home开关后可能速度过大来不及刹车,所以又要以较低速度返回去找零点,暂时这么理解吧!!!

第三种回零方式主要在转盘的运动控制上应用,比如一个水平圆盘的运动可以在360度范围内走动,圆盘上又方便安装Home开关,就用这种回零方式。

(4)index回原点

a,调用回原点指令

b,电以较高速度运动并开启高速硬件捕获,

c,捕获到index信号,

d,电机以较低速度运动到index处停止,此即我们需要找的原点位置。

第四种回原点方式主要应用在转盘的运动控制,并且不方便安装原点和限位的情形下,这种回零方式要求在硬件上把z相信号接上,这样才能捕获到index信号,不然控制器会一直转动找不到index信号。
 

编码器

编码器是将物理信号转换为电信号的传感器设备,广泛应用于机器人、数控机床等领域。根据刻盘方式、结构和工作原理、应用场景和读取方式等分类,编码器有多种类型。选型参数包括测量精度、分辨率、信号输出类型、速度和加速度、电源电压和工作温度等。增量光电编码器通过码盘转动产生光线的明暗变化,转换成电脉冲信号进行计数,从而测量角度。磁编码器与光电编码器类似,只是将光检测传感器更换为霍尔传感器。

简介

编码器(encoder)是将物理信号(如旋转角度、直线位移等)转换为电信号(如脉冲、编码等)的传感器设备。编码器广泛应用于机器人、数控机床和电机控制等方面。

主要分类方式

编码器的刻盘方式分类

a. 增量型编码器:每转过单位的角度就发出一个脉冲信号,用于测量角位移。

b. 绝对型编码器:每个位置都有一个唯一的编码,用于测量绝对位置。

结构和工作原理分类

a. 光电编码器:利用光电原理,通过光电元件将刻盘上的编码转换为电信号。

b. 磁电编码器:利用磁电原理,通过磁敏元件将磁编码转换为电信号。

c. 电容编码器:利用电容原理,通过电容元件将编码转换为电信号。

应用场景分类

a. 直线编码器:用于测量直线位移,常用于机床、机器人等设备。

b. 旋转编码器:也称为轴编码器,用于测量旋转角度和速度,是将旋转位置或旋转量转换成模拟或数字的机电设备。常用于电机、机器人等设备。

读取方式分类

a. 接触式编码器:通过电刷与码盘之间的接触来产生电信号。

b. 非接触式编码器:主要由编码器本体、码盘(或磁环、光栅等)和检测元件(如光电元件、霍尔元件等)组成。编码器本体和码盘之间保持一定的间隙,无需直接接触。具有寿命长、无磨损、低维护成本等优点。

常用编码器

增量型编码器 Z相

将位移信号转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。

每转过单位的角度就发出一个脉冲信号(也有发正余弦信号,然后对其进行细分,斩波出频率更高的脉冲),通常为A相、B相、Z相输出。

A相、B相为相互延迟1/4周期的脉冲输出,根据延迟关系可以区别正反转,而且通过取A相、B相的上升和下降沿可以进行2或4倍频;Z相为单圈脉冲,即每圈发出一个脉冲

一般意义上的增量编码器内部无存储器件,故不具有断电数据保持功能,数控机床必须通过“回参考点”操作来确定计数基准与进行实际位置“清零”。

绝对值型编码器

绝对值编码器的输出可直接反映360°范围内的绝对角度,就是对应一圈,每个基准的角度发出一个唯一与该角度对应二进制的数值,通过外部记圈器件可以进行多个位置的记录和测量。

绝对位置可通过输出信号的幅值或光栅的物理编码刻度鉴别,前者称旋转变压器(Rotating Transformer);后者称绝对值编码器(Absolute-value Encoder)。

三、编码器选型参数和基本原理

主要选型参数

在使用增量编码器时,需注意一下几点:

测量精度和分辨率

测量精度和分辨率是增量编码器选择的关键参数。精度指的是测量结果与理论值之间的误差,而分辨率则是指编码器能够检测到的最小位置变化。

信号输出类型

量编码器信号输出类型:模拟信号和数字信号。

模拟信号:通常表现为正余弦波(Sin/Cos Output),这是一种连续的电压或电流信号,能够反映轴位置或旋转角度的连续变化。

数字信号:采用方波输出,包括单通道方波输出、差分输出(如A相和B相)和ABZ相输出等类型。

此外,增量编码器的信号输出电平标准也是多样的,常见的有TTL、HTL、PNP和NPN等。TTL和HTL是常见的电平标准,其中TTL为长线差分驱动,而HTL也称为推拉式或推挽式输出,适用于工业控制系统。PNP和NPN则是集电极开路输出的两种类型,用于不同的电路连接需求。

速度和加速度

编码器能承受的最大旋转速度和加速度。根据实际应用中的速度和加速度需求选择合适的编码器。

其他

电源电压(Supply Voltage)

编码器所需的电源电压通常为直流电压,如5V、12V、24V等。

工作温度(Operating Temperature)

根据应用环境的温度条件选择合适的工作温度范围。

基本原理和换向判定

本文以光电编码器简单介绍增量编码器基本原理。

增量光电编码器基本原理

在码盘的边缘上分布有相等角度的缝隙(分为透光和不透光部分),在开缝码盘两边分别安装光源及光敏元件。当码盘随转子一起转动时,每转过一个缝隙就产生一次光线的明暗变化,再经整形放大,可以得到一定幅值和功率的电脉冲输出信号,脉冲数就等于转过的缝隙数。将该脉冲信号送到计数器中去进行计数,从测得的数码数就能知道码盘转过的角度。

增量光电编码器换向判定

为了判断旋转方向 ,可以采用两套光电转换装置。令它们在空间的相对位置有一定的关系,从而保证它们产生的信号在相位上相差1/4周期,根据AB相变化关系判定正反转,如下图:

磁编码器与光电编码器类似,只是把光检测传感器更换成了霍尔传感器,通光码盘变成了磁码盘。

这篇关于回零及编码器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107511

相关文章

稀疏自编码器tensorflow

自编码器是一种无监督机器学习算法,通过计算自编码的输出与原输入的误差,不断调节自编码器的参数,最终训练出模型。自编码器可以用于压缩输入信息,提取有用的输入特征。如,[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]四比特信息可以压缩成两位,[0,0],[1,0],[1,1],[0,1]。此时,自编码器的中间层的神经元个数为2。但是,有时中间隐藏层的神经元

TMC5271/TMC5272 支持使用编码器进行闭环位置控制

ADI-Trinamic推出两款新芯片产品,TMC5272和TMC5271。TMC5272是一颗2.1V 至 20V,2 x 0.8ARMS双轴步进驱动芯片。而且封装好小,为36 WLCSP (2.97mm x 3.13mm)封装。它集成Stealthchop、Spreadcycle两种斩波模式;还集成加减速算法,可通过配置寄存器方式控制电机转速、方向、和位移。 应用场合:VR,注射泵输液泵,安防

【数据应用案例】使用时空自编码器检测视频异常事件

案例来源:@阿里巴巴机器智能 案例地址:https://mp.weixin.qq.com/s/rUuaaBI3McesED3VVVbsBw   1. 目标:识别视频中的异常事件(如车祸)   2. 难点:正例数据量远远小于负例,同时正例之间的差异性很大,因此难以采用有监督方法进行训练。传统解决方法是使用无监督方法为正常视频建模,然后将异常值视为异常事件。   3. 解决思路:

【STM32】通用定时器TIM(编码器接口)

本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 目录 前言   编码器接口简介 正交编码器  编码器接口配置 初始化IO口 输入捕获配置 编码器接口初始化 编码器接口测速代码 Encoder.h Encoder.c main.c 前言   建议先阅读这篇博客,理解定时器输入捕获的配置和旋转编码器的使用 【STM32】通用定时器TIM(输

x264 编码器 AArch64汇编系列:quant 量化相关汇编函数

quant x264_quant_init函数中初始化时指向不同的具体实现: 以4x4块量化为例 c 语言版本实现 4x4 块量化:quant_4x4 #define QUANT_ONE( coef, mf, f ) \

07:【江科大stm32】:编码器通过定时器测速

编码器通过定时器测速 编码器的转动方向不同,则输出波形的相位也不同。如下图所示: 编码器标准库的编程接口: ①Encoder.c文件的代码如下: #include "stm32f10x.h" // Device header//使用PA6(TIM3_CH1)和PA7(TIM3_CH2)进行编码器的输入void Encoder_Init(

NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】

《原始论文:Sequence to Sequence Learning with Neural Networks》 Seq2Seq模型是将一个序列信号,通过“编码&解码”生成一个新的序列信号,通常用于机器翻译、语音识别、自动对话等任务。 Seq2Seq(多层LSTM-多层LSTM)+Attention架构是Transformer提出之前最好的序列生成模型。 我们之前遇到的较为熟悉的序列问题,

深度学习-生成模型:Generation(Tranform Vector To Object with RNN)【PixelRNN、VAE(变分自编码器)、GAN(生成对抗网络)】

深度学习-生成模型:Generation(Tranform Vector To Object with RNN)【PixelRNN、VAE(变分自编码器)、GAN(生成对抗网络)】 一、Generator的分类二、Native Generator (AutoEncoder's Decoder)三、PixelRNN1、生成句子序列2、生成图片3、生成音频:WaveNet4、生成视频:Video

x264 编码器 AArch64汇编系列:DCT 变换相关汇编函数

DCT变换 在x264_dct_init函数中初始化具体的 dct 实现函数。 4x4 块DCT 变换 c 语言版本实现 4x4DCT 变换函数:sub4x4_dct。 pixel_sub_wxh 函数: 这个函数的作用是从两个像素块中减去一个像素块,得到差分值,这些差分值将用于DCT变换。参数: diff:指向存储结果差分值的数组的指针。i_size:差分值数组的宽度和高度,通常

x264 编码器 AArch64汇编系列:zigzag 扫描相关汇编函数

zigzag 在x264_zigzag_init函数中初始化具体的 zigzag 实现函数: 以scan_4x4为例 c 语言实现 4x4 变换块扫描:zigzag_scan_4x4_frame。 #define ZIGZAG4_FRAME\ZIGDC( 0,