Главная » Статьи » Проекты

Логгер температуры 2.0

  

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

 В основном режиме работы устройство отображает текущие время и дату, значения температуры/влажности/давления измеренных в помещении выводятся во второй строке. В третьей строке идут текущая температура на улице и зарегистрированный максимум/минимум за текущие сутки (для обозначения использованы спецсимволы-закорючки, надеюсь понятно что где:)).

 Схема устройства базируется на микроконтроллере ATMega64. В отличии от приведенной ранее схемы в нее добавлены цифровой датчик DS18B20 и радиомодуль NRF24L01 - они оба используются для получения данных об уличной температуры (на выбор).



 Общий вид платы без дисплея. Ее общее описание уже публиковалось здесь С тех пор мало что изменилось:)

 


 К свободным выводам, под микроконтроллером слева (туда выведены контакты SPI), припаян радиомодуль NRF24L01. Он расположился с обратной стороны платы. Обратите внимание, что радиомодуль должен питаться напряжением не выше 3,6 вольт. Поэтому он запитан от имеющегося на плате стабилизатора напряжения на 3,3 вольта (U1 на схеме)



Теперь принимать температуру с улицы или откуда-то еще можно по радиоканалу. 


 А для универсальности (если нет в наличии трансиверов NRF) уличную температруру можно брать от датчика DS18B20, который подлкючается к выводу PortA.3 (на плате под этот случай выведены контактные площадки, останется только подпаять подтягивающий резистор сопротивлением 4,7кОм). Все махинации с выбором датчиков организованы в меню устройства.




 А так как температуру в устройстве могут мерить сразу несколько датчиков, сделал такой же выбор и для измерения внутренней температуры




 Смотрим небольшое видео






Радиопередатчик 


 Передатчиком служит плата с микроконтроллером ATmega8, которую описывал здесь тыц

Датчик подключается к выводу PortC.0 поэтому схема передатчика температуры в конечном варианте выглядит так


 Питание передатчика должно находится в диапазоне 3,0-3,6 вольт (если ниже - откажется работать датчик ds18b20, выше - повышается опасность спалить трансивер). Для тестирования  запитывал схему парой старых батареек, общим напряжением 2,98 вольт. 






 Еще одно небольшое видео, с демонстрацией приема температуры от передетчика




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





Организация меню


 Основное меню содержит четыре пункта



Review - просмотр логов температуры за прошедшие дни. Здесь можно посмотреть максимум/минимум температур за текущие сутки, а также среднесуточную температуру.




 Transmit - здесь мы можем послать все накопленные данные в компьютер (в любую терминальную программу, скорость COM порта 38400 бод). На выбор два формата в котором отправляются данные. CSV это формат экселя, с разделителем-точкой. Удобно использовать для построения графиков прямо в таблицах Windows Excel. 




Setting - тут собсно все настройки датчиков, часов, а также стирание внешней энергонезависимой памяти. 



Info - версия прошивки и информация об авторе. 


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

 


Прошивка логгера

Код для передатчика на Attiny2313 (спасибо Max'у за тестирование)

Прошивка передатчика

Печатная плата 




Категория: Проекты | Добавлено: 02.02.2013
Просмотров: 32685 | Комментарии: 172 | Теги: измерения, eeprom, BMP085, NRF24L01, датчик влажности, DHT11, DS1307 | Рейтинг: 4.9/14
Всего комментариев: 1721 2 3 4 5 6 »
172 Evgeny6873   (05.12.2016 17:53)
Хотел повторить схему и долго ждал дисплей, два раза заказывал с Китая, пришел. Заказывал BMP180 -- небыло, только BMP280. Стал собирать, не знаю как его подключить. Может кто делал на BMP280 логгер? Нужна прошивка, т.к. не силен в этом, а начинать поздновато.

+1   Спам
171 Dmitriy   (16.11.2016 17:56)
exersizze Да, массив пересчитывается при каждой смене часа, определяется максимум и минимум, вычисляется дельта и строится график. Не знаю, как под спойлер спрятать, вставляю кусочек кода сюда. Изначально для температуры был :)
'*******************************************************************************
Tgraf(20) = T1empds
If Seco_last > Mine_bcd Then 'если произошла смена минуты
For Nnn = 1 To 19 'Заполнаяем массив со сдвигом влево
Tgraf(nnn) = Tgraf(nnn + 1)
Next
For Nnn = 1 To 20 'Нахождение минимума температуры в массиве
If Tgraf(nnn) < Tgmin Then
Tgmin = Tgraf(nnn)
End If
Next
For Nnn = 1 To 20 'Нахождение максимума температуры в массиве
If Tgraf(nnn) > Tgmax Then
Tgmax = Tgraf(nnn)
End If
Next
Raznica = Tgmax - Tgmin
Koefic = Raznica / 32
For Nnn = 1 To 20 'Заполнаяем массив
Tfinal(nnn) = Tgraf(nnn) - Tgmin
Tfinal(nnn) = Tfinal(nnn) / Koefic
T1final(nnn) = Round(tfinal(nnn))
Next
End If
Return

0  
170 exersizze   (16.11.2016 15:57)
Dmitriy, наглядно, класс. А график подстраивается если показания резко пошли вверх или вниз?

+1   Спам
169 Dmitriy   (14.11.2016 18:23)
Блуждала в голове мысль, сделать вывод графика изменения давления на символьном дисплее. Получилось кое что, можно выводить график за последние 20 часов (по количеству символов в индикаторе), с дискретностью 32 по количеству строк (4 строки по 7 пикселей в высоту). Алгоритм не сложный, крутим массив размерностью 20 куда хотим и выводим как хотим smile Привязав предварительно значения к величине 32. Сумбурно как то объяснил, вот, что получилось на фото, если заинтересует кого выложу пока сырой исходник, он еще абсолютные экстремумы у меня пишет в ЕЕПРОМ. https://drive.google.com/open?id=0B4u67oh2vLxOTnN3eW44TW8xUkE

168 max   (10.06.2016 13:24)
Ссылка на тему http://bascomavr.3bb.ru/viewtopic.php?id=1512#p18758

0  
167 exersizze   (10.06.2016 08:43)
Дайте ссылку на исходник датчика, скорее всего некомпилирует из- за использования нового типа переменных.

166 Старик   (09.06.2016 16:35)
Хочу пояснить. За основу брал logger2.0 а он компилируется только Bascom_AVR_1.11.9.8 и не хочет более новой версией

165 Старик   (09.06.2016 16:26)
Поставил в схему ВМР280, нашел исходник под ВМЕ280, выкинул все связанное с влажностью. Должно работать. Только не могу состыковать, в найденном исходнике коды Bascom_AVR_1.11.9.8 не понимает, они заточены под более новый компилятор. Может у кого есть библиотека ВМР280 под Bascom_AVR_1.11.9.8.

164 fernand   (13.03.2016 02:31)
Давление сверить могу только в интернете в своем регионе
у меня показывает на 15 единиц меньше. Уличный датчик (радиомодуль)
в данный момент на 4 градуса показывает больше (сверяю с термометром)
в доме ДНТ11 показывает больше на 6 градусов, BMP085 на 7 больше.

0  
163 exersizze   (12.03.2016 22:43)
Все датчики - цифровые, что они отдают то и выводится на дисплей, никакого шаманства в коде с термокомпенсацией нет. Видимо датчики такие. Какие показания идут с датчиков?

162 fernand   (12.03.2016 12:10)
Вопрос к знающим. Все четыре датчика показывают завышенную температуру
где то на 4-5 градусов, так вот это какая то ошибка в аппаратной части или
это решается программным путем, типа термокомпенсации на каждый датчик? Исходник брал из архива статьи, компилировал и заливал в микроконтроллер.

161 fernand   (29.02.2016 20:03)
Все таки мне удалось запустить сей аппарат.
Достигнуто это было путем переделки печатной платы
и заменой микроконтроллера.

160 chernishovmihail   (13.02.2016 20:33)
проверь чтоб 5 вместе с 1 нога дисплея на корпусе(минусе) сидела, сразу после команд инициализации дисплея и Cls - допиши типа: Lcd "HELLO", компилируй и залей, оно сразу появиться должно. Я как-то случайно задел фуз CKDIV8 (Divide clock by 8) тоже долго квадраты наблюдал))).

159 fernand   (13.02.2016 00:48)
Спасибо за помощь exersizze. Запрограммировал мегу тестовой прошивкой, менял фузы как на внутренний генератор так и на кварц, отключал совместимость с atmega103 результат не меняется: черные квадраты в 1 и 3 строках. Если предположить, что микросхема шьется тестовой прошивкой, то наличие датчиков роли не играет - на экране должны быть буковки, я правильно понимаю? Если это так,
то причину наверное нужно искать микроконтроллер - дисплей - их сопряжение? А еще причина большая нехватка времени, в общем если , что то получится отпишусь.

0  
158 exersizze   (11.02.2016 22:10)
Вспомнил еще вот что, в крупных мегах в том числе и 64й, есть режим совместимости с atmega103. Его надо отключить, это делается отдельным фьюзом, возможно в этом проблема, а так вот тестовая программка которая выводит на дисплей текст
http://avrproject.ru/112/test001.hex

UPD: отблин, я на схеме ошибку нашел, надо поменять местами VDD и VEE, на VDD подключается плюс питания, а на VEE средний вывод резистора. Исправил.

157 fernand   (11.02.2016 10:49)
Дисплей подключен согласно схеме, проверял несколько раз. Назначение выводов на
этом дисплее отмечены, так что в этом ошибки быть не должно. Тогда еще вопрос (хотя их много), возможно такое, что при отсутствии одного датчика (bmp085) мега
просто не стартует, так как квадраты на экране дисплея светятся и при прошитой
микросхеме и при стертой. А что если вместо этого датчика поставить bmp180, это
может решить проблему.

0  
156 exersizze   (10.02.2016 22:29)
Ну это у тебя где-то с подключением дисплея косяк. Когда на дисплей просто подано напряжение питания появляются квадраты, это нормально. Дальше должна быть инициализация и очистка дисплея, но как видишь у тебя данные с микроконтроллера до дисплея не доходят.

155 fernand   (10.02.2016 20:05)
Ребята помогите с программированием меги. Программатор Минипро, беру из архива нех файл, микросхема программируется на экране 1 и 3 строка черные квадраты.
Изменение фьюзов ничего не дает, такая же проблема была при повторении
другой конструкции (Часы, термометр, барометр, гигрометр в одном флаконе) на
другой печатной, плате другим микроконтроллером, другом индикаторе.

154 m_dll   (14.06.2015 03:06)
Спасибо автору!
Сейчас пишу диплом бакалавра на базе вашей схемы, добавил ссылку с сайта в список использованой литературы =)

153 Dmitriy   (01.04.2015 13:12)
Да, конечно вот http://ru.aliexpress.com/item/LCD2004-20x4-big-character-big-size-blue-screen-lcd-display-module-182x33-5mm-HD4 4780-LC2042-AC204B/32223825431.html?recommendVersion=1 Индикатор не знает русский язык:) У этого продавца есть и зеленые большие индикаторы.

152 sergyk(s)   (31.03.2015 23:02)
To Dmitriy
> был для меня маловат,купил пожирнее
Можно подробнее, его название или ссылку где посмотреть.То же интересует размерчик поболее.

151 kip96   (28.03.2015 13:55)
Ещё есть МК41Т56 - полный аналог 1307. Отличие только в 7-м байте. Седьмым байтом выставляется коррекция хода. (в 1307 - частота на out ) Я такие юзаю - ход стабильный.

150 max   (28.03.2015 11:13)
To Dmitriy

>В баскоме нашел функцию Dayofweek
Ну это давно известно: http://bascomavr.3bb.ru/viewtopic.php?id=589#p5447 (без обид).

>И еще вопрос, как настроить время более точно, десяток кварцев поменял и все убегают по разному, при чем в разные стороны:
Лучше использовать DS3231, работать с ней так же, как DS1307, только точность гораздо лучше.

149 Dmitriy   (27.03.2015 23:24)
Немного покопался в исходнике, думаю автор не будет за это в обиде:) А натолкнула на это пустая четвертая строка. В баскоме нашел функцию Dayofweek она сама вычисляет день недели по дате и не нужно никаких плясок с формулами. Мой индикатор не знает русского языка, поэтому написал на латинице. Если куплю индикатор с кириллицей, то конечно заставлю его писать по русски. И размер индиктора 204 был для меня маловат, приходилось прищуриваться(старею), купил пожирнее, на фотографиях можно сравнить размеры. https://yadi.sk/d/T27L8MbQfZuuX И еще вопрос, как настроить время более точно, десяток кварцев поменял и все убегают по разному, при чем в разные стороны:)

148 sany2   (01.11.2014 19:16)
Можно,но с другой прошивкой

147 sherpa   (31.10.2014 22:06)
Подскажите пожалуйста можно поставить датчик влажности DHT22?

146 chernishovmihail   (18.10.2014 16:11)
Автору Огромное спасибо за проект. По своим требованиям и имеющимся деталям переписал проект. Использовано(чтоб не травить плату)ArduinoProMini-1шт; DS18B20-2шт; DHT22-2шт; BMP180-1шт; 24LC08-1шт; индикатор 4х20. Вся температура и влажность с десятыми. В память пишу с двух датчиков. Работает в железе и протеусе(ну давление в протеусе с потолка). Архив перезалит на яндекс, может кому пригодится. https://yadi.sk/d/1lqFmYONsT9Wi
Прицепил Sleep, ток 7,8мА всей конструкции, больше снизить покуда не удалось.

145 Dmitriy   (06.07.2014 19:05)
Все отлично заработало, автору спасибо!

+1   Спам
144 klazarev   (20.04.2014 20:54)
Вот пересчет реальных давления и температуры по формуле из http://wmrx00.sourceforge.net/Arduino/BMP085-Calcs.pdf
Давление от температуры практически не зависит и места меньше занимает.
https://docs.google.com/document/d/1UFZFfu0OaCOTHOlbT37UTLlUV7gPWcMFaH7Xtl7Px9M/edit?usp=sharing

143 Rusivan   (10.04.2014 10:53)
Скажите, какое потребление у заоконного датчика? На сколько хвататет батреек?

1-30 31-60 61-90 91-120 121-150 151-172
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
08.12.2016 - exersizze:
yorx выдалось немного свободного времени, проверил в симуляторе. Проблема...
Логгер температуры 2.0
05.12.2016 - Evgeny6873:
Хотел повторить схему и долго ждал дисплей, два раза заказывал с Китая, пришел. ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
01.12.2016 - yorx:
Доброго времени суток, exersizze попробовал Ваш код все равно не работает как на...
Помни об усадке!
30.11.2016 - pchela5:
Автомобильные никакие не лезут?
Помни об усадке!
29.11.2016 - AlekS:
Виктор, спасибо.
С заменой транса в зиму, перестройка не комельфо) Валяет...
Управляем микроконтроллером с ПК по UART
29.11.2016 - exersizze:
Михаил, для работы с инфракрасными датчиками и диодами есть команды RC5SE...
Управляем микроконтроллером с ПК по UART
29.11.2016 - Михаил:
Всем привет.
Подскажите как переменную S передать по инфракрасному каналу...
Помни об усадке!
29.11.2016 - pchela5:
> Если ленту светодиодную порезать и соединить последовательно
Только ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
29.11.2016 - exersizze:
yorx, вывод Q7 ' первой микросхемы соединен с DS второй микросхемы? С...


Лучшие цены на 3D принтеры
успей сделать себе подарок к Новому Году! ;)


Prusa i3

Prusa i3 от 12500 р.



Rostoсk

Rostock от 15000 р.