单片机过压监测问题

想用单片机AD做个过压欠压监测的程序,监测12V蓄电池,一旦过压或欠压时就停止工作 ,考虑电池上电或某些时候可能有电压波动,本人想了两种方法:
1.主程序循环里先检测一次电压值,如果超过了上下限,就延时10ms再检测一次电压,若再一次超上下限了就判为过压或欠压。
2.先检一次电压,若超了上下限就采N次电压值,用中值滤波法取得本次电压,判断是否过压欠压,就种方法虽准点但影响主程序开销,第一种方法简单快速但怕判不准,请问哪种方法好,或者指点个更好的方法??
要求硬件最简化,用单片机内部AD来采集,12V通过电阻分压,稳压管限幅,软件判断,因为主程序还有其它任务,用中值滤波固然好点,但会不会影响主程序??如用第一种方法,硬件上并电容,先采一下,延时再采下,就采两点,能达到效果吗?

如果有电压波动,你应该首先在硬件上考虑抗干扰、滤波的方法。在硬件处理过后,信号会有明显的好转。比如在信号两端并上一个电容(最简单有效地办法)
硬件处理后,在考虑软件方法。
我觉得你说第二个方法比较好。就是采用去掉一个最高分、去掉一个最低分,然后再求平均值的方法,就可以了,N不用取的很大,我觉得取10以内就足够了。这个你得自己一点点试。

补充一点:所谓的监控程序不能对原始信号进行改良,这句话,我不太同意。我觉得咱们做这个电压信号处理的目的是判断电池电压是否过了限定值,不用去关心来的信号是什么样子的。为了提高判断的可靠性,所以一定需要加硬件滤波(简单滤波就可以了)。
你可以这样做一下,先并个电容,然后用程序去试验一下,取几次值比较可靠。这个次数不是说出来的,而是你试验出来的。对吗。
大家可以在讨论一下,我只是说了自己的看法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-29
不太同意wangchao234
因为这是一个监控程序,不是对信号源的改良。
其次我说一下我的意见:
你可以参照一下模拟电子技术里面的滞回电压比较器,最好过压欠压都设定两个门限值。
1.假定过压值为12.5V,门限为12V以上,到信号一旦检测到超过12.5V后,以后只要不低于12V都认为过压。
2.欠压值为9.5V,门限10V一下,一旦检测到9.5V,之后不高于10V都是欠压。
可能我的表述不清楚,但是你最好看看滞回电压比较器原理图,相信你会明白的。
最后:我觉得这种东西使用模拟技术比用单片机强一万倍!

我的补充:首先,抗干扰能力只是相对的,无论是固件还是软件,考虑了抗干扰你就会牺牲到灵敏度。 其次是实时性,中值法你的N值怎么确定,可能电压稳定了,你却命令单片机停止工作。
第2个回答  2010-08-30
首先说明一点,12V蓄电池的最低限制电压是10.3V,最高限制电压是13.5V。其实这东西不好处理,那么多的电动车的电池欠压也解决不了,都是电池接近没电了,启动的时候电流大,电压马上降下去,电机就停止,停止后电压又回升,,保护撤销,电机又开始动。不过看你说的2种方法都是不行的。我也不清楚你的电池究竟带什么负载?启动的时候需要大电流吗?如果电路在工作中有瞬间的电流增大的情况,请你按照上面说的去设计:第一种方法:带大负载情况:启动时电压下降超限,启动后电压能恢复都保护值以上。这样你就先检测一次电压,发现超过最低限制电压后,隔2秒再检测,如果还是超过最低限制电压,确认是欠压,进行断电保护。如果第二次已经恢复到正常范围内,那就不是欠压。
第二种:带小负载情况,小负载启动的时候并不会造成太的电压波动,保护方法和第一种一样,只是保护有点其别,只要确认已经欠压,将断电保护状态锁定,就算电压回升也不再接通电池。除非手动复位。这里不好说,可以加QQ253223138一起交流下。 这样的压降加滤波电容是没用的,还有个问题就是12V单片机是无法检测的,还是用个三极管和稳压二极管比较方便,硬件不复杂减轻了软件的处理。 不用采用ADC去监测,因为你不需要中途根据电压去调整,只是要出现欠压和过压的时候监测,用我说的方法三极管和稳压二极管进行监测,一但过压或欠压,三极管导通或断开,用个普通IO口就行了,减轻程序的复杂性,也减轻CPU的处理时间.我已经说的很清晰了,看不懂也就没办法了。
第3个回答  2010-08-29
我认为第二种方法好一些。
相似回答