OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7920|回复: 6

SSI通信接口的单圈绝对式编码器的使用

[复制链接]

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2016-10-8
在线时间
59 小时
发表于 2017-2-11 16:42:55 | 显示全部楼层 |阅读模式
SSI通信接口的单圈绝对式编码器的使用
因实验室项目的要求,需要利用绝对式编码器以及stm32做一个摇臂的闭环控制,之前也发现stm32内部也有相应的增量式编码器的读取模式,现将做出的绝对式编码器的一些经验跟大家分享一下。
编码器是将角度或者位移等物理信号转化为可以用以通讯、传输、存储的信号形式的设备,按照工作原理常见的编码器的种类有增量式编码器和绝对式编码器。增量式编码器是将角度转化为周期性的电信号,再将这个电信号转化为脉冲,用脉冲的个数表示位移的大小;绝对式编码器内部的码盘的每一个位置对应一个确定的数字码,因此它的测量值只跟起始与终止位置有关,与测量过程无关。绝对式编码器因其每个位置绝对唯一、抗干扰、无需掉电记忆的优点,已经广泛的用于各种工业控制系统当中,实现角度、长度的高精度测量和定位控制。
本文将以具有SSI接口的ROTARY单圈编码器为例,介绍单圈编码器的工作原理、接口与通讯方式、以及信号处理过程等内容,完成实验测量并评估编码器性能的工作。
单圈绝对式编码器的工作原理
如上图所示,单圈绝对式编码器内部装有一个码盘,码盘上有若干个码道,码道上有通孔和暗孔(不透光),对于光电类的编码器,码盘位于光源与光电接收器件中间,当某一个码道处于光源处(或者称之为测量接口电路位置),光电接收器接收到穿过通孔的光信号置一,没有接收到光信号(暗孔)置零,这样一个固定角度位置就可以被编码,十进制角度被编制成n位二进制;如图所示位4位,位数越高,码道数越多,编码器的测量分辨率也就越大,比如12位的编码器,分辨率位360/4096=0.087890625°。编制而成的二进制数据在接收到触发信号(对于SSI信号模式来说,就是一个上升沿),数据被送入移位寄存器,接下来,在接收控制器同步时钟脉冲下,每个上升沿发送一位数据到数据线,控制器对其进行读取。
SSI信号模式及其接收读取方法
SSI信号采用6线制,两组时钟线和两组数据线以及电源线与地线,时钟线与数据线通常采用RS422或485模式即差分输入输出,数据通讯方式如下图。
数据线与时钟线在空闲时都处于高电平状态,当控制器需要读取编码器位置时,将处于空闲时的高电平拉低,这时编码器内部转换而成的角度二进制数据储存在移位寄存器,当给出一个上升沿时,信号开始传送一位,控制器在高电平时进行读取操作,n位编码器就需要给出n个时钟脉冲,数据由高位到低位进行传输,直至发送完成拉高数据线和时钟线。(注意,不同厂家的编码器要求的时钟周期以及高低电平的建立时间不同,需严格按照要求)
其次,硬件连接时如何将差分信号转换为TTL单端信号也是一个重点,之前做硬件时,查到的资料大都采用MAX488转换模块,实际应用时发现490也同样适用,实际读取精度也较高。
在编写程序的过程中,利用stm32的通用IO口以及SSI信号时序,写出了该信号的读取驱动,并将读取以及转换为10进制以后的角度数据发送到虚拟串口,具体程序见附件。

码盘

码盘

SSI信号时序

SSI信号时序

MAX490

MAX490

读取角度

读取角度

实验4 串口实验.zip

2.77 MB, 下载次数: 644

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2021-6-16
在线时间
0 小时
发表于 2017-3-6 11:51:23 | 显示全部楼层
你好,我最近也在搞编码器,想请教一个问题。stm32应该可以直接和编码器硬件连接吧,只需要3个IO口即可完成信号传输,CSn、CLK和D0。还有就是你程序里面void ssi_Init(void)这个函数,这三句话
GPIO_Initstrute.GPIO_Pin=GPIO_Pin_7;
GPIO_Initstrute.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_Initstrute);//初始化PB8的clk引脚 发出时钟触发编码器传送数据
是不是有问题。

烦请解答,谢谢。
我的qq:873999099
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2021-6-16
在线时间
0 小时
发表于 2017-3-6 19:39:40 | 显示全部楼层
还有就是,片选信号在程序里怎么没有体现?你这个程序有问题吧。
回复 支持 反对

使用道具 举报

19

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
金钱
440
注册时间
2015-2-12
在线时间
40 小时
发表于 2017-3-8 10:45:18 | 显示全部楼层
有的芯片可以不用片选信号的,直接时钟给出去,就可以采集编码器信号了
从不脑残粉,也不跟风黑。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2021-6-16
在线时间
0 小时
发表于 2017-3-9 17:27:11 | 显示全部楼层
维拉帕克 发表于 2017-3-8 10:45
有的芯片可以不用片选信号的,直接时钟给出去,就可以采集编码器信号了

明白了,谢谢。能六留个qq吗?想与您交流一下。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2021-6-16
在线时间
0 小时
发表于 2017-3-10 10:21:58 | 显示全部楼层
维拉帕克 发表于 2017-3-8 10:45
有的芯片可以不用片选信号的,直接时钟给出去,就可以采集编码器信号了

还有,想请教一下,ssi接口和stm32通信是否一定需要电平转换?楼主用的那个MAX488是什么用意呢?
回复 支持 反对

使用道具 举报

19

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
金钱
440
注册时间
2015-2-12
在线时间
40 小时
发表于 2017-3-10 15:26:18 | 显示全部楼层
百合子宸 发表于 2017-3-10 10:21
还有,想请教一下,ssi接口和stm32通信是否一定需要电平转换?楼主用的那个MAX488是什么用意呢?

就我们公司的项目和产品的应用来看的话,没有经过电平转换,直接编码器信号给通信芯片(比如SN75174,SN75175和SN751177等TI公司的芯片),具体的可以看看这些芯片的datasheet以明白芯片的功能,而控制这些芯片就是STM32单片机的I/O口。MAX488我看的话应该是用于RS485通信的吧
从不脑残粉,也不跟风黑。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 05:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表