硬件开发>单片机>STM32: 电流电压检测模块

参考Links

STM32电流电压检测模块

用于实时监测电路中的电压和电流值, 基于STM32微控制器(Microcontroller Unit,MCU)设计的硬件系统。

  • STM32系列是意法半导体(STMicroelectronics)推出的一款高性能、低功耗的32位微控制器,

    广泛应用于工业控制、消费电子和物联网等领域。

在设计这样的检测模块时,

  • 首先需要了解STM32的基本架构。

    • STM32通常具有多个模拟输入通道(ADC,Analog-to-Digital Converter),

      这些通道可以连接到外部传感器,如电流互感器或电压分压器,将模拟信号转换为数字信号。
    • ADC的质量直接影响到测量的精度和稳定性,因此选择合适的ADC分辨率和转换速率至关重要。
      • 硬件层面,确保ADC的输入电压范围与实际电压匹配,防止过压损坏芯片。
      • 软件层面,STM32的固件需要实现ADC的初始化、采样和数据处理功能。
        • 初始化: 包括设置ADC工作模式、转换速率、通道选择等参数。
        • 采样: 采样频率的选择, 需考虑到实时性需求,过高可能会增加处理器负担,过低可能导致测量延迟。
        • 数据处理: 可能涉及滤波算法,以减小噪声影响,提供更准确的读数。
        • 此外,为实现监测数据的可视化和远程监控,

          该模块可能还会集成串口通信(如UART、SPI或I2C) 或 无线通信接口(如Wi-Fi或Bluetooth)。

          这些接口能让模块与上位机、PC或移动设备交换数据, 用户可实时查看和记录测量值、参数、系统的变化。
  • 电压测量(最常用):

    先用比例采样的分压电路, 将高电压适配到STM32 ADC的可接受范围。

    然后ADC会采集分压后的电压,并将其转换为数字值。

  • 电流检测(电流测量 转换为 测量电压):

    通常通过 霍尔效应电流传感器 或 电流互感器 实现。

    这两种方法都需要将测量值送入STM32的ADC通过软件算法进行处理得出实际电流值

    • 霍尔效应传感器: 利用霍尔效应,即磁场对电流产生的横向电压,来测量通过导线的电流。
    • 电流互感器: 则基于电磁感应原理,将大电流转换为小电流进行测量。

在电压电流监测模块资料包 V1.1,可能包含以下内容

  1. 设计文档:详细介绍模块的设计思路、硬件选型和软件实现。
  2. PCB布局图:展示模块的电路布局和元件位置。
  3. STM32固件源码:包含ADC配置、数据处理和通信协议实现的代码。
  4. 用户手册:指导用户如何使用该模块,包括硬件接线、软件配置和数据读取方法。
  5. 测试报告:提供模块在不同条件下的性能测试结果,验证其功能和性能。
  6. 示例代码和应用实例:帮助用户快速掌握,展示如何与上位机通信和数据解析。

STM32电流电压检测模块, 结合先进的微控制器技术和精密测量技术,

为各种应用提供可靠的电源监控解决方案。

开发者需要掌握STM32的硬件特性、ADC操作以及信号处理知识,才能充分利用该模块的功能。

高精度电流测量电路(MCU)

嵌入式(单片机)开发过程,会有测量电流的需求。涉及到的有:

  • uA 级别的
  • mA 级别的
  • A 级别的

    以上的需求电路, 都可有通用的“同相放大”电路:

  • VDD–R6–GND: 代表待测电路,
  • R6: 负载(假定),目的是为使环路形成我们想要的待测电流。
  • U1: 同相放大电路的放大器
  • R4: 是测量电阻, 例如1KΩ: 表示它是用于检测小电流的(uA级别的)
  • 放大倍数为10倍:(R3+R2)/R1

示例分析: 假设这是一个理想放大电路,并且待测电路的电流为100uA(500KΩ)时,

  • 在R4(测量电阻)上的电压是100uA*1KΩ = 10mV,
  • 经过U1(放大器)的10倍放大后就是100mV。
  • 经过单片机的ADC采样就可以推算出电流值。

测量范围

上面那个电路的测量范围可以这么计算,

  • 前提是设置 ADC 的 Vref(参考电压) = 0.6V,
  • 放大器输出端的 VAout(最大输出电压) = 0.6V,
  • 放大器输入电压就是 VAin = 0.06V(因为放大器的放大倍数为10倍)。
  • 就可计算出该电路的"最大测量电流"为: Icmax = VAin/Rc = 0.06V/1000Ω = 60uA(即0.00006A)。

    因为,电阻上的电压降 及 通过电流,符合“欧姆定律”

高精分段测量

为精确测量一个很大范围的电流值,可在以上电路基础上,更改R4的阻值实现。

在实际应用过程,通过设置多路的测量电路,每一路对应设置不同的测量电阻,

并且用MCU控制各路切换, 以达到精确的电流测量。

比如可以设置"测量电阻(可选)":

阻值 测量的最大电流
1000Ω 60uA
120Ω 500uA
15Ω 4mA
2.3Ω 26mA
0.23Ω 260mA
0.02Ω 3A

使用比较器(MCU内部的 或 外部的)可及时转换对应通道,以 比较 检测到的输入电压 与 MCU内ADC的参考电压 的高低,

注意: 检测到的输入电压 如果 高于 MCU内ADC的参考电压时,

“有可能会”出现 ADC转换的数值 不是最大值, 而是一个随机值的情况。

实例应用之 电机控制

通过MCU实现 高精度的PWM输出 和 电流采样 是确保电机运行平稳、高效的关键。

以下是一些具体的步骤和方法::

实现高精度的PWM输出

  1. 选择合适的MCU:

    选择有高性能处理器和丰富外设资源的MCU, 例如最高支持248 MHz主频,

    才能够快速处理“电机控制算法”的复杂计算任务。
  2. 配置Timer(定时器) 与 PWM控制:

    利用MCU的高级定时器功能,每个定时器都支持 多种PWM模式 和 死区控制 功能。

    通过精确配置定时器,可以生成高质量的“三相PWM驱动信号”,

    确保电机绕组电流的波形平滑,有效降低电机的转矩脉动和电磁噪声。
  3. 优化PWM信号:

    为提高PWM信号的精度,可以使用2K CPLD资源来优化PWM信号生成,

    使其有更高的 分辨率和精度,满足电机在不同工况下的驱动需求。

实现电流采样

  1. 选择合适的电流采样方式:

    根据系统需求和成本考虑,可以选择:

    • 高端采样、
    • 低端采样(包括单电阻、双电阻、三电阻采样)
    • 霍尔电流传感器,
    • 电流互感器。
  2. 配置ADC:

    对需要高精度电流采样的应用,建议使用高精度的ADC模块。

    例如,AG32 MCU内置了3x12位ADC,每个ADC具备17个通道,支持高达3M SPS的采样率,

    可以实现对 电机电流 和 反电动势 的 实时、高精度采样。
  3. 优化电流采样电路:

    在设计电流采样电路时,需要考虑“采样电阻”的功率、精度和温度系数,以及运算放大器的选择。

    同时,还需要注意PCB布局布线,以减少干扰和提高采样精度。
  4. 软件处理:

    对“低端采样”方式,可能需要在软件上对采样数据进行重构和补偿,以获取准确的电流值。

    此外,还可以通过滤波器等方法进一步提高采样数据的精度和稳定性。

综上所述,通过选择合适的MCU、配置定时器与PWM控制、优化PWM信号、选择合适的电流采样方式、配置高精度ADC模块 以及优化 “电流采样电路”和“软件处理”等步骤,

可在电机控制上,实现高精度的PWM输出和电流采样。

这些措施有助于提高电机控制的精准性、稳定性和高效性。

SciTech-EECS-MCU-STM32: 高精度实时测量: 电压、电流的更多相关文章

  1. STM32内置参照电压的使用(转)

    源:STM32内置参照电压的使用 每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17. 根据数据手册中的数据,这个参照电压的典型值是1.20V,最小 ...

  2. STC8H开发(十四): I2C驱动RX8025T高精度实时时钟芯片

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  3. stm32——RTC实时时钟

    stm32——RTC实时时钟 一.关于时间 2038年问题 在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作.所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自19 ...

  4. stm32 rtc 实时时钟

    STM32的实时时钟是一个独立的定时器 通常会在后备区域供电端加一个纽扣电池,当主电源没有电的时,RTC不会停止工作 若VDD电源有效,RTC可以触发秒中断.溢出中断和闹钟中断 备份寄存器BKP 备份 ...

  5. STC8H开发(十三): I2C驱动DS3231高精度实时时钟芯片

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. STM32—ADC多通道采集电压

    文章目录 ADC详解 程序说明 函数主体 引脚配置 ADC和DMA配置 主函数 ADC详解 前面的博客中详细介绍了STM32中ADC的相关信息,这篇博客是对ADC内容的一个总结提升,ADC的详细介绍: ...

  7. 【转】高精度GPS测量中框架基准的统一

    一.地面基准点的坐标基准转换 一般情况下,我们可以从IERS或IGS等机构获取最新的站坐标和速度场,这些站坐标和速度场是在某一特定基准框架和历元下的坐标值,若要提供高精度GPS网的分析使用,还需要作框 ...

  8. 电压-电流转换(一):4-20mA电流环

    在仪表电路中,直流信号通常用作物理测量值的模拟表示,例如温度.压力.流量.重量和运动.最常见的是,直流电流信号优先于直流电压信号使用,因为在从电源(测量设备)到负载(指示器.记录仪或控制器)的整个串联 ...

  9. 电路 - 基尔霍夫定律(KLL);节点流入电流等于流出电流。

    下面是我在学习STM32 中ADC测量电压,时候接触掉ADC的测量范围在0~3.3V 之间,不满足于实际使用,用于电路知识设计电压放大电路.(图片来自野火) 上面个的电路,可以等效出一个电路公式:(V ...

  10. 64脚和小于64脚的STM32进行AD时注意,参照电源处理方法(转)

    源:64脚和小于64脚的STM32进行AD时注意,参照电源处理方法 请注意,ADC_IN17上没有内部基准,将其说成基准电压概念不对. 所以横线以下的理解不对,如果将其做为参考,则其电压假定按1.2V ...

随机推荐

  1. Python3循环结构(一)for循环

    Python3循环结构 在Python中主要有两种类型的循环结构:for循环和while循环.for循环一般用于有明显边界范围的情况,例如,计算1+2+3+4+5+-+100等于几的问题,就可以用fo ...

  2. 【记录】PR使用技巧记录

    @ 目录 [PR最重要的两个操作] 一.关键帧 1. 如何设置关键帧? 2. 应用实例 1)1s内视频从明变暗 2)1s内视频画面由大到小 二.入点.出点 [其他] PR批量调整视频效果 PR剪视频片 ...

  3. django实例(4):一对多外键关联

    程序目录 Project-->urls.pyfrom django.contrib import adminfrom django.conf.urls import url,includeurl ...

  4. TVM相关

    TVM介绍 为解决深度学习框架和硬件后端适配问题,华盛顿大学的陈天奇等人提出了TVM. TVM是一个端到端的全栈编译器,包括统一的IR堆栈和自动代码生成方法,其主要功能是优化在CPU.GPU和其他定制 ...

  5. 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题

    最近,我在做一个我们一个产品的OTA的功能,在调试跟后台对接Json数据的时候,发现序列化的数据一直跟期待的不一致.这让我很纳闷,明明一个简单的序列化和反序列化的问题,怎么数据就不对了.于是乎,就直接 ...

  6. mp4文件下载,而不是在线播放

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 以RRT为例分析创新点的产生

    1.找到基本算法的问题 1.1 喂文章和专利给GPT并分析提出的问题 1.2 整理问题 分析当前问题属于基本算法的那个阶段 2.1 固定参数问题:以双向RRT为例子:步长.采样方向.局部优化范围.交换 ...

  8. VitePress 集成 Waline

    转载自我的个人博客:小树 VitePress 本身基于 Vue3,可以通过组件将 Waline 集成到页面中,关于 VitePress 中的组件可以看这篇文章:组件 | VitePress 首先在 . ...

  9. python终端中使用pip指令下载模块显示SyntaxError: invalid syntax解决办法

    今天学习爬虫导入模块时遇到以下错误,即语法错误 >>> pip bs4 File "<stdin>", line 1 pip bs4 ^^^ Synt ...

  10. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-18- 操作模态对话框弹窗 (详细教程)

    1.简介 我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识.宏哥在java+selenium系列文章中介绍过这部分内容. ...