前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AS5600 数据手册——12位可编程非接触式电位计

AS5600 数据手册——12位可编程非接触式电位计

作者头像
云深无际
发布2021-11-12 18:36:24
5.5K0
发布2021-11-12 18:36:24
举报
文章被收录于专栏:云深之无迹云深之无迹

前几天拆了一个云台,研究了一下具体的实现,是使用的编码传感器。但是资料比较少,我这里收集了一下,需要的可以找我拿一下。

STM32F373C的芯片

下面就是无刷搭配的磁编码器了

后面

正面的小磁铁

我喜欢这个,官网的东西

这个也是一个接线图

代码语言:javascript
复制
https://ams.com/zh/as5600#tab/documents

官网在此

代码语言:javascript
复制
https://pan.baidu.com/share/init?surl=Mh2O3kjxmiBXRPXie9F6-w
代码语言:javascript
复制
i3op

这是找到的一些程序代码

这么多

接线图

嘉立创上面的板子

代码语言:javascript
复制
https://oshwhub.com/colin2135/as5600

芯片的引脚

供电情况

所有资料

AS5600支持Fast-mode Plus模式,SCL能达到1MHz。

代码语言:javascript
复制
https://blog.csdn.net/SC_Electronic/article/details/86105409
代码语言:javascript
复制
https://github.com/capella-ben/microPython_AS5600L
代码语言:javascript
复制
https://github.com/sgall17a/AS5600

芯片框图,注意供电和控制以及输出

I2C的时序

数据读

数据写

角度输出

代码语言:javascript
复制
int _raw_ang_hi = 0x0c;
int _raw_ang_lo = 0x0d;
int _ams5600_Address = 0x36;

高低位和数据的地址

代码语言:javascript
复制
int readOneByte(int in_adr)
{
  int retVal = -1;
  Wire.beginTransmission(_ams5600_Address);//开始传输
  Wire.write(in_adr);//需要读的地址
  Wire.endTransmission();
  Wire.requestFrom(_ams5600_Address, 1);//从5600处获取数据
  while(Wire.available() == 0);//等待I2C总线停止占用(传输结束)
  retVal = Wire.read();//读到的数据
  
  return retVal;
}

读取字节的函数

10位的数据,要高位和地位,然后组合起来

代码语言:javascript
复制
word readTwoBytes(int in_adr_hi, int in_adr_lo)
{
  word retVal = -1;
 
  /* 先读取低位 */
  Wire.beginTransmission(_ams5600_Address);
  Wire.write(in_adr_lo);
  Wire.endTransmission();
  Wire.requestFrom(_ams5600_Address, 1);
  while(Wire.available() == 0);
  int low = Wire.read();
 
  /* 再读取高位 */  
  Wire.beginTransmission(_ams5600_Address);
  Wire.write(in_adr_hi);
  Wire.endTransmission();
  Wire.requestFrom(_ams5600_Address, 1);
  
  while(Wire.available() == 0);
  
  word high = Wire.read();
  
  high = high << 8;//高位数据左移
  retVal = high | low; //高位数据左移动8位之后,和低位数据或
 
//或计算就是尽量等于1,任何一边有1就是1
  
  return retVal;
}

读取两个数值组合后就是一个磁编码器数据,10bit,从0-4096的那种,根据角度划分,360/4096=0.087度,精度达到0.1度。

把这个东西输出:

代码语言:javascript
复制
int val = getRawAngle()*0.087;//获取10bit数值,乘以角度后转成实际角度
   Serial.println(val);
   //delay(10);
   digitalWrite(OUTPORT,HIGH);
   delayMicroseconds(400);
   digitalWrite(OUTPORT,LOW);
   delay(3);

这里接电机

代码语言:javascript
复制
#include "Wire.h"
#define OUTPORT 8   //ver2
int _raw_ang_hi = 0x0c;
int _raw_ang_lo = 0x0d;
int _ams5600_Address = 0x36;
void setup() {
 
Serial.begin(115200);
 Wire.begin();
 pinMode(OUTPORT,OUTPUT);
}
 
void loop() {
 
   //Serial.println(String(convertRawAngleToDegrees(getRawAngle()),DEC));
   int val = getRawAngle()*0.087;
   Serial.println(val);
   //delay(10);
   digitalWrite(OUTPORT,HIGH);
   delayMicroseconds(400);
   digitalWrite(OUTPORT,LOW);
   delay(3);
}
 
 
float convertRawAngleToDegrees(word newAngle)
{
  /* Raw data reports 0 - 4095 segments, which is 0.087 of a degree */    
  float retVal = newAngle * 0.087;
  return retVal;
}
 
word getRawAngle()
{
  return readTwoBytes(_raw_ang_hi, _raw_ang_lo);
}
 
 
int readOneByte(int in_adr)
{
  int retVal = -1;
  Wire.beginTransmission(_ams5600_Address);
  Wire.write(in_adr);
  Wire.endTransmission();
  Wire.requestFrom(_ams5600_Address, 1);
  while(Wire.available() == 0);
  retVal = Wire.read();
  
  return retVal;
}
 
word readTwoBytes(int in_adr_hi, int in_adr_lo)
{
  word retVal = -1;
 
  /* Read Low Byte */
  Wire.beginTransmission(_ams5600_Address);
  Wire.write(in_adr_lo);
  Wire.endTransmission();
  Wire.requestFrom(_ams5600_Address, 1);
  while(Wire.available() == 0);
  int low = Wire.read();
 
  /* Read High Byte */  
  Wire.beginTransmission(_ams5600_Address);
  Wire.write(in_adr_hi);
  Wire.endTransmission();
  Wire.requestFrom(_ams5600_Address, 1);
  
  while(Wire.available() == 0);
  
  word high = Wire.read();
  
  high = high << 8;
  retVal = high | low;
  
  return retVal;
}

串口绘图

代码语言:javascript
复制
https://blog.csdn.net/u012388993/article/details/113590623

以上代码来自这里。

就是不知道我这个电机要这么搞下来了。。。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-07,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com