比较器(Comparator,简写COMP)是MCU的一个常用外设,它用于比较两路模拟信号的电压大小,输出的是一个数字信号,用于指示哪路输入信号更大。
当Voltage A > Voltage B时,输出1;当Voltage A < Voltage B时,输出0。
你可能会想到ADC也可以完成电压比较的功能,和ADC相比,比较器更适用于需要快速响应或很少软件干预的应用场合,比如:模拟电压监测、频率和脉宽测量、BLDC电机控制等场合。
比较器有几个重要的参数需要了解,以STM32U031数据手册为例
第一个参数是Voffset,失调电压。
理想情况下只要比较器输入的电压不同,就会有一个确定的输出。但是理想和现实总会有差距,实际当两个电压差值过小时,就无法正常判断了,这个电压的阈值就是失调电压。也就是说必须两端电压大于这个值时,比较器才会有确定的输出。
输入失调代表可能发生比较器跳变点的电压范围,输出在该失调范围内任何一点都可能跳变。
第二个参数是迟滞电压Vhys,下图展示了无迟滞和有迟滞两种情况下的比较器输出,
迟滞(Hysteresis)是一种调节器件响应特性的技术,它使得比较器的输入信号在一定范围内来回变化时能够保持稳定的输出状态。MCU通常可以自己控制是否使用迟滞,以及配置迟滞电压的大小。在一些应用中,输入信号可能会由于噪声或其他干扰而引起小幅度的波动。如果没有迟滞,比较器可能会在输入信号的噪声范围内不断切换输出状态,导致输出产生振荡。通过引入适当的迟滞,可以防止这种振荡现象的发生,确保输出信号的稳定性。
第三个参数是响应速度,或者叫传播延迟。
此延迟被定义为输入信号超过阈值的时刻与输出状态变化的时刻之间的时间(通常是在输出达到VDD的50%时)。比较器响应速度越快,其功耗越大。
响应速度也可以通过MCU寄存器来配置。
第四个参数是Rail-to-Rail,轨到轨。
轨,指电源线,轨到轨,就是说输入的电压范围能够从0到正电源,从而实现比较器最大的动态范围。
对于非轨到轨的比较器,其输入最大值会低于VDDA。