你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
攻城狮Melo 发布时间:2022-11-8 11:53
说明
  本节比较简单,主要是演示I2C接口和SPI接口读取编码器角度。为增加大家对编码器的理解,后半部提供四种常用编码器的操作说明,并提供源代码。


一、硬件介绍
  本节实验适合运行在SimpleMotor和STM32最小系统板上(Bluepill)。
1.1、硬件准备
1.1.1、SimpleMotor方案

[NM9WNJ}7_~AF5)CNT7V4SN.png

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

bb2efdb08cb64845bd0c3e24d9d16354.png


1.1.2、STM32方案

[KZ1)I6CCG{Y8EB4FJIU3CG.png

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

c90f53ab2faf488ba630a4de16b23915.png


1.2、硬件连接
1.2.1、原理图

6b0ddb68bd7a48d4a84eb0486e2c22f4.png

1dda2ae560444cf19bae5fc8eb98f317.png

1.2.2、接线

50d3012838864b09bae5dee3b4706589.jpg

或者

8b816cfc3ccf4b8a943082feb222d0c1.png


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

2.1、代码解析
  1、主循环读角度值,每隔1秒打印一次。可以同时读两个编码器,只需读一个的屏蔽另一个。
  如果需要打印速度,可以把屏蔽打开。

65437bce0f544709920cea0b0fe02cf6.png

  2、“MyProject.h”文件中选择编码器型号,1表示使用,0表示不用。只用一个编码器的,可以把不用的都设置为0。

e77df6e31c224854afaf1b484e80ae88.png

  3、上电初始化,根据“MyProject.h”中的宏定义编译。

4b8347b014ae41e591a7df7842d86a0e.png

  4、需要说明的是I2C读编码器的代码,本节代码采用硬件I2C,支持I2C1和I2C2。STM32的硬件I2C代码网上有很多参考,但是写的比较乱,移植了几个都不能用,在ST官网上找了一个例程,因年代久远,与现在常用的库函数风格不同,都是直接操作寄存器,不过做为底层代码,不会影响大家的体验。

553f706f771344389961fbbbcb654d08.png

  5、ST官网I2C例程,我放在网盘了,有需要的可以下载看看。

f9e4dc20d73c42999babe1c3d41d7ad8.png

  6、I2C的波特率是400KHz,SPI波特率是9MHz。

b0e3f3271927449da498524cc4cb4cf5.png

0e465e6353c64e129fa7de625012389a.png

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

c8283cec57264a478a4532ab86b7abe5.png

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、STSW_STM32020_V4.0.0

ST官方例程,包含I2C硬件通信,请自行查看。

43be5e9cc4e947619e6b9d7423d7cbd3.png

3.2、STM32ReadTLE5012B_spi2_m2
①、原理图

a7b365d272ab408fba7583bcecd87ed8.png

②、SimpleMotor的M2接口连接

6bfe0ea890654faeb1215e1058e71b43.jpg

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

2a32f699eef24870945844d86b61c3ef.png

④、串口打印角度0—360°

ad72df0957774151b82267c45100e643.png

3.3、STM32ReadTLE5012B_spi2_m1
①、原理图

01b49dabbb0f4303bdd9fbf27faec169.png

②、SimpleMotor的M1接口连接

c98beb2b60a04f17b6ffbc6bda800767.jpg

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


3.4、STM32ReadTLE5012B_spi1
①、原理图

6b030cde4041472d9030f2fc6beb7315.png

②、不支持SimpleMotor,用STM32最小系统板连接

321e6fef7a6840c3a983e2719d0dfcd3.jpg

3.5、STM32ReadTLE5012B_ABZ
①、原理图,
  利用定时器的编码器接口模式,捕获AB信号;配置I信号为中断输入,电机每转一圈触发一次中断,把AB信号的脉冲计数打印。

b1db10c6fe2d474699dabd5453588378.png

②、用STM32最小系统板连接

3.6、STM32ReadMA730
  请自行对照手册查看代码

3.7、STM32ReadAS5600
  注意:这是模拟I2C
①、原理图

519660f97ba44e92b97540b9ec2c3468.png

②、SimpleMotor的I2C2连接

5dbf7996bc614194855fd04c741e54c9.png

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

23ebbd6ad03f45a2bf56a3ef86923c41.png

④、串口打印角度0—360°

d1d06033bd94491fa538697a873efed5.png

————————————————
版权声明:loop222


收藏 评论0 发布时间:2022-11-8 11:53

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版