基于单片机的旋转编码器鉴相方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
# 鉴相方法及相应算法
在 , 个脉冲周期时间 ! 内"单片机应该能准确判断
88
硬件纵横
!
!"#$%"#& ’&()*+,-&
采 样 的 时 间 间 隔 约 为 ) 9: # 即 可 以 基 本 上 避 免 抖 动 " 在 ) 个 时 间 周 期 ! 内 #! !" 点 电 平 会 变 化 / 次 # 即 单片机可以根据 ) 个脉 冲信号 做出 / 次判断 #具有 倍频 的效果 "但是 由于毛 刺的 存在 #在不要 求倍 频的场 合#通
读 取 ! !" 点 电 平
图 +
编码器周期内输出波形的 / 种组合
方法 #去掉繁 琐的 判断与 比较#使 得运 行时间 大大 缩短# 从而提高响应速 度" 组成地址的方法是& 设 " 次变化进行 ) 次鉴 相 # 第 # 次 变 化 前 #!!" 电 平 值 分 别 记 为 ! # ! "#
缓冲区满1 电平有变化1
’ ! ’ # " 缓 冲 区 内 的 值 为 ’ ! ) ! ’ # 无 法 匹 配 序 列 7’’ ! ’) ! ’’8 # 则 判 断 为 产 生 毛 刺 " 如 果 只 检 测 ) 次 # 会 做 出 ’’ <= ’) 反 转 ! ’)<=’’ 正 转 的 判 断 # 导 致 误 判 "
该鉴相方法具体程序流程如图 - 所示" 按此算法设 计的程序#由于判断比较指令较多#运 行时间较长#总 体响应速度比较低"为了 克服这一缺点#可以采用 将电平状态组成地址的
!"# 编 码 器 工 作 原 理
大多数直线式和旋转式编码器都是光透过光电码 盘和光栏板夹缝形成忽明忽暗的光信号"硅光敏器件把 光信号转换成两组近似于正弦的电信号输送出去 "然后 根据需要把这些信号进行差 值或数 字化 处理 "两 组正 弦 信 号 ! ! " 在 相 位 上 相 差 $% ! $ 经 放 大 整 形 后 变 成 ! ! " 两 组 相 位 相 差 &% ! 的 方 波 $ 根 据 ! ! " 之 间 的 相 位 关 系 即 通过鉴相可确定旋钮的正反转$ 当 ! 超前于 " 时为正 转"而当 " 超前于 ! 时 为反 转"如图 ’ 所示 Baidu Nhomakorabea 旋转 编码 器的输出脉冲宽度随着旋转速度而变化"即转速越高 其 脉 冲 宽 度 越 窄 $ 通 常 每 圈 的 计 数 脉 冲 有 ()% 个 ! *+% 个 ! , %%% 个 等 " 用 户 可 根 据 精 度 的 需 要 进 行 选 择 $
数 ! 每 中 断 " 次 / " 5"6 ! 将 缓 冲 区 值 比 对 " 次 ! 正 反 转 序 列进行 " 次判 断!也 可以 采 用 组 合 地 址 的 方 法 来 缩 短 中 断响应时间$
! 纠错方法
由于编 码器 工作的 环境 可能 比较恶 劣 !输 出脉冲 较 易 受干 扰!产生 毛刺 ’在编码 器快 速旋 转时 !尤 其 是 在 倍 频工作时!由于采样速率 不够!可 能导 致采 样的脉 冲有 遗漏$ 这些都会导致鉴相得出 错误 的结果 !需要 在单片 机程序实现中对这些情况进行纠正$ 如前所述!可以在 单片机处理程序中用比对序列的方法来避免误判$ 此外 还有以下 4 种方法&
3
电平值存入缓冲区
2
’) ! )’ ! )) # 可 以 根 据 / 种 组 合 状 态 之 间 的 变 化 进 行 鉴 相 " 若 正 旋 转 # 则 可 得 到 对 应 的 序 列 7’’ # )’ # )) # ’) # ’’8 #
反 旋 转 则 有 对 应 的 序 列 7’’ # ’) # )) # )’ # ’’8 " 如 表 ) 所 示 的 判 断 表 中 # 行 表 示 当 前 !!" 点 电 平 值 组 合 # 列 表 示 上 一 次 变 化 前 ! !" 点 电 平 值 组 合 # 检 测 到 发 生 ) 次 电 平 变 化 即 可 进 行 鉴 相 " 需 要 指 出 的 是 #若 ! !" 两 点 电 平 相 比上次均发生了变化#则无法进行判断#这说明检测时 遗漏了脉冲或产生了$毛刺%"
! 采 用 定 时 中 断 ! 在 中 断 处 理 程 序 中 检 测 * "+ 点
2
依据单片机工作方式通常有以下两种鉴相方法&
#)% 查 询 法
单 片 机 的 456 引 脚 直 接 连 接 ! ! " 点 # 通 过 循 环 采 样 读 取 ! !" 点 电 平 # 来 判 断 当 前 旋 钮 是 否 旋 转 以 及 旋 转 的 方 向 " ! 点 电 平 与 " 点 电 平 有 / 种 不 同 的 组 合 & ’’ !
# 其 中 ’> # > " ?)% " 则 可 以
组 成 地 址 !)")!+"+ ’’
3
匹配序列1
2
清空缓冲区
!""" " 每 个 地 址 在 @A$:B
程序存储区中都对应一 个值用来鉴相#或者可以 直接存 放程 序地址 #用程
3
判断旋转方向 !处理 图 鉴相算法流程
序计数器直接加载跳转到鉴相完成后的处理程序" 例 如 # 设 " ;- # <) 对 应 反 向 旋 转 # ) 对 应 正 向 旋 转 # ’ 表 示 异常不处理或状态无变化" 根据正!反旋转序列可以得 到如表 + 所示的组合地址存放数据表" 设 ) 个字节长度 的 全 局 变 量 (CD 作 为 缓 冲 区 用 来 存 储 电 平 状 态 值 # 同 时 作 为 @A$:B 存 储 区 的 低 字 节 地 址 " 记 录 ! ! " 点 电 平 值 时 采 用 的 是 先 将 (CD 左 移 两 位 # 然 后 同 ’’’’’’!#"# 相 $ 与 % 的 方 式 " 存 储 - 次 后 # 得 到 (CD 为 ’’ !)")!+"+ !-"- # 将 该 值 作 为 @A$:B 寻 址 地 址 的 低 , 位 # 取 出 数 据 即 可 得 到鉴相结果" 这种方法实际上是采取了用程序存储空间 来换取时间的思路" 在单片机上实现循环检测一般有 - 种方法&
" # ( % ! 相 位 落 后 " 相 位 &’ !
图 ) 编码器输出脉冲示意图
化发生 " 次时#通过分别比对正 !反旋转序列来进行 判 断 " 假 设 " ;/# 即 每 ) 个 周 期 ! 进 行 ) 次 判 断 % # 检 测 到 / 次 变 化 后 #! 缓 冲 区 内 的 值 为 ’ !) !) !’ #" 缓 冲 区 内 的 值 为 ’ ! ’ ! ) ! ) # 则 比 对 序 列 7’’ # )’ # )) # ’)8 可 得 为 正 旋 转 " 假 设 " ;- # 检 测 - 次 变 化 后 # ! 缓 冲 区 内 的 值 为 ’ !
!"# $#%#&$’" () *"# $(*+$, -.’(/-$ !% 0"+%- /-*-’*-/ 1-*"(/% 2+%-/ (. 345
;< =>?’ " =< 3@AB CD?/ " E=!FC G@AB,
9, . F@. , 4H>I @J CK>LD>MH NMDLHAM " OPHQMK@A?Q OAB?AHHK?AB RASM?MDMH " =HJH? /(%%(0 " TU?A> & /. )%/ " OPHQMK@A?Q OAB?AHHK?AB RASM?MDMH " =HJH? /(%%(0 " TU?A>: $%&’()*’ ! 4UH V>VHK >A>PWXHS MUH IHMU@LS @J LHMHQM?AB VU>SH @J MUH ?AQKHIHAM>P K@M>KW HAQ@LHK YW ZT<" MUHA B?[HS S@IH >PB@K?MUIS @J MUH VU>SH LHMHQM ?A Q@II@A DSH >AL ’YDKK ( ?LHAM?J?HL IHMU@LS. \?A>PPW" MUH >PB@K?MUIS >KH MHSM?J?HL YW VK@BK>II?AB ?A !23. +,- ./(0& ! ZT<& K@M>KW HAQ@LHK & VU>SH LHMHQM 旋转编码器作为速度和位移的反馈传感器广泛应 用于家电!无线电设备控制中"同时在电动机!电梯 等需 要对运动速度和位移信息反馈的自动化控制场合也起 着 重 要 作 用 # 编 码 器 通 常 有 ! 相 !" 相 两 路 输 出 信 号 "信 号包含了被测对象的旋转方 向以及 旋转 角度等 信息 "通 常需要由硬件电路或单片机程序进行鉴相处理$ 本文根 据旋转编码器以及单片机的特点"研究并总结了利用单 片机进行鉴相的方法"同时给出了相应的鉴相算法$ 器$ 增量式编码器每转过 # 个单位"编码器就输出 # 个 脉冲 "故称 为增量 式$ 绝 对 式 编 码 器 是 直 接 输 出 数 字 量 的传感器"它的特点是 不需 要计数 "在转 轴的 任何一 个 位置都可读出一个与位置对应的数字码$
" # $ % ! 相 位 领 先 " 相 位 &’ ! !
常采用多次检测判断来识别毛刺#以增强判断的可靠性 " 通 过 设 立 两 个 缓 冲 区 用 来 分 别 存 储 ! !" 点 的 电 平 # 当 检 测 到 ! !" 两 点 中 任 何 一 点 电 平 发 生 变 化 时 # 把 ! !" 两点的电平值分别存入各自缓冲区中" 当检测到电平变
出 ! 点相对于 " 点的相位情况" 根据开始采样检测的 时刻不同#在 ! 内可以将采样的波形 分为 如图 + 所 示的
/ 种不同的组合情况" 若两点产生波形的组合不在下列 / 种情况中#则表明由 于外 部干 扰或抖 动产 生了异 常的
波形 #通常把 这种 波形称 为$毛 刺%"
!) !* !+ !, !!. !/ !0
别 " 毛 刺 # 的 方 法 ! 并 通 过 在 !23 单 片 机 上 编 程 验 证 了 所 给 出 的 鉴 相 方 法 $ 关键词 ! 单片机 %旋转编 码器%鉴 相
中 图 分 类 号 ! 45(’’ 文献标识码! ! 文 章 编 号 ! ’)067008+9/+,+ :,(7 ++/+ 7+(
表!
’’ ’) )’ ))
" !# 相 位 判 断 表
’’
无 正 反 错
’)
反 无 错 正
)’
正 错 无 反
))
错 反 正 无
为 了 保 证 采 样 ! !" 电 平 时 没 有 脉 冲 遗 漏 # 对 采 样 频率要求比较高" 通常需要保证在编码器以最快速度旋 转 时 # 在 !!" 任 一 点 + 次 电 平 变 化 之 间 有 + 次 以 上 的 采样 #以便可以比较最 近 + 次 的电平 #去除 因为 其他外 界条 件变化 产生 的抖 动"试验 表明 #对于常 用的 编码 器 #
!直接在后台循环程序中添加任务" +-
硬件纵横
表!
!!!""" !!"!"" !"!!"! !""""!
其他
’()*+(), -,./0123,
组合地址存放数据表
#" " " #" "!!!!" "!""!" ""!"!! "!"!!! ! #" " " #"
* %+ 点 电 平 放 入 缓 冲 区 ! 设 立 一 个 全 局 变 量 记 录 中 断 次
! 旋转编码器简介 !"! 旋 转 编 码 器 的 分 类
根据结 构和 工作原 理不 同 "编 码器可 以分 为光电 式 编 码器 %电磁式 编码 器和机 械接 触式 编码器 $ 其中 "光电 式编码器由于具有较高的精度!抗干扰能力强!接口简 单!使 用方便 等特 点得到 了广 泛应 用 $ 根据测量的参数不同"编码器又可分为旋转式和直 线式编码器$ 旋转式编码器用于测量转角转速"直线式 编码器用于直线位移!运动速度的精密测量$ 旋转编码器又可分为增量式编码器和绝对式编码
硬件纵横
1)(0.)(, 2,*34567,
基于单片机的旋转编码器鉴相方法研究
徐 海 !! 胡 荣 贵 "! 张 东 ! -#. 电 子 工 程 学 院 研 究 生 一 队 ! 安 徽 合 肥 /(++(0 " /. 电 子 工 程 学 院 )+/ 室 ! 安 徽 合 肥 /(++(01
摘 要! 就如何使用单片机对旋转增量编码器鉴相进行了研究! 给出了常用的鉴相算法以及识