基于SPI读取绝对值编码器SSI信号的方法设计概述

2020-05-25 02:28梁昌鹏陈天桂李雪景
科学与信息化 2020年5期

梁昌鹏 陈天桂 李雪景

摘 要 SSI是绝对值角度编码器最常见的输出方式,基于单片机普遍没有SSI接口,介绍一种单片机普遍都有的SPI读取绝对值编码器SSI输出的方法,实现了输出信号的角度转换。文章从硬件和软件两方面给出了设计的思路和方法。

关键词 SSI;SPI;绝对值编码器

引言

相对增量式编码器,绝对值编码器具有分辨率高、绝对位置定位精度高和抗干扰性强等优点,越来越多使用在工控上,其输出信号方式有并行和串行输出,由于绝对值编码器分辨率少则十几位的精度,所以绝对值编码器常用串行输出。而串行方式有很多输出接口,如同步串行接口SSI、BiSS、CANopen等,其中SSI是绝对值编码器最常用的串行方式。在工控系统中,绝对值编码器SSI信号的正确读取是非常重要的,而单片机一般没有对应的SSI接口,传统的方法是用几个IO口模拟SSI通信协议进行读取,但这会给软件上增加成本。利用一般单片机集成的SPI,对SSI通信协议进行模拟,可实时读取输出信号,减少了软件上的成本。本文基于STM32系列MCU芯片为控制核心的基础上,搭建电机测试平台,用SPI模拟SSI接口协议,读取绝对值编码器角度信号,实现电机的正常运转。

1 总体设计思路

1.1 设计方案

以STM32系列MCU作为接收信号的芯片,基于SPI的绝对值编码器SSI接口读出方法的设计框图如图一。

SSI接口出来的是两组422差分数字信号,经过一组逻辑电平转换电路,转换成两组可以让STM32系列芯片识别的单端LVTLL信号,与芯片SPI接口的两个端子MISO和SCK对接,通过软件解析SPI接收到的SSI信号,从而完成对编码器输出信号的读取工作。

1.2 基于SPI读出SSI信号的工作原理

SSI是一种同步的、串行的数字传输,时钟由作为主机的单片机发出,数据由作为从机的编码器发出,配合时钟同步响应,通讯是单向的。SSI输出的是二进制码,信息包括编码器的位置值和状态位等,其时序图如图2。

其中Clock为输入时钟;Data为编码器输出信号;T为一个时钟信号的周期且0.1MHz≤1/T≤2MHz;Tm为数据中断时间;Tp为时钟脉冲高位时间;MSB为编码器数据高位;LSB为编码器数据低位。

SPI是一种高速的、全双工、同步的通信总线,可以同时发出和接收串行数据,以及提供频率可编程的时钟SCK,实现两个设备之间的数据传输。SPI时序图如图3。

对比两者的时序图可以看出SPI通信协议中的四种时序模式需要配置成第一种时序模式,也就是CPOL=1以及CPHA=0的时序模式下才能与SSI接口对接,完成输出信号的读取工作[1]。

2 硬件的电路设计

SPI接口连接SSI接口所需要的逻辑电平转换电路原理图如图4。

其中DATO+、DATO-、CLKO+和CLKO-是SSI接口的两组差分信号,SN65HVD50DR是一款全双工RS485驱动器和接收器芯片,把滤波后的差分信号转换成可以让SPI接收的TTL信号SSI_DATA和SSI_CLK。R303和R311是用来消除差模干扰,保证稳定性的[2]。

3 软件设计

3.1 SPI模式的软件设计

带SPI接口的主控芯片选择STM32系列的MCU,开发环境选择keil MDK,使用C语言进行软件程序编程。由于SPI每一帧数据是8位或者16位的,需要根据绝对值编码器的位数选择合适的数据帧格式进行设置。由于只需要接收SSI的信号,可以配置SPI为单工只接收通信模式。设置SPI为主机模式,发送的时钟脉冲频率配置在SSI时钟脉冲频率范围内,并通過CPOL=1以及CPHA=0来设置SPI工作在第一种时序模式。由于SPI在第一个时钟下降沿就开始采集信号,而SSI是第二个时钟下降沿传输信号,所以从SPI接口中读取的信号中要去除第一个信号,以第二个信号开始作为准确的角度数据进行解析。

3.2 控制系统的软件设计

基于SPI读出绝对值编码器SSI信号的控制系统软件设计主要是MCU的各种模块的初始化。MCU模块初始化是对各种寄存器进行设置,包括各种定时器TIM的初始化。其中高级定时器TIM1的初始化可以设置PWM的死区互补,适合用来配置驱动器所需要的PWM波形,并根据SPI读出的编码器SSI信息所代表的电机转子位置来配置PWM的输出模式,从而实时改变MOSFET的导通顺序,实现永磁同步电机的运转。

4 系统测试

绝对值编码器安装在永磁同步电机轴上为控制系统提供电机的转子位置,选择分辨率为12位的,输出的数据信号时序图如图5,由STM32系列的MCU通过SPI采集后的信号如图6,可以看出信号读取的准确性。笔者以基于SPI读出编码器SSI信号的STM32系列MCU作为控制系统的主控芯片,进行电机的位置测试,实现了永磁同步电机的正常运转。经过测试表明,SPI读取到的编码器SSI角度信号准确地反映了电机的转子位置。

5 结束语

本文从硬件和软件两方面设计阐述了基于SPI的绝对值编码器SSI接口的信号读出方法,相比于IO口模拟SSI协议的方法节约了CPU的资源,基于此读出方法的伺服驱动系统也实现了与永磁同步电机的匹配调试。

参考文献

[1] STM32F10XXX Users manual[M]. STMicroelectronics,2009:1-548.

[2] 陈志同.基于SSI协议的绝对值编码器通信接口研究[D].天津:天津理工大学,2014.