绝对值编码器:从调研到开发

本文详细记录了一位工程师从零开始接触编码器采样模块开发的过程,包括调研编码器的种类、功能、接口分析,设计模块与分析,以及单元调试。在调研阶段,工程师通过咨询供应商、研究产品手册和实际应用,理解编码器的选型、工作原理和实际用途。在设计模块时,探索了友商产品,明确了功能需求,并进行了SPI配置、GPIO调试等。单元调试阶段,对编码器的TP/Tm值、调零和旋转方向等功能进行了调试,最终实现了编码器数据的读取和转换。全文展现了从技术层面到应用层面的完整开发流程,对其他项目开发具有参考价值。

前言概述

最近因为工作需要,接触到了一个全新的领域就是编码器采样模块的开发,在接触以前或多或少接触了一些运动控制的知识,但是对于编码器本身的内容还是,一窍不通的。所以在这段开发过程中我将一些自己遇到的困难,有关于技术层面的,但是更多的还是,如何将一个我们用户使用的应用层体验转化为一个纯技术开发的这样一个过程,将这些的困难和解决过程记录下来。
对于一个完全陌生的领域,如何一步步地迈入到了解,深入研究和分析实际应用,最终将他们转化为一个开发者脑海中的蓝图与构思,最终付诸实现,这样一个完整的过程,总结其中的思路变化和探索方式,我相信对很多其他的项目开发也都是有益处的。
本文将涉及到产品的实际应用,代码开发层,硬件上的设计对开发的要求,剖析编码器本身,与友商的成熟产品的分析,甚至是与编码器厂商的斗智斗勇都会涵盖到,写的不好与不够严谨的部分请多包涵,不论如何,祝大家,大年初一生活愉快,新年快乐。



一、调研阶段

信息的收集重要性是毋庸置疑的,只不过在我这个单独的项目经验来说,就显得比较坎坷。至于为什么是坎坷的,首先公司里没有提供太多可参考的资料,有一份以前(准确的说是十多年前的代码)做定制的产品的代码,也是做的编码器读取模块,但是对于一个对编码器都尚不清楚的人来说,看着这种代码的感觉就是,每一行都看懂了,但又看不懂他写了个啥,直接移植过来呢,这个旧产品已经没有生产了,代码也没人维护,想跑起来看看什么情况都不可能,更何况CPU也更换了,直接移植恐怕比我新写一份代码要花的精力还要久,而且极大可能还整进来个半生不熟的知识在我脑袋里,所以我干脆就计划全部推翻,从零开始建设这个项目,好在开发的周期并不紧张。

调研阶段的第一件事就是搞清楚,什么是编码器?

随即打开各类网站检索关键字,
在这里插入图片描述
然后就是众多我当时看不懂的内容扑面而来,那种感觉就像以前上课老师直接抛了一个“paradigm”单词,然后根据这个单词写一篇论文一样吃了屎的难受。由于CSxN是一个比较偏技术的论坛,所以在这个阶段我在这里找一些了解编码器应用的文章其实不太合适,这里都是一些如何使用或者分析编码器类型的文章更多,于是调转方向,先去度娘那里搜罗了一圈,编码器是什么样的场景。
在这里插入图片描述
结果毫不意外,清一色的广告占据前言,受益于导师教会我的第一个社会经验,我开始了我的首次liar角色扮演历程。百度提供的这么多供应商我也不能白白浪费资源了,于是我开始登录这些网站,一开始的时候比较羞涩,我直言相告我正在开发一个产品会用到这些编码器,想咨询一下编码器的使用环境等一些细节内容,有的厂商会毫不避讳的告诉你一些细节,当然我受到的更多的是比较平淡和冷漠的对待,毕竟大家都是出来做生意的,谁也不想浪费时间,不过在这一点上大厂商尤其是进口厂商做的确实很好,技术支持和销售都十分热情,毫不吝啬地提供各类资料以及微信沟通告诉我有些特性在场景中是如何应用的,需要注意什么。在一开始的碰壁之后,我开始调整了一下我的严谨liar身份,于是我开始转换了下我的话术,在之后的沟通中我直接报家门,然后说我的项目中需要采购编码器部件以及使用在我的实验室当中,虽然带一点欺骗但是我说的确实是实话,只不过买谁的就是后话了,在这个过程中供应商十分积极主动,都希望达成长久的合作,然后开始获得越来越多的帮助,只不过这当中有一个更为严重的问题,那就是他们都不是开发和实施人员,能得到最好的支持也只能局限在编码器开发者的支持了,至于上层的使用方法和环境其实并不是他们所关注的内容,这很无奈。

在咨询完厂商以后,我需要一些来自现场真正使用这些编码器的经验,但毕竟我们是天天坐办公室的研发,更是一个入职短时间的工程师,所以在经验上很缺乏,但好在之前在实验室工作过程中结识的公司工程部的同事,他们在工厂实施项目中或多或少接触过一些编码器的使用及变频伺服电机的使用。

不论在咨询谁,开发者都需要了解被采访者的思路,供应商提供的建议是站在他的角度,工程同事的意见也是围绕实际应用,但是如何将这些信息筛选出适合研发人员的代码结构,是十分重要的环节。

有了这一段信息的收集,我大致明白了我的核心问题:

“起点 与 终点”

作为一个电子工程师,我们所围绕的问题一直在于“如何使用”,所以“起点”问题就在于怎么用编码器,“终点”问题就是用编码器干什么。
搞清楚什么是编码器的核心就是:读取位置,反馈位置这个问题之后,就要进入更深入的调研,也即是第二个问题,编码器的选型。
关于选型这个事情,对于我们本身开发的模块来说其实没有那么重要,开发嘛就是来什么干什么就对了。但是在这里我的导师引导我了一个思路,或者说是一个更实际的问题:

如果有一天一个客户问道,他们想要一个编码器读取模块,那么我是否需要了解对方使用的实际编码器才能给他们使用,或者说我该问客户关于编码器的什么参数,来判断我的产品是否可以满足客户的需求呢。

围绕这个什么样锅可以炒这碗饭的问题,我需要做出对应的编码器选型工作,这也是最令我头疼的问题,毕竟选型的第一步就是要知道那些参数的含义,而不同的厂商说明书上的参数表达的方式并不一致(比如调零设置的也有叫SET的),有的甚至没有一些参数(比如可靠数据产生时间),那么首先要搞懂这些参数的含义就显得十分重要,此外也要知道为什么有的参数在一些厂家中没有被罗列出来,是不重要还是不具备,又或者是小厂商的遗漏等诸多问题。
撇开这些参数不谈,光光是编码器的分类估计就让人几近崩溃了,光电编码器,绝对值编码器,BISS编码器,电容式编码器,增量编码器,磁电式编码器,差分编码器,正交编码器等等数都数不清楚的名词,再加上之前我接触过的伺服电机,步进电机,脉冲输出模块等等更多的名词在短期内涌入,很容易让自己陷入泥潭而放弃。
好在互联网是强大的,加上同事的帮忙,我大致将编码器的类型都整合出来,市面上的很多命名的方式虽然复杂,但是他们都遵循一个特征:

// “信号采集原理” + “数据可否记忆” + “通信原理” + “分别率”+ 编码器

举个例子, 光电式 绝对值型 SSI 4096 编码器, 也就是本文的主题编码器。这是这个编码器的全名,但是在沟通过程中和实际销售过程中一般我们会直接简化掉,就说是SSI编码器,因为用户在选购中会侧重考虑我一定要SPI通讯的接口,接下来才会考虑他的分辨率和绝对值的特性,当然这两个参数也非常关键,至于他的信号采集原理,一般光电式会比较多,但是当用户考虑这个因素的时候,也一定会考虑使用环境的影响,当出于环境的考虑,那么我们就会接触到光电式的或者是电容式的这一类的名词了。
简而言之,许多命名都为了方便实际需求而存在,虽然对初入门者不太友好,但是了解了以后也就理解了,所以经验十分重要的一点也体现在这里,融会贯通是一门很深的艺术。

搞清楚前两个问题,需要调研的就是最后的,编码器的实际用途是什么。

我们可以很容易的说出,编码器的唯一工作就是读取并反馈当前位置,但是这又有什么应用场景呢,通过调研我简单描述几种可能存在或实际存在的场景。

  1. 工业机器人的位置控制。不同的工业机器人有三轴的,六轴的等等,形象的理解就相当于人类的肘关节,这些关节转动多少的幅度是需要被读取的,这也是编码器的工作内容之一。有了精确的位置读取,这就能提供更高精度的机械臂运动轨迹,所以在这一领域应用的更多的是绝对值编码器,毕竟它能实现掉电保持位置记忆的功能,不然谁也不知道重新上电后的机械臂会把自己的位置记录成什么了,所以绝对值型和增量型的区别在这里显得尤为重要。
  2. 工业流水线的位置锁定。工业化的流水线生产在每个环节中都要特定的事情要做,但是如果运行的位置不够准确,比如一个易拉罐封装,位置没运行到就执行了封装(当然皮带上也会有稳定的结构件保护)。
  3. 最广泛的测距使用。大型设备之间的距离测量,一般在设备之间都是通过一定的机械结构实现拖拽,但是在我们一些电机的控制中,由于存在摩擦和机械结构的影响,其实是很难做到我们要求电机转动1000个脉冲,电机就能转动1000个脉冲的角度的,
    或多或少会存在偏差,甚至在电机正反转的时候也会有一两个脉冲的丢失也属常见,所以在这个阶段需要编码器绕过电机,直接在运动的轴上读取实际的旋转角度就显得尤为重要。
    以上几种情况对于编码器而言都是一种操作,叫做限位开关。

有了调研的结果,就可以一步步展开项目的实施了,但是依旧会有一些疏漏在过程中进行修正,但大致的方向应该不会有错。

二、编码器分析

1.编码器种类

在这里插入图片描述
编码器在他的本身来说有很多不同的种类,以上我对总体上的编码器做出了分类。对于编码器这个宽泛的概念来说,他的核心功能只有一个,那就是读取位置或者是读取角度,其他的很多分类就是要考虑实际使用的环境,以及价格这种经济参数。除此之外编码器的分类就很多了,根据采集信号的原理可以分为光电编码器,电容型编码器等等,这主要取决于编码器内部构造(信号转换模式)的原因,有的是通过光电转换,当然这也是最常用的,也有的是电容,不同的材料和结构设计也造成他们的适用场景和环境容错率(比如电容类型的不适宜一些有强磁环境)有不同。

https://blog.csdn.net/best_xiaolong/article/details/108525563?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164370152816780265493037%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164370152816780265493037&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-108525563.pc_search_result_control_group&utm_term=%E7%94%B5%E5%AE%B9%E7%BC%96%E7%A0%81%E5%99%A8&spm=1018.2226.3001.4187

(这里有一篇我认为写的非常不错的博客, 详细阐述了不同材料特性设计原理的编码器各种特性以及他们的原理)

除了材料还有绝对值型编码器和增量型编码器,他们的区别主要在于,能否做到“掉电保持”,绝对值的编码器及时掉了电也能在重新上电后从上一次的记录开始计数,但是增量型的编码器重新上电后一切就归零了。而SSI编码器就是绝对值型编码器中的一员,“SSI”表示的是它的硬件接口,采用motorola的SPI总线,采用差分信号的方式,这个特性和编码器本身关系不大,只是一个通讯方式的定义,所以可以理解成SSI光电绝对值编码器通过光电方式计数,将获得的脉冲数记录在编码器自身MCU中,然后这个MCU通过SSI串口与我们开发的编码器模块MCU进行通讯,告知我们那个脉冲数(即位置值)。

简而言之,举个形象的例子,编码器材料的不同决定了我们在什么样的餐厅吃饭,绝对值和增量型则决定我们点餐时是否需要参考大众点评的记录(是否记录上次值),SSI与BISS或其他接口协议则决定我们是用勺子还是用筷子,最后的我们吃的是加工过的米粉(格雷码)还是没加工过的米饭(自然二进制码),虽然种类众多,但是归根结底,我们的目的就是只

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值