AMS5601的ardunio和STM32驱动开发
本文有麦粒电子撰写,并提供相应产品服务。
-
前言
目前ams关于磁编码芯片用的比较多的可能是ams5600,能够输出pwm信号,电压信号以及I2C通信数字读取。这款芯片目前在市面上也比较容易买到,价格相对也便宜。有需要的AS5600模块可以点击链接了解。
但是在编码器应用中,尤其在在电机应用。对编码器的输出信号还有一种A、B、Z相对信号的方式。在这种情况下ams5600绝对值位置检测显得就不能满足要求。由此,我们把目光注意到了ams5601。这款芯片功能和ams5600一脉相承,只是多了一个A、B向输出的类型和按钮检测。
-
简介
AS5601是一个12bit精度的磁编码器芯片,能够输出增量AB信号,iic信号,push信号。引脚信息如下图所示。 下图为本文使用的**as5601模块**
值得注意的是as5601内部有给LDO稳压芯片,所以其可以有2种电压操作模式(5V和3.3V),相应的电路图如下图所示。可根据自己的情况选择。
-
开发
准备:径向圆形磁铁;ardunio开发板;as5601模块;杜邦线若干。
1.将控制板利用杜邦线连接as5601的相应IIC,AB,电源等接口。 2.圆形磁铁放置再AS5601芯片正上方,最远距离为3mm,当然如果磁铁磁性够强,也可以更远。 3.编写ardunio驱动代码。如下图所示
输出结果如下所示
-
注意点
as5601提供永久零点写入功能,分别是Burn_Angle Command和Burn_Setting Command 。区别是一个可以写入3次,一个只能写入一次。如下如图所示。
-
后续增加了更加详细的as5601的寄存器命令功能,AB相检测,永久烧录功能,并且再STM32上实现驱动开发。详情请点击如下链接。****
来源:oschina
链接:https://my.oschina.net/u/4349448/blog/3448191