编码器的使用

视频

提高部分-第4讲 编码器的使用(1)_哔哩哔哩_bilibili

编码器简介

编码器分类

增量编码器: 着重计算的是位移和速度。

磁电式+增量编码器

霍尔传感器会通过霍尔效应,将磁场信号变成脉冲信号的输出 单片机通过检测脉冲信号 就能测量出位移和速度了。 速度计算:已知转一圈的总脉冲数, 利用 某一段时间 单片机接收到的脉冲数/总脉冲数就知道(转速/某时间)

为什么要有 A B两个霍尔传感器通道,且A B两个通道 有一定的错位?

错位会有90°相位差(如下图所示)

答:因为 不止需要测量它的速度,还需要测量转向。

例如:磁盘在逆时针旋转时 a在前,b在后 此时 a先获得上升沿, 90°后 b 获得这个上升沿。

光电式+增量编码器

利用光电系统,将位移转换成计数脉冲,用脉冲个数计算位移和速度。

编码器参数

分辨率(编码器单位)(在实际中叫精度)

编码器总分辨率 = 编码器 一圈所计算的脉冲数(但由于定时器会倍频 所以计算时要乘以倍频系数)  在淘宝上看的分辨率=物理分辨率  实际分辨率=物理分辨率 * 定时器倍频数(一般是 4 )

假如  编码器PPR = 10  4分频 则 编码器总分辨率 为 10*4=40

PPR(也称为 多少线)


2、PPR:PPR是指编码器在一个完整的旋转周期内输出的脉冲数。编码器通过光电或磁性传感器来检测旋转运动,并将其转换为脉冲信号输出。

SR

1、SR:SR是指编码器在一个完整的旋转周期内输出的离散步数。表示编码器的输出信号在一个旋转周期内的离散变化次数。例如,编码器的分辨率为1000SR,那么在一个完整的旋转周期内会输出1000个离散的步数。

精度(实际上是一个误差值)

是  编码器输出 和 实际值 的 误差值 

最大响应频率

最大转速

电机减速比

直流减速电机 会有电机减速比  

例如 减速比 30:1  编码器 算出:300转 /分   所以 实际转轴输出转速 = 300/30 =10转/分 

增量式编码器倍频技术

输出脉冲波形信号 的两种形式

1.占空比50%的方波,通道A和通道B 相位差   90°

2.正弦波 这类模拟信号 通道A和通道B 相位差 90°

基于方波的编码器倍频技术 分辨率倍频(更精准了)

编码器计数规则:

码盘透过光线时 输出1(高电平) 

通过检测 高电平的数量来判断转过的位置

通过 检测A和B谁先到达高电平来 判定 运动的方向

我们将 检测高低电平变化的 思路 转换为   使用单个通道 上升沿 和下降沿 进行计数的模式 就能实现倍频

如下图 累计脉冲计数

如果 通道A 上升沿 和下降沿 都计数 一次 就能得到 X2的图形

如果是 A  B  相组合(A B通道相差1/4个周期) 上升沿 和下降沿 就能得到 X4  的图形

编码器接口介绍

为什么叫 带有方向的 外部时钟

增量式编码器旋转的话就会输出相应的脉冲信号 脉冲信号作为 定时器 的外部时钟来源(定时器的时钟其实相当于这种脉冲信号) 定时器的时钟就是桉数计时的

脉冲信号来得越快 编码器计数就越快  旋转速度就和计数的快慢 就形成了一个连接

有方向  就是 A  B两相

通过方向的识别 编码器是正转还是反转 对应成了 计数器是 增加还是 减少

STM32编码器接口框图

编码器产生两路脉冲信号 a b 输入到 定时器的 通道一和通道二(通道三和通道四不支持编码器模式)

编码器常用测速方法

测量方法:

对于 电机 转速 的测量  可以把  增量式  编码器 安装在电机上 用编码器的轴连接电机的轴, 用控制器(STM32)对编码器进行计数 最后通过 特定的方法 求出电机的转速。

测速方法:三种(M法、T法、MT法)

电机测速 M法:频率测量法 用定时器计时 溢出中断

M法:

n(转速 r/s)= M0(编码器单位时间内的脉冲数) / (T0(单位时间)* C(单圈的脉冲数))
即 单位时间内的脉冲数 / 单圈的脉冲数
推导方法:
M0 / T0 = 1秒的总脉冲数 M1
M1 / C = 1秒转过多少圈(转速)

在理想 测量过程中 开始测量到结束测量(一个测量周期内) 得到的脉冲数 恰好是整数个脉冲数。

但实际上  开始计时时刻 和结束计时时刻 可能在 一个周期的任意一个位置

会使我们最大会有两个脉冲的误差。 

在速度越高时,2个脉冲误差的误差就比较小,

但在低速时,M0只有几个脉冲 此时2个脉冲误差的误差值就比较大.

 例:  已知 编码器转过一圈  脉冲数 4000, 在  2 S 内 测出来 产生脉冲数为 8000 可以理解为 

转过了2圈用了2S 转速就为1圈/秒。

电机测速 T法:周期测量法

T法:
n(转速 r/s)= F1(测量的脉冲频率) / ( C(单圈的脉冲数) * M2(测量的脉冲数)) = 1 / C * TE(编码器两个脉冲之间的时间)
推导方法 :
1 / F1 = T1(周期), T1 * M2 = TE
TE * C = T2 (编码器转一圈所用的时间)
1秒 / T2 (即1秒内转过多少圈 (转速) )

T法更适合测低速 和M法相反

电机测速:MT法

F0和C都为常数  转速n由 M0 和M1决定 

STM32的编码器接口

(TM32定时器功能 编码器功能高级定时器 1 8 通用定时器 2 5 才有)

通过 计数方向 是+/- 得到 编码器 的 旋转方向   向上计数--正向  向下计数---反向

假设: TI1:编码器通道A    T12:编码器通道B   

TI1FP1:反向后的TI1 = 反向后的编码器通道A   TI2FP2:反向后的TI2 = 反向后的编码器通道B

相反信号的电平:计数时,所参考的 另一个通道的电平   

这些电平决定了 计数器的技术方向

通过上表整理得到下表:

TI1比TI2 提前1/4 个周期 

如果以 TI1边沿为检测边沿  当检测到TI1的上升沿(高电平)时 TI2为 低电平 此时计数器就向上计数一次  

当T1 为下降沿时 TI2为高电平  计数器 依旧 向上计数一次 

TI1比TI2落后1/4 个周期

以 TI1的边缘 作为检测边缘

当检测到TI1上升沿时  TI2为高电平  此时  计数器 向下 计数一次

下一个时刻 检测 TI1的 下降沿  TI2为低电平 此时 计数器 再向下  技术一次

代码实现方式:(时基初始化结构体 编码器初始化结构体)

高级定时器 1 8  通用定时器 2  5  都有 编码器接口

对于STM32结构体中对于编码器的意义

EncoderMode :

编码器模式 可以选择 通道A计数 通道B计数 A/B双通道计数
(实际上是选择 2倍频还是4倍频)

通道A   和通道B 的设置 是一样的!!

IC1/IC2Polarity:

输入捕获信号 极性选择   在编码器当中 选择 反向或不反向  一般选择不反向

在输入捕获模式中 用于选择 触发的边沿  但是在编码器模式中 用于输入的信号是否反向(这个和编码器计数触发边沿没有关系!!),只是用于匹配电机和编码器的旋转方向 

如果编码器的计数方向 与实际电机的旋转方向相反  只需要修改这一个选项就能匹配电机的旋转方向。 而不用再去修改硬件电路的连接。

选择 输入信号是否反向   用于 设定编码器输出的运动方向与实际的运动方向是相同还是相反  RISING是相同??

IC1Selection :

选择 输入通道 是直连还是非直连  但 编码器模式 只能用于直连 

ICPrescaler 和 ICFilter :

对输入信号的 分频和滤波  在实际采样中会对采得的信号 进行补偿 所以这两个选项很少用

电机测速

电机滤波 --冒泡排序

int i,j,temp;
int data[10]={1,5,4,3,9,10,15,14,6,0};

for(i=10,i>=1;i--)
{
  for(j=0;j<i-1;j++)
    {
       if(a[j]>a[j+1])
            {
               temp = a[j];
               a[j] = a[j+1];
               a[j+1] = temp;
            }
    }
}

一阶低通滤波

Y(n) = q*X(n)+(1-q)*Y(n-1)

 

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值