编码器-单圈绝对值编码器原理与控制代码

导语:增量式编码器是将角度转化为周期性的电信号,再将这个电信号转化为脉冲,用脉冲的个数表示位移的大小;绝对式编码器内部的码盘的每一个位置对应一个确定的数字码,因此他的测量值只与起始和终止位置有关,与测量过程无关。

一、SSI通信协议简介

SSI(synchronous serial interface)同步串行接口。SSI通讯的帧格式如下图所示。数据传输采用同步方式,在空闲阶段不发生数据传输的时候时钟和数据都保存高电位,在第一个脉冲的下降沿触发编码器载入发送数据,然后每一个时钟脉冲的上升沿编码器送出数据,数据的高位在前、低位在后,当传送完所有的位数以后时钟回到高电平,数据也回到对应的高电平。

二、增量式编码器和绝对式编码器

增量式编码器是将角度转化为周期性的电信号,再将这个电信号转化为脉冲,用脉冲的个数表示位移的大小;绝对式编码器内部的码盘的每一个位置对应一个确定的数字码,因此他的测量值只与起始和终止位置有关,与测量过程无关。绝对值编码器因其每个位置绝对唯一、抗干扰、无需掉电记忆,已经广泛应用于各种工业控制系统中,实现角度、长度的高精度测量和控制。

三、单圈绝对式编码器工作原理

的单圈绝对值编码器内部有个码盘,码盘上有若干个码道,码道上有通孔和暗孔(不透光),对光电类的编码器,码盘位于光源与光接收器之间,当某个码道处于光源处(或者称为测量接口电路处),光电接收器接收到通过通孔的光信号置1,没有接收到光信号(暗孔)置0,这样一个固定的角度位置就可以被编码,十进制角度被编码成n位二进制;如图所示4位二进制,位数越高,码道数越多,编码器的测量分辨率也就越大,比如12位的编码器,分辨率为360/2^12=360/4096=0.0878。编制而成的二进制数据在接收到触发信号(SSI模式时一个上升沿),数据被移入到移位寄存器中,接下来,在接收器同步时钟模式下,每一个上升沿发送一位数据到数据线,对其进行读取。

四、实例代码

本测试实例通过读取旋转角度,并将角度信息发送到串口助手中

(https://item.taobao.com/item.htm? spm=a230r.1.14.68.1ee0c2dfGeO7eUid=591334271759ns=1abbucket=19#detail)

1、接线:

编码器采用5v供电,TTL电平输出,通过三根线与单片机(stm32f10)传输数据。

2、代码:

(CSN-PA5;CLK-PA6;DO-PA7)

CLK-模拟同步时钟,第一个下降沿开始传输数据,之后每一个上升沿输出数据;CSN-控制信号,数据传输时低电平,结束高电平;

DO-数据输出端口

端口配置:

void Gpio_Init(void){   GPIO_InitTypeDef  GPIO_InitStructure;     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //使能PA端口时钟  //GPIO_DeInit(GPIOA);
//PA5-CSN -高速推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, GPIO_InitStructure); // //PA6-CKL GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // GPIO_Init(GPIOA, GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz //PA7-DO GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(GPIOA, GPIO_InitStructure); }

12位每次输出一个二进制位,将其读出并存储;开始读取数据时CSN需要一个高到低的电平跳变,然后循环读取中是CLK低到高的跳变,最后结束CLK和CSN都为高电平。

猜你喜欢

推荐排行

  • 压力之下空压机油气分离器的故事
  • 机器的心脏破碎机的秘密
  • 江苏巨能碟式离心机旋转的智慧与效率的升华
  • 中国股市走势分析深入解读上证指数的涨幅与波动因素