Сделал тут на днях небольшую платку дополнение, которая следит за уровнем питания и сохраняет настройки в EEPROM при понижении ниже определенного уровня. Все как описывал здесь. В качестве компаратора используется встроенный в PIC16f877a.
Смотрится конечно как аппендикс, но функция уж слишком полезная, чтобы ей пренебрегать.
Напоминаю как выглядит схема в общих чертах:
Теперь вкратце по коду:
Сначала настраиваем прерывания по компаратору:
if (CMIF) { __delay_ms(20); //антидребезг if (C1OUT) //Сработал компаратор в сторону < { SaveStatusFlag = 1; //переменная флаг } CMIF = 0; }
Переменную-флаг отлавливаем в главном коде:
if (SaveStatusFlag) { SaveState(); SaveStatusFlag = 0; }
Функция SaveState() – функция сохранения настроек в EEPROM, про нее я писал здесь.
Небольшая демонстрация работы схемы:
На видео виден глюк с температурой, которая почему то оказалась равна 58 градусам, будем разбираться.
Какие номиналы резисторов в схеме?
Это зависит от того, какое падение вам необходимо получить.
В моем случае на диоде падение было 590 мВ, а значит нужно подобрать такие резисторы, чтобы на них при 5 В было больше 590 мВ, а при 4.7 меньше. Если считать что вход мк не имеет сопротивления и отбросить 5% разброс резистор, то для моих условий хорошо подходят резисторы 130К и 18К. Если не попали, подбирать экспериментальным путем, либо приобретать 1% резисторы 🙂
А для диода резистор рассчитывается так, чтобы обеспечить нужный ток на падение в 0.6 В. По даташиту 1n4148 у него типовой ток при падении 600 мВ – 5 мА. То есть минимальное падение на резисторе может быть 4.1 В => 4.1/5mA = 820 Ом – даже попадает в ряд Е24
У меня получилось использовать внутренний источник опорного напряжения. Юзаю PIC16F887. В качестве опорного задал значение 2,5 В. В качестве напряжения для сравнения на пин RA1 завёл средний вывод подстроечника, номиналом в 33 кОм. Ёмкость электролитического конденсатора примерно 1000 мкФ. Перед конденсатором стоит диод. А да. После диода напряжение питания не 5 В, а 4,7 В получилось. Поэтому опорное напряжение снизилось где-то до 2,3 В. При этом конфигурацию регистра VRCON не менял
Есть возможность использовать внутреннее опорное напряжение, значением 0,6 В. Так сначала и получилось. А потом на 2,% В сделал. Думаю, что вариант с 0,6 В будет лучше. Или на диодах собирать, как у Вас.
Ммм, я особо с внутренним опорным напряжением не разбирался, но мне всегда казалось, что оно зависимо от напряжения питания, то есть если упадет напряжение питания, то упадет и опорное, а значит детектор собрать особо не выйдет.
Согласен. На диоде будет надёжнее.
У меня работает вот почему. Напряжение на делитель я взял с точки до диода. Оно падает быстрее, чем напряжение с конденсатора, которое подаётся на контроллер и потом используется для опорного напряжения. Соберу на диоде.
не обязательно собирать такое устройство, можно меню организовать таким образом что будут записываться в память только последние значения которые задавались
Конечно можно, но в данном случае мне хотелось собрать именно Low VDD detector 🙂