Например TDA7294

РадиоКот > Схемы > Цифровые устройства > Бытовая техника

Термометр-гигрометр ALCO-STOP

Автор: DaemoNN, dimbr19@gmail.com
Опубликовано 07.09.2015.
Создано при помощи КотоРед.

Привет Всем !!! От всей души Кота с юбилеем!!!

 Целью сих изысканий было создание термометра с функцией измерения относительной влажности для проверки качества работы систем кондиционирования воздуха в салонах автомобилей. В итоге получилось небольшое симпатичное устройство, которое может пригодиться не только мастерам-холодильщикам, но и простым смертным в быту (ну мало ли зачем: кто-то, например, дневник природы ведет). Конструкция не претендует на какую либо оригинальность — думаю что на просторах интернета да и на этом сайте найдется не одна похожая схема, однако её основное достоинство — то что за её основу взято то что давно уже должно было оказаться в мусорном баке — отслуживший свой век алкотестер. Подобные штуки наверняка валяются у многих водителей в хламных углах — когда-то после серьезного ужесточения наказаний за пьяную езду они были очень популярны. Таким образом цена устройства определяется стоимостью датчика температуры и влажности, учитывая конечно кризис он недешевый (хотя сейчас уже вроде китайские аналоги появились, а поскольку код программы устройства я выкладываю на всеобщее обозрение, адаптировать её под «китайца» не составит особого труда, скорее всего), но по сравнению со стоимостью аналогичного готово приборчика хатой фирмы (а он еще до кризиса стоил в районе 5000р. в магазине холодильного оборудования, причем по параметрам он ничуть не выигрывает у нашего) стоимость получившегося устройства копеечная. Да и времени на сборку нужно совсем немного. Технические параметры прибора определяютя параметрами датчика SHT-10, примененного в нем. Срок службы алкотестера невелик по той простой причине, что химико-электрический датчик паров спирта приборчика живет весьма недолго (по крайней мере если нечасто пользоваться, может его надо «подкармливать» этими самыми парами время от времени:) ). Тем не менее у меня накопилось их за жизнь 3 штуки — один я покупал сам, еще два появились каким то другим образом — отдали добрые люди скорее всего для пополнения гаражной свалки. На поверку все 3 оказались «дохлыми» - никаких промилей они не показывали, даже когда были эксперименты с проспиртованными ватками, однако приборчики пищали, показывали нули — т. е. индикатор и процессор были явно живы. Тут естественно появилась идея которая появится даже у мальчишки-дошкольника — посмотреть что внутри. В одном приборчике оказалась микросхема в виде «кляксы» - этому дорога скорее всего в помойку, а вот еще два (хотя и были в разных корпусах) оказались собраны на базе микроконтроллера Atmega48 по одинаковой схеме. Их то и было решено использовать для опытов. Итак алкотестер ALCO-STOP преображенный в термометр:

 Это чудо китайской электроники состоит из МК Atmega 48, ЖКИ индикатора, подключенного напрямую к выводам микроконтроллера, микросхемы линейного стабилизатора напряжения на 2.5Вольта с выводом выключения, пищалки с драйвером на одном транзисторе (пищалка без генератора), кнопки включения, всякой мелочевки типа кондявок по питанию, датчика паров спирта и его обвязки (выход датчика был подключен к одному из входов АЦП микроконтроллера). Собственно этот дохлый датчик нам не нужен — выпаивается и выкидывается в мусюрное ведро, также там есть да резистора — датчик напряжения батареи он нам тоже не понадобится. При нажатии на кнопку включения через диодную развязку подается напряжение с батареи на вывод включения стабилизатора 2,5В и на вывод PC1 микроконтроллера, служащий для мониторинга состояния кнопки (а у нас она будет не только включать и выключать прибор). Таким образом после нажатия кнопки на выходе стабилизатора появляется напряжение 2.5В которым питается микроконтроллер, он запускается и формирует на одном из своих выводов сигнал удержания для стабилизатора (до переделки это был PC4 или PC5, после стал PD0), когда нужно выключить прибор программа микроконтроллера снимает этот сигнал (логика сигнала положительная т. е. Чтобы прибор был включен, нужно ужерживать лог «1»), питание 2.5В перестает поступать на МК и прибор выключается. Честно говоря я не особо заморачивался как работает эта схема и как устроены все развязки ибо работает и хорошо, единственное что пришлось перекинуть сигнал удержания т. к. он висел на одном из выводов TWI микроконтроллера которые предполагалось использовать для подключения датчика (хотя впоследствии выяснилось что этого можно было не делать). Вход драйвера пищалки висит на выводе PD2 МК чтобы она пищала необходимо формировать на этом выводе программно меандр частотой около 1КГц, а когда не нужно чтобы она пищала — логический 0, иначе через неё будет идти постоянный ток. Индикатор имеет 11 точек подключения к микроконтроллеру это выводы PB0-PB6 и PD4-PD7. Исследованием при помощи USB-осциллографа DiSco было выяснено, что на выводах PD4-PD7 формируется импульсный сигнал со скважностью 8 в виде «бегущего огня» с частотой в районе десятков герц, а на выводах PB0-PB6 некие псевдослучайные сигналы. Т.е. стало понятно что мы имеем дело с простой динамической индикацией. Таким образом было решено продолжить исследование индикатора при помощи написания собственной программы.

 На правой стороне платы прибора располагаются 6 дырчатых контактных площадок — это контакты для программирования, покурив даташит на атмегу я выяснил их назначение (нарисованы на картинке) и попробовал подключить к ним программатор UPA-USB – он увидел чип и обругал что такого нет среди поддерживаемых.
 Однако это была большая радость — SPI программирование у Меги не выключено. Далее была задача добыть программатор и некую среду разработки под данный МК. За пивком я расспросил друга — инженера оборонного предприятия как вообще эти программы пишут, вкратце он мне рассказал и на следующий раз притащил програмутор AVR-ISP mkII (потом я сам спаял такой же) и IAR с лекарством на флешке. Честно говоря программ я до этого сам я никогда не писал поэтому, в случае чего, прошу не пинать за корявый код. Установив IAR и AVR студию я стер контроллер (он был залочен) и начал эпопею написания проги — писалась она долго, правда всегда между делом. Первым делом я воссоздал сигналы динамической индикации. Далее нужно было формировать сигналы сегментов индикатора.  Система сигналов сегментов оказалась какой-то корявой: не по знакам а фиг знает как. Тем не менее, через некоторое время и кучу экспериментов с программой я научился рисовать цифирьки на индикаторе. Далее стоило подумать что делать с этой штукой — сначала хотел присобачить датчик типа DS-1820, потом порывшись на сайте местного интернет-магазина узнал о существовании датчика SHT-10 фирмы Sensirion, он был куплен и присовокуплен к бывшему алкотестеру при помощи куска четырехжильного телефонного провода, не забыли и про два резистора 10КОм подтягивающих шину к напряжения питания. Из даташита на датчик я узнал, что он должен общаться по I2C подобному интерфейсу с микроконтроллером, по идее для этих целей у Атмеги есть периферийный модуль TWI, который я и хотел использовать, к его выводам PC4 и PC5 я и прикошачил датчик (для этого пришлось с одного из этих выводов убрать сигнал удержания питания). Но оказывается не только наши соотечественники такие «мудрые» бывают (на примере автопрома это мне хорошо известно) и Sensirion изобрел какую-то свою Sensibus, которая с атмеговским TWI не больно-то дружит, вобщем это не I2C, попытка использовать TWI была обречена на провал. Короче, код для работы с этим датчиком я взял из примера на него, адаптировав его только под имеющееся железо. Потом была состряпана функция для отображения чисел с плавающей запятой и появился почти целый термометр. Далее выяснилось что датчик при напряжении 2.5В работает хреново и медленно и вообще он как будто рассчитан на работу от 2х батареек - имеет детектор разряда на 2.4В. Было решено сгородить схему для отдельного питания датчика — она показана на картинке, вобщем-то простая на 2х транзисторах, единственная тонкость: кондер  по питанию емкостью 0,1Мкф (на фотке он черного цвета в углу) оказался весьма важной деталью — без него долго ничего путью не мерилось. В программу было добавлено чтение статусного регистра датчика, и на нашем приборчике появился индикатор разряда батареек.
 Осталось только сделать интерфейс управления — была цель сделать похожий на интерфейс управления течеискателя LS-I фирмы CPS активно используемого в работе, а фот и он:

Одно короткое нажатие на кнопку — переключение режимов измерения температура-влажность (измерение точки росы не убралось в 48ую :(... если только на более жирную атмегу менять в том же корпусе), два коротких нажатия — включение/выключение звука кнопок (состояние этого параметра сохраняется в энергонезависимой памяти МК), длинное нажатие — выключение прибора. При отображении температуры он показывает значек «градус»:

при отображении влажности — значек «%BAC»:

и минусовой температуре появляется значек «Mg/L» уж ничего не поделаешь когда-то он был алкотестером, ну и когда батарейка садится - значек «батарея»:

После запиливания интерфейса мне осталость только добавить функцию автовыключения и пищалки при смене режима, включении и выключении — они были сделаны на оставшихся таймерах микроконтроллера, как и динамическая индикация. Все прибор готов — дешево и сердито. Однако измеряет температуру и влажность достаточно достойно.

Фьюзы второго приборчика (он более «молодой» на Atmega48PA, а первый на Atmega48):

Второй приборчик я сделал менее чем за час — хорошо не платы не надо травить не ЛУТить, не сверлить, не корпус какой-то выдумывать - и при этом заводская плата и заводской корус с индикаторм и батарейкодержателем и затраты на заказ всего этого - 0 Руб. Код и прошивка прилагаются. При программировании микроконтроллера следует удерживать кнопку.

Всем спасибо за внимание, удачи и успехов во всем.

 


Файлы:
Исходники и прошивка


Все вопросы в Форум.


ID: 2413

Как вам эта статья?

 Нравится
 Так себе
 Не нравится

Заработало ли это устройство у вас?

 Заработало сразу
 Заработало после плясок с бубном
 Не заработало совсем

11 24 10