Индикатор своими выводами сегментов подключается к порту B (RB1-RB7), а вывод запятых — к выводу RA4 микроконтроллера (МК) через токоограничительные резисторы R11-R18. Благодаря использованию индикатора с общим анодом (ОА), оказалось возможным непосредственное подключение выхода RA4 с открытым коллектором к выводу «запятых» индикатора. При номиналах резисторов, указанных на схеме, максимальный импульсный ток каждого вывода порта составляет 13-15 мА. Он меньше «ожидаемого», потому что выход порта тоже имеет некоторое ненулевое сопротивление. Для увеличения яркости индикатора, если она недостаточна, можно уменьшить их номинал до 36 Ом, однако это увеличит потребляемые токи примерно на 15-17%. Выводы разрядов индикатора подключены к портам RA0-RA3 через усилители-инверторы на MOSFET транзисторах с каналом P-типа с малым напряжением включения затвора и малым сопротивлением СИ во включенном состоянии. Подобная схема включения позволяет предотвратить перегрузку портов МК (ток через выводы разрядов доходит до 15*8=120 мА), а так же снизить их (портов) выходные токи до нескольких микроампер максимум (почему это важно будет понятно ниже). Резисторы R7-R10 защищают выходы МК от скачков тока в моменты переключения, а так же в случае пробоя какого-либо транзистора.
Динамическая индикация с регулировкой яркости индикатора осуществляется с помощью прерываний от таймеров TMR0 и TMR2. В прерывании от TMR0 индикатор зажигается, а от TMR2 – гасится. Изменением соотношений интервалов этих прерываний и регулируется яркость. Подробнее об этом можно прочесть в моей статье /me/mc/mc244.php.
Импульсы оборота колеса поступают на вход МК RB0/INT с геркона SW1. Элементы R4, C4 устраняют дребезг контактов геркона, а R3 – уменьшает импульсы разрядного тока C4.
С помощью таймера TMR1 измеряется время между импульсами. Собственно скорость вычисляется по формуле: скорость — V=(L(cm)*2813)/X , где V — скорость в 1/10 км/ч, Х — число 16 микросекундных интервалов между импульсами датчика, L – окружность колеса в сантиметрах.
Кнопка подключена ко входу RA5/MCLR, который запрограммирован как обычный вход. Резистор R1 «подтягивает» вход к +3В, а R2 – устраняет броски тока при переключении кнопки. Конденсатор C3 устраняет на входе MCLR «игольчатые» высокочастотные помехи. Без него прибор периодически может сбрасываться даже при такой конфигурации МК. Цепь R6, R5, D1 предназначена для возможности вывода МК из режима SLEEP нажатием кнопки. При нажатии кнопки меняется с высокого на низкий уровень на входе RB7 (в режиме SLEEP он запрограммирован как вход и разрешено прерывание по изменению уровня) и МК выходит из спящего режима. На остальных выходах управления сегментами RB1-RB6 и RA4 в режиме SLEEP установлен высокий уровень, что гасит индикатор и минимизирует ток потребления независимо от состояния «разрядных» MOSFET транзисторов.
Элементы X1, C1, C2 образуют со входами RA6, RA7 кварцевый генератор частотой 4 МГц по обычной схеме. Применение кварцевого генератора позволяет максимально увеличить точность вычислений. В случае, если достаточна точность измерений 3-5 % и требуется максимальное увеличение вибрационной и ударной стойкости прибора, можно эти элементы исключить и установить в конфигурации в пункте «осциллятор» внутренний генератор (значение «IntOsc»). Тогда МК будет тактироваться от внутреннего генератора с такой же частотой 4 МГц, но его точность составит порядка 3% (при стабильном питании 3 В). Внимание! Если у Вас самодельный программатор, при установке в конфигурации одновременно пунктов “INT.OSC” и “MCLR OFF” (отсутствует птичка в пункте MCLR) могут быть проблемы, особенно с последующим перепрограммированием МК, поэтому, тем, кто не уверен, лучше собирать прибор по исходной схеме.
На элементах U2, R20, R21 реализована схема измерения напряжения батареи питания. Программируемый регулятор напряжения U2 включен по схеме с напряжением 2.5 Вольт. На его выходе напряжение питания 3-5 В преобразуется в 0.5-2.5 В. На выходе RA1 МК на время измерения напряжения устанавливается низкий уровень, соединяя верхний по схеме вывод R21 с корпусом, и он становится нагрузкой U2. Номинал R21 выбран для обеспечения минимального по datasheet тока через U2. Через резистор R20 на вход внутреннего компаратора МК (RA0, в данном случае, установлен как вход компаратора AN0) поступает измеряемое напряжение 0.5-2.5 Вольт. На другой вход компаратора поступает ступенчато возрастающее напряжение с внутреннего источника образцового напряжения (ИОН). По моменту превышения ИОН над входным напряжением вычисляется величина напряжения. При измерении напряжения, на входы 2-х транзисторов (Q1,Q2) поступает открывающее напряжение и лишь вышеупомянутое свойство транзисторов MOSFET, а именно очень низкий входной ток позволяет сохранять высокое входное сопротивление компаратора и минимизировать погрешность. На время измерения напряжения индикатор гасится посредством «сегментных» выводов МК, однако, из-за малого времени измерения, напряжение на конденсаторе C5 остается почти такое же, что и под нагрузкой, поэтому, измерение дает реальную картину.
Данный способ измерения напряжения, конечно же, несовершенен, но в данном случае вольтметр выполняет лишь оценочную функцию, поэтому, достаточно и этой точности.
В SLEEP режиме выходы RA0-RA3 устанавливаются в высокий уровень для закрытия транзисторов, при этом, нет тока через U2 и, соответственно, обеспечивается низкий ток потребления всего устройства.
Вся схема питается напряжением 3В с выхода интегрального стабилизатора NCP551SN30, характеризующегося очень малым собственным током потребления (единицы микроампер) и падением напряжения (менее 0.1 В). На микроконтроллер напряжение питания поступает через дополнительный фильтр R22, C7, C8 уменьшающий помехи от динамической индикации. Относительно большая емкость конденсатора C5 обусловлена необходимостью шунтирования внутреннего сопротивления несколько разряженной батареи питания. Для его быстрой разрядки при выключении питания применяется резистор R19 и переключатель SW3 с дополнительным контактом. Диод D2 принудительно разряжает конденсаторы C6 и C8 при выключении питания, что облегчает последующий запуск микроконтроллера.
Программа микроконтроллера написана на Ассемблере в среде MPASM и в ней же откомпилирована. При загрузке прилагаемого HEX файла в программу для прошивки типа WINPIC или IceProg, слово конфигурации загружается автоматически (все «галочки» кроме пункта “PWRT” сброшены, осциллятор установлен “XT”).
Почти все детали устройства установлены на односторонней печатной плате размерами 39х49 мм, изображенной на рисунке.
Комментарии 2