Классический термометр на микроконтроллере строится с
использованием светодиодного или жидкокристаллического цифрового индикатора.
Информативность и удобство использования таких устройств не вызывают сомнений,
но иногда хочется чего-то более интересного. Одним из вариантов измерителя
температуры может стать термометр с линейной шкалой, имитирующий работу
жидкостных или ртутных приборов. Реализовать подобное устройство оказалось не
очень сложно.
Проект термометра с линейной шкалой вынашивался несколько
лет. Основная идея предполагала использование простого процессора типа PIC12F629 и микросхемы светодиодной индикации
MAX7219. Главным
сдерживающим фактором оказалась печатная плата. Вырисовывалась она только
двухсторонней. Желание попробовать сделать ее с помощью ЛУТ наталкивалось на
опасения получить неудачный экземпляр. К счастью появилась возможность получить
экземпляр промышленного качества, что и было сделано. При этом габариты
термометра очень сильно уменьшились от первоначального проекта.
Основу схемы термометра составляет связка микроконтроллера PIC12F629 и драйвера MAX7219. Выбор на эти компоненты пал по
одной причине –есть в наличии. В принципе все то же самое можно реализовать на
каком-либо одном контроллере. Учитывая, что сегодня появились многоножечные
модели, есть вариант обойтись даже без динамической индикации.
Микросхема MAX7219
может управлять свечением 64 отдельных светодиодов, либо 8 семисегментных
индикаторов. Для проекта была применена комбинированная схема, в которой
задействованы 40 светодиодов и 3 индикатора. Количество светодиодов позволяет
выполнить отображение температуры в диапазоне от 0 до 40 градусов, с шагом в 1
градус, что вполне достаточно для комнатного термометра. При желании можно
изменить диапазон на -40 +40 градусов, но шаг уже составит 2 градуса.
Микроконтроллер PIC12F629
предназначен для опроса датчиков, преобразования температуры и управления
драйвером. Работает он от встроенного тактового генератора, и не требует
никаких дополнительных элементов. В качестве датчиков изначально планировалось
использовать DS18B20, но в процессе
изготовления появилась идея применить какой-либо измеритель с шиной I2C. В качестве такового опробован датчик STLM75.
Печатная плата полностью разведена в Eagle. Потребовалась некоторая
дополнительная доработка, но в остальном все получилось неплохо. Уже на этапе
программирования проявилась одна небольшая ошибка. Светодиод, отвечающий за
десятичную точку(при использовании индикаторов), был установлен первым, а
зажигается последним в линейке. Проблема устранена программно, но хотелось бы
что бы ее вообще не было.
Печатная плата была заказана на сайте http://newpcb.ru/. Большое спасибо производителям
за быстрое и качественное изготовление.
Управляющая программа микроконтроллера написана в среде mikroPascal. Использована
демонстрационная версия компилятора. Объем генерируемого кода в этой версии
ограничен 2Кб, что вполне достаточно для PIC12F629,
имеющего на борту 1Кб ПЗУ. В процессе написания кода были использованы
встроенные библиотеки для работы с датчиками, вернее с шинами 1-Wire и I2C.
В процессе изготовления постоянно мешали новые варианты,
применения данной конструкции. В первую очередь напрашиваются два датчика. Для
этого предусмотрены два светодиода, связанные с неиспользуемыми десятичными
точками на индикаторах. Второй вариант – линейная шкала для разнообразных
приборов. При этом если использовать процессор PIC12F675, имеющий АЦП, то можно получить вольтметры, амперметры и
другие устройства. Единственное, что может потребоваться – изменить
расположение семисегментных индикаторов.
P.S. Если кого-то заинтересует конструкция, есть несколько печатных плат и комплект деталей. Пишите.
P.S. Если кого-то заинтересует конструкция, есть несколько печатных плат и комплект деталей. Пишите.