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

news2024/11/27 6:19:13

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
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MATLAB源码-第22期】基于matlab的手动实现的(未调用内置函数)CRC循环码编码译码仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 循环码是线性分组码的一种&#xff0c;所以它具有线性分组码的一般特性&#xff0c;此外还具有循环性。循环码的编码和解码设备都不太复杂&#xff0c;且检(纠)错能力强。它不但可以检测随机的错误&#xff0c;还可以检错突发…

《论文阅读》PAGE:一个用于会话情绪原因蕴含基于位置感知的图模型 ICASSP 2023

《论文阅读》PAGE&#xff1a;一个用于会话情绪原因蕴含基于位置感知的图模型 ICASSP 2023 前言 简介任务定义模型构架Utterances Encoding with EmotionPosition-aware GraphCausal Classifier实验结果 前言 亲身阅读感受分享&#xff0c;细节画图解释&#xff0c;再也不用担…

【论文精读】CAM:基于上下文增强和特征细化网络的微小目标检测

文章目录 &#x1f680;&#x1f680;&#x1f680;摘要一、1️⃣ Introduction---介绍二、2️⃣Related Work---相关工作2.1 &#x1f393; 基于深度学习的对象检测器2.2 ✨多尺度特征融合2.3 ⭐️数据增强 三、3️⃣提议的方法3.1 &#x1f393; 具有上下文增强和特征细化的特…

c++使用类的一些注意事项

前言&#xff1a; 本篇内容为前面的补充&#xff0c;介绍了我们使用类时需要注意些什么以及一些编译器的优化&#xff0c;可能有些理解不到位或者错误&#xff0c;请斧正。 目录 前言&#xff1a; 1.再谈构造函数 2.&#xff08;c98&#xff09;隐式类型转换中的编译器的优…

牛客NC31 第一个只出现一次的字符【simple map Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可*…

Linux IRC

目录 入侵框架检测 检测流程图 账号安全 查找账号中的危险信息 查看保存的历史命令 检测异常端口 入侵框架检测 1、系统安全检查&#xff08;进程、开放端口、连接、日志&#xff09; 这一块是目前个人该脚本所实现的功能 2、Rootkit 建议使用rootkit专杀工具来检查&#…

在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)

问题场景 目前我的环境变量都存储在 /etc/profile 文件中&#xff0c;当我通过远程 SSH 执行一些命令时&#xff0c;提示命令找不到&#xff0c;如下所示&#xff1a; 问题出现原因 这里找到了一张出自尚硅谷的图片&#xff0c;很好的解释了该问题&#xff1a; 这是由于 Linu…

快速上手Spring Cloud 十七:深入浅出的学习之旅

快速上手Spring Cloud 一&#xff1a;Spring Cloud 简介 快速上手Spring Cloud 二&#xff1a;核心组件解析 快速上手Spring Cloud 三&#xff1a;API网关深入探索与实战应用 快速上手Spring Cloud 四&#xff1a;微服务治理与安全 快速上手Spring Cloud 五&#xff1a;Spring …

JAVAEE之网络编程

1.网络编程 网络编程&#xff0c;指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信&#xff08;或称为网络数据传输&#xff09;。 当然&#xff0c;我们只要满足进程不同就行&#xff1b; 所以即便是同一个主机&#xff0c;只要是不同进程&am…

烫烫烫手的结构体大小计算来咯,很烫哦,慢慢消化。自定义类型(一)

emmm&#xff0c;在这炎热的夏天在宿舍吹着空调写着博客也是一件不错的事呢&#xff0c;今天就来来好好盘一下C语言中的自定义类型。 常常会回顾努力的自己&#xff0c;所以要给自己的努力留下足迹。 为今天努力的自己打个卡&#xff0c;留个痕迹吧 2024.03.29 小闭 目录 …

基于springboot实现数据库的加解密

项目地址 https://github.com/Chenchicheng/spring-ibatis-encryption 功能说明 支持使用注解的方式目标类进行加解密支持同一个类多个字段分别使用不同的加密方式支持自定义加密方法 本地调试 pull代码到本地&#xff0c;更换application.yml中的数据库用户名和密码&…

第十四届蓝桥杯(八题C++ 题目+代码+注解)

目录 题目一&#xff08;日期统计 纯暴力&#xff09;&#xff1a; 代码&#xff1a; 题目二&#xff08;01串的熵 模拟&#xff09;&#xff1a; 代码&#xff1a; 题目三&#xff08;治炼金属&#xff09;&#xff1a; 代码&#xff1a; 题目四&#xff08;飞机降落 深度…

UI的设计

一、RGB888的显示 即红色&#xff0c;绿色&#xff0c;蓝色都为8位&#xff0c;即通常说的24位色。可以很好显示各种过渡颜色。从硬件上&#xff0c;R、G、B三基色的连接线各需要有8根&#xff0c;即24根数据线&#xff1b;软件上存储的数据量也需要24位&#xff0c;即3个字节&…

【ERP原理与应用】用友U8实验

实验一、系统管理与基础设置 实验内容&#xff1a; 一、核算体系的建立 好友软件公司是一家软件制造和系统集成企业&#xff0c;其产品面向国内外市场&#xff0c;自 2019 年 3 月公司开始使用 ERP 软件管理业务。软件操作员有三位&#xff0c;黄红是账套 主管&#xff0c;张…

2024蓝旭春季第二次前端培训课

目录 CSS伪类与伪元素 伪类 伪元素 关系选择器 分类举例 后代选择器 子元素选择器 相邻兄弟选择器 通用兄弟选择器 作用使用场景 后代选择器&#xff08;空格&#xff09; 子元素选择器 (>) 相邻兄弟选择器 () 通用兄弟选择器 (~) 随机提问 CSS布局 基础布…

RSTP(快速生成树)

与stp的不同&#xff1a; 减少了端口的状态 增加了端口的角色 bpdu格式以及发送方式不同 1.RSTP 快速生成树 802.1w 作用&#xff1a;主要可以用来实现快速收敛&#xff0c;弥补普通生成树收敛慢的问题&#xff0c;收敛时间1s。没有时间机制&#xff0c;每台设备都会发送…

C语言------字符函数和字符串函数

在学习编程的过程中&#xff0c;我们会经常会遇到一些字符和字符串&#xff0c;为了方便操作字符和字符串&#xff0c;C语言标准库中就提供了一系列函数。那么&#xff0c;接下来就学习下这些函数。 1. 字符分类函数 C语言中有一系列的函数是专门做字符分析的&#xff0c;也就…

网络七层模型之会话层:理解网络通信的架构(五)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

飞天使-k8s知识点28-kubernetes散装知识点5-helm安装ingress

文章目录 安装helm添加仓库下载包配置创建命名空间安装 安装helm https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gztar -xf helm-v3.2.3-linux-amd64.tar.gzcd linux-amd64mv helm /usr/local/bin修改/etc/profile 文件&#xff0c;修改里面内容,然后重新启用export PATH$P…