ESP32 Arduino读取SSI编码器

用ESP32读取SSI编码器数据

概述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值