Arduino通过Wire库读取AS5600编码器数据

Arduino通过Wire库读取AS5600编码器数据


  • ✨在实际测试中,测试AS5600除了使用径向磁铁之外,球型的或者正四方体的强磁铁,也是可以准确的测量角度。测试高度的话,从板子(芯片引脚底部)到磁铁底部15毫米内,都可以检测到角度。除去芯片从板子底部到顶部的高度2,保守检测空间高度可以达到12毫米。测试使用的是巴克球磁力球,5毫米直径的球体状和正四方体状的强磁体。
  • 巴克球磁力球:
    在这里插入图片描述
    在这里插入图片描述

📘 硬件电路部分

  • 🌿原理图部分:
    在这里插入图片描述
  • ✨有关I2C总线是否需要接外部上拉电阻问题,经测试,在使用STM32测试过程中,发现不接外部上啦电阻,无法通过硬件I2C检测到I2C设备地址,接了上拉电阻,stm32硬件I2C可以检测到设备。如果使用软件I2C,将通讯引脚配置为推挽输出模式,外部不接上拉电阻情况下,实测也是可以的。在使用RP2040测试过程中,发现不接上拉电阻,也可以检测到设备。推荐还是接上上拉电阻。
  • 🌿PCB电路布线:芯片底部范围不要走线,也不要铺铜,让芯片光秃秃的趴在中间,把引脚线路一出一定的范围。
    在这里插入图片描述

⛳📒 I2C引脚说明

  • 🌿如果使用的是ESP32,I2C默认引脚:SDA:21 ,SCL:22
  • 🌿如果使用的是ESP8266,I2C默认引脚:SDA:4 ,SCL:5
  • 🌿如果使用的是Ateml328p,,I2C默认引脚:SDA:A4 ,SCL:A5
  • 📑引脚任意指定:
    Wire.setSDA(8);
  Wire.setSCL(9);

或者

Wire.setPins(int sda, int scl);

以及

Wire.begin(sda,scl);
  • 👉针对不同开发板,wire库接口函数存在差异,以上提供参考的接口函数可能不通用。

📙测试代码

  • 🔖首先扫描I2C设备,在loop循环中读取。
#include "Wire.h"

#define Address_IN  0x0c
word readTwoBytesTogether(byte addr_in );
void setup() {
  Serial.begin(115200);
  Wire.begin();
 byte error, address;
  int nDevices = 0;
  delay(3000);
  Serial.println("Scanning for I2C devices ...");
  for(address = 0x01; address < 0x7f; address++){
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
      Serial.printf("I2C device found at address 0x%02X\n", address);
      nDevices++;
    } else if(error != 2){
      Serial.printf("Error %d at address 0x%02X\n", error, address);
    }
  }
  if (nDevices == 0){
    Serial.println("No I2C devices found");
  }
}

void loop() {

 
int Raw_num  = readTwoBytesTogether(Address_IN);//读取当前值		
  // 处理角度数据...
  int Real_angle  = (Raw_num * 360)/4096;//换算成角度
Serial.println(Real_angle);
  delay(1000); // 延迟一段时间再读取下一次数据
}

word readTwoBytesTogether(byte addr_in )
{
    Wire.beginTransmission(0x36); // AS5600的I2C地址为0x36
  Wire.write(0x0C); //发送要读取的寄存器地址,此处为0x0C
  Wire.endTransmission(false); // 发送重复启动信号,保持总线连接
  //Wire.endTransmission();
  Wire.requestFrom(0x36,(uint8_t) 2); // 从AS5600读取2个字节的数据
  while (Wire.available() < 2)// 等待数据接收完毕
   {
   } ;
  int highByte = Wire.read(); // 读取高字节
  int lowByte = Wire.read(); // 读取低字节

  return  (highByte << 8) | lowByte; // 将高字节和低字节组合成16位的角度数据


}

  • 📜测试数据串口输出:
  • ESP32
    在这里插入图片描述
  • RP2040
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法打卡day21(开始回溯)

今日任务&#xff1a; 1&#xff09;77.组合 77.组合 题目链接&#xff1a;77. 组合 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;带你学透回溯算法-组合问题&#xff08;对应力扣题目&#xff1a;77…

Spring日志框架

前言 本文我们简单说说关于Spring中的日志框架,以及对应的注解 我们知道,公司服务器在运行的时候,一定会打印日志,有很多优点,比如预防报警,或者是某重大事故尝试修复等等都需要查看日志 应该说日志对我们来说并不陌生,我们在之前刷题或者是程序遇到bug的时候也经常会将程序的状…

Java数据结构-链表OJ题

目录 1. 移除链表元素2. 反转链表3. 返回中间结点4. 返回倒数第k个结点5. 合并两个有序链表6. 分割链表7. 回文链表8. 找相交链表的公共结点9. 判断链表是否有环10. 返回链表环的入口 老铁们好&#xff0c;学习完链表这个数据结构之后&#xff0c;怎么能少了OJ题呢&#xff1f;…

SQL语句学习+牛客基础39SQL

什么是SQL&#xff1f; SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 SQL 的范围包括数据插入、查询、更新和删除&#xff0c;数据库模式创建和修改&#xff0c;以及数据访问控制。 SQL语法 数据库表 一个…

Windows下使用tensorrt配置YOLOv8进行加速

Windows下使用tensorrt配置YOLOv8进行加速 致谢&#xff1a; win10下 yolov8 tensorrt模型加速部署【实战】 - 知乎 (zhihu.com) yolov8 tensorrt 实战之先导_哔哩哔哩_bilibili FeiYull/TensorRT-Alpha: &#x1f525;&#x1f525;&#x1f525;TensorRT for YOLOv8、YOLOv8…

K8S故障处理指南:pod驱逐问题处理

更多技术博客,请关注微信公众号:运维之美 在K8S集群故障处理过程中,你可能遇到过pod的各种状态,Evicted状态代表你的K8S环境遇到了资源驱逐的问题,本节通过对驱逐问题的解决,参数的调整,问题的处理思路,希望给你解决此类问题提供帮助。 一、pod驱逐问题 pod出现状态为…

AR智能眼镜解决方案_MTK平台安卓主板硬件芯片方案开发

AR智能眼镜&#xff0c;是一个可以让现场作业更智能的综合管控设备。采用移动互联网、大数据和云计算等技术&#xff0c;现场数据的采集与分析&#xff1b;同时实现前端现场作业和后端管理的实时连动、信息的同步传输与存储。让前端现场作业更加智能&#xff0c;后端管理更加高…

Java代码基础算法练习-自定义函数之字符串连接-2024.03.30

任务描述&#xff1a; 写一函数&#xff0c;将两个字符串连接起来&#xff0c;然后在主函数中调用该函数实现字符串连接操作。 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.Scanner;public class m240330 {public static void main(Stri…

Java使用数组实现栈、队列、堆

数组模拟栈&#xff1a; const int N 10010; // ******************** 栈 int stk[N], tt//tt是下标; // 插入 stk[k] x; // 删除 tt--; // 判断栈是否为空 if (tt > 0) not empty else empty // 栈顶 stk[tt]; // ******************** 队列 // 在队尾插入…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f; 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例&#xff0c;以引入基于 1-of-n 诚实假设的多方配置。这…

3D目标检测综述笔记

3D Object Detection for Autonomous Driving: A Review and New Outlooks https://arxiv.org/pdf/2206.09474.pdf 目录 0.background​编辑 1.1表示形式 1.2感知输入 1.3数据集 1.4评估指标 1. LiDAR-based 3D Object Detection 2.数据表征 2.1 point-based​ 2.1.…

APP UI自动化测试框架总结,各种项目实战加源码等你来拿

开发语言选择 通常用于自动化测试的编程语言有&#xff1a;Python、Java、Javascript、Ruby、C#、PHP等。一般我们会选择自己熟悉的编程语言来编写自动化脚本&#xff0c;但对于编程基础基本为0的童鞋&#xff08;或者专注于做自动化测试的童鞋&#xff09;&#xff0c;推荐学…

JAVA8 新特性StreamAPI使用

一、使用StreamAPI&#xff0c;操作两个队伍中名字&#xff0c;需求如下&#xff1a; 1、第一个队伍名字为3个字的成员姓名 2、第一个队伍筛选名字为3个字之后的前三个成员 3、第二个队伍筛选姓张的成员 4、第二个队伍筛选姓张的之后跳过前两个成员 5、将两个队伍合并成一个队伍…

线性CCD

线性CCD 综述&#xff1a;本文讲述了线性CCD是什么、由什么组成、工作原理、芯片TSL401的引脚和时序、线性CCD的时序。 1. 定义 线性CCD&#xff0c;只能采集一行像素&#xff0c;分辨率为128&#xff0c;也即是线性CCD≈128个光电传感器。经过光照时&#xff0c;光电二极管…

请问2核4G云服务器,可以带得动多少人?5M带宽

腾讯云轻量应用服务器2核4G5M配置性能测评&#xff0c;腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;并发数10&#xff0c;支持每天5000IP人数访问&#xff0c;腾讯云百科txybk.com整理2核4G服务器支持多少人同时在线&#xff1f;并发数测试、CPU性能、内存性能、…

941: 有序顺序表的合并操作的实现

学习版 【c语言】 1.顺序表元素类型 2.顺序表的初始化 3.顺序表的插入 4.顺序表的合并 #include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm>typedef struct {int* data; // 数据数组的指针int length; // 当前顺序表…

常见代码漏洞介绍

目录 1.XSS攻击 1.1 存储型 XSS&#xff08;Stored XSS&#xff09; 1.2 反射型 XSS&#xff08;Reflected XSS&#xff09; 1.3 DOM 型 XSS&#xff08;DOM-based XSS&#xff09; 1.4 修复方案 2.日志伪造 2.1 伪造方法 2.2 解决方法 2.3 验证结果 3.ESAPI 第一步…

第10讲:操作符详解

第10讲&#xff1a;操作符详解 1. 操作符的分类2. 二进制和进制转换2.1 二进制转十进制10进制转2进制数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/45fb3048f5164084b9d494b3d233bc42.png)2.2 二进制转八进制和十六进制2.2.1 二进制转八进制2.2.2 二进制转十六…

C语言例1-3:设 int a; ,语句 for(a=0;a==0;a++); 和语句 for(a=0;a=0;a++); 执行的循环次数分别是

答案&#xff1a;1,0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("1\n");} return 0; } 结果如下&#xff1a; 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("…

【DA-CLIP】生成图像描述generate_captions.py代码理解+实践

上一篇博文解决了运行环境问题 【DA-CLIP】Windows下使用clip_interrogator/BLIP进行生成图像-文本-退化类型数据集的generate_caption.py代码运行逻辑-CSDN博客https://blog.csdn.net/m0_60350022/article/details/137061820?spm1001.2014.3001.5501 回顾思路 用HQ图生成干…