龙芯2k0300 - 走马观碑组编码器驱动移植

在《龙芯2k0300 - 走马观碑组第21届智能汽车竞赛软硬件设计》中我们使用了LQ_1024线方向mini编码器。

一、LQ_1024线方向mini编码器

龙邱科技mini系列编码器具有以下特点:

● 分辨率有:A/B相正交输出256线、A/B相正交输出1024线、步进脉冲 + 方向输出512线、......;

●旋转速度高,最高转速可达10000rpm

● 宽广的工作温度范围:-40℃ ~ +125℃

● 抗扰性好。本产品采用霍尔检测技术,属于无接触检测,传感器运行不受灰尘或其它杂物影响,很好克服了基于光学检测原理的缺点;

● 体积小巧。直径D:14mm、高H:18mm、轴径:3mm

如果你对编码器一点都不了解的话可以先参考这篇文章:《STM32F103霍尔编码器测速》。

龙邱科技提供的编码器,有带方向输出引脚和不带方向输出引脚两种,这里我使用的是正交A/B1024线方向mini编码器,也就是说我使用的这个编码器除了有A/B输出引脚外,还有单独的方向输出引脚,这样我们就不用通过A/B相信号变化的先后顺序来判断运动方向。

1.1 工作原理

编码器的线数,是说编码器转一圈输出多少个脉冲,如果一个编码器是1024线,说明这个编码器转一圈对应的信号线会输出1024个脉冲,A/B两相转一圈发出的脉冲数一样的,不过存在90°相位差。

由于我使用的编码器带有方向输出引脚,因此:

  • 通过对A相脉冲计数,通过读取单位时间t的脉冲信号的数量,就可以计算出转速;
  • 通过判断方向引脚的高低电平,就可以知道是正转还是反转。

编码器码盘旋转一周A/B相输出的脉冲数目为N,在时间T内统计到的有效脉冲数目为S,那么转速为:

\[n = \frac{S}{NT} \times 60 \]

1.2 硬件接线

1.2.1 左电机编码器

编码器一共引出6个引脚,左电机编码器与龙芯2K0300开发板的连接关系需严格对应,连接表如下:

引脚编号 编码器引脚 含义 连接的龙芯GPIO
PIN1 GND 必须可靠接地,否则可能出现显示异常 GND
PIN2 3.3~5V 直流供电 3.3V
PIN3 A A 相输出,CMOS 电平 GPIO67(SPI2_CS)
PIN4 Dir 方向输出 GPIO72(CAN2_RX)
PIN5 B B 相输出,CMOS 电平 ------
PIN6 nc 悬空 ------
1.2.2 右电机编码器

右电机编码器与龙芯2K0300开发板的连接关系需严格对应,连接表如下:

编码器引脚 含义 连接的龙芯GPIO
PIN1 GND 必须可靠接地,否则可能出现显示异常 GND
PIN2 3.3~5V 直流供电 3.3V
PIN3 A A 相输出,CMOS 电平 GPIO64(SPI2_CLK)
PIN4 Dir 方向输出 GPIO73(CAN2_TX)
PIN5 B B 相输出,CMOS 电平 ------
PIN6 nc 悬空 ------

二、编码器设备驱动

2.1 编码器驱动

2.2 新增设备节点

三、应用程序

3.1 源码

3.2 Makefile

3.3 编译应用程序

四、测试

4.1 烧录设备树

4.2 烧录驱动

4.3 应用程序测试

参考文字

[1] 龙邱科技Mini编码器.pdf