在工程上,我们经常用到窗口比较器,所谓窗口比较器,是指具有高阈值电压VH和低阈值电压VL的双门限比较器,当VL<Vi<VH时,也就是Vi在窗口内时,输出Vo为逻辑1,当Vi>VH或者Vi<VL时,也就在窗口外时,输出Vo 为逻辑0;窗口比较器的输入输出传输曲线如下图:![]() 图1 要实现窗口比较器的功能,可以采用两种方式来实现:专用的集成比较器芯片,以及通用运放实现。 这次我们主要聊聊用集成比较器芯片我们踩过的两种坑。 1号坑: 用推挽输出的比较器直接“线与”作为输出端。 所谓推挽输出,Q1和Q2每一个时刻只有一个导通,Q1导通,Q2就截至,电流由芯片输出,所谓“推”,Vout输出高电平;Q1截至,Q2导通,电流由外部输入到芯片,所谓“挽”,Vout输出低电平。 ![]() 一旦两个推挽输出连在一起,如下图所示,当Q1,Q4导通,Q2,Q3截止,导致Vout输出是个介于高电平与低电平之间的一个值,实际输出波形见下图,图中两个比较器“线与”后输出在1.5V左右,这样会导致数字逻辑的混乱,不知道是逻辑1还是逻辑0; ![]() ![]() 2号坑: 如果选用TI的LM2903集成比较器,虽然这款芯片是开漏输出,输出端具有“线与”功能,但如果比较器的供电不当也会造成意想不到的问题。 LM2903的供电范围是3V~36V,通常单片机也是3.3V电源,假设我们也给比较器供3.3V,且窗口比较器的高阈值电压VH设为2.8V,低阈值电压VL设为0.5,按理说只要Vin在0.5~2.8V之间,输出都应该是高电平,但是实际上当Vin在2V左右,窗口比较器就有低电平输出,电路图和实际波形如下图所示; ![]() ![]() Vin明明是在窗口以内,结果依然有低电平产生,刚以为是信号有毛刺,通过调整低通滤波器的截止频率,以及增大高阈值电压VH到3.3V都不行,后面仔细看数据手册才知道,比较器的输入范围必须小于Vcc-1.5V ,低温情况下要小于Vcc-2V,也就是高阈值电压VH输入的是2.8V,但由于供电是3.3V,那么内部比较就是以Vcc-1.5V作为基准电平,而不是输入的2.8V。所以,这种情况下,当正弦信号在峰值出就会超出了Vcc-1.5V=3.3-1.5=1.8V,就会导致超出窗口,这种情况下最简单解决方法就是提高供电电压,比如用5V供电就能解决这个问题。 坑踩完了,我们总结一下用窗口比较器电路的注意事项: 1) 注意比较器的输出方式,比较器的输出方式有开漏输出和推挽输出,做窗口比较器要选择开漏输出的比较器,而不能用推挽输出的,且开漏输出必须要接上拉电阻; 2) 注意比较器输入信号范围,通常电源供电要大于最大输入信号; |