335浏览
查看: 335|回复: 5

[项目] 【花雕学编程】动态读取AS5600角度变化并设阙值LED报警

[复制链接]
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十五:AS5600磁编码器 磁感应角度测量传感器 12bit高精度模块

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图1

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图3

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图2

驴友花雕  中级技神
 楼主|

发表于 2024-8-31 15:48:49

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警

核心芯片:AS5600
是一款易于编程的磁性旋转位置传感器,具有高分辨率 12 位模拟或 PWM 输出。这种非接触式系统测量径向磁化同轴磁体的绝对角度。这款 AS5600 专为非接触式电位计应用而设计,其坚固的设计消除了任何均匀的外部杂散磁场的影响。行业标准的I²C接口支持用户对非易失性参数进行简单编程,无需专门的编程器。此外,该器件还实现了在所谓的“3线模式”中轻松进行启动和停止位置编程,无需编程器或数字接口。输出的默认范围是 0 到 360 度。AS5600 可以通过编程零角度(开始位置)和最大角度(停止位置)来应用于较小的范围。AS5600 还配备了智能低功耗模式功能,可自动降低功耗。

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图1

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图2

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图3

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-8-31 15:50:01

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警

Arduino实验接线示意图
【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图1

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图2



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-8-31 15:51:53

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十五:AS5600磁编码器 磁感应角度测量传感器  12bit高精度模块
  项目实验之十七:动态读取AS5600角度变化并设阙值LED报警

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百二十五:AS5600磁编码器 磁感应角度测量传感器  12bit高精度模块
  4.   项目实验之十七:动态读取AS5600角度变化并设阙值LED报警
  5. */
  6. #include <Wire.h> // 包含Wire库,用于I2C通信
  7. #include <AS5600.h> // 包含AS5600库,用于与AS5600传感器通信
  8. #include <SimpleFOC.h> // 包含SimpleFOC库,用于低通滤波器
  9. // 使用SimpleFOC库中的低通滤波器
  10. LowPassFilter as5600_filter(0.01); // 创建一个低通滤波器对象,滤波系数为0.01
  11. #define AS5600_ADDRESS 0x36 // 定义AS5600传感器的I2C地址
  12. #define ANGLE_REG 0x0C // 定义AS5600传感器的角度寄存器地址
  13. AS5600 encoder; // 创建AS5600传感器对象
  14. const int ledPin = 13; // 定义LED引脚
  15. void setup() {
  16.   Serial.begin(115200); // 初始化串口通信,波特率为115200
  17.   Wire.begin(); // 初始化I2C通信
  18.   Serial.println("完成初始化I2C,准备就绪!"); // 输出初始化完成信息
  19.   pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式
  20. }
  21. void loop() {
  22.   // 读取原始位置
  23.   uint16_t rawPosition = readAS5600Angle(); // 调用函数读取AS5600传感器的原始角度数据
  24.   float angle = (rawPosition * 360.0) / 4096.0; // 将原始数据转换为角度(度)
  25.   // 使用低通滤波器平滑角度变化
  26.   angle = as5600_filter(angle); // 使用低通滤波器平滑角度数据
  27.   // 计算速度
  28.   static float last_angle = 0; // 上一次的角度
  29.   static unsigned long last_time = 0; // 上一次的时间
  30.   unsigned long current_time = millis(); // 获取当前时间(毫秒)
  31.   float delta_time = (current_time - last_time) / 1000.0; // 计算时间差(秒)
  32.   float speed = (angle - last_angle) / delta_time; // 计算角速度(度/秒)
  33.   // 打印原始位置、角度和速度
  34.   Serial.print("原始位置: ");
  35.   Serial.print(rawPosition);
  36.   Serial.print(" - 角度: ");
  37.   Serial.print(angle);
  38.   Serial.print(" 度, 速度: ");
  39.   Serial.print(speed);
  40.   Serial.println(" 度/秒");
  41.   // 检测角度变化并触发LED报警
  42.   if (abs(angle - last_angle) > 15.0) { // 如果角度变化超过15度
  43.     Serial.println("警报: 角度变化超过阈值,点亮LED灯!"); // 输出警报信息
  44.     digitalWrite(ledPin, HIGH); // 点亮LED
  45.     delay(1000); // LED亮1秒
  46.     digitalWrite(ledPin, LOW); // 熄灭LED
  47.   }
  48.   // 更新上一次的角度和时间
  49.   last_angle = angle; // 更新上一次的角度
  50.   last_time = current_time; // 更新上一次的时间
  51.   delay(500); // 延迟500毫秒
  52. }
  53. uint16_t readAS5600Angle() {
  54.   Wire.beginTransmission(AS5600_ADDRESS); // 开始与AS5600传感器的I2C通信
  55.   Wire.write(ANGLE_REG); // 写入角度寄存器地址
  56.   Wire.endTransmission(); // 结束I2C通信
  57.   Wire.requestFrom(AS5600_ADDRESS, 2); // 请求从AS5600传感器读取2字节数据
  58.   uint16_t angle = Wire.read() << 8 | Wire.read(); // 读取并组合两个字节的数据
  59.   return angle; // 返回角度数据
  60. }
复制代码



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-8-31 15:55:51

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警

实验串口返回情况

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2024-8-31 16:02:58

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警

实验场景图

【花雕学编程】动态读取AS5600角度变化并设阙值LED报警图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail