2026 ADI机器控制设计竞赛-基于ADMT4000模块实现多圈角度读取与断电记忆验证
该项目使用了ADMT4000模块,实现了多圈角度读取与断电记忆验证的设计,它的主要功能为:多圈角度读取与断电记忆验证。
标签
嵌入式系统
开发板
2026 ADI
Y_HT
更新2026-05-11
11

项目总结报告

所选任务介绍

本项目的主要任务是通过 SPI 协议读取 ADMT4000 多圈磁传感器的数据,包括圈数和精确角度,并通过串口打印当前的圈数和角度值。我们还需要确保,在设备断电后,再次上电时,能够恢复到断电前的圈数和角度,以验证数据的持久性和准确性。

项目描述

本项目涉及到对 ADMT4000 多圈磁传感器的实时读取,具体包括两个主要任务:

  1. 通过 SPI 接口与 ADMT4000 传感器进行数据通信,读取磁角度和圈数信息。
  2. 在手动旋转传感器后,断电并重新上电时,验证圈数和角度值是否能够恢复,确保数据的可靠性。

通过设计与开发相应的硬件和软件,我们能够实时监测并获取传感器的状态,并且测试设备在断电重启后是否能正确恢复数据。

硬件介绍

本项目使用的主要硬件设备包括:

  1. ADMT4000 多圈磁传感器:该传感器采用 SPI 接口与 MCU 进行通信,主要用于检测旋转角度和圈数。它能够提供高精度的角度信息,广泛应用于旋转编码器和电机控制领域。
  2. ESP32 开发板:用于控制 ADMT4000 并进行数据处理。它支持 SPI 通信和多任务处理。
  3. 舵机 SG90:用于模拟和测试旋转行为,通过按钮控制其正转和反转。
  4. 按钮:提供手动旋转控制,模拟传感器的旋转。
  5. 电源模块:用于给开发板和传感器提供电力支持。

方案框图 + 设计思路

以下是本项目的方案框图:

image.png

图1 方案框图

设计思路:

  • 使用 ESP32 开发板通过 SPI ADMT4000 传感器进行通信,周期性读取传感器数据,实时打印圈数和角度信息。
  • 使用舵机模拟旋转行为,按顺时针和逆时针方向控制舵机的转动。
  • 使用按钮控制功能,按下按钮时启动对应的旋转动作,验证传感器的恢复功能。
  • 对传感器的数据进行初始化,以保证每次上电时读取的数据是准确的。

原理图、PCB设计

由于该项目仅涉及简单的电路连接,硬件部分没有复杂的PCB设计,因此原理图主要包括:

  • ESP32 开发板与 ADMT4000 传感器连接
    • SPI 接口连接:CS, MOSI, MISO, SCK
    • 电源连接:VCC GND
  • 舵机与 ESP32 的连接
    • 使用 GPIO 引脚控制舵机转动。

软件流程图 + 调试软件说明 + 关键代码说明

软件流程图如下所示:

image.png

图2 软件流程图

关键代码说明

  1. ADMT4000 初始化与数据读取:在 admt4000_task 任务中,使用 admt4000_read_registers_dual 函数周期性读取 ADMT4000 的数据,并通过 SPI 接口进行通信。读取的数据包括圈数和磁角度,并将其转换为可读值。
  2. 按钮控制任务:通过 GPIO 引脚监听按钮状态,判断按钮按下的情况,控制舵机的旋转,模拟旋转过程。
  3. 复位功能:通过 BOOT0 按钮触发线圈复位操作,确保传感器的状态得到复位。
// 初始化舵机
sg90_init();
// 初始位置设置为0度
sg90_rotate_degrees(0,5);

// 初始化按钮引脚
gpio_config_t io_conf = {
.pin_bit_mask = (1ULL << CW_BUTTON_PIN) | (1ULL << CCW_BUTTON_PIN),
.mode = GPIO_MODE_INPUT,
.pull_up_en = GPIO_PULLUP_ENABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
gpio_config(&io_conf);

xTaskCreatePinnedToCore(admt4000_task, "admt4000_task", 4096, NULL, 4, &admt4000_task_handle, 0);
xTaskCreatePinnedToCore(button_task, "btn_task", 4096, button_pins, 5, &sg90_task_handle, 1);


vTaskDelete(NULL); // 不要空转 while(1)

实物演示及说明

在实际演示中,启动系统后,系统会实时打印传感器的圈数和角度信息。通过按下按钮控制舵机旋转,观察传感器数据的变化,并测试设备在断电重启后是否能够恢复到断电前的状态。测试显示,设备能够正确恢复圈数和角度,验证了数据的持久性。


IMG_20260508_200248.jpgIMG_20260422_142718.jpg

图3 实物演示图

遇到的难点及解决方法

  1. SPI 通信问题:在与 ADMT4000 传感器进行 SPI 通信时,遇到了数据读取不稳定的情况。通过调整 SPI 时钟频率和通信参数,解决了这一问题。
  2. 数据恢复问题:在初始阶段,设备断电后并未完全恢复到断电前的状态。通过增加复位功能和定期检查传感器状态,确保数据能够正确恢复。

对本次活动的心得体会

通过本次项目,我深入了解了如何与多圈磁传感器进行通信,并测试其数据恢复能力。通过 SPI 协议获取实时数据并将其显示出来的过程让我对硬件通信和数据处理有了更深入的理解。此外,调试过程中遇到的一些难点,如SPI通信的调试和复位功能的设计,也让我学到了如何排查问题并找到解决方法。

意见和建议

  1. 在将来设计类似的项目时,可以进一步优化硬件设计,简化线路和增加更多功能模块,如数据记录和远程监控功能。
  2. 软件方面可以加入更多的异常处理机制,提高系统的稳定性和可靠性。

以上便是本次项目的总结报告。通过本项目的开发,我不仅提高了硬件与软件集成的能力,还在实际操作中积累了很多宝贵的经验。

 

附件下载
admt4000.rar
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号