基于江科大标准库的编码器测速

一、原理部分

转得越快方波的频率就越高,取任意一相的频率便可以知道速度。正转和反转是极性的问题,不是绝对的,就是一个相的信号要么提前要么滞后。

编码器接口的设计逻辑是:首先把A相和B相的所以边沿作为计数器的计数时钟,出现边沿信号时,就计数自增或自减。到底是增还是减?计数的方向是由另一相的状态来确定。当出现某个边沿时,我们判断另一相的高低电平。如果对应另一项的状态出现在上面的表里那就是正转反之就是反转。

定时器的预分频器和CCR寄存器与编码器接口无关。我们之前一直在使用的72MHz的内部时钟和在时基单元初始化时设置的计数方向并不会使用。

编码器接口的输出部分就是去控制CNT的计数时钟和计数方向,CNT的自增和自减就是这个硬件设计自己弄好的,根据上面的那张表来看,自行判断自增还是自减,我们看软件上面的CNT显示出来的值就知道编码器有没有接反了。

其中的预分频器一般是选择不分频,一般设置ARR为65535。但是我不知道为什么我的编码器的反转计数不是65535往下减,而是4的后面一长串数字。

正转是向上计数,反转是向下计数。这个是规定的,电路就是这么设置的。假设用TI1FP1接的是A相,那么A相看A相的上升沿。如果此时B相对应的电平是低电平,那么这个时候就是正转,向上计数反之向下计数。

表里面的在TI1和TI2上计数,就是AB相的上升沿下降沿都会看,并且判断此时相对信号的电平来判断是正转还是反转是向上计数还是向下计数。如果是仅在TI1计数或者是仅在TI2计数,那么这个时候就看的是A相的上升沿或者是下降沿或者是B相的上升沿或者是下降沿然后来看相对信号的电平来判断上升沿还是下降沿。

一般选择的是在TI1和TI2上面计数,这种计数方式精度最高。正交编码器的抗噪声原理也在这节课里面,感兴趣可以了解一下。

二、代码部分

调整编码器的极性:比如接一个编码器发现它数据的加减方向反了,想要正转的方向结果自减了,可以换AB相的引脚(其实这个没太听明白)。它这个好像是在标准库里面写代码,可以软件控制反不反相,我一般使用的是hal库,所以应该只需要外接的线换一下。

测编码器的位置:读出CNT的值。测量编码器的速度和方向:每隔一段时间取出一次CNT,然后把CNT清零,这就是测频法测量速度。

用江科大的OLED显示可以显示负数。

这个代码里面有三个点:

1、uint只能返回正数 int就能够显示负数

2、如果没有清零函数,就是可以测量轮子转一圈的脉冲,可以一直加

3、编码器测速的话,就是首先你要加一个清零函数,然后在一个定时器中断里面读取这个编码值,如果是10ms,那么测出来的就是10ms的一个速度,可以把这个速度放到pid里面去用作速度环

相关推荐
国科安芯5 小时前
立方星与微纳卫星综合电子微型化趋势下的抗辐射MCU选型综述
人工智能·单片机·嵌入式硬件·mcu·risc-v·抗辐射
xunyan62345 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
WD137298015576 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
创界工坊工作室8 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus
Zwawa9 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·单片机·嵌入式
单片机仿真设计10 小时前
【proteus仿真设计】基于 STM32 的开荒机器人遥控控制系统设计(仿真图+程序)
stm32·嵌入式硬件·机器人·proteus
smartpi_ai10 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
我先去打把游戏先10 小时前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
木子n111 小时前
车载以太网与SOME/IP服务化通信实战-02.状态机与订阅:SOME/IP-SD的三态迁移、重传账与上电风暴
嵌入式硬件·网络协议·车载系统·车载以太网·some/ip
Gongsion11 小时前
30V输入耐压|1.5μA超低静态电流|200mA输出,CSM52系列:线性稳压器LDO,12V母线转3.3V/5V传感器、MCU弱电支路可靠稳压方案
单片机·嵌入式硬件·车载系统·无人机·智能家居