硬件开发>单片机>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. 【经验】VScode 远程 SSH 连接 Ubuntu 或 TrueNas 出错,Could not establish connection

    用VScode常常会碰到以下情况,Could not establish connection. 先介绍一下VScode远程连接和终端SSH连接的区别:终端直接用SSH连接时,只需要开启SSH服务,并 ...

  2. 【笔记】reko 0.10.2 反编译工具安装和使用记录|(2) user‘s guide

    Reko user's guide Reko是一个二进制可执行文件的反编译器.它接受输入的一个或多个二进制可执行文件,然后反编译成高级语言.它可以在GUI shell中被交互地使用,作为一个命令行项目 ...

  3. 【MOOC】华中科技大学计算机组成原理慕课答案-第五章-指令系统测试

    1 以下四种类型指令中,执行时间最长的是( ) (单选) A. 程序控制类指令 B. RR型指令 C. RS型指令 √D. SS型指令 SS型指令是两个操作数都存在主存中,慢. 2 程序控制类指令的功 ...

  4. 操作系统综合题之“用记录型信号量机制的wait和signal操作来解决了由北向南和由南向北过河人的同步问题(独木桥问题-代码补充)”

    1.问题:一条哦东西走向河流上,有一根南北走向的独木桥,要想过河只能通过这根独木桥.只要人们朝着相同的方向过独木桥,同一时刻允许有多个人可以通过.如果在相反的方向上同时有两个人过独木桥则会发生死锁.如 ...

  5. C# 控制台程序验证await立即返回

    class Program{ public static volatile bool flag = true; public static void Main() { Action a = null; ...

  6. Win32汇编学习笔记10.OD插件

    原文链接:https://www.bpsend.net/thread-223-1-1.html 筛选器异常插件 被调试程序: TestUnh.zip 我们用OD条试试发现,无法断下 筛选器异常 异常产 ...

  7. SpringBoot3整合SpringSecurity6(五)自定义登陆页面

    大家好,我是晓凡 写在前面 在前面的文章中,我们学习了SpringSecurity 登录认证流程,对其应该有个大概印象了. 忘记的小伙伴点击下面自己复习去~ 在前面的学习中,我们使用的都是Spring ...

  8. 2024Jiangxi_H Convolution

    Description Input Output Sample Input 5 5 3 3 0 -1 -1 0 0 0 1 -1 2 -2 2 -2 2 2 0 -1 0 0 -2 -1 0 -2 0 ...

  9. K8s新手系列之指定Pod调度到指定节点上

    概述 在 Kubernetes 中,Pod的调度是通过kube-schedule来实现的,Pod的调度会经过一系列算法来进行完成. 在实际生产过程中,我们想让Pod调度到我们想要的节点上,往往通过ku ...

  10. 【2020.11.14提高组模拟】无尽之前 (game) 题解

    [2020.11.14提高组模拟]无尽之前 (game) 题解 有趣的题面 题目背景 雏见泽,一个和平的,或者说本应和平的小村庄,却因连续四年的怪死事件而蒙上了阴 影. 无一例外,每年的事件都发生在棉 ...