概述
SSI编码器可以是单圈的也可以是多圈的绝对值编码器,掉电后再上电,不管在掉电期间是移动了还是没有移动都可以提供绝对位置信息。这是这个编码器的特点。
SSI编码器信号传输一般是采用RS485或者是RS422电平,用单片机对编码器信息读取要将单片机的TTL电平转换成RS485或者是RS422电平。手头过去项目剩下的有一个双RS485的电路,做一个实验板,读取SSI编码器。
SSI信号
SSI编码器一般会介绍:
编码形式:灰码或二进制
代码位:
- 单圈 :13位
- 多圈 :12位
总位置信息25位。
连接
将上面的一路RS485_2的B-和A+作为SSI编码器的C-和C+连接,模式设置为写模式,即控制信号DE485_2设置为高电平。将RS485_1的B-和A+作为SSI编码器的D-和D+数据端连接,模式设置为读模式,即控制信号DE485_1设置为低电平。这就完成了硬件连接。外部的电源连接一般的编码器会要求是9-30V。差分方式其实不用管这个电源从哪里来的。MCU侧接受差分电平信号。
软件编程
初始化GPIO
void gpio_init()
{
pinMode(LED, OUTPUT);
pinMode(DATA_PIN, INPUT); // 数据端,连接RS485的Rxd端
pinMode(DATA_EN, OUTPUT); // RS485控制信号,读取,低电平有效
digitalWrite(DATA_EN, LOW);
pinMode(CLOCK_PIN, OUTPUT); // 时钟端,连接RS485的Txd端
pinMode(CLOCK_EN, OUTPUT); // RS485控制信号,写,高电平有效
digitalWrite(CLOCK_EN, HIGH);
digitalWrite