SimpleFOC移植STM32(三)—— 角度读取 (AS5600、AS5047P、TLE5012B、MA730、MT6701、ABZ)


SimpleFOC的教程比较多,做了一个总链接,欢迎点击阅读:SimpleFOC教程链接汇总

说明

本节比较简单,主要是演示I2C接口和SPI接口读取编码器角度。
为增加大家对编码器的理解,后面介绍常用编码器并提供原理图和源代码。

一、硬件介绍

  本节实验适合运行在SimpleMotor和STM32最小系统板上(Bluepill)。
在这里插入图片描述
20230323更新,增加了MT6701编码器说明

1.1、硬件准备

1.1.1、SimpleMotor方案

序号名称数量
1SimpleMotor1
2带编码器云台电机2
3USB转串口1
412V电源1

两个编码器可以是两个AS5600,也可以是两个TLE5012B,或者一个是AS5600,一个是TLE5012B。

在这里插入图片描述

1.1.2、STM32方案

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

两个编码器可以是两个AS5600,也可以是两个TLE5012B,或者一个是AS5600,一个是TLE5012B。

在这里插入图片描述

1.2、硬件连接

1.2.1、原理图

在这里插入图片描述
在这里插入图片描述

1.2.2、接线

在这里插入图片描述
或者
在这里插入图片描述

二、代码编译下载

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

2.1、代码解析

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

在这里插入图片描述
  5、ST官网I2C例程,我放在网盘了,有需要的可以下载看看。
在这里插入图片描述
  6、I2C的波特率是400KHz,SPI波特率是9MHz。
在这里插入图片描述
在这里插入图片描述

2.2、下载验证

  1、根据实际连接的编码器类型,设置“MyProject.h”中的参数,
  2、编译下载。串口或者SWD,
  3、转动电机,观察角度变化。(角度的单位是rad,速度单位是rad/s)
在这里插入图片描述

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.1、AS5600

在这里插入图片描述
①、原理图
在这里插入图片描述
②、SimpleMotor的I2C2连接
在这里插入图片描述

③、也可以用STM32最小系统板连接
在这里插入图片描述
④、串口打印角度0—360°
在这里插入图片描述

3.2、AS5047P

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

3.3、TLE5012B

3.3.1、STM32ReadTLE5012B_spi2_m2
①、原理图
在这里插入图片描述
②、SimpleMotor的M2接口连接

在这里插入图片描述

③、也可以用STM32最小系统板连接

在这里插入图片描述
④、串口打印角度0—360°

在这里插入图片描述

3.3.2、STM32ReadTLE5012B_spi2_m1
①、原理图在这里插入图片描述

②、SimpleMotor的M1接口连接
在这里插入图片描述

③、也可以用STM32最小系统板连接

3.3.3、STM32ReadTLE5012B_spi1
①、原理图
在这里插入图片描述


②、不支持SimpleMotor,用STM32最小系统板连接
在这里插入图片描述

3.4、MA730

在这里插入图片描述

3.5、MT6701

在这里插入图片描述

每个代码的压缩包解压后有接线图片,可以参考,
每个main.c文件,最上面有单片机的引脚使用说明。
在这里插入图片描述

3.6、ABZ

main.c文件,最上面有单片机的引脚使用说明。
在这里插入图片描述



(完)





请继续阅读相关文章:
SimpleFOC移植STM32(一)—— 简介
SimpleFOC移植STM32(二)—— 开环控制
SimpleFOC移植STM32(三)—— 角度读取
SimpleFOC移植STM32(四)—— 闭环控制
SimpleFOC移植STM32(五)—— 电流采样及其变换

stm32f407是意法半导体公司推出的一款高性能32位微控制器,具有强大的处理能力丰富的外设接口。as5047p是一种高分辨率磁性编码器芯片,可用于测量旋转角度等应用。 要读取as5047p芯片,首先需要连接stm32f407as5047p之间的通信接口,一般可以选择SPI或I2C接口。在stm32f407上,我们可以使用现有的SPI或I2C库来进行通信。接下来,我们需要编写相应的程序代码来读取as5047p的数据。 在SPI接口下,我们可以通过配置SPI控制器的寄存器来设置SPI时钟频率、数据位数、传输模式等参数。然后,通过发送读取命令数据到as5047p,并接收as5047p返回的数据,即可获取到as5047p的信息。 在I2C接口下,我们首先需要初始化I2C控制器,并配置I2C的时钟频率、传输模式等参数。然后,通过发送读取命令数据到as5047p,并接收as5047p返回的数据,即可获取到as5047p的信息。 无论是SPI还是I2C接口,我们都需要按照as5047p的通信协议来进行数据的发送接收。具体的通信协议可以参考as5047p的数据手册,其中包含了通信的格式、命令数据的组织方式等信息。 在读取as5047p之前,我们还需要确保stm32f407as5047p的电源供应正常,并正确连接到通信接口上。另外,根据实际需求,可能需要进行一些初始化配置的操作,比如设置as5047p的工作模式、使能引脚的配置等。 总之,通过合理配置stm32f407的SPI或I2C接口,并根据as5047p的通信协议进行数据的发送接收,即可实现stm32f407对as5047p芯片的读取操作。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值