机器人运行过程中,电机转动会产生各种干扰信号。通过两组电源给机器人驱动系统和控制系统供电,以消除干扰对稳定性的影响。

码盘加陀螺仪的方法在应用过程中发现陀螺仪的角度会随着机械振动发生漂移,影响定位精度。

光电编码器,是一种集光、机、电为一体的数字测角装置。作为一种重要的角度传感器,在众多领域用途广泛。光电编码器的核心部件是光电器件,它是能将光能转换为电能的一种传感器。光电转换的理论基础是光电效应,即金属、半导体等材料在光照下释放出光电子的现象。近年来随着科技的发展,传统的光学编码器在使用中存在许多无法克服的技术问题,特别是在航天、自控等领域对微型传感器的要求越来越高,要求光学编码器向高精度、高分辨率、小型化和智能化方向发展。

1.1  编码器概述

光电编码器是一种将位移或角度的模拟信号转换成相应的电脉冲或数字量角度/角速度检测元件,具有精度高、体积小、工作可靠、接口数字化等优点。光电编码器一般由透镜、光栅盘(码盘)、光敏元件和放大整形电路组成。工作时,光栅盘与电机同速旋转,同时一个带有辨向狭缝(或狭缝群)的扇形薄片与圆盘平行放置,当光线通过这两个做相对运动的光栅盘时,光敏元件接受到的光通量也时大时小地连续变化,经放大整形电路处理后变成脉冲信号。通过测量捕捉到的脉冲数目和频率即可测出工作轴的转角和转速。而电机的当前转速通过每秒光电编码器输出脉冲的个数可以计算出来。编码器原理图如下图所示:

1.2  编码器的种类和工作原理

根据检测原理,编码器可分为光学式、磁式、感应式和电容式。根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。绝对编码器是直接输出数字量的传感器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码。编码盘上沿径向有若干同心码道,码道越多,分辨率越高,相邻码道的扇区数目是双倍关系。工作时,光敏元件根据受光照与否转换出相应的电平信号,形成二进制数。对于一个具有N位二进制分辨率的编码器,其码盘必须有N条码道。目前国内已有16位的绝对编码器产品。绝对式编码器图案如下图所示。

绝对式编码器与增量式编码器不同之处在于圆盘上透光、不透光的线条图形,与增量式编码器相比,绝对编码器有若干编码,根据码盘上的读数信息,检测绝对位置。它的特点是

(1)      可以直接读出角度坐标的绝对值。

(2)      抗干扰特性强、数据的可靠性大大提高,没有累积误差。

(3)      分辨率是由二进制的位数决定的。

(4)      不受停电、干扰的影响,什么时候需要知道位置,什么时候就去读取它的位置。

增量编码器是以脉冲形式输出的传感器。输出的信号为方波信号,其中又可以分为带换向信号的增量式编码器和普通的增量式编码器,普通的增量式编码器具备两相正交方波脉冲输出信号A、B,以及零位信号Z。通过内部两个光敏接收管转化其角度码盘的时序和相位关系,得到其角度位移量增加和减少。利用光电转换的原理输出三组方波脉冲A、B、Z相。A、B两组脉冲相位差90度,从而方便的判断旋转方向,故而增量编码器又叫正交编码器(如下图)。

编码器旋转一圈会输出固定的脉冲,脉冲数由编码器光栅线数决定。需要提高分辨率时,可利用90度相位差的A、B两路信号进行倍频或换用更高分辨率编码器。Z相为每转一个脉冲,只在固定的位置才会发出脉冲,用于基准点定位。

带换相信号的增量式编码器除具备ABZ输出信号外,还具备互差120度的电子换相信号UVW,UVW各自的每转周期数与电机转子的磁极对数一致。对于此类编码器,在这不讨论。

增量式光电编码相对角位移量通过计数电路对脉冲进行累计计数得到,其特点是结构简单、抗干扰能力强、可靠性高、机械平均寿命长、价格低廉,非常适合竞赛机器人,我们选用的增量式编码器一HEDS 5540,实物图

1.3  速度、方向、转角的测量

增量式光电编码器输出三组脉冲A, B和Z相,A, B两组脉冲相位差90度,而Z相为每转一个脉冲,用于基准点定位。利用A, B和Z相可以实现转速的测量、运动方向的判断以及转角的测量。当编码器正转时,A相脉冲波形比B相超前 ,而反转时,A相脉冲比B相滞后 。

增量式光电编码器系列有各种不同类型的输出电路可供选择,其输出电路类型一般有:带上拉电阻的 NPN 型、集电极开路 NPN 型、推挽输出型、差分输出型。

M测量法(适用于高转速场合)测量固定时间间隔内脉冲个数来确定转速。

T测量法(适用于低转速场合)测量相邻脉冲之间的时间间隔来确定转速。

(1)        转速测量

(2)        方向判别

光电编码器的检测窄缝群相位相差90度,可产生两列频率可变、固定1/4周期相位差(即90度)的正交编码脉冲序列A和B。当光电编码器正转时,光线首先通过检测窄缝群产生A信号的高电平,即A相超前B相90度;与之相反,当光电编码器反转时,A相则滞后B相90度。如下图所示。

由此可得,光电编码器输出脉冲的个数确定具体的位置和计算运动的速度,而驱动轮的运动方向可以通过两组脉冲信号A相和B相的相位差来(上升沿的前后顺序)判断。

(3)        位移计算

编码器安装在与主动轮同轴的从动轮上,与主动轮同步转动。设从动轮周长为L,编码器线数(旋转一周脉冲数即500)为M,t时间输出的脉冲数为N,t时间轮子走过的距离△S就是:通过方向输出引脚是高电平还是低电平决定是加计数还是减计数。

1.4  利用单片机进行码盘计数的方法

(1)        常规方法:

文献[2]中提到了码盘的四倍频来实现提高码盘精度的方法,以及码盘信号的抖动去除电路,同时给出了码盘辩向的方法。在利用单片机进行测量码盘信号时,本文结合实际情况给出了相关的参数计算,即所选用单片机是否可以用来测量码盘信号以及中断程序能够处理的指令数,对于单片机初学者有一定的指导作用。论文后面提供了C语言程序,方便读者领会。总体而言,此文言简意赅,思路清晰。当然,对于其中提到的jitter去除的电路的作用有待进一步研究。此种方法通常在51单片机、AVR及Arduino等单片机上运用较多。

(2)        特殊方法:

用常规方法有时候可能用起来比较复杂,还需要自己设计搭建jitter消除电路。而现在用的很多的STM32F1~STM32F4等系列的单片机已经集成了编码器接口,具体参见《STM32参考手册》13.3.12编码器接口模式。

STM32F4自带的正交码盘配置库函数

void TIM_EncoderInterfaceConfig  ( TIM_TypeDef *  TIMx,

uint16_t  TIM_EncoderMode,

uint16_t  TIM_IC1Polarity,

uint16_t  TIM_IC2Polarity

)

2.结论

用STM32F1~F4单片机都能很好的出进行增量式编码器的数据采集,另外STM32还带滤波功能。

参考文献

[1]     基于双码盘的竞赛机器人运动控制系统设计与研究,电子科技大学,李金彦,骆德渊,2009.5

[2]     基于单片机的增量式编码器计数系统,仪表技术与传感器,吴禄慎,熊辉,高项清,2013.No.9。

增量式编码器c语言,增量式编码器相关推荐

  1. ec11编码器c语言程序,旋转编码器 关于EC11计数的程序 - 下载 - 搜珍网

    压缩包 : e09f3b72b0b3edc883d8ce7c7fbba.rar 列表 旋转编码器check/Doc/readme.txt 旋转编码器check/keilkill.bat 旋转编码器ch ...

  2. ec11编码器c语言程序,EC11编码器识别程序——有时不准确,请达人指点

    本帖最后由 Lpdengsh 于 2012-5-25 10:02 编辑 不懂汇编  传个STM32的C程序  可以参考一下 /* 函数:EC11_1_Read() 功能:EC11旋转读取 参数:无 返 ...

  3. 增量式编码器c语言,关于增量式编码器编程指导及使用方法的介绍

    关于增量式编码器编程指导及使用方法的介绍 文章来源:http://www.kindele.com/  发布时间:2016/05/13    点击数: 在目前的编码器市场,增量式编码器主要被分为三种类型 ...

  4. [自编码器:理论+代码]:自编码器、栈式自编码器、欠完备自编码器、稀疏自编码器、去噪自编码器、卷积自编码器

    写在前面 因为时间原因本文有些图片自己没有画,来自网络的图片我尽量注出原链接,但是有的链接已经记不得了,如果有使用到您的图片,请联系我,必注释. 自编码器及其变形很多,本篇博客目前主要基于普通自编码器 ...

  5. 增量式光栅尺与绝对式光栅尺的区别及发展趋势

    增量式光栅尺与绝对式光栅尺的区别及发展趋势: 在现代机加行业中,大多采用光栅传感器来进行位置反馈装置.由于光栅尺能够对系统实行全闭环控制,降低滚珠丝杠热变形等原因引起的误差,提高加工精度,所以目前中高 ...

  6. 位置式 PID 控制算法和增量式 PID 控制算法

    数字 PID 控制算法通常分为位置式 PID 控制算法和增量式 PID 控制算法 一.位置式 PID 算法 : e(k): 用户设定的值(目标值) - 控制对象的当前的状态值 比例P : e(k)积分 ...

  7. 旋转编码器c语言程序,【E课堂】旋转编码器的编程思路

    旋转编码器应用于角度定位或测量时,通常有A.B.Z三相输出.A相和B相输出占空比为50%的方波.编码器每转一周,A相和B相输出固定数目的脉冲.当编码器正向旋转时,A相比B相超前四分之一个周期;当编码器 ...

  8. 编码器c语言斌编程,旋转编码器的编程思路

    旋转编码器应用于角度定位或测量时,通常有A.B.Z三相输出.A相和B相输出占空比为50%的方波.编码器每转一周,A相和B相输出固定数目的脉冲.当编码器正向旋转时,A相比B相超前四分之一个周期;当编码器 ...

  9. C语言增量内存申请 realloc

    C语言增量内存申请 realloc void* realloc (void* ptr, size_t size); Reallocate memory block Changes the size o ...

最新文章

  1. shiro框架的使用及扩展
  2. 洛谷——P1106 删数问题
  3. LeetCode(69):x 的平方根
  4. 独立开发人员的自由之路 ——1
  5. Lua === Lua 十分钟基础入门上手
  6. 收藏:DPDK内存基本概念
  7. IOS开发基础之UI基础的团购源码完整版本
  8. php token 验证,PHP如何实现Token验证
  9. redis 多线程_唬人的Redis多线程,也就那么回事
  10. netatalk,轻松将linux变成你的Mac File Server!!!
  11. c语言五个整数排列,刚学c语言,老师让用if编一个五个数字从大到小的排序,有那个大神能帮我,谢谢啦...
  12. ubuntu如何查看系统是多少位和系统版本号
  13. html实心圆点特殊符号,和平精英名称添加圆点符号的方法 和平精英圆点符号代码分享...
  14. 智慧医院绩效管理方案
  15. laravel实现点餐系统
  16. c++11:std::declval、decltype
  17. 计算机网络怎么运行内存,运行内存,教您如何扩大电脑的运行内存
  18. CF791A Bear and Big Brother 【题解】
  19. 一个股市老操盘手的突然感悟
  20. 三角形的内切圆和外接圆--【英雄会】

热门文章

  1. Mysql DBA(一)
  2. python操作excel(二):自动填充
  3. JDBC(Java数据库连接) 学习笔记 第四天
  4. 跳一跳辅助源码学习(主流分辨率全适配)
  5. tao.Opengl
  6. denoted(denoted by)
  7. matplotlib中的imshow()绘图长宽比例失调,调整长宽比(备忘)
  8. 2022年指数与指数公司行业研究报告
  9. 两码一号:整体方案回顾
  10. 【实例】python 使用beautifulSoup 抓取网页正文 以淘宝商品价格为例