在全国大学生智能汽车竞赛等嵌入式系统竞赛中,编码器是一种关键的传感器,用于测量轮子的转动和车辆的位置。本文将详细介绍什么是编码器、编码器的分类,以及编码器在竞赛中的应用。

什么是编码器?

编码器是一种传感器,用于测量轴的旋转、转动或线性运动,并将其转换为数字信号。它通常由一个光栅盘和一个光电传感器组成,光栅盘上带有刻度线或孔,通过光电传感器检测这些刻度线或孔的变化,从而测量位置和运动。

编码器的分类

1. 增量式编码器

原理:

增量式编码器是通过光栅盘或磁性标记上的刻度线与光电传感器或磁性传感器之间的相对运动来生成脉冲信号的。当光栅盘旋转时,刻度线会遮挡或透过传感器,从而产生电信号。每个脉冲代表轴的微小移动。增量式编码器只提供相对位置信息,通常需要一个初始位置的参考点。

计数方式:

增量式编码器输出脉冲信号,通常以两个通道相位差的方式。通过检测两个通道的脉冲上升沿和下降沿,可以确定转动方向和计数。通常,一种常见的编码方式是ABZ编码,其中A和B通道有90度相位差,Z通道用于确定一个完整的转动周期。

2. 绝对式编码器

原理:

绝对式编码器使用多个轨道和光电传感器,以产生唯一的二进制代码来表示位置。每个轨道上的光栅盘或标记都代表不同的位置值。绝对式编码器不需要参考点,即使在断电后也能保留位置信息。

计数方式:

绝对式编码器通过多个轨道的编码产生唯一的位置代码。每个轨道上的刻度线或标记会与光电传感器交互,生成对应的二进制编码。通过解码这些编码,可以准确地获取绝对位置。

3. 霍尔编码器

原理:

霍尔编码器使用霍尔传感器来检测磁场的变化。在旋转或线性运动中,霍尔传感器会受到磁性标记的影响,产生电压信号。这些信号随着位置的变化而变化,用于确定位置和速度。

计数方式:

霍尔编码器通常具有三个或四个霍尔传感器,可以确定旋转方向和位置。通过检测这些霍尔传感器的状态变化,可以实现编码和计数。

编码器在智能汽车竞赛中的应用

编码器可用于测量车辆的轮速,从而实现精确的车速控制。这对于确保车辆按照规划路径行驶非常重要。

以下是一个简单C语言代码示例,用于模拟编码器计数:

#include <STC15F2K60S2.H>

// 编码器计数
volatile unsigned int encoder_count = 0;

// 初始化编码器
void encoder_init() {
    // 配置编码器引脚和中断
    // ...
}

// 编码器中断服务程序
void encoder_isr() interrupt 0 {
    // 在此处执行编码器计数操作
    encoder_count++;
}

void main() {
    // 初始化编码器
    encoder_init();

    // 启用全局中断
    EA = 1;

    while (1) {
        // 在主循环中执行其他任务
    }
}

系列文章目录

文章分为三个层次

速通版

是希望通过简化的步骤搭建出寻迹小车,进而了解整个智能车是如何实现的,快速上手,为后续参与智能车竞赛做基础。

如果只是为了完成学校智能车初期培训,做出能简单循迹的小车,可以看这个速通版。

全程引导篇

是讲了做出能够完赛的智能车的整个过程,大部分文章只是简单点拨一下,但是附上了相关的文章链接,方便根据自己的情况深入了解。

全程引导篇,能够带你比较系统地了解整个智能车的制作过程,推荐备赛初期或者有车模之后学习。

详细讲解篇

是全程引导篇的补充,由于全程引导篇是引导性质,文章内容只是点拨,缺乏相应的原理或代码讲解,因此写详细讲解篇作为补充。

详细讲解篇会渗透在全程引导篇中。


速通版

智能小车速通版——手把手教程

全程引导篇

智能小车速通版——教程引导(原版)

智能小车速通版——教程引导

智能车入门——IDE安装以及库函数选用

智能车入门——编程语言(c)的学习

智能车入门——简单驱动常用模块

智能车入门——车模器件篇

智能车入门——模块化编程

智能车入门——跑车前的零碎知识

智能车入门——电磁循迹原理与实现

智能车入门——实现低速完赛

详细讲解篇

智能车入门补充篇

智能车入门补充篇——逐飞开源库介绍

智能车入门补充篇——常见宏定义和使用

智能车入门补充篇——模块化编程

智能车入门补充篇——电感值处理、转向控制与巡线

智能车入门补充篇——元素识别

智能车模块详解——按键及按键调参

智能车模块详解——数据存储与读写(eeprom/flash)

智能车入门——I/O、PWM

智能车入门——中断

智能车入门——编码器

智能车入门——陀螺仪

智能车入门——摄像头和CCD

智能车入门——舵机

(更新中)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐