Измерительные устройства

Термометр на микроконтроллере PIC12F629. Дополнение

  • Печать

Конструкция термометра на PIC12F629 с двумя датчиками вызвала неожиданный интерес. Несколько человек повторили схему. Естественно, что возникли вопросы, и эти вопросы часто повторялись. Данный материал делает попытку обобщения проблем и предлагает некоторые решения.

Схема термометра и прошивка, безусловно, рабочие. Мной было изготовлено три единицы, которые работают уже два года. Также есть сообщения об успешном повторении проекта. Внешне, функционирование схемы выглядит следующим образом: при отсоединенных датчиках (или одном из них) на дисплее светится число 85.0. Оно свидетельствует об отсутствии связи с DS18B20. Примерно через 5 секунд происходит смена показаний, и на дисплей выводится значение, полученное от второго датчика. Смена значения выглядит в виде хаотичного зажигания отдельных сегментов, из которого вдруг формируются цифры. Индикация номера датчика возложена на светодиод. В случае присоединения датчиков, что можно сделать даже в процессе работы, на дисплей выводится три цифры значения температуры.

ThermoPIC12

Не правильно работающая схема свидетельствует об ошибках в монтаже. Плата разработана под SMD компоненты, поэтому требует особо внимательного подхода. Тем не менее, ее вполне успешно можно изготовить по технологии ЛУТ. Из основных неисправностей наиболее часто звучали:

- отсутствие свечения индикаторов

- постоянное свечение всех сегментов

- частичное свечение сегментов без периодического изменения показаний

Схема индикации выполнена на трех последовательно включенных регистрах сдвига. Динамическая индикация не используется, поэтому если информация не меняется, то сегменты должны быть включены постоянно. Общий катод индикаторов всегда подсоединен к нулевому проводнику. Соответственно работа, отличная от вышеописанной просто не возможна. Если все же такое происходит, то следует еще раз проверить монтаж, наличие контактов и отсутствие замыканий под корпусами радиоэлементов. Как говорится: «В электротехнике чудес не бывает, бывают плохие контакты».

Программа термометра написана на языке Pascal, для компилятора mikroPascal, предлагаемого фирмой Mikroelektronika. Данный компилятор имеет пробную версию, способную генерировать до 2Кб кода. Соответственно любой желающий волен изменить управляющую программу по своему желанию. Для программирования микросхем использовалась плата EasyPIC5, от этого же производителя. Особенностью данного комплекта стала автоматическая прошивка фьюзов. При использовании hex-файла совместно с другими программаторами необходимо их устанавливать вручную. Фьюзы должны иметь следующие значения:

  • Ocillator - Internal RC no clockout (Встроенный генератор частоты без вывода сигнала)
  • WDT – disabled (Сторожевой таймер отключен)
  • Power up timer – enabled (Таймер по включению активирован)
  • Master Clear Enabled – disabled (Сброс по MCLR выключен) disabled
  • BOD – On (Узел контроля напряжения активирован)

Полное слово конфигурации имеет значение 0x31C4. Хотя есть сообщения о работоспособности со словами 0x21C5 и 0x31C5.

Используемые датчики DS18B20, несмотря на свою популярность, имеют несколько недостатков. В частности, они подвержены саморазогреву и чувствительны к помехам. Если первый недостаток частично решен в схеме термометра, то для обеспечения помехозащищенности лучше всего использовать экранированный провод для подключения датчиков. Длина провода не должна быть очень большой. Практически реализован и нормально работает прибор с датчиком, установленным на удалении 3 метров. Большая длина возможна, но на практике не проверялась.

DS18B20 очень чувствительны к перегреву при пайке. Данный перегрев влияет на внутренние схемы датчика и приводит к смещению показаний и другой неправильной работе. Еще одна странность – разная работоспособность датчиков разных выпусков. Поэтому при отсутствии связи с датчиком возможно следует его заменить, а не искать другие варианты. В частности одной из проблем стало увеличение времени измерения температуры у новых датчиков. Если купленные несколько лет назад отлично работали, то новые, на этой же плате стали давать сбой. Увеличение задержки в программе на период измерений в несколько раз относительно паспортной проблему решили. В настоящее время прошивка лежит именно с увеличенным временем.

Для питания термометра необходим источник с напряжением 5В. Наиболее простым вариантом оказалось использование невостребованных зарядных устройств к сотовым телефонам, хотя это и не самое лучшее решение.

Ну и для завершения рекомендую еще одну мою схему термометра: Простой термометр на PIC12F629 с батарейным питанием. ЖК дисплей и батарейка CR2032 придают всей конструкции простоту, компактность и независимость от сети.