范德萨大师傅 发表于 2025-4-29 17:34

如何通过灵动MCU内置比较器实现低电压报警?

基本原理
模拟比较器比较两个输入电压信号:

正输入端(+):连接你想监测的电压,比如电池电压。

负输入端(-):连接一个参考电压(可用内部参考或DAC生成的电压)。

当正输入电压低于负输入参考电压时,比较器输出翻转,可触发中断或控制其他逻辑。

配置步骤
1. 开启比较器模块时钟
确保你开启了比较器所需的外设时钟(如 RCC 中的 COMP 时钟)。

2. 配置比较器输入
根据具体芯片型号(如MM32F103、MM32L073等),配置:

IN+(正输入) 接入电池或外部电压。

IN−(负输入) 选择内部参考电压或DAC输出(例如1.2V、2.0V等)。

示例(伪代码):

c
复制
编辑
COMP_InitStructure.INP = COMP_INP_IO;    // 外部电压输入
COMP_InitStructure.INM = COMP_INM_VREF;// 内部参考电压
3. 配置参考电压源
若支持内部参考电压,可选择不同电压档位(如1.2V、2.0V)。

若芯片支持DAC输出给IN−,可精细调整报警电压阈值。

c
复制
编辑
DAC_SetChannel1Data(DAC_Align_12b_R, 2048); // 对应1.65V参考
4. 配置输出行为
可以输出到引脚供外部查看。

更常用的是中断模式,在比较结果变化时触发中断处理。

c
复制
编辑
COMP_ITConfig(COMP_Selection_COMP1, ENABLE);
NVIC_EnableIRQ(COMP1_IRQn);
5. 中断服务函数中处理报警
c
复制
编辑
void COMP1_IRQHandler(void) {
    if(COMP_GetITStatus(COMP_Selection_COMP1)) {
      // 电压低于阈值 —— 执行报警逻辑
      TriggerLowVoltageAlarm();
      COMP_ClearITPendingBit(COMP_Selection_COMP1);
    }
}
配置技巧与建议
滤波配置:为防止电压波动引起误判,建议配合比较器的**迟滞功能(hysteresis)**或软件防抖处理。

参考电压选择:使用内部DAC或VREF模块可灵活设定阈值电压,提升精度。

低功耗需求:比较器通常可在待机模式下运行,适合低功耗场景。

应用示例:低电压阈值为 3.0V
电池电压接 IN+。

内部DAC 设置为 3.0V(或接近)。

当电池电压下降至 3.0V 以下时,比较器输出翻转,系统触发报警。

xiaoqizi 发表于 2025-8-2 18:32

通过电阻分压网络将电池或电源电压按比例缩小后输入至正输入端

木木guainv 发表于 2025-8-2 20:50

部分型号支持直接选择芯片内部的固定参考源

Jiangxiaopi 发表于 2025-8-2 23:01

比较结果可直接输出到指定GPIO引脚,驱动LED、蜂鸣器等外设,无需软件参与

荣陶陶 发表于 2025-8-3 09:55

// 以COMP1为例的配置代码(伪示例)
COMP_ConfigType COMP_InitStructure;
COMP_InitStructure.INM = COMP_INM_VREFINT;      // 负端接内部参考电压
COMP_InitStructure.INP = COMP_INP_PIN_PA1;       // 正端接外部采样引脚(如PA1)
COMP_InitStructure.Mode = COMP_Mode_LowPower;    // 低功耗模式
COMP_InitStructure.Output = COMP_Output_GPIO;    // 结果输出到GPIO
COMP_InitStructure.OutputPol = COMP_OutputPol_NonInverted; // 非反相输出
COMP_InitStructure.Hysteresis = COMP_Hysteresis_Medium; // 中等回差减少抖动
COMP_Init(COMP1, &COMP_InitStructure);          // 应用配置
COMP_Cmd(COMP1, ENABLE);                        // 使能比较器


Zhiniaocun 发表于 2025-8-3 12:31

若驱动大电流负载,需用三极管/MOSFET进行电流放大;对于小型LED,可设置GPIO为推挽输出模式并串联限流电阻

Zuocidian 发表于 2025-8-3 14:43

当检测到电压低于阈值时,比较器自动翻转输出电平,直接触发连接的报警装置

Puchou 发表于 2025-8-3 17:19

通过设置中等回差,防止电压临界波动导致的频繁切换

Xiashiqi 发表于 2025-8-3 19:37

结合多个比较器通道实现分段报警

小海师 发表于 2025-8-3 21:57

利用ADC辅助测量实际电压值,动态修正比较器的参考点以提高精度

Haizangwang 发表于 2025-8-4 08:19

灵动MCU的内置比较器方案在实时性、功耗和实现复杂度上具有显著优势
页: [1]
查看完整版本: 如何通过灵动MCU内置比较器实现低电压报警?