SimpleFOC移植STM32(三)—— 角度读取

目录


说明

  本节比较简单,主要是演示I2C接口和SPI接口读取编码器角度。为增加大家对编码器的理解,后半部提供四种常用编码器的操作说明,并提供源代码。

一、硬件介绍

  本节实验适合运行在SimpleMotor和STM32最小系统板上(Bluepill)。

1.1、硬件准备

1.1.1、SimpleMotor方案

序号 名称 数量
1 驱动器 1
2 带编码器云台电机 2
3 12V电源 1
4 USB转串口 1

2个电机可以是两个I2C接口,也可以是两个SPI接口,或者一个是I2C,一个是SPI。
SimpleFOC移植STM32(三)—— 角度读取

1.1.2、STM32方案

序号 名称 数量
1 STM32核心板 1
2 云台电机 2
3 5V电源 1
4 USB转串口 1
5 杜邦线 若干

2个电机可以是两个I2C接口,也可以是两个SPI接口,或者一个是I2C,一个是SPI。
SimpleFOC移植STM32(三)—— 角度读取

1.2、硬件连接

1.2.1、原理图

SimpleFOC移植STM32(三)—— 角度读取
SimpleFOC移植STM32(三)—— 角度读取

1.2.2、接线

SimpleFOC移植STM32(三)—— 角度读取
或者
SimpleFOC移植STM32(三)—— 角度读取

二、代码编译下载

  本节代码只支持AS5600和TLE5012B两种编码器,其它编码器请自行移植代码。

2.1、代码解析

  1、主循环读角度值,每隔1秒打印一次。可以同时读两个编码器,只需读一个的屏蔽另一个。
  如果需要打印速度,可以把屏蔽打开。SimpleFOC移植STM32(三)—— 角度读取
  2、“MyProject.h”文件中选择编码器型号,1表示使用,0表示不用。只用一个编码器的,可以把不用的都设置为0。
SimpleFOC移植STM32(三)—— 角度读取
  3、上电初始化,根据“MyProject.h”中的宏定义编译。
SimpleFOC移植STM32(三)—— 角度读取
  4、需要说明的是I2C读编码器的代码,本节代码采用硬件I2C,支持I2C1和I2C2。STM32的硬件I2C代码网上有很多参考,但是写的比较乱,移植了几个都不能用,在ST官网上找了一个例程,因年代久远,与现在常用的库函数风格不同,都是直接操作寄存器,不过做为底层代码,不会影响大家的体验。
SimpleFOC移植STM32(三)—— 角度读取
  5、ST官网I2C例程,我放在网盘了,有需要的可以下载看看。SimpleFOC移植STM32(三)—— 角度读取
  6、I2C的波特率是400KHz,SPI波特率是9MHz。SimpleFOC移植STM32(三)—— 角度读取
SimpleFOC移植STM32(三)—— 角度读取

2.2、下载验证

  1、根据实际连接的编码器类型,设置“MyProject.h”中的参数,
  2、编译下载。串口或者SWD,
  3、转动电机,观察角度变化。(角度的单位是rad,速度单位是rad/s)
SimpleFOC移植STM32(三)—— 角度读取

2.3、其它说明

  1、I2C和SPI速度对比:

- 两个编码器都使用AS5600,主循环3420Hz,
- 两个编码器都使用TLE5012B,主程序15200Hz,
- M1是AS5600,M2是TLE5012B,主程序5530Hz,
- M1是TLE5012B,M2是AS5600,

  以上数据来自实际测试,会有误差。

  2、不同编码器工作电压电流对比:

- AS5600:3.3-5V,6.5mA@max
- TLE5012B:3-5.5V,14mA@Type,
- AS5047/AS5048:3.3-5V,15mA@max
- MA730:3.3V,11.7mA@Type,

  以上数据来自各芯片的数据手册。

  3、本节例程SPI接口使用了TLE5012B编码器,之所以没有使用官方支持的AS5047或者MA730编码器,是因为经过本人的实际测试,这两个芯片的数据不太好,能保证货源的真品性价比非常差。
  本节会把这两个芯片的代码开源,有兴趣的可自行测试移植。


(待续)


本节源码下载:
链接:123
提取码:123

(完)

欢迎加入simpleFOC技术交流群:923734429 (入群申请写:CSDN)


请继续阅读相关文章:
SimpleFOC移植STM32(一)—— 简介
SimpleFOC移植STM32(二)—— 开环控制

上一篇:SimpleFOC(九)—— 霍尔电机控制


下一篇:Python-内置函数_@propery、@classmethod、@staticmethod详解