视频
提高部分-第4讲 编码器的使用(1)_哔哩哔哩_bilibili
编码器单位
编码器总分辨率 = 编码器 一圈所计算的脉冲数(但由于定时器会倍频 所以计算时要乘以倍频系数) 在淘宝上看的分辨率=物理分辨率 实际分辨率=物理分辨率 * 定时器倍频数(一般是 4 )
假如 编码器PPR = 10 4分频 则 编码器总分辨率 为 10*4=40
PPR
2、PPR:PPR是指编码器在一个完整的旋转周期内输出的脉冲数。编码器通过光电或磁性传感器来检测旋转运动,并将其转换为脉冲信号输出。
SR
1、SR:SR是指编码器在一个完整的旋转周期内输出的离散步数。表示编码器的输出信号在一个旋转周期内的离散变化次数。例如,编码器的分辨率为1000SR,那么在一个完整的旋转周期内会输出1000个离散的步数。
增量式编码器倍频技术
输出脉冲波形信号 的两种形式
1.占空比50%的方波,通道A和通道B 相位差 90°
2.正弦波 这类模拟信号 通道A和通道B 相位差 90°
基于方波的编码器倍频技术 分辨率倍频(更精准了)
编码器计数规则:
码盘透过光线时 输出1(高电平)
通过检测 高电平的数量来判断转过的位置
通过 检测A和B谁先到达高电平来 判定 运动的方向
我们将 检测高低电平变化的 思路 转换为 使用单个通道 上升沿 和下降沿 进行计数的模式 就能实现倍频
如下图 累计脉冲计数
如果 通道A 上升沿 和下降沿 都计数 一次 就能得到 X2的图形
如果是 A B 相组合(A B通道相差1/4个周期) 上升沿 和下降沿 就能得到 X4 的图形
电机常用测速方法
测量方法:
对于 电机 转速 的测量 可以把 增量式 编码器 安装在电机上 用编码器的轴连接电机的轴, 用控制器(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 :对输入信号的 分频和滤波 在实际采样中会对采得的信号 进行补偿 所以这两个选项很少用