STM32编码器在光栅尺测速场合的实际应用

合集下载

光栅尺工作原理的应用

光栅尺工作原理的应用

光栅尺工作原理的应用1. 引言光栅尺是一种精密测量仪器,主要用于测量物体的长度、位置和运动速度等参数。

它通过光栅原理来实现测量,具有高精度、高稳定性和高度自动化等特点。

本文将介绍光栅尺的工作原理及其在实际应用中的一些典型案例。

2. 光栅尺的工作原理光栅尺利用光的干涉原理来进行测量。

它由一个光源、一个光栅和一个光电探测器组成。

光源发出的光经过光栅后形成干涉条纹,然后被光电探测器接收并转换为电信号。

根据干涉条纹的特征,我们可以计算出被测量物体的长度或位置。

光栅是光栅尺中最关键的部件。

它由一系列等距且平行的透明区域和不透明区域组成。

当光经过光栅时,透明区域和不透明区域会导致光程差,从而形成干涉条纹。

这些干涉条纹的间距和形状与光栅的结构参数以及光源的波长有关,因此可以通过测量干涉条纹的特征来确定被测量物体的长度或位置。

3. 光栅尺的应用案例3.1 机床加工精度检测光栅尺可以用于机床加工精度的检测。

通过在机床的移动部件上安装光栅尺,我们可以实时监测移动部件的位置,并与设定的理论位置进行对比。

通过比较实际位置与理论位置的差异,我们可以判断机床是否存在精度问题,并进行相应的调整和修复。

3.2 位移测量光栅尺可以用于位移测量。

通过将光栅尺安装在被测量物体上,我们可以实时监测物体的位移情况。

这对于一些需要精确控制位移的应用场景非常重要,例如机械臂的运动控制、液晶显示屏的调整等。

3.3 速度测量光栅尺还可以用于测量物体的速度。

通过将光栅尺安装在运动物体上,我们可以测量物体的运动速度。

这对于一些需要精确控制速度的应用场景非常重要,例如自动化生产线中的物料输送、车辆的行驶速度控制等。

3.4 表面质量检测光栅尺可以用于表面质量的检测。

通过测量物体表面的形状和轮廓,我们可以评估物体的加工质量。

这对于一些要求高精度加工的行业非常重要,例如航空航天、半导体制造等。

4. 结论光栅尺作为一种精密测量仪器,在工业生产和科学研究中有着广泛的应用。

光栅尺和编码器的区别

光栅尺和编码器的区别

光栅尺和编码器的区别下面将详细探讨光栅尺和编码器的区别。

首先,我们将介绍两者的基本概念,然后通过比较它们的特性和应用来展示它们的差异。

一、基本概念1、光栅尺:光栅尺是一种利用光栅和光电检测技术进行测量或位置反馈的装置。

其工作原理是利用一对相对移动的光栅,通过测量光栅的相对位移来计算物体的位置或位移。

2、编码器:编码器是一种用于测量旋转角度或位置的装置。

它通过读取旋转编码器的脉冲数来测量旋转角度或位置。

编码器可以用于许多不同的应用,例如电机控制、机器人定位等。

二、特性比较1、分辨率:光栅尺的分辨率通常高于编码器。

由于光栅尺采用高精度光栅,其分辨率可以非常高,达到微米甚至纳米级别。

而编码器的分辨率通常较低,一般只有几十到几百个脉冲。

2、线性度:光栅尺的线性度通常优于编码器。

由于光栅尺采用一对相对移动的光栅,其测量结果不受机械误差的影响,因此其线性度很高。

而编码器的线性度受限于编码器的设计以及使用环境的影响,可能会有一些误差。

3、环境适应性:光栅尺对环境的变化较为敏感,例如温度、湿度和机械振动等,这些因素都可能影响光栅尺的测量精度。

而编码器对环境的变化不太敏感,因此更适合在恶劣环境下使用。

4、成本:一般来说,光栅尺的成本高于编码器。

光栅尺需要精密加工和制造,而且需要高质量的光电检测器。

编码器虽然也需要一定程度的加工和制造,但其结构相对简单,成本较低。

三、应用比较1、测量与反馈控制:在测量和反馈控制方面,光栅尺是一种常见的位置传感器。

它被广泛应用于各种高精度测量和反馈控制应用中,例如机床、运动控制系统等。

编码器则通常用于电机控制和机器人定位等应用中,通过读取编码器的脉冲数来控制电机的旋转角度或位置。

2、速度和位置控制:在速度和位置控制方面,编码器和光栅尺都可以使用。

但是,由于编码器的线性度和精度较低,它通常被用于低精度应用中,例如速度控制或简单位置控制。

而光栅尺则更适合高精度应用,例如高速运动控制系统或精密加工设备。

STM32编码器在光栅尺测速场合的实际应用

STM32编码器在光栅尺测速场合的实际应用

STM32编码器在光栅尺测速场合的实际应用STM32103F系列微控制器的定时器有一种特有工作模式——编码器接口模式,此模式可以用来反馈马达的实时转子位置,测量马达的转速,也可以反馈光栅尺的实时位置,测量光栅头的移动速度,在工业控制场合,尤其是需要精确定位的压机、机床等使用场合,有着非常实用的价值。

现以STM32103F微控制器与海德汉(HEIDENHAIN)光栅尺LS1378C为例,详细介绍定时器的编码器工作原理,以及双定时器配合测速度的编程算法。

标签:STM32编码器;光栅尺;测速STM32103F系列是ST公司采用高性能的32位ARM Cortex-M3内核,主要面向工业控制领域推出的微控制器芯片。

通用定时器有以下几种工作模式:计数器模式、输入捕获模式、输出比较模式、PWM模式、单脉冲模式、编码器接口模式。

其中,编码器接口模式是一种有别于其他通用ARM控制器以及DSP控制器的特有模式,此模式可以用来反馈马达的实时转子位置,测量马达的转速,也可以反馈光栅尺的实时位置,测量光栅头的移动速度,在工业控制场合,尤其是需要精确定位的压机、机床等使用场合,有着非常实用的价值。

光栅尺位移传感器(简称光栅尺),是利用光栅的光学原理工作的测量反馈装置。

光栅尺位移传感器经常应用于机床与现在加工中心以及测量仪器等方面,可用作直线位移或者角位移的检测。

其测量输出的信号为数字脉冲,具有检测范围大,检测精度高,响应速度快的特点。

例如,在数控机床中常用于对刀具和工件的坐标进行检测,来观察和跟踪走刀误差,以起到一个补偿刀具的运动误差的作用。

在这里需要说明的是,光栅尺只是一个反馈装置,它可以将位移量和位移方向通过脉冲信号输出的方式反馈出来,但它不能直接显示出来,它还需要一个显示装置,比如通过CPLD来识别,或者本文中的微控制器STM32103F来识别。

光栅尺的输出信号为相位角相差90°的两路方波信号,如果A路超前B路90°,表示光栅尺在正向移动,反之,A路落后B路90°,表示反向移动。

光栅尺的工作原理与应用

光栅尺的工作原理与应用

光栅尺的工作原理与应用1. 引言光栅尺是一种精密测量装置,广泛应用于工业生产和科学研究领域。

它利用光栅的原理实现对物体长度、位移等参数的测量,具有高精度和稳定性的特点。

本文将介绍光栅尺的工作原理及其在各领域的应用。

2. 光栅尺的工作原理光栅尺的工作原理基于光栅的干涉效应。

光栅是一种由周期性刻线构成的透明介质,其周期性刻线可以分为等距离刻线和等宽刻线两种类型。

2.1 等距离刻线光栅等距离刻线光栅是指刻线之间的间距相等,常见的有光栅尺和光栅编码器。

当光线通过等距离刻线光栅时,会产生干涉现象,形成明暗相间的光斑。

根据干涉测量原理,通过测量光斑的位置变化,可以计算出位置或位移的变化量。

2.2 等宽刻线光栅等宽刻线光栅是指刻线的宽度相等,常见的有光栅光谱仪和波长选择器。

当光线通过等宽刻线光栅时,会发生光的衍射现象,使不同波长的光产生不同的角度偏转。

通过测量光的偏转角度,可以确定光的波长。

3. 光栅尺的应用领域光栅尺作为一种高精度测量装置,被广泛应用于各个领域。

3.1 机械制造在机械制造领域,光栅尺主要用于数控机床、加工中心、测量仪器等设备中,用于测量机械零件的运动轨迹、定位精度等。

光栅尺具有高精度和稳定性的特点,可以实现对机械装置的精确控制。

3.2 科学研究在科学研究领域,光栅尺常用于物理实验中,用于测量光源的波长、光栅的周期等参数。

通过精确测量光的性质,可以探索光的基本原理和性质,为科学研究提供重要的参考数据。

3.3 光学仪器光栅尺也广泛应用于各类光学仪器中。

例如光学显微镜、激光材料加工设备等。

光栅尺可以实现对光学仪器的校准,保证其测量结果的准确性。

3.4 制造业在制造业中,光栅尺被用于多轴运动控制、自动化设备、机器人等领域。

通过集成光栅尺系统,可以实现对复杂物体的测量、定位、控制等功能,提高生产效率和产品质量。

4. 光栅尺的特点与优势光栅尺相比传统的测量方法具有以下特点和优势:•高精度:光栅尺可以实现亚微米级的测量精度。

STM32定时器配置为编码器模式(转)

STM32定时器配置为编码器模式(转)

STM32定时器配置为编码器模式(转)⽂章⽬录⼀、编码器原理⼆、为什么要⽤编码器三、STM32编码器配置相关四、STM32实战代码五、⼀些注意参考⼀、编码器原理如果两个信号相位差为90度,则这两个信号称为正交。

由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断⽅向、根据每个信号脉冲数量的多少及整个编码轮的周长就可以算出当前⾏⾛的距离、如果再加上定时器的话还可以计算出速度。

⼆、为什么要⽤编码器从上图可以看出,由于TI,T2⼀前⼀后有个90度的相位差,所以当出现这个相位差时就表⽰轮⼦旋转了⼀个⾓度。

但有⼈会问了:既然都是脉冲,为什么不⽤普通IO中断?实际上如果是轮⼦⼀直正常旋转当然没有问题。

仔细观察上图,如果出现了⽑刺呢?这就是需要我们在软件中编写算法进⾏改正。

于是,我们就会想到如果有个硬件能够处理这种情况那不是挺好吗?对应的硬件的编码器就来了~我们看到STM32的硬件编码器还是很智能的,当T1,T2脉冲是连续产⽣的时候计数器加⼀或减⼀⼀次,⽽当某个接⼝产⽣了⽑刺或抖动,则计数器计数不变,也就是说该接⼝能够容许抖动。

在STM32中,编码器使⽤的是定时器接⼝,通过数据⼿册可知,定时器1,2,3,4,5和8有编码器的功能,⽽其他没有。

同时只有CH1和CH2是进⾏编码器模式的~三、STM32编码器配置相关编码器输⼊信号TI1,TI2经过输⼊滤波,边沿检测产⽣TI1FP1,TI2FP2接到编码器模块,通过配置编码器的⼯作模式,即可以对编码器进⾏正向/反向计数。

⽐如如果⽤的是定时器2,则对应的引脚是在PA0和PA1上。

通常为了提⾼精度我们会选择在上升沿和下降沿都进⾏计数!还有⼀个⾮常重要的图这⾥也记录下其中让⼈费解的应该是在第⼆列的相对信号的电平,这⾥就来详细谈⼀下吧。

其实也不难理解哈,我们上⾯也说了通常为了提⾼精度会在A、B两相的上升沿和下降沿都进⾏计数,那么对应在⼀个周期就可以计数四次,计数次数的增加也就意味着精度的提⾼!编码器模式下,如果此时处于正转,那么这四次计数应该都是加的。

stm32编码器测速

stm32编码器测速

stm32编码器测速摘要:编码器是⼀种将⾓位移或者⾓速度转换成⼀串电数字脉冲的旋转式传感器。

编码器⼜分为光电编码器和霍尔编码器。

霍尔编码器是有霍尔码盘和霍尔元件组成。

霍尔码盘是在⼀定直径的圆板上等分的布置有不同的磁极。

霍尔码盘与电动机同轴,电动机旋转时,霍尔元件检测输出若⼲脉冲信号,为判断转向,⼀般输出两组存在⼀定相位差的⽅波信号。

采集数据⽅式:第⼀种软件技术直接采⽤外部中断进⾏采集,根据AB相位差的不同可以判断正负。

第⼆种硬件技术直接使⽤定时器的编码器模式。

这⾥采⽤第⼆种。

也是⼤家常说的四倍频,提⾼测量精度的⽅法。

其实就是把AB相的上升沿和下降沿都采集⽽已,所以1变4。

⾃⼰使⽤外部中断⽅式实现就⽐较占⽤资源了,所以不建议使⽤。

速度计算⽅法:真实的物理转速:电机转动⼀圈的脉冲数:num1 单位:个单位时间:t 单位:秒单位时间内捕获的脉冲变化数:num2 单位:个(反应电机正反转)电机轮⼦半径:r 单位:m圆周率:pi 单位:⽆速度:speed 单位: mm/s因为半径⽤的是m为单位,速度为mm所以需要乘以1000。

代码:(使⽤TIM2和TIM4两个定时器来测两个轮⼦的速度)将编码器AB相使⽤的引脚设置成定时器的编码器模式,我们根据TIMx->CNT寄存器数据的变化,计算出单位时间内,脉冲的变化值。

然后在定时器中断服务函数中进⾏速度计算。

#include "encoder.h"/**************************************************************************函数功能:把TIM2初始化为编码器接⼝模式⼊⼝参数:⽆返回值:⽆**************************************************************************/void Encoder_Init_TIM2(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_ICInitTypeDef TIM_ICInitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能定时器2的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端⼝时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //端⼝配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输⼊GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOATIM_TimeBaseStructInit(&TIM_TimeBaseStructure);TIM_TimeBaseStructure.TIM_Prescaler = 0x0; //预分频器TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD; //设定计数器⾃动重装值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //选择时钟分频:不分频TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM向上计数TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//使⽤编码器模式3TIM_ICStructInit(&TIM_ICInitStructure);TIM_ICInitStructure.TIM_ICFilter = 10;TIM_ICInit(TIM2, &TIM_ICInitStructure);TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清除TIM的更新标志位TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//Reset counterTIM_SetCounter(TIM2,0);//===============================================TIM2->CNT = 0x7fff;//===============================================TIM_Cmd(TIM2, ENABLE);}/**************************************************************************函数功能:把TIM4初始化为编码器接⼝模式⼊⼝参数:⽆返回值:⽆**************************************************************************/void Encoder_Init_TIM4(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_ICInitTypeDef TIM_ICInitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能定时器4的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端⼝时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //端⼝配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输⼊GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOBTIM_TimeBaseStructInit(&TIM_TimeBaseStructure);TIM_TimeBaseStructure.TIM_Prescaler = 0x0; // 预分频器TIM_TimeBaseStructure.TIM_Period = ENCODER_TIM_PERIOD; //设定计数器⾃动重装值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //选择时钟分频:不分频TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM向上计数TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//使⽤编码器模式3 TIM_ICStructInit(&TIM_ICInitStructure);TIM_ICInitStructure.TIM_ICFilter = 10;TIM_ICInit(TIM4, &TIM_ICInitStructure);TIM_ClearFlag(TIM4, TIM_FLAG_Update); //清除TIM的更新标志位TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);//Reset counterTIM_SetCounter(TIM4,0);//===============================================TIM4->CNT = 0x7fff;//===============================================TIM_Cmd(TIM4, ENABLE);}/**************************************************************************函数功能:读取编码器脉冲差值,读取单位时间内的脉冲变化值⼊⼝参数:TIM_TypeDef * TIMx返回值:⽆**************************************************************************/s16 getTIMx_DetaCnt(TIM_TypeDef * TIMx){s16 cnt;cnt = TIMx->CNT-0x7fff;TIMx->CNT = 0x7fff;return cnt;}/**************************************************************************函数功能:计算左右轮速⼊⼝参数:int *leftSpeed,int *rightSpeed返回值:⽆//计算左右车轮线速度,正向速度为正值,反向速度为负值,速度为乘以1000之后的速度 mm/s//⼀定时间内的编码器变化值*转化率(转化为直线上的距离m)*200s(5ms计算⼀次)得到 m/s *1000转化为int数据⼀圈的脉冲数:左:1560右:1560轮⼦半径:0.03m轮⼦周长:2*pi*r⼀个脉冲的距离:左:0.000120830m右:0.000120830m速度分辨率:左: 0.0240m/s右: 0.0240m/s200 5ms的倒数1000 扩⼤分辨率**************************************************************************/void Get_Motor_Speed(int *leftSpeed,int *rightSpeed){//5ms测速 5ms即这⾥说的单位时间*leftSpeed = getTIMx_DetaCnt(TIM4)*1000*200*0.000120830;*rightSpeed = getTIMx_DetaCnt(TIM2)*1000*200*0.000120830;}main.c#include "sys.h"//====================⾃⼰加⼊的头⽂件===============================#include "delay.h"#include "led.h"#include "encoder.h"#include "usart3.h"#include "timer.h"#include <stdio.h>//===================================================================int leftSpeedNow =0;int rightSpeedNow =0;int main(void){GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//禁⽤JTAG 启⽤ SWDMY_NVIC_PriorityGroupConfig(2); //=====设置中断分组delay_init(); //=====延时函数初始化LED_Init(); //=====LED初始化程序灯usart3_init(9600); //=====串⼝3初始化蓝⽛发送调试信息Encoder_Init_TIM2(); //=====初始化编码器1接⼝Encoder_Init_TIM4(); //=====初始化编码器2接⼝TIM3_Int_Init(50-1,7200-1); //=====定时器初始化 5ms⼀次中断while(1){printf("L=%d,R=%d\r\n",leftSpeedNow,rightSpeedNow);delay_ms(15);}}//5ms 定时器中断服务函数void TIM3_IRQHandler(void) //TIM3中断{if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发⽣与否:TIM 中断源 {TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIMx的中断待处理位:TIM 中断源Get_Motor_Speed(&leftSpeedNow,&rightSpeedNow);Led_Flash(100);}}。

stm32 读取光栅尺jcxe5 例程

stm32 读取光栅尺jcxe5 例程

stm32 读取光栅尺jcxe5 例程光栅尺是一种常见的测量装置,广泛应用于机床、数控系统等工业领域。

它利用光电效应原理,通过光栅尺上的光栅条与读取头产生的光电信号,来实现对位置的测量。

而STM32单片机是一种基于ARM Cortex-M内核的微控制器,具有高性能、低功耗等特点,广泛应用于嵌入式系统开发。

要实现STM32读取光栅尺JCXE5的功能,首先需要连接好光栅尺与STM32单片机。

光栅尺通常有A、B两个信号输出端口,分别对应光栅条的两个相位。

将光栅尺的A相和B相分别连接到STM32的两个IO口。

接下来,我们需要配置STM32的GPIO口为输入模式,并使能外部中断功能。

在STM32的主函数中,我们可以通过编写中断服务函数来读取光栅尺的信号。

当光栅尺的A相或B相发生变化时,就会触发对应的外部中断。

在中断服务函数中,我们可以读取IO口的电平状态,从而获取到光栅尺的位置信息。

为了提高读取的精度,我们可以使用定时器来测量光栅尺的周期。

通过配置STM32的定时器,我们可以定时检测光栅尺的信号,并计算出光栅条的周期。

进一步,我们可以通过周期来计算出光栅尺的位置。

在实际应用中,为了提高系统的稳定性和可靠性,我们还可以添加一些附加功能。

例如,可以设置阈值来判断光栅尺的位置是否超过了设定范围,以及添加校准功能来修正光栅尺的误差等。

总结起来,本文介绍了如何使用STM32单片机读取光栅尺JCXE5的方法和实现过程。

通过连接光栅尺与STM32的IO口,并配置相应的中断和定时器,我们可以实现对光栅尺的位置信息的读取。

这为各种需要测量位置的应用提供了一种简单而有效的解决方案。

希望本文对读者在使用STM32读取光栅尺JCXE5时提供一些帮助。

基于STM32单片机的新型滚动尺

基于STM32单片机的新型滚动尺

基于STM32单片机的新型滚动尺作者:张其睿韦伟豪刘宣成来源:《新校园·上旬刊》2015年第05期摘要:为解决传统直尺量程小、功能单一、携带麻烦等问题,文章设计了一种以STM32单片机为核心,使用增量式光电编码器采集数据并通过OLED显示屏实时显示和语音播报测量结果的新型滚动尺。

该滚动尺具有量程大、精度高、使用方便等特点,不仅可以测量直线的距离,还可以测量曲线、曲面的距离。

关键词:滚动尺;增量式光电编码器;STM32单片机传统的尺子主要有游标卡尺、钢尺、卷尺等,量程一般在10米左右,只能测量直线距离,功能单一,体积略大。

针对传统尺子的局限性,文中设计了一种基于STM32单片机的新型滚动尺,该滚动尺具有量程大、精度高、使用方便等特点,不仅可以测量直线距离,还可以测量曲线、曲面的距离,测量时通过OLED显示屏实时显示测量数据,测量完毕后能够语音播报测量结果,有效地解决了传统直尺的量程小,功能单一,携带麻烦等缺点。

滚动尺主要由滚动小轮、增量式编码器、STM32单片机、按键、OLED显示屏以及语音播报模块组成。

其中,增量式编码器负责将滚动小轮的圆周运动转换成脉冲输出给单片机,STM32单片机是滚动尺的核心,负责处理各项数据和任务,OLED显示屏负责实时显示测量结果,语音模块部分负责将测量结果通过语音播放出来,而按键模块则负责测量单位转换、数据锁定或清零等操作。

滚动尺组成示意图如图1所示。

图1 滚动尺组成示意图一、测距原理滚动尺的测距原理为:当用手拖动滚动尺时,滚动小轮做圆周运动并带动编码器,编码器将圆周运动转化成数字脉冲信号输出,单片机对编码器输出的脉冲进行捕获并计数,结合滚动小轮的直径以及编码器的分辨率,就可以测算出滚动小轮所走过的距离,从而计算出距离。

当滚动小轮的周长为51.2mm,编码器的分辨率为512线时,如果滚动小轮带动编码器旋转一周,则滚动小轮走过的距离为51.2mm,编码器输出512个脉冲,此时一个脉冲就对应0.1mm的长度。

利用编码器测速的应用实例 -回复

利用编码器测速的应用实例 -回复

利用编码器测速的应用实例-回复【利用编码器测速的应用实例】引言:编码器是一种常见的用于测量运动的设备,它可以将物体的运动转化为电信号,并根据信号进行计数和测量。

编码器测速技术在很多行业都有广泛的应用,如工业自动化、航空航天、汽车制造等。

本文将以利用编码器测速的应用实例为主题,介绍编码器测速技术在不同领域的应用及其优势。

第一部分:编码器测速技术概述编码器是一种能够测量物体线速度或角速度的传感器。

常见的编码器有光电式编码器和磁编码器两种。

光电式编码器通过感应光束的中断来进行计数,用于测量物体的直线位移;磁编码器则利用磁性材料和传感器之间的相互作用实现测量,主要用于测量物体的角位移。

第二部分:工业自动化领域的应用实例在工业自动化领域,编码器测速技术被广泛应用于机械设备的控制和监测。

例如,在生产线上,利用编码器可以实时测量输送带的线速度,从而控制产品在不同工序之间的传送时间,以达到计划产能。

同时,编码器还可以监测设备的运行速度,当速度异常时及时发出报警,保证生产的安全和稳定。

此外,在机器人控制中,编码器测速技术可以帮助机器人精准地定位和移动,实现复杂的操作任务。

第三部分:航空航天领域的应用实例在航空航天领域,编码器测速技术也发挥着重要作用。

例如,在飞机发动机中,编码器可以精确测量发动机的转速,帮助工程师监控和控制发动机的性能。

此外,编码器还用于飞行控制系统中,测量飞机的姿态和角速度,为自动航行和导航提供必要的数据支持。

第四部分:汽车制造领域的应用实例在汽车制造领域,编码器测速技术被广泛用于汽车轮胎的动平衡和质量控制。

传统的轮胎动平衡是通过将编码器安装在旋转的轮胎上,测量轮胎的转速和振动信号,以及评估轮胎是否平衡。

通过实时测量和反馈,自动控制设备可以实现快速而准确的轮胎动平衡。

此外,编码器还可以用于测量车辆的车速,以及帮助驾驶员控制和调整车辆的行驶速度。

第五部分:编码器测速技术的优势利用编码器测速技术进行运动测量具有以下优势:1. 高精度:编码器可以提供精确的运动测量,使得控制和监测更加准确可靠。

STM32编码器在光栅尺测速场合的实际应用

STM32编码器在光栅尺测速场合的实际应用

STM32编码器在光栅尺测速场合的实际应用作者:邓军来源:《科技创新与应用》2013年第08期摘要:STM32103F系列微控制器的定时器有一种特有工作模式——编码器接口模式,此模式可以用来反馈马达的实时转子位置,测量马达的转速,也可以反馈光栅尺的实时位置,测量光栅头的移动速度,在工业控制场合,尤其是需要精确定位的压机、机床等使用场合,有着非常实用的价值。

现以STM32103F微控制器与海德汉(HEIDENHAIN)光栅尺LS1378C为例,详细介绍定时器的编码器工作原理,以及双定时器配合测速度的编程算法。

关键词:STM32编码器;光栅尺;测速STM32103F系列是ST公司采用高性能的32位ARM Cortex-M3内核,主要面向工业控制领域推出的微控制器芯片。

通用定时器有以下几种工作模式:计数器模式、输入捕获模式、输出比较模式、PWM模式、单脉冲模式、编码器接口模式。

其中,编码器接口模式是一种有别于其他通用ARM控制器以及DSP控制器的特有模式,此模式可以用来反馈马达的实时转子位置,测量马达的转速,也可以反馈光栅尺的实时位置,测量光栅头的移动速度,在工业控制场合,尤其是需要精确定位的压机、机床等使用场合,有着非常实用的价值。

光栅尺位移传感器(简称光栅尺),是利用光栅的光学原理工作的测量反馈装置。

光栅尺位移传感器经常应用于机床与现在加工中心以及测量仪器等方面,可用作直线位移或者角位移的检测。

其测量输出的信号为数字脉冲,具有检测范围大,检测精度高,响应速度快的特点。

例如,在数控机床中常用于对刀具和工件的坐标进行检测,来观察和跟踪走刀误差,以起到一个补偿刀具的运动误差的作用。

在这里需要说明的是,光栅尺只是一个反馈装置,它可以将位移量和位移方向通过脉冲信号输出的方式反馈出来,但它不能直接显示出来,它还需要一个显示装置,比如通过CPLD来识别,或者本文中的微控制器STM32103F来识别。

光栅尺的输出信号为相位角相差90°的两路方波信号,如果A路超前B路90°,表示光栅尺在正向移动,反之,A路落后B路90°,表示反向移动。

基于STM32的光栅尺速度位移检测

基于STM32的光栅尺速度位移检测

图 7 定时器 1 中断程序
图 8 定时器 2 中断程序
图 9 定时器 3 中断程序
图 10 定时器 4 中断程序
图 8 中,M1 、M2 的计算公式分别为:
{T2_CNT - 1 - 65 536T2_Over A 滞后 B
M1 = T2_CNT + 1 + 65 536T2_Over A 超前 B
- 74. [4] 王成元,常国祥,夏加宽. 基于 FPGA 的光栅信号智能接口模块[J]. 电气传动,2007,37( 4) : 56 - 61. [5] 刘军. 例说 STM32[M]. 北京: 北京航空航天大学出版社,2011: 122 - 128. [6] 阮毅,陈伯时. 电力拖动自动控制系统 - 运动控制系统[M]. 北京: 机械工业出版社,2004: 41 - 44.
circuit to quadruple frequency and differentiate direction,a method of velocity-position detection based on the timers' built-in quadruple frequency and differentiation direction functions of STM32F103VE is proposed,using 3 timers to realize the velocity detection,using 1 timer to realize the position detection. This scheme can make the velocity-position detection more reliable and more precise without increasing hardware costs,it has practical value. Key words: grating scale; embedded CPU; quadruple frequency; differentiate direction; velocity-position

STM32F10xxx 正交编码器接口应用笔记

STM32F10xxx 正交编码器接口应用笔记

STM32F10xxx 正交编码器接口应用笔记Abstract --- The quadrature encoder which is very popular in the motor servo control application, known as a 2-channel incremental encoder, converts linear displacement into a pulse signal. By monitoring the number of pulses and the relative phase of the two signals you can track the position, the direction of rotation and speed. In ddition, a third channel, or index signal, can be used to reset the position counter. STM3210x which is the MCU based on ARM latest core - Cortex-M3, integrates the quadrature encoder interface. Accordingly STM3210x can handles the encoder signal without any CPU overhead which it is possible for CPU to focus on the vector control. 在马达控制类应用中, 正交编码器可以反馈马达的转子位置及转速信号。

TM32F10x系列MCU集成了正交编码器接口,增量编码器可与 MCU 直接连接而无需外部接口电路。

该应用笔记详细介绍了STM32F10x 与正交编码器的接口,并附有相应的例程,使用户可以很快地掌握其使用方法。

基于TMS320F240的M-T法测速的实现与应用

基于TMS320F240的M-T法测速的实现与应用

采用DSP实现M/T法测速。

利用DSP的捕获功能,确保测速的计时和码盘脉冲计数的同步。

时间测量的绝对误差小于0.2μs,并且与测速周期无关。

同时提出一种经济、实用的抗测速干扰方法。

理论推导和实验结果表明,该方案准确、可靠,适用的测速范围大。

1引言转速闭环控制系统中,电机转速作为反馈量构成闭环控制,转速测量的精度对控制系统性能的影响是不言而喻的。

光电码盘是目前广泛采用的测速手段。

它具有精度高、线性度好的优点。

采用光电码盘测速时,常用的测速方法有M法、T法和M/T法。

其中M/T法兼顾高低转速,是综合性能最佳的一种。

2M/T法测速原理和误差分析2.1M/T法测速的原理M/T法测速综合了M法与T法的长处,既记录测速时间内码盘输出的脉冲数M1,又检测同一时间间隔内高频时钟脉冲数M2。

设高频时钟脉冲的频率为f0,则测速时间。

习惯上转速常以每分钟转数来表示,则电机的转速可表示为:(1)式中,Z为电机每转一圈所产生的脉冲数(Z=倍频系数×码盘光栅数),如图1所示图1M/T法测速示意图2.2误差分析常规的M/T法测速中,测速时间是程序设定的计数时间TC,而脉冲数为TC时间内码盘输出脉冲个数。

由图1可看出,TC开始时刻与码盘输出脉冲上升沿并非一定同步到达。

同样,TC结束时刻也很难刚好与码盘的输出脉冲上升沿同步。

这两个时间差都与转速的大小有关,而与高频计数时钟的频率无关。

由此引起的计数和计时的时间偏差可能比高频时钟周期大得多,从而降低测速的精度。

由M/T法测速的误差根源可知:确保高频时钟脉冲计数器与码盘输出脉冲计数器同时开启与关闭是提高测速精度的关键所在。

3利用DSP实现高精度转速测量3.1TMS320F240系列控制器的特点作为电机数字控制的专用芯片,TMS320F240运算速度快,单指令周期为50ns。

其功能强大的事件管理器(Event Manager)为实时控制系统提供了良好的软、硬件基础。

该事件管理器中包括特殊的PWM产生功能,包括可编程的死区时间设定和空间矢量状态。

光栅尺和编码器介绍

光栅尺和编码器介绍

光栅与编码器介绍位置检测装置作为数控机床的重要组成部分,其作用就是检测位移量,并发出反馈信号与数控装置发出的指令信号相比较,若有偏差,经放大后控制执行部件使其向着消除偏差的方向运动,直至偏差等于零为止。

为了提高数控机床的加工精度,必须提高检测元件和检测系统的精度。

其中以编码器,光栅尺,旋转变压器,测速发电机等比较普遍,下面主要对光栅和编码器进行说明。

光栅,现代光栅测量技术简要介绍:将光源、两块长光栅(动尺和定尺)、光电检测器件等组合在一起构成的光栅传感器通常称为光栅尺。

光栅尺输出的是电信号,动尺移动一个栅距,输出电信号便变化一个周期,它是通过对信号变化周期的测量来测出动就与定就职相对位移。

目前使用的光栅尺的输出信号一般有两种形式,一是相位角相差90度的2路方波信号,二是相位依次相差90度的4路正弦信号。

这些信号的空间位置周期为W。

下面针对输出方波信号的光栅尺进行了讨论,而对于输出正弦波信号的光栅尺,经过整形可变为方波信号输出。

输出方波的光栅尺有A相、B 相和Z相三个电信号,A相信号为主信号,B相为副信号,两个信号周期相同,均为W,相位差90o。

Z信号可以作为较准信号以消除累积误差。

一、栅式测量系统简述从上个世纪50年代到70年代栅式测量系统从感应同步器发展到光栅、磁栅、容栅和球栅,这5种测量系统都是将一个栅距周期内的绝对式测量和周期外的增量式测量结合了起来,测量单位不是像激光一样的是光波波长,而是通用的米制(或英制)标尺。

它们有各自的优势,相互补充,在竞争中都得到了发展。

由于光栅测量系统的综合技术性能优于其他4种,而且制造费用又比感应同步器、磁栅、球栅低,因此光栅发展得最快,技术性能最高,市场占有率最高,产业最大。

光栅在栅式测量系统中的占有率已超过80%,光栅长度测量系统的分辨力已覆盖微米级、亚微米级和纳米级,测量速度从60m/min,到480m/min。

测量长度从1m、3m 达到30m和100m。

stm32速度估计与滤波方法

stm32速度估计与滤波方法

stm32速度估计与滤波方法STM32速度估计与滤波方法在许多应用中,需要对旋转物体的速度进行估计和控制。

例如,电机控制系统和运动控制系统均需要速度估计。

在STM32微控制器中,可以使用编码器、计数器和定时器等工具来进行速度测量。

本文将介绍如何在STM32上使用这些工具进行速度估计,并讨论如何使用滤波方法来积极地消除速度测量中的噪声。

1. 编码器编码器是用于测量电机或运动部件转动角度和速度的传感器。

STM32可以使用两种类型的编码器:增量编码器和绝对编码器。

增量编码器列有两个输出:A 相和 B 相。

当电机或运动部件旋转时,这些输出发出周期波形。

可以通过极限速度和跟踪极限计数器的变化来测量转速。

绝对编码器输出一个数字编码,用于表示电机或运动部件旋转的位置和方向。

当旋转时,这个数字编码发生变化。

可以使用定时器输入捕捉模式、外部中断或通过读取GPIO端口来测量转速。

2. 计数器计数器是用于计算某个事件的数量的工具。

在STM32中,计数器可以计算定时器引脚的脉冲数量。

此外,当与编码器结合使用时,它可以计数编码器输出脉冲的数量。

计数器可以使用定时器输入捕捉模式、外部中断或通过读取GPIO 端口来测量转速。

3. 定时器在STM32中,定时器可以用于测量编码器输出脉冲的时间间隔,进而计算转速。

定时器可以使用输入捕获模式测量脉冲的时间间隔。

在输入捕获模式下,当定时器计数器与特定的定时器引脚上的脉冲的时间间隔到达设置值时,将捕获计数器值。

可以使用这些捕获计数器值来测量时间间隔,并计算速度。

4. 滤波方法在进行速度测量时,可能会受到噪声的干扰。

为了避免噪声对测量结果的影响,可以使用滤波方法来平滑噪声信号。

常用的滤波方法包括低通滤波器、中值滤波器和卡尔曼滤波器。

低通滤波器通过滤除高频噪声信号来平滑信号。

可以将一阶低通滤波器实现为RC电路。

另一个常用的低通滤波器是Butterworth滤波器。

中值滤波器通过计算信号中的中值来平滑信号。

基于光栅编码器高精度测速系统的研究

基于光栅编码器高精度测速系统的研究

基于光栅编码器高精度测速系统的研究
郑发泰
【期刊名称】《湖南工业职业技术学院学报》
【年(卷),期】2008(008)003
【摘要】介绍了转速测量的方法、转向的判别以及测量数字的算法,重点阐述了采用8051单片机构成的高精度潮速系统的原理、软硬件组成,并给出了系统的检测结果.
【总页数】2页(P5-6)
【作者】郑发泰
【作者单位】浙江工商职业技术学院,浙江,宁波,315012
【正文语种】中文
【中图分类】TH123
【相关文献】
1.STM32编码器在光栅尺测速场合的实际应用 [J], 邓军
2.一种基于光电编码器的高精度测速和测加速度方法 [J], 裴泽阳;王致杰;肖浩;
3.基于正交编码器高精度测速方法的研究 [J], 焦东升;张秀彬;应俊豪
4.一种基于光电编码器的高精度测速和测加速度方法 [J], 姜庆明; 杨旭; 甘永梅; 王晓钰; 王兆安
5.基于普通编码器的高精度测速方法 [J], 宋刚;秦月霞;张凯;胡德金
因版权原因,仅展示原文概要,查看原文内容请购买。

编码器、磁栅、光栅的工作原理及作用

编码器、磁栅、光栅的工作原理及作用

编码器的工作原理及作用:它是一种将旋转位移转换成一串数字脉冲信号的旋转式传感器,这些脉冲能用来控制角位移,如果编码器与齿轮条或螺旋丝杠结合在一起,也可用于测量直线位移。

编码器产生电信号后由数控制置CNC、可编程逻辑控制器PLC、控制系统等来处理。

这些传感器主要应用在下列方面:机床、材料加工、电动机反馈系统以及测量和控制设备。

在ELTRA编码器中角位移的转换采用了光电扫描原理。

读数系统是基于径向分度盘的旋转,该分度由交替的透光窗口和不透光窗口构成的。

此系统全部用一个红外光源垂直照射,这样光就把盘子上的图像投射到接收器表面上,该接收器覆盖着一层光栅,称为准直仪,它具有和光盘相同的窗口。

接收器的工作是感受光盘转动所产生的光变化,然后将光变化转换成相应的电变化。

一般地,旋转编码器也能得到一个速度信号,这个信号要反馈给变频器,从而调节变频器的输出数据。

故障现象:1、旋转编码器坏(无输出)时,变频器不能正常工作,变得运行速度很慢,而且一会儿变频器保护,显示“PG断开”...联合动作才能起作用。

要使电信号上升到较高电平,并产生没有任何干扰的方波脉冲,这就必须用电子电路来处理。

编码器pg接线与参数矢量变频器与编码器pg之间的连接方式,必须与编码器pg的型号相对应。

一般而言,编码器pg型号分差动输出、集电极开路输出和推挽输出三种,其信号的传递方式必须考虑到变频器pg卡的接口,因此选择合适的pg卡型号或者设置合理. 编码器一般分为增量型与绝对型,它们存着最大的区别:在增量编码器的情况下,位置是从零位标记开始计算的脉冲数量确定的,而绝对型编码器的位置是由输出代码的读数确定的。

在一圈里,每个位置的输出代码的读数是唯一的; 因此,当电源断开时,绝对型编码器并不与实际的位置分离。

如果电源再次接通,那么位置读数仍是当前的,有效的; 不像增量编码器那样,必须去寻找零位标记。

现在编码器的厂家生产的系列都很全,一般都是专用的,如电梯专用型编码器、机床专用编码器、伺服电机专用型编码器等,并且编码器都是智能型的,有各种并行接口可以与其它设备通讯。

编码器速度和方向检测,371电机方向与速度检测,stm32编码器接口模式

编码器速度和方向检测,371电机方向与速度检测,stm32编码器接口模式

编码器速度和⽅向检测,371电机⽅向与速度检测,stm32编码器接⼝模式编码器是什么玩意呢,它可是⼀个好玩的东西,做⼩车测速必不可少的玩意,下⾯,我将从编码器的原理讲起,⼀直到⽤stm32的编码器接⼝模式,测出电机转速与⽅向。

1.编码器图1 编码器⽰意图图1为编码器的⽰意图,中间是⼀个带光栅的码盘,光通过光栅,接收管接收到⾼电平,没通过,接收到低电平。

电机旋转⼀圈,码盘上有多少光栅,接受管就会接收多少个⾼电平。

371电机中的码盘就是这样的,他是334线码盘,具有较⾼的测速精度,也就是电机转⼀圈输出334个脉冲,芯⽚上已集成了脉冲整形触发电路,输出的是矩形波,直接接单⽚机IO就OK。

增量式旋转编码器通过内部两个光敏接受管转化其⾓度码盘的时序和相位关系,得到其⾓度码盘⾓度位移量增加(正⽅向)或减少(负⽅向)。

下图为编码器的原理图:图2 增量式旋转编码器A,B两点对应两个光敏接受管,A,B两点间距为 S2 ,码盘的光栅间距分别为S0和S1。

S0+S1的距离是S2的四倍。

这样保证了A,B波形相位相差90度。

旋转的反向不同,锯齿波A,B先到达⾼电平的顺序就会不同,如上图左侧所⽰,顺序的不同,就可以得到旋转的⽅向。

2.stm32编码器接⼝模式(寄存器)stm32的编码器接⼝模式在STM32中⽂参考⼿册中有详细的说明,在⼿册273页,14.3.12节。

程序是完全按照下图⽅式,设置寄存器的。

请到本⽂尾下载STM32中⽂参考⼿册图3从图3中可以看出,TI1波形先于TI2波形90°时,每遇到⼀个边沿变化是,计数器加1(可以通过寄存器设置加减),可以看出⼀个光栅,被计数了4次。

TI1波形后于TI2波形90°时,每遇到⼀次边沿变化,计数器减1。

1.//TIM2_Encoder_Init,Tim2_CH1(PA0);Tim2_CH2(PA1)2.//arr:⾃动重装值 0XFFFF3.//psc:时钟预分频数,不分频4.void TIM2_Encoder_Init(u16 arr,u16 psc)5.{6. RCC->APB1ENR|=1<<0; //TIM2时钟使能7.RCC->APB2ENR|=1<<2; //使能PORTA时钟8.9. GPIOA->CRL&=0XFFFFFF00; //PA0、PA1 清除之前设置10. GPIOA->CRL|=0X00000044; //PA0、PA1 浮空输⼊11.12. TIM2->ARR=arr; //设定计数器⾃动重装值13. TIM2->PSC=psc; //预分频器14.15.TIM2->CCMR1 |= 1<<0; //输⼊模式,IC1FP1映射到TI1上16.TIM2->CCMR1 |= 1<<8; //输⼊模式,IC2FP2映射到TI2上17.TIM2->CCER |= 0<<1; //IC1不反向18.TIM2->CCER |= 0<<5; //IC2不反向19.TIM2->SMCR |= 3<<0; //所⽤输⼊均在上升沿或下降沿有效20.TIM2->CR1 |= 1<<0; //使能计数器21.}复制代码3 硬件⽤到的模块有STM32核⼼板、L298电机驱动、371带编码器电机(1:34)。

光栅尺应用场合

光栅尺应用场合

光栅尺应用场合
光栅尺应用场合
光栅尺是一种常见的测量工具,它主要应用于需要高精度测量的场合。

光栅尺的工作原理是利用光栅的周期性结构,通过光电传感器将光栅的位移转换为电信号,从而实现测量。

光栅尺的应用场合非常广泛,其中最常见的是机床加工领域。

在机床加工中,需要对工件进行高精度的测量,以确保加工精度和质量。

光栅尺可以被安装在机床上,通过与工件接触,实现对工件位置和尺寸的测量。

由于光栅尺具有高精度、高灵敏度和高稳定性等特点,因此在机床加工中得到了广泛的应用。

除了机床加工领域,光栅尺还可以应用于其他需要高精度测量的场合。

例如,光栅尺可以被用于半导体制造中,用于测量芯片的尺寸和位置。

此外,光栅尺还可以被用于光学仪器中,用于测量光学元件的位置和角度。

在科学研究中,光栅尺也被广泛应用于精密测量和实验中。

光栅尺是一种非常重要的测量工具,它在需要高精度测量的场合中得到了广泛的应用。

随着科技的不断发展,光栅尺的应用范围也在不断扩大,未来光栅尺将会在更多的领域中发挥重要作用。

光栅尺和编码器介绍

光栅尺和编码器介绍

光栅尺和编码器介绍一、光栅尺光栅尺是一种基于光学原理的测量设备,它利用光栅的周期性结构来测量位置和线性位移。

光栅尺由一根光导纤维和一组非常微小的刻痕组成,这些刻痕是均匀且等距离分布在光导纤维上的。

当光源照射在光栅上时,光会经过刻痕的反射或衍射,形成干涉条纹。

通过检测这些条纹的位置变化,可以计算出位置或线性位移的数值。

光栅尺具有高精度和高分辨率的特点。

它可以实现亚微米级的测量精度,并且可以用于测量较大的位移范围。

此外,光栅尺还具有高灵敏度和快速响应的特点,适用于高速运动控制系统。

光栅尺的应用非常广泛。

它被广泛应用于数控机床、半导体设备、医疗设备等行业。

在数控机床中,光栅尺可用于测量工件的位置和线性位移,确保机床运动的精确性和稳定性。

在半导体设备中,光栅尺可用于测量和控制光刻机的位置,确保芯片的精度和质量。

在医疗设备中,光栅尺可用于测量和控制超声设备的位置,确保医学成像结果的准确性。

二、编码器编码器是一种通过测量脉冲数或脉冲宽度来确定位置和运动的装置。

编码器有两种主要类型:增量式编码器和绝对式编码器。

1.增量式编码器增量式编码器是将物理位置转换为相应的电信号的装置。

它通过测量脉冲数或脉冲宽度的变化来确定位置和运动。

增量式编码器通常由光电二极管和光脉冲发射装置组成。

当物体移动时,光脉冲发射装置会发出一系列的光脉冲,通过光电二极管接收并转换为电信号。

通过计算接收到的脉冲数可以确定位置和运动的数值。

增量式编码器具有简单、稳定和成本低的特点。

它可以快速响应和反应,适用于高速运动控制系统。

然而,它无法直接确定位置,需要通过计算脉冲数的变化来求解。

2.绝对式编码器绝对式编码器是一种能够直接确定位置的装置。

它通过将位置信息编码到多个不同的信号轴上来实现。

绝对式编码器通常由光栅、霍尔传感器或磁传感器组成。

当物体移动时,传感器会检测到具有特定编码的标记,并将其转换为对应的位置信号。

绝对式编码器具有高精度和高分辨率的特点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32编码器在光栅尺测速场合的实际应用
摘要:stm32103f系列微控制器的定时器有一种特有工作模式——编码器接口模式,此模式可以用来反馈马达的实时转子位置,测量马达的转速,也可以反馈光栅尺的实时位置,测量光栅头的移动速度,在工业控制场合,尤其是需要精确定位的压机、机床等使用场合,有着非常实用的价值。

现以stm32103f微控制器与海德汉(heidenhain)光栅尺ls1378c为例,详细介绍定时器的编码器工作原理,以及双定时器配合测速度的编程算法。

关键词:stm32编码器;光栅尺;测速
stm32103f系列是st公司采用高性能的32位arm cortex-m3内核,主要面向工业控制领域推出的微控制器芯片。

通用定时器有以下几种工作模式:计数器模式、输入捕获模式、输出比较模式、pwm 模式、单脉冲模式、编码器接口模式。

其中,编码器接口模式是一种有别于其他通用arm控制器以及dsp控制器的特有模式,此模式可以用来反馈马达的实时转子位置,测量马达的转速,也可以反馈光栅尺的实时位置,测量光栅头的移动速度,在工业控制场合,尤其是需要精确定位的压机、机床等使用场合,有着非常实用的价值。

光栅尺位移传感器(简称光栅尺),是利用光栅的光学原理工作的测量反馈装置。

光栅尺位移传感器经常应用于机床与现在加工中心以及测量仪器等方面,可用作直线位移或者角位移的检测。

其测量输出的信号为数字脉冲,具有检测范围大,检测精度高,响应速度快的特点。

例如,在数控机床中常用于对刀具和工件的坐标进行
检测,来观察和跟踪走刀误差,以起到一个补偿刀具的运动误差的作用。

在这里需要说明的是,光栅尺只是一个反馈装置,它可以将位移量和位移方向通过脉冲信号输出的方式反馈出来,但它不能直接显示出来,它还需要一个显示装置,比如通过cpld来识别,或者本文中的微控制器stm32103f来识别。

光栅尺的输出信号为相位角相差90°的两路方波信号,如果a路超前b路90°,表示光栅尺在正向移动,反之,a路落后b路90°,表示反向移动。

这两路方波信号都为差分信号,需要经过差分输入芯片,比如ti的mc3486,转化为ttl电平的方波之后,才能进定时器的输入引脚。

此例中接入的是tim3-ch1和tim3-ch2两个引脚。

海德汉ls1378c为增量式直线光栅尺,量程220mm,信号周期1um,即一个方波对应1um,经后续电子设备进行4分频之后测量步距为0.25um。

直观来说,stm32103f识别到一个周期的方波脉冲,计数器增长4次,表示光栅尺移动了1um。

此例中,定时器timer3配置成编码器接口模式,提供传感器当前实时位置的信息。

另外再开一个定时器timer2,配置成10ms的定时工作模式,读取10ms之内的位置之差,即可获得动态的信息,比如速度、加速度。

这个算法思想的前提,也就是本文讨论的核心,是10ms内定时器3计数器不溢出,因为定时器为16位,最大可计数的范围为65535,如何保证10ms内实际增长的计数不超过这一最大值呢?我
们通过计算来说明,比如已知光栅尺连接的机械运动部件的最大速度不可能超过1m/s,那么10ms内走的位移量为10mm,
10mm/0.25um=40000次计数,40000小于65536,所以这一算法的前提成立。

如果运动部件的实际运动速度可能更快,那么把10ms定位改为5ms即可,以此类推,但定时间隔不可无限制缩小,以免加重cpu负荷。

首先,初始化定时器timer3为编码器模式,同时在ti1和ti2
边沿计数,pa口的6脚和7脚设置为浮空输入,用来连接编码器输入信号,定时器3计数周期period设置为65535,预分频数设置为零(不分频)。

接着,timer2配置为10ms的定时,计数周期period设置为2000,预分频数设置为360,向下计数模式。

下面是编码器读取方法,在每次10ms定时调用此段:
#define max_count 30000//10ms内不可能超过的计数器最大值#define encoder_tim_period 65535//定时器的period值,最好比max_count要大
int16_t speed_max = 0; // 全局变量,统计瞬时速度最大值,需要在每次重新测量之前清零
int32_t currentcount = 0; // 全局变量,计数器实时值,有正负,总量程220mm对应88万个计数,1um对应4个计数currentcount除以4000,即为光栅尺当前位置,单位为mm;speed_max为最大瞬时速度,单位为mm/s。

结束语
在实际的项目使用中,如果光栅尺移动速度过快,超过了硬件反应速度,可能导致脉冲丢失,显示出一个错误的位移量,这种错误是不可接受的。

为了避免超过光栅尺及硬件电路的极限处理能力,我们通过试验测出这一极限速度,并告知用户,用户可采用其他机械辅助的方法限制运动速度,在极限速度与生产效率之间找到一个合适的平衡点,使光栅尺工作在正常状态。

如果实际生产中的最大瞬时移动速度超过这一限制,将发出报警以示提醒。

参考文献
[1]嵌入式系统及其应用-基于cortex-m3内核和stm32f103微控制器的系统设计与开发[m].上海:同济大学出版社,2011,5.。

相关文档
最新文档