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

合集下载

光栅尺工作原理的应用

光栅尺工作原理的应用

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

stm32编码器工作原理

stm32编码器工作原理

stm32编码器工作原理
STM32编码器的工作原理以下几个方面来进行讲解:
1. 编码器介绍:编码器是一种测量旋转运动的装置,能够将旋转角度转换为电信号输出。

2. 工作原理:STM32编码器工作原理基于两个光电传感器和
一个光栅带的相互作用。

光栅带上有一定数量的黑白条纹,两个光电传感器分别测量这些条纹的变化。

3. 接口模式:STM32编码器可以通过两种接口模式进行工作,分别是增量式和绝对式。

增量式编码器输出的是脉冲信号,而绝对式编码器输出的是相对位置数据。

4. 编码方式:STM32编码器可以通过两种编码方式进行工作,分别是光电和磁电编码。

光电编码器利用光电传感器对光栅带上的黑白条纹进行测量,而磁电编码器则利用磁场对磁栅带进行测量。

5. 编码器的应用:STM32编码器广泛应用于机器人、航空航天、汽车零部件和工控设备等领域,用于测量旋转运动的角度和速度。

总结:STM32编码器通过光电或磁电传感器对光栅带或磁栅
带上的黑白条纹进行测量,将旋转运动转换为电信号输出,并通过增量或绝对方式输出相对位置数据或脉冲信号。

它具有精
度高、响应速度快、可靠性强等优点,在许多领域中都有广泛的应用。

stm32速度估计与滤波方法

stm32速度估计与滤波方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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°,表示反向移动。

stm32 编码器4倍频原理

stm32 编码器4倍频原理

标题:STM32编码器4倍频原理目录1. STM32编码器接口简介2. 编码器的工作原理和应用3. STM32编码器4倍频原理4. STM32编码器4倍频的优势5. 结论1. STM32编码器接口简介STM32系列微控制器是由意法半导体推出的一类MCU产品,具有丰富的外设和强大的性能。

其中,编码器接口是STM32微控制器常见的外设之一,主要用于连接编码器传感器,实现位置或速度的测量和控制。

STM32编码器接口通常包含两个通道(A相和B相)和一个索引信号(Z 相),用于测量编码器的旋转角度和速度。

STM32还提供了丰富的编码器接口工作模式和配置选项,以满足不同应用场景的需求。

2. 编码器的工作原理和应用编码器是一种用于测量旋转角度和速度的传感器,常见的编码器类型包括光电编码器和磁性编码器。

编码器的工作原理是利用编码盘上的光、电、磁信号来生成对应的数字脉冲输出,从而实现旋转角度和速度的测量。

在工业控制和自动化领域,编码器被广泛应用于电机位置控制、轴位移测量和运动控制等领域。

特别是在闭环控制系统中,编码器可以提供准确的位置反馈信号,从而实现精准的位置控制和运动控制。

3. STM32编码器4倍频原理在STM32微控制器中,编码器接口提供了多种工作模式和编码器计数模式。

其中,4倍频模式是一种常用的编码器计数模式,可以有效提高编码器的分辨率和测量精度。

在4倍频模式下,编码器接口可以将编码器信号的脉冲数量扩大4倍输出给微控制器的定时器,从而实现对编码器脉冲数量的有效倍增。

通过4倍频模式,可以在不改变编码器硬件结构的情况下,有效提高编码器的分辨率和灵敏度。

4. STM32编码器4倍频的优势使用STM32编码器4倍频模式具有以下优势:a. 提高分辨率:通过4倍频模式,可以将编码器信号的脉冲数量扩大4倍输出给微控制器的定时器,从而提高了编码器的分辨率和测量精度。

b. 提高灵敏度:4倍频模式可以将编码器的脉冲信号有效放大,从而提高了编码器的灵敏度和反馈精度,在闭环控制系统中具有重要作用c. 保持硬件兼容性:使用4倍频模式可以在不改变编码器硬件结构的情况下,有效提高了编码器的性能,同时保持了硬件的兼容性和稳定性。

海德汉编码器和海德汉光栅尺使用的各种参数

海德汉编码器和海德汉光栅尺使用的各种参数

如果两个值或参数相等,转移至给定的
GOTO
标签。
FN10:WENN UNGLEICH,SPRUNG
FN10
z.B. FN10: IF+10 NE -Q5 GOTO LBL 10 IF X NE Y
如果两个值或参数不相等,转移至给定
GOTO
的标签。
FN11:WENN GROESSER,SPRUNG
FN11
F-PRINT
FN18:SYS-DATUM READ
FN18
读出数据系统
SYS-DRTUM
READ
FN19:PLC 数据传送到 PLC
FN19 PLC=
FN20:WAIT FOR
FN20
NC 和 PLC 同步
WAIT
FOR
FN25:PRESET
FN25
设置新的数据
SET
DATUM
FN26:TABOPEN 打开可任意定义的表格
FN7
z.B. FN7: Q21 = COS-Q5
COS(X)
计算一个角的余弦角度(º)并将其赋
值给参数。
FN8:WURZEL AUS QUADRATSUMME z.B. FN8: Q10 = +5 LEN +4
FN8 X LEN Y
从两个值中计算长度。
FN13:WINKEL z.B. FN13: Q20 = +10 ANG-Q1
Q100 到 Q199
主要用于循环的参数,适用于所有存 Q200 到 Q399
储在 TNC 内存中的程序
编程说明
在一个程序中可以混用 Q 参数和固定数字值。 Q 参数可以被指定给-99.999,9999 和+99 999.9999 之间的 数字值。TNC 可以计算十进制小数点前 57 位到小数点后 7 位的范围(32 位数据的计算范围相当于十进制数值 4 294 967 296)。

智能传感技术-光电编码器的应用

智能传感技术-光电编码器的应用
利用编码器测量伺 服电机的转速、转角, 并通过伺服控制系统控 制其各种运行参数。
光电编码器的应用 2.在伺服电动机中的应用
➢ 转速测量 ➢ 转子磁极位置测量 ➢ 角位移测量
光电编码器的应用 3.加工定位
1—绝对式编码器 2—电动机 3—转轴 4—转盘 5—工件 6—刀具
设工位1刚已完成加工,要使处于 工位2上的工件转到加工点等待钻加 工,计算机就控制电动机,使带轮带 动转盘顺时针旋转。与此同时,绝对 式角编码器(假设为4码道)输出的 编码不断变化。当输出从0000变为 0010时,表示转盘已将工位2转到图 中的加工点,伺服电动机停转,驱动 器使伺服电动机保持在该位置。
数字式传感器
光电编码器的 应用
光电编码器的应用 1.数字测速
M法测速
数字测速
增量式编码器产生的 脉冲与转动的位移相对应, 测量出输出脉冲的周期或频 率,经计算后即可得到被测 对象的速度。
T法测速
光电编码器的应用 1字测速
T法测速
光电编码器的应用
2.在伺服电动机中的应用

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的长度。

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

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

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

编码器速度和方向检测,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)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

光栅编码器用途

光栅编码器用途

光栅编码器用途
光栅编码器是一种用于测量角度、位置和运动的装置。

它通过光栅条图案和光传感器进行工作。

光栅编码器的用途包括但不限于以下几个方面:
1. 位置测量:光栅编码器可以确定物体的位置和运动。

它可以精确地测量位置,通常用于机械加工、自动化控制系统和机器人操作等领域。

2. 转动角度测量:光栅编码器可以测量旋转物体的角度。

它可以用于航空航天、船舶、汽车、工业设备等需要准确测量角度的工程项目中。

3. 运动控制:光栅编码器可以用于控制机械或电气设备的运动。

它可以提供准确的位置反馈,并与控制系统配合使用,实现精确的运动控制。

4. 速度测量:光栅编码器可以测量物体的速度,尤其是旋转物体的角速度。

它广泛应用于工业自动化和运动控制领域。

总之,光栅编码器通过光栅图案和光传感器提供高精度和高分辨率的角度、位置和运动测量。

它在工业、航空航天、导航、自动化控制等领域具有重要的应用价值。

基于STM32的编码器单方向计数系统

基于STM32的编码器单方向计数系统

基于STM32的编码器单方向计数系统
张凯;郁豹
【期刊名称】《工业控制计算机》
【年(卷),期】2017(30)10
【摘要】研究长线驱动型编码器的单方向计数问题,采用STM32为主控制器进行硬件电路设计和计数软件设计.首先进行系统的总体方案设计;其次设计了以MAX485ESA为数据通信单元、STM32F103VBT6为主控制器的硬件电路系统;然后,采用C语言对主控制器进行编程,以实现计数;最后进行了系统的整体测试.实验结果表明,计数系统能够实现对长线驱动型编码器的单方向计数.
【总页数】2页(P139-140)
【作者】张凯;郁豹
【作者单位】山东大学控制科学与工程学院,山东济南 250061;山东大学控制科学与工程学院,山东济南 250061
【正文语种】中文
【相关文献】
1.基于单片机的增量式编码器计数系统 [J], 吴禄慎;熊辉;高项清
2.基于STM32的变频器+编码器精确定位控制系统设计 [J], 吴涛;李勇波;杨靖
3.基于STM32的绝对编码器信号转换为增量编码器信号装置设计 [J], 沈宝诚; 吴剑飞; 朱嘉
4.基于STM32的增量式编码器故障检测系统 [J], 丛智慧;李冰
5.基于STM32和卡尔曼滤波的纸张计数系统设计 [J], 王鑫;张子轩;张雨鑫;张昊博;王杰;李鹏海;宋立红
因版权原因,仅展示原文概要,查看原文内容请购买。

简单说说光栅尺和编码器的不同

简单说说光栅尺和编码器的不同

简单说说光栅尺和编码器的不同
1、什么是光栅尺?
光栅尺是⼀种长度或位移检测元件,在任何需要检测长度或位移的时候,都可以选⽤光栅尺,前提是需要满⾜光栅尺的安装使⽤条件。

2、什么是编码器?
编码器是⼀种检测⾓度的反馈元件,同时也可以检测旋转速度,在需要检测⾓度或旋转速度时,可以选⽤编码器,前提是需要满⾜编码器的安装、使⽤条件。

3、光栅尺有哪些种类?
按测量介质分类,有玻璃光栅尺,钢带光栅尺。

MICROE的M系列,M II系列,VERATUS系列既可以使⽤玻璃光栅尺;也可以使⽤钢带光栅尺。

按输出信号分类,有增量式,绝对式,MICROE光栅尺皆为可以⼴泛使⽤的增量式光栅编码器。

4、如何选择光栅尺?
应考虑的因素包括:所需测量长度,可接收的信号类型,所需的测量精度,安装空间⼤⼩、需要连接的数控系统等等。

5、什么是光栅尺的测量精度?
光栅尺的测量精度指在任意⼀⽶范围内,光栅尺的测量结果与实际值之间的差距⼩于所标称的值,如有效测量范围2040mm,精度
3um的光栅尺,任意⼀⽶范围内的测量结果与实际值的差距⼩于±3um,注意,不是±1.5um。

6、光栅尺的分辨率是什么意思?
分辨率是在显⽰设备上(如数显表、数控系统),其数值累加的最⼩单位。

光栅尺的分辨率与信号类型有关,如1Vpp正弦波信号可以任意倍频,所以1Vpp信号的光栅尺其分辨率由接收端的设备(如数显表或数控系统)确定,光栅尺信号周期20um,20倍频后是
0.001mm,如果200倍频后分辨率就是0.0001mm。

基于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产生功能,包括可编程的死区时间设定和空间矢量状态。

编码器和光栅尺的区别原理

编码器和光栅尺的区别原理

编码器和光栅尺在原理和应用上存在显著的差异。

编码器基于电磁感应原理,通过检测磁场或光学信号的变化来测量位置和速度。

而光栅尺则是基于光学原理,利用光的干涉和衍射效应,将位移转换成数字信号输出。

具体来说,编码器广泛应用于机器人、汽车、航天等领域,用于测量位置、速度、加速度和角度等参数。

而光栅尺则通常用于机床、测量仪器、半导体设备等精密机器的运动控制。

另外,光栅尺的精度一般可达到0.1微米以下,而编码器的精度一般在几微米到几十微米之间。

在安装和维护上,光栅尺需要更注意光源、探头以及光栅尺本身的位置和情况,维护相对麻烦。

编码器则较为简单,安装时只需要正确安装传感器,维护也相对容易。

总的来说,根据应用需求和场景的不同,可以选择合适的编码器或光栅尺。

基于STM32光栅细分算法在指示表检定仪上的应用

基于STM32光栅细分算法在指示表检定仪上的应用

基于STM32光栅细分算法在指示表检定仪上的应用刘川;张恕远【期刊名称】《机床与液压》【年(卷),期】2014(000)021【摘要】针对光栅测长在指示表检定仪上的应用缺陷,提出了一种光栅位移高精度细分的软件实现方法,在STM32上编程对光栅的两路正交正弦信号进行采集和分析,实现莫尔条纹可逆计数和细分。

该方法省去了计数和细分的外围硬件电路,使得系统简单可靠、成本低。

通过对栅距为20μm的光栅进行200细分的实验研究,并采用Renishaw激光干涉仪检验该方法的细分精度,结果表明其精度满足要求。

%Aimed at the shortcoming in application of grating in calibrator of dial gauge,a method to subdivide grating displace-ment with high precision was proposed which is realized via software. Through programming on STM32,the two orthogonal sinusoidal signals on grating were sampled and analyzed to achieve reversible counting and subdivision of moire fringe. The great advantage of method was the needless of counting and subdividing circuit thus making the system simple,reliable and cost-effective. An experiment research was conducted to subdividing the 20 μm raster pitch into 200 fol ds,and Renishaw laser interferometer test demonstrated the precision of the method. The results show that the precision meets the requirement.【总页数】4页(P129-131,135)【作者】刘川;张恕远【作者单位】西华大学数控研究所,四川成都610039;西华大学数控研究所,四川成都610039【正文语种】中文【中图分类】TH711【相关文献】1.光栅式指示表检定仪的示值误差检定方法研究 [J], 王维菊2.光栅式指示表检定仪示值误差测量结果不确定度评定 [J], 颜蓉3.光栅式指示表检定仪检定技术的再研究 [J], 方明;夏敏4.GZJ型光栅式指示表检定仪的应用 [J], 江学文5.对全自动光栅式指示表检定仪的几点探讨 [J], 谈贤虎因版权原因,仅展示原文概要,查看原文内容请购买。

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

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°,表示反向移动。

这两路方波信号都为差分信号,需要经过差分输入芯片,比如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.。

相关文档
最新文档