Показаны сообщения с ярлыком термометр. Показать все сообщения
Показаны сообщения с ярлыком термометр. Показать все сообщения

пятница, 7 сентября 2012 г.

Термометр с линейной шкалой.


Классический термометр на микроконтроллере строится с использованием светодиодного или жидкокристаллического цифрового индикатора. Информативность и удобство использования таких устройств не вызывают сомнений, но иногда хочется чего-то более интересного. Одним из вариантов измерителя температуры может стать термометр с линейной шкалой, имитирующий работу жидкостных или ртутных приборов. Реализовать подобное устройство оказалось не очень сложно.
Проект термометра с линейной шкалой вынашивался несколько лет. Основная идея предполагала использование простого процессора типа 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. Если кого-то заинтересует конструкция, есть несколько печатных плат и комплект деталей. Пишите.

понедельник, 16 мая 2011 г.

Термометр на 8-ми выводном микроконтроллере.


Идея сделать термометр на микроконтроллере без динамической индикации зрела давно. Хотелось использовать очень маломощный процессор и создать компактное устройство. Для индикации в таком случае очень удобно было использовать регистры сдвига. Результатом стал двухточечный термометр на PIC12F629. Еще одной особенностью данной конструкции является широкое использование элементов поверхностного монтажа. Это позволило выполнить весь термометр на печатной плате размерами 30х64мм.
Термометр на PIC12F629 
Так как данная разработка первая, выполненная с использованием поверхностных элементов, было изготовлено два прототипа, на которых отрабатывалась конструкция и устранялись ошибки. В дальнейшем эти платы подверглись демонтажу, а элементы использованы в последнем варианте.
В качестве датчиков применены широко распространенные DS18B20. Первый же вариант конструкции показал склонность датчиков к саморазогреву, поэтому в дальнейшем их питание было выполнено от одного из выходов микроконтроллера, включаемого на время измерения.
Программа МК отрабатывалась с использованием отладочной платы EasyPIC5. Для этого PIC12F629 был установлен на EasyPIC5, и соединен перемычками с пустой панелькой на плате термометра. В качестве языка программирования выбран MicroPascal.
Одна из особенностей термометра получена благодаря сдвиговым регистрам. Последовательный сдвиг информации приводит к отображению на дисплее изменяющейся «абракадабры», из которой вдруг появляются цифры, отображающие температуру.
Файлы проекта можно скачать на сайте "Микроконтроллеры".