江苏通力建设官方网站,国外花型设计网站,爱站查询,茶叶商城网站建设STM32 TIM#xff08;四#xff09;编码器接口
编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量#xff08;正交#xff09;编码器的信号#xff0c;根据编码器旋转产生的正交信号脉冲#xff0c;自动控制CNT自增或自减#xff0c;从而指示编码器的…STM32 TIM四编码器接口
编码器接口简介 Encoder Interface 编码器接口 编码器接口可接收增量正交编码器的信号根据编码器旋转产生的正交信号脉冲自动控制CNT自增或自减从而指示编码器的位置、旋转方向和旋转速度 正交编码器输出的两个方波信号相位相差90度超前90度或者滞后90度分别代表正转和反转。编码器接口工作流程接收正交信号自动执行CNT的自增或自减最终的实验现象编码器有两个输出一个是A相一个是B相然后接入到STM32定时器的编码器接口编码器的接口自动控制定时器时基单元中的CNT计数器进行自增或自减。比如初始化之后CNT初始值为0然后编码器右转CNT就右转产生一个脉冲CNT就加一次比如右转产生10个脉冲后停下来那么这个过程CNT就由0自增到10停下来编码器左转CNT就–左转产生一个脉冲CNT就自减一次 比如编码器再左转产生5个脉冲那CNT就在原来10的基础上自减5停下来。编码器接口其实就相当于是一个带有方向控制的外部时钟同时控制着CNT的计数时钟和计数方向这样CNT的值就表示了编码器的位置。如果我们每隔一段时间取一次编码器的值再把CNT清零那么每次取出来的值就表示了编码器的速度。编码器测速实际上就是测频法测正交脉冲的频率CNT计次然后每隔一段时间取一次计次这就是测频法的思路。编码器计次能根据旋转方向不仅能自增计次还能自减计次是一个带方向的测速。 每个高级定时器和通用定时器都拥有1个编码器接口 两个输入引脚借用了输入捕获的通道1和通道2 编码器的两个输入引脚就是每个定时器的CH1和CH2引脚CH3和CH4不能接编码器。
正交编码器
正交编码器一般可以测量位置或者带有方向的速度值一般有两个信号输出引脚一个是A相一个是B相。当编码器的旋转轴转动时A相和B相就会输出这样的方波信号转的越快方波信号的频率就越高所以方波的频率就代表了速度去除任意一相的信号来测频率就能知道旋转速度了但是只有一相的信号无法测量旋转方向因为无论是正传还是反转都是这样的方波信号。想要测量方向还必须要有另一根线的辅助。 正转时A相提前B相90度反转时A相滞后B相90度当然正转时是A相提前还是A相滞后并不是绝对的这只是一个极性问题毕竟正转和反转的定义也是相对的总之就是朝一个方向转是A相提前另一个方向是A相滞后。正交信号精度更高A、B相都可以计次相当于计次频率提高了一倍其次正交信号可以抗噪声因为正交信号两个信号必须是交替跳变的所以可以设计一个抗噪声电路如果一个信号不变另一个信号连续跳变也就是产生了噪声那这时计次值是不会变化的。 编码器接口的设计逻辑 首先把A相和B相的所有边沿作为计数器的计数时钟出现边沿信号时就计数自增或自减具体是自增还是自减有另一相的状态来决定。当出现某个边沿时我们判断另一相的高低电平从而判断是正转还是反转继而确定是自增还是自减。 边沿另一相状态A相↑B相低电平A相↓B相高电平B相↑A相高电平B相↓A相低电平 边沿另一相状态A相↑B相高电平A相↓B相低电平B相↑A相低电平B相↓A相高电平
编码器接口框图 编码器接口有两个输入端TI1FP1和TI2FP2分别要接到编码器的A相和B相可以看出编码器接口的两个引脚借用了输入捕获单元的前两个通道所以最终编码器的输入引脚就是定时器的CH1和CH2这两个引脚。 信号的通路是CH1经过输入滤波器和边沿检测电路通过TF1FP1通向编码器接口CH2经过输入滤波器和边沿检测电路通过TF2FP2通向编码器接口。CH3和CH4和编码器接口无关。后面的是否交叉、预分频器和CCR寄存器与编码器接口无关。 编码器接口的输出部分相当于从模式控制器去控制CNT的计数时钟和计数方向例如如果出现了边沿信号并且对应另一相的状态为正转则控制CNT自增否则控制CNT自减。 在这里之前在使用的72MHz内部时钟和我们在时基单元初始化时设置的计数方向并不会使用因为此时计数时钟和计数方向都处于编码器接口托管的状态计数器的自增和自减受编码器控制。 编码器接口基本结构
输入捕获的前两个通道通过GPIO口接入编码器的A、B相。然后通过滤波器和边沿极性检测产生TI1FP1和TI2FP2通向编码器接口。编码器接口通过预分频器控制CNT计数器的时钟同时编码器接口还根据编码器的旋转方向控制CNT的计数方向编码器正转时CNT自增编码器反转时CNT自减 这里ARR是有效的一般设置ARR为65535最大量程。这样利用补码的特性很容易得到负数比如CNT初始为0正转CNT自增01234567……反转CNT自减0下一个数就是65535接着是6553465533可以把这个16位的无符号数转换为16位的有符号数根据补码的定义65535就对应-165534就对应-265533就对应-3……这样就可以直接得到负数十分方便。 工作模式 TI1FP1和TI2FP2界的就是编码器的A、B相在A相和B相的上升沿或者下降沿触发计数具体是向上计数还是向下计数取决于边沿信号发生的这一时刻另一相的电平状态也就是相对信号的电平TI1FP1对应TI2TI2FP2对应TI1就是另一相电平的意思。 边沿另一相状态A相↑B相低电平A相↓B相高电平B相↑A相高电平B相↓A相低电平 例如假设TI1接A相TI2接B相在TI1和TI2上计数当A、B相为上表这4个状态时就是正转计数器需要自增上表第一个状态A相上升沿B相低电平对应下表就是TI1FP1上升沿TI2FP2低电平执行的是向上计数上表第二个状态 A相下降沿B相高电平对应下表就是TIFP1下降沿TI2FP2高电平执行的是向上计数以此类推。 实例均不反相
第一个状态TI1上升沿TI2低电平由表可知TI1FP1上升沿TI2FP2低电平对应向上计数所以计数器变高了一级接着后面的这几个状态由查表可知都是向上计数正转。接着后面的毛刺展示的就是正交编码器抗噪声的原理了在这里TI2没有变化TI1却跳变了多次不符合正交编码器的信号规律正交信号两个信号交替变化这里TI2没变化但是TI1变化了多次显然是一个毛刺信号二通过下面这张表的逻辑就可以不计数把这种噪声过滤掉。 比如毛刺部分开始TI1上升沿TI2低电平查表得向上计数自增下一个状态TI1下降沿TI2还是低电平查表得向下计数自减然后继续TI1上升沿TI2低电平自增继续TI1下降沿TI2低电平自减。所以如果出现了一个引脚不变另一个引脚连续跳变的毛刺信号计数器就会--来回摆动最终计数值还是原来那个数并不受毛刺噪声的影响这就是正交编码器抗噪声的原理。 接着是反转的波形都是向下计数计数值下降然后TI1不动TI2多次跳变计数值也是来回摆动过滤噪声最后是正转向上计数。 实例TI1反相 TI1和TI2都会经过边沿检测和极性选择的部分在输入捕获模式下这个极性选择是选择上升沿有效还是下降沿有效的但是在编码器接口模式下显然上升沿和下降沿都是有效的上升沿和下降沿都需要计次。 所以在编码器接口模式下不再是边沿的极性选择而是高低电平的极性选择如果我们选择上升沿的参数就是信号直通过来高低电平极性不反转如果选择下降沿的参数就是信号通过一个非门过来高低电平极性反转所以就会有两个控制极性的参数选择要不要加一个非门反转一下极性。 把TI1高低电平反转一下就是这里的TI1反相需要先将TI1高低电平取反才是反相后实际给编码器接口的电平然后在查表第一个状态应该是TI1下降沿TI2低电平查表得到是向下计数与下图对应。后续也一一对应。 TI1反相的作用比如你接一个编码器发现它数据的加减方向反了想要正转的方向结果却自减了想要反转的方向结果却自增了这时就可以调整一下极性把任意一个引脚反相就能反转计数方向了当然也可以通过直接把A、B相两个引脚换一下。