Например TDA7294

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

WaterClock

Автор: Plant
Опубликовано 21.09.2015.
Создано при помощи КотоРед.

 
Присоединяюсь к поздравлениям и желаю развития сего благого начинания...
-Опять часы!!! Скажете Вы. Отчасти правы. Одно лишь Но. Эти часы, кроме обычной информации, показывают температуру воды. И не просто воды, а морской воды. Температуру тёплого (пока ещё ) Чёрного моря…
Для жителей приморских городов довольно обычен вопрос: –Как вода ? Ответ- тёплая, холодная, так себе… Но хотелось бы более точного определения, т.к. для одних тёплая- это не менее 23 С, для других и 19 град.- это хорошо. Можно зайти в интернет и там поковыряться , но сей интернет не всегда под боком, и не всегда правдив в этом вопросе. Разлёт может составлять до 4х градусов- лично проверял. Вот и появилась идея сделать часы-термометр, которые смогут отображать температуру морской воды. Расположенные в людном месте они должны помочь с этим извечным летним вопросом- как вода?
Как это работает?
Проект состоит из трёх основных блоков:
  1. 1. Модуль, расположенный на берегу моря (благо есть доступ к техническому помещению в 10м от кромки воды). К модулю подключено 2 датчика DS18B20. Первый физически погружен в воду примерно в 10 метрах от берега на глубине 1,5м. Датчик соединён с модулем при помощи 4х-жильного провода, проложенного в полиэтиленовой трубе. Труба вкопана в прибрежный щебень и по ходу придавлена несколькими валунами. Пока работает… Также к модулю подключен 2й датчик DS18B20, расположенный в тени и регистрирующий температуру воздуха ( для сайта). Сам модуль подключен к интернету через роутер.
  2. в2. Модуль, расположенный непосредственно в городе, в близости к интернету и табло. К интернету- очень близко. Ибо требуется непосредственное
    подключение. Удаление от табло может быть до 1 км. прямой видимости.
  3. Устройство индикации. Расположение на улице. Необходимо только наличие питания 220в.

Принцип действия системы такой. «Береговой» модуль раз в 30 мин(сейчас т тестовом режиме 7 мин) опрашивает датчики температуры, обрабатывает . Полученный результат выводится на дисплей и отправляется на сервер. На сервере формируется текстовый файл, в котором указаны температура воды, воздуха и время обновления.
Модуль, расположенный в городе примерно раз 10 мин запрашивает данные с сервера. Полученные данные выводятся на дисплей и по радиоканалу отправляются на табло (только температура воды).
Табло полученные данные отображает в порядке очерёдности- время(отсчитывается локально при помощи RCT MCP79410), температура воздуха (тоже локальный датчик), температура воды.

Теперь подробнее о работе каждого блока.
«Морской» блок. (почти все рисунки имееют ссылки)

Центральным элементом блока является МК ATmega8 (IC1). Он управляет работой всех основных узлов устройства. Периодически (раз в 10 мин) процессор опрашивает термодатчики, подключенные к контактам разъёма CON_6. Результат выводится на дисплей DIS1. Формат отображаемой информации показан на рисунке.

 Back counter- обратный отсчёт. Показывает, сколько условных единиц осталось до очередного опроса. Период отсчёта меняется программно в зависимости от предделителя счётчика Т0. Далее отображается температура воды и температура воздуха. На второй строчке индицируется статус отправки данных по сети интернет. Если после предыдущего замера температур датчиков данные были отправлены на сервер, то индицируется TX complete. Если данные не отправлены ( нет интернета , сбой) то на индикаторе появится надпись No connect или Bad connect. Процесс опроса датчиков и отправки данных можно активировать в любой момент нажатием кнопки KEY, расположенной на задней панели прибора.
На схеме есть обведённая облась RF-module. Этой части в устройстве нет. Она относится к «городскому»блоку. В остальном схемотехнически блоки идентичны.
Взаимосвязь устройства с сетью интернет осуществляет микросхема U1 (W5500) фирмы Wiznet. Краткий обзор этой микросхемы и её отличия от предшественниц можно прочитать здесь .( http://habrahabr.ru/post/220723/) . В документации на МС не указаны некоторые особенности по организации режимов работы (клиент, сервер). Но оказалось, что в этом плане она совместима с W5100, где не плохо этот вопрос «разжёван».
Остановлюсь чуть по подробней с особенностью работы с этой МС. Всё управление проПосле включения питания примерно (не ранее ) через 1мс необходимо повести «софтовый» сброс- записью в регистр MR_reg значения h80. Через 1 мс МС окончательно, бесповоротно и полностью сброшена и готова к дальнейшим трудовым подвигам. Далее необходимо загрузить значения IP, IP шлюза , маски подсети, и MAC- адрес. После этого устройство начинает отзываться на запросы ping. Так выглядит подпрограмма начальной инициализации:
 
Данные для загрузки «берутся» из еепрома МК. Под свои нужды не планируется частое изменение основных параметров (IP, MAC), поэтому не стал вводить всякие тернистости в виде WEB-интерфейса.
Расположение переменных в памяти еепром МК:
 
Выделено:
Красный- «свой» IP
Желтый – шлюз
Синий – подсеть
Зелёный- MAC
Устройство работает в режиме клиента. В документации на МС W5500 не описан этот режим, но как оказалось, принцип идентичен с чипом W5100. Там это представлено так:
 
 

После некоторого количества проб и ошибок, этот алгоритм был реализован в подпрограмме Client (закладка client) с подробными комментариями.
После установки соединения на сервер отправляется посылка следующего вида:

GET /test/write_fail.php?temp1=$61&temp2=$62&pass=0000 HTTP/1.1
Host: www.dozor.crimea.ua
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive

Видно, что обращение происходит к файлу write_fail.php. Входными данными являются температура воды (temp1), температура воздуха (temp2), и пароль (pass). С температурами всё понятно, а вот пароль необходим для того, чтобы не было соблазна ввести данные через строку браузера. Если пароля нет или он не верен, данные приняты не будут, а сам сервер немного поругается. Сам файл write_fail.php (изменено расширение на .тхт).

Как происходят вставки данных о температуре в тело запроса?
При отправке данных на сервер программа МК проверяет наличии cимвола $ (они есть в теле запроса ….temp1=$61&temp2=$62……). Наличие этого символа говорит о том, что вместо символа $ надо вставить переменную. А 61 и 62 – это маркер того, какую из значений температур надо вложить. В итоге на сервер «уезжает» что-то типа

GET /test/write_fail.php?temp1=19&temp2=21&pass=0000 HTTP/1.1
…….
На сервере, в результате исполнения php-файла генерируется текстовый файл temper_feo.txt.

Содержимое файла примерно такое:

19;21;17:43 21-09-2014

Где 19- температура воды
21- температура воздуха
17:43 21-09-2014 – время (UA) и дата последнего обновления данных.

Когда данные отправлены, и сервер ответил

HTTP 200 OK

Т. Е . данные доставлены, на дисплей выводится сообщение TX complete.

Данные текстового файла выводятся на сайт. (на усмотрение модераторов)


Для удобства назначения новых датчиков на устройстве есть режим установки. Для входа в этот режим необходимо отключить питание, нажать на кнопку на задней панели, и её удерживая подать питание на устройство (1й датчик температуры должен быть подключен. Это будет температура воды). На дисплее появиться надпись setup. Далее отпускаем кнопку. Произойдёт считывание адреса датчика и сохранение в памяти МК. Далее, не отключая питания, отключаем датчик и подключаем второй (температура воздуха). Нажимаем на кнопку- второй датчик «взят на карандаш».

 

Теперь «городской»модуль.
Как было написано выше, схема у «городского» модуля такая же как и у «берегового». Отличие лишь в наличии высокочастотной части, предназначенной для отправки данных на табло. Датчики этому модулю не подключаются. Соответственно нет необходимости в установке разъема CON_6.
Примерно раз в 10 мин устройство запрашивает данные на сервере. После результативного запроса принятые данные обрабатываются и результат выводится на дисплей.

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

 

 

Сам запрос:

GET /test/temper_feo.txt HTTP/1.1
Host: dozor.crimea.ua
Connection: keep-alive
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive

На запрос сервер отвечает

HTTP 200 OK
…….
…….

16.5;21;17:43 21-09-2014

Содержимое текстового файла следует после заголовка через 2 знака переноса строки. Знак переноса строки –это 2 байта: h0d,h0a. Алгоритм выделения данных примерно такой. Если сервер на запрос ответил HTTP 200 OK (запрашиваемый файл существует), программа начинает искать в теле ответа 2 последовательных знака переноса –h0d, h0a, h0d, h0a. (подпрограмма recive в закладке Wiz_PP). Если переносы найдены, то за ними идут нужные нам данные. Далее ищем знак «;». Всё что до него- это температура воды, после него и до пробела- это температура воздуха. Т.к. нас не интересует температура воздуха, мы её не «выделяем». После определения температуры воды, ищем знак пробела. Следующее за ним- это время и дата обновления. Всё это делается в подпрограмме test (закладка wiz_PP).

В результате интересующие нас данные разложены по полочкам. После этого данные о температуре отправляются на табло по радиоканалу. Радиоканал организован на МС TRC102 (IC4). Выходная мощность этой МС на частоте 868мГц примерно равна 3-4мВт. Это маловато, учитывая что табло и «городской» модуль не будут находиться в условиях прямой видимости. Для поднятия мощности передатчика и увеличения расстояния между модулем и табло применён УВЧ на транзисторе VT2, позволяющий увеличить мощность до 40-50мВт. После каскада усиления высокочастотный сигнал поступает на антенну, подключенную к разъему X1. Антенной может служить отрезок провода длиной 8 см. Для проверки работы передатчика, а также точной установки частоты передачи на модуле предусмотрен тестовый режим. Для входа в тестовый режим надо на выключенном модуле нажать кнопку на задней панели, и её удерживая подать питание.

На дисплее отобразиться текущий канал, а передатчик включиться в режим немодулированной передачи.

Контроль значения частоты производится частотомером. При каждом нажатии на кнопку значение частоты будет меняться с шагом ~ 8-10 кГц (по кругу). В принципе, значение может быть любым, главное чтобы частоты на модуле и на табло совпадали (см. ниже). Для сохранения установленного значения необходимо нажать и удерживать кнопку более 2х секунд. Значение сохраниться в еепроме МК, а сам модуль перейдёт в рабочий режим.
Конструктивно оба модуля собраны на одинаковых печатных платах. Отличие модулей только в наличии на «городском» блоке высокочастотной части. Ну и ПО, вестимо.

 Собраная плата городского модуля сторона 1, сторона 2

 Табло.

Схема табло разделена на 2 части. Это схема одной цифры, схема процессорного блока, (тоже разбита на две части, CPU и LED).
Схема процессорной части.

Табло питается от источника напряжения 16V 2A. Выбор именно этого номинала исходил из того, чтобы можно было включить в одном звене 4 последовательных светодиода. Падение напряжения на одном зелёном светодиоде составляет 3,5вольта. На четырёх- 4 х 3,5=14В. Под лад этому рассчитаны все токоограничивающие резисторы в цепях светодиодов.
Для питания цифровой части используется напряжение 5В. При его формирования используется импульсный стабилизатор MC34063 (IC9). Для питания модуля приёмо-передатчика необходимо напряжение 3,3В, которое формируется линейным стабилизатором MCP1701-3,3 (IC8). Несмотря на различные напряжения питания МК (5В) и приёмо-передатчика (3,3В.)сбоев в обмене данными между ними не наблюдается.
На микросхеме MCP79410(RTC, IC6) реализованы собственно сами часы. Вывод 7 запрограммирован на генерацию меандра частотой 1 Гц. Этот вывод подключен к входу внешнего прерывания МК INT1 (выв.1). Раз в секунду происходит прерывание, по факту которого считывается значение времени и выводится на табло. Вывод происходит через группу МС сдвигового регистра 74HC595. Первая (по линии вывода)МС расположена на плате процессорного блока (IC2). Данная МС формирует управляющие напряжения для силовых ключей ULN2003(IC1), при помощи которых происходит коммутация светодиодных массивов «воздух», «вода» и двоеточие. Далее данные через вывод 9 IC2 последовательно выводятся на остальные 4 цифровых сегмента табло.
Микросхема RTC (Ic6), а также частотозадающие элементы C3, C4, Q1 отделены от основной платы разрезами, образующими температурный барьер. На этом изолированном участке установлены элементы нагревателя (R22-R33, 12 шт. по 1,5К)и датчик температуры MCP9700 (Ic4). 

Плата процессорного блока фото 1, фото 2, фото 3

С двух сторон этот участок печатной платы закрыт термоизоляционным материалом. В итоге опорный генератор RTC заключён в термостат. Сигнал с датчика температуры поступает на компаратор (Ic5), и далее на транзистор VT1.
VT1 коммутирует резисторы нагревателя R22-R33. При указанных на схеме номиналах R17,R18 температура, поддерживаемая термостатом составляет около 50 град. Работа термостата индицируется светодиодом LD1, подсоединенным параллельно нагревателю.
На один из входов АЦП контроллера подключен фоторезистор OPH1. Он является датчиком освещенности, в зависимости от которой изменяется яркость свечения табло. Чем сумрачней на улице, тем темнее светит табло. Реализовано 8 уровней, ПП set_light , закладка Main.
Данные с «городского» модуля принимаются при помощи радиомодуля RFM12B-868 (Ic7). Модуль собран на той же МС TRC102 (MRF49A), что несколько сэкономило время на разработку.
Посчитав количество отверстий для светодиодов на платах цифр табло, решил заказать эти самые платы. При желании можно устанавливать как выводные светодиоды, так и SMD типоразмера 1210.Так же и на процессорный модуль можно установить выводные светодиоды.

Что касаемо установки времени.
Есть 2 способа.

  1. Витиеватый. Отключаем элемент 2032(батарей часов). Вставляем заново. Подключаем табло к источнику питания. При этом время считывается и устанавливается с ЕЕПРОМА МК. Отсчёт начинается с этого значения.
  2. Установка времени и коррекции хода с радиопульта. Способ удобный неоспоримо, но на момент написания статьи до конца не реализованный…

ТТХ описанных компонентов проекта.
«Береговой» и «городской» модули питаются от источников напряжения 9V/0,5A.
Потребляющий ток – 80мА
«Городской модуль» в режиме передачи – 135мА
Частота передачи -868мГц
Табло.
Напряжение источника питания -16V
Потребляющий ток при всех включенных сегментах – 2А
Частота приёма – 868 мГц

Вывешивал за окно. Метров со 100 в хороший солнечный день цифры хорошо видны.



Ссылка на видео 

P.S. Сейчас я бы добавил количество светодиодов массивов, образующих символы «вода» и «воздух». Дело в том, что яркость свечения зелёного светодиода заметно больше, чем синего и оранжевого.
P.S.2 Пока писал статью, у нас побушевал шторм. Оказалось, что слабым местом является место выхода трубы из моря. И хотя труба была закопана, шторм вымыл щебень и оборвал оголившуюся трубу. Причём часть, которая была дальше в море, не пострадала. Конечно, трубу заменили, закопали, укрепили переход. Но на пороге зима, а зимой штормит зело не слабо.
В общем, пока вода относительно теплая, решил дополнить береговой модуль ВЧ частью. А датчик температуры сделаю беспроводным, на той же TRC102. Корпус будет из толстой пластмассы, внутри АКБ, электроника и антенна. По расчётам емкости АКБ 900мА/ч должно хватить на 1 год работы. Заодно исследую дальность распространения радиоволн с глубины 1 метр…

Место, где оборвало трубу. Когда штормило, этого щебня не было...

Внутри этой муфты датчик DS18B20

 

 Все файлы проекта 

 
 
 
 

Файлы:
9700_fig
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Фотография
Изображение
клиент_AB
Изображение
Архив ZIP
Архив ZIP
Архив ZIP
Текстовый документ
Текстовый документ
Текстовый документ


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


ID: 2430

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

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

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

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

31 17 4
2
Подробно