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

Логгер температуры 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
Просмотров: 53363 | Комментарии: 175 | Теги: измерения, eeprom, BMP085, NRF24L01, датчик влажности, dht11, DS1307 | Рейтинг: 4.9/14
Всего комментариев: 1751 2 3 4 5 6 »
175 bionas   (21.01.2018 18:48) [Материал]
Почему нет записи в микросхему памяти?при просмотре температуры за прошедшие дни у меня по нулям

174 Dmitriy   (11.11.2017 21:30) [Материал]
Очередное усовершенствование.Задействовал микросхему 24С32, которая находится в модуле DS3231 Организована запись в память температуры и давления, получилось 128 страниц (суток).Организован удобный на мой взгляд вывод логов на экран, вычисление экстремумов по температуре и давлению во всем массиве данных.https://youtu.be/qCQo_nwFyAw

173 Dmitriy   (12.02.2017 12:18) [Материал]
Господа хорошие, подскажите пожалуйста или носом укажите :) как мне вычислять время UNIX имея в наличии текущее время ? В хелпе по Баскому почитал, там все хитрые функции связанные с вычислением времени работают только после 2000 Года. Может кто то уже заморачивался чем то подобным.

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мА всей конструкции, больше снизить покуда не удалось.

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






авторизация
Логин:
Пароль: