STM32读取MT6701磁编码器(PWM)

  • 硬件准备

STM32核心板,MT6701磁编码器带线(M创动工坊提供),ST-link,USB线等

  • 软件准备
  1. 安装微软的Vscode,网上很多教程,且有说明书

  1. 打开vscode并安装PlatformIO插件。其他的一些中文插件、AI插件等等,根据需要安装

  1. 打开插件,新建工程

  1. 重要的设置

  1. Ini文件设置,这是关键

lib_deps =

        askuric/Simple FOC@ 2.3.4

board_build.mcu = stm32f103c6t6

board_upload.maximum_size = 32768

upload_protocol = stlink

debug_tool = stlink

build_flags = -Os

写好后,记得点保存,就开始自动下载库,右下角

设置到这里就结束了。

  • 接线

根据程序定义,接线

编码器与STM32接线:

  1. 编码器的OUT接STM32板子的B0
  2. 编码器的VCC接3V3
  3. 编码器的GND接GND
  4. PUSH不接

STM32与ST-Link接线

按STM32和ST-link的丝印接即可

STM32与USB转串口模块接线

这里使用串口2,详见程序内定义。

USB供电,microUSB接口。

到此,线已接完。

  • 编程
  1. 开始编程

打开默认是这样的

  1. 按arduino格式,写入以下代码,代码就不做注释了,可以直接复制粘贴到AI,如DEEPSEEK上,让它帮忙逐行解析。

#include <Arduino.h>

#include <HardwareSerial.h>

#include <SimpleFOC.h>

// 确保使用支持中断的引脚(如 PA0, PA1, PB0, PB1 等)

MagneticSensorPWM sensor = MagneticSensorPWM(PB0, 4, 1024); // 替换 PB0 为实际连接引脚

void doPWM() { sensor.handlePWM(); }

void setup() {

  Serial2.begin(115200); // 默认使用 PA2(TX)/PA3(RX)

  // 初始化磁传感器

  sensor.init();

 

  // 关键修改:配置引脚模式并附加中断

  pinMode(PB0, INPUT_PULLUP); // 显式配置上拉输入

  sensor.enableInterrupt(doPWM); // 附加中断处理函数

  Serial2.println("Sensor ready");

  delay(1000);

}

void loop() {

  sensor.update();

  Serial2.print(sensor.getAngle());

  Serial2.print("\t");

  Serial2.println(sensor.getVelocity());

  delay(1); // 短暂延迟确保稳定性

}

  • 实现
  1. 编译烧录

  1. 插上USB,开始烧录

确定驱动安装正确,设备管理器中,可以看到这两个。

  1. 烧录成功

  1. 打开串口监视

到此,测试结束!本文档主要针对M创动工坊淘宝店提供硬件,mcdgf.taobao.com

STM32读取AS5600,STM32读取MT6701的ABZ,STM32读取MT6701的PWM,三篇

<think>嗯,用户想找适用于STM32的磁场检测模块。首先,我需要确认磁场检测的具体类型,比如是测量磁场的强度、方向,还是检测磁场变化。常见的磁场检测模块有霍尔效应传感器、磁阻传感器(如HMC5883L)、以及集成电流传感器如ACS712(虽然主要用于电流,但可能间接相关)。不过用户之前提到INA226模块用于电流测量,现在需要磁场检测,可能需要不同的传感器。 首先,霍尔效应传感器模块,比如A3144,这类模块通常用于检测磁铁的存在或接近,比如在转速测量或位置检测中。它们输出数字信号,使用简单,适合开关型应用。但可能不适合需要精确测量磁场强度的场景。 如果需要测量磁场的强度和方向,磁阻传感器如HMC5883L(或更新的QMC5883)可能更合适。这些传感器通过I2C接口与STM32通信,提供三轴磁场数据,适合指南针或导航应用。HMC5883L是常用的,但可能已经停产,替代型号如QMC5883可能更易获得。 另外,TI的DRV5053是线性霍尔效应传感器,输出模拟电压,适合需要连续磁场测量的情况。它可以通过STM32的ADC读取,适用于位置检测或线性运动测量。 还有MLX90393,这是Melexis的三轴磁传感器,具有高精度和I2C/SPI接口,适合需要高精度三维磁场测量的应用,比如机器人或工业控制。 用户可能需要考虑测量范围、精度、接口类型(I2C、SPI、模拟输出)以及供电电压是否与STM32兼容(通常3.3V)。此外,软件支持也很重要,比如是否有现成的库或示例代码,方便在STM32上快速开发。 需要排除电流检测模块,比如用户之前用的ACS712和INA226,这些主要用于电流,虽然电流会产生磁场,但直接测量磁场需要不同的传感器。用户可能混淆了电流检测和磁场检测,需要明确应用场景。 总结推荐模块时,应分类型说明,比如数字输出、模拟输出、三轴测量等,并给出适用场景,帮助用户根据具体需求选择。同时,提醒连接方式和注意事项,比如I2C地址配置、校准需求等,确保用户能顺利集成到STM32项目中。</think>根据STM32磁场检测需求,推荐以下几类常用模块及典型型号: ### 一、数字输出型磁场检测模块 1. **HMC5883L/QMC5883磁阻传感器** - 测量范围:±8高斯(HMC5883L)/±30高斯(QMC5883) - 接口:I2C通信(地址0x1E) - 特点:三轴磁场测量,适用于指南针、姿态检测等场景 - STM32驱动示例: ```c HAL_I2C_Mem_Read(&hi2c1, 0x1E<<1, 0x03, I2C_MEMADD_SIZE_8BIT, buffer, 6, 100); ``` 2. **MLX90393三轴磁传感器** - 测量范围:±50mT,分辨率0.15μT - 接口:I2C/SPI可选 - 特点:16位ADC输出,支持高温环境(-40℃~150℃)[^1] ### 二、模拟输出型磁场检测模块 1. **DRV5053线性霍尔传感器** - 测量范围:±73mT(A1版本) - 输出:模拟电压(0.5V~4.5V) - 特点:PWM输出可选,适合位置检测 2. **SS49E线性霍尔元件** - 测量范围:±1000高斯 - 输出:模拟电压(1.0V~4.0V) - 成本低,需自行设计信号调理电路 ### 三、特殊应用模块 1. **TLE493D-A1B6三轴磁传感器** - 接口:I2C(地址0x35) - 特点:汽车级精度,支持自动唤醒功能 - 适用场景:电机控制、旋转编码器 2. **AS5600角度传感器** - 测量类型:旋转磁场角度 - 接口:I2C/PWM/模拟输出 - 分辨率:12位(0.088°) ### 四、选型建议 1. **精度要求高**:优先选择MLX90393($$ B = \sqrt{(X^2 + Y^2 + Z^2)} $$) 2. **成本敏感**:SS49E+STM32 ADC方案 3. **运动检测**:AS5600旋转磁场检测 4. **工业环境**:TLE493D-A1B6(支持EMC抗干扰) ### 连接示意图 ``` VCC ----> 3.3V GND ----> GND SDA ----> PB7 SCL ----> PB6 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M创动工坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值