最近碰到一個案子,目標是檢測MCU電源欠壓,到具體實現的時候才發現留下了一個巨大的坑。
看到這個標題首先想到的是帶ADC的MCU,對的在VDD端加一個隔離電阻,一個下拉電容輕松搞定。可結果呢,寫程序才知道原來,MCU電源下降了,ADC參考電壓也下降了,但是ADC數值是個相對量,才發現入坑了。
所以一下介紹你認為可以實現功能的方法,
1.ADC參考電壓選擇內部固定電壓值做參考,不會隨着電源電壓下降而出現變動,在輸入電路上 加上分壓電路,這樣能保證采樣電壓在參考電壓范圍內,因為參考電壓采樣電壓比例不一樣所以會出現一個特定的采樣值用來識別欠壓。
2.使用MCU自帶的LVD檢測電壓值,方式類似於ADC,設定一個參考電壓,低於此電壓標志位為零,高於此電壓標志位為1。
為了測量的穩定性,你還需要給標志做一個時延來濾除抖動。
if((PCON1 & 0x40) == 0) // 小於3.6V
{
if(volCount > 3000)
{
lowVFlg = 1;
volCount = 0;
}
else
{
volCount++;
}
}
else
{
lowVFlg = 0;
volCount = 0;
}
把這段代碼放到1ms函數里面做了3s的濾波。
吹牛、扯淡、交朋友,請聯系:18665321219