Простой термометр на LCD (DS18B20)
0Спам64 Никополо (09.03.2013 02:07)смотрите ответ к сообщению 7, на предыдущей страницы, скорее всего, неправильно выставлены фьюзы (не отзеркальте). Настройка фьюзов на стр.30 тех.док. В протеусе они выставляются при двойном щелчке по микроконтроллеру, в CVAvr в Chip Programmer'e справа снизу, в AVR Studio они выставляются и программируются также в специальной вкладке. |
0Спам58 Artur (13.11.2011 15:27)Есть ли датчики с диапазоном до +250 или +300? или как прицепить терморезистивный датчик? |
0Спам59 HiSER (13.11.2011 15:45)Генератор тока + ОУ и снимать значения с помощью ADC. |
0Спам60 Artur (13.11.2011 21:12)кажется должно быть проще. я видел продаются готовые с диапазоном -40 +250 только вот хочу сам сделать |
0Спам61 HiSER (13.11.2011 23:18)Вариант, как делитель VCC-[]-SIG-[TERM]-GND, SIG на ADC.Ну и точность соответствующая… |
0Спам56 serj (03.08.2011 12:49)Подключил 4-ре датчика DS18B20 к Atmeg16. Сами датчики определяются, считываются в первом цикле. Во втором цикле и далее первый датчик выдает -9999. Если вывожу только три датчика, то первый показывает правильную температуру. Также программа работает если вместо третьего вывожу четвертый датчик. Можно одновременно выводить на LCD (WH1604) только три датчика. В чем причина? Программа написана в CVAVR с использованием стандартных библиотек. Датчики вывожу (и считываю) как float. |
0Спам57 HiSER (03.08.2011 20:47)что за привычка писать проблемы в комментарии?для этого есть форум… |
0Спам54 Merlin (14.07.2011 13:09)А инклюды, библиотеки тот исходник безполезен без них |
0Спам55 HiSER (14.07.2011 13:10)Для твоего сведения это стандартные библиотеки CVAVR. |
0Спам52 Merlin (13.07.2011 10:10)хм, а где собственно исходники? |
0Спам53 HiSER (13.07.2011 10:40)по середине статьи! |
0Спам51 lameruga3957 (19.06.2011 20:22)Залит мой проект термометра с точностью 0.1 градусов на DS18B20 и дисплее Nokia3310 на http://zalil.ru/31294573 |
0Спам50 lameruga3957 (18.06.2011 13:42)Что-то я не вижу, как прицепить тут файл, подскажите,кто знает. |
0Спам49 serj (17.06.2011 20:48)Объясните мне плиз эту строку sprintf(lcd_buffer,”t=%i.%uxdfC”,temp,temp%1);здесь выводится температура с дробным значением? Почему нельзя объявить температуру как float и выводить как float через функцию sprintf()? |
0Спам47 green_noob (30.05.2011 22:04)в общем пробую занимать подобными вещами 1й раз и уже при моделировании в протеусе выдает ошибки: 1. AVR: program property is not defined. 2. real time simulation failed to start. так же интересует вопрос по поводу прошивки, не самой программы, а именно “запихивании” её в модель с последующей проверкой.подозреваю что задаю очень идиотские вопрос, но уж простите… |
0Спам48 HiSER (30.05.2011 22:06)в свойствах модели надо выбрать файл с прошивкой и ошибка пропадет… |
0Спам45 green_noob (30.05.2011 20:55)здраствуйте товарищи! нужна помощь. нужно сорать схему в протеусе цифрового термометра, ну и програмку соответственно…пробовал сам делать, но т.к. опыта 0, нифига не получается… заранее благодарен, как можно подробное описание приветствуется. |
0Спам46 HiSER (30.05.2011 20:56)что не получается то? |
Источник: http://my-avr.at.ua/publ/1-1-0-10
Термометр на датчике SE97B и AVR-микроконтроллере
Устройство и схема повербанка
Паяльник TV
3 жилийн өмнө
Фазировка трансформаторов
Паяльник TV
3 жилийн өмнө
$10 QUEER EYE TRANSFORMATION (w/ Jon Cozart)
Smosh
2 өдрийн өмнө
Asian Bachelorette 2
Wong Fu Productions
7 өдрийн өмнө
Have you ever seen an atom?
nature video
5 жилийн өмнө
Как прошить микроконтроллер AVR.
Ruselectronic
3 жилийн өмнө
Лучшие стабилизаторы напряжения
Александр Коваленко
4 жилийн өмнө
✅Самодельный небесный фонарик с зажигалкой
KREOSAN
5 жилийн өмнө
электропривод для окна своими руками
имя фамилия
4 жилийн өмнө
Создание макросов в Sprint Layout 6
Паяльник TV
4 жилийн өмнө
Измеритель ESR конденсаторов на базе мультиметра
Паяльник TV
5 сарын өмнө
Умощненная схема лабораторного блока питания
Паяльник TV
4 жилийн өмнө
1-Day Project: Build Your Own Arduino Uno for $5
Julian Ilett
3 жилийн өмнө
Термометр на МК Attiny 2313
Evgenyi Baranetskyi
4 жилийн өмнө
Портативная колонка своими руками
JeyMiks
6 жилийн өмнө
Термометр на Attiny 2313 и LCD 16×2
Гацко Production
4 жилийн өмнө
Видеокурс по AVR микроконтроллерам – Урок 8
Паяльник TV
4 жилийн өмнө
Мопед из бензопилы(Moped from chainsaw)
TomRaily
6 жилийн өмнө
Высоковольтный генератор
Паяльник TV
4 жилийн өмнө
Зарядка Li-ion/Li-pol аккумуляторов (автоматическое)
AKA KASYAN
4 жилийн өмнө
Робот своими руками на Arduino.
Andrey Gilenko
5 жилийн өмнө
How to Arduino #2 – use a 1602 LCD display
Garage Geek Guy
4 жилийн өмнө
Цифровой USB-термометр
Чип и Дип
8 жилийн өмнө
Система доступа на RFID картах
Паяльник TV
4 жилийн өмнө
Часы термометр на MAX7219 + радио датчик температуры.
DIY chаnnеl
Жилийн өмнө
DS3231
Паяльник TV
4 жилийн өмнө
Переделка компьютерного блока питания
AKA KASYAN
3 жилийн өмнө
STH0014, встраиваемый цифровой термометр с …
Чип и Дип
6 жилийн өмнө
ФОНАРИК БЕЗ БАТАРЕЕК СВОИМИ РУКАМИ
Sergei Kim
4 жилийн өмнө
Распаковка модуль часов DS3231
Все сами
3 жилийн өмнө
Цифровой термометр на микроконтроллере ATmega8
ПРОМО LIFE
Жилийн өмнө
Устройство для экономии электроэнергии
AKA KASYAN
4 жилийн өмнө
Самодельный цифровой термометр и часы.
Игорь Круч
3 жилийн өмнө
Печатные платы в домашних условиях
Паяльник TV
4 жилийн өмнө
Переделка ЗУ для мобильника
Паяльник TV
4 жилийн өмнө
Смотрим все! Лабораторный БП с нуля за один вечер!
AKA KASYAN
4 жилийн өмнө
Ночник на микроконтроллере
Паяльник TV
4 жилийн өмнө
Самодельные часы на Atmega8
Igorek Kol
4 жилийн өмнө
Лазерная резка металла. Роботизированный комплекс.
NewlaserRu
3 жилийн өмнө
Источник: https://mnfilm.net/v-%D1%82%D0%B5%D1%80%D0%BC%D0%BE%D0%BC%D0%B5%D1%82%D1%80-%D0%BD%D0%B0-%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B5-se97b-%D0%B8-avr-%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B5-uProBfz31WU.html
Термометр на датчике SE97B и AVR-микроконтроллере
Думаю, многие могут могут найти у себя в закромах отголоски щедрости компании NXP semiconductors в виде бесплатных образцов электронных компонентов. Раздавали они и красиво оформленные наборы I2C микросхем для различных классов приложений.
В одном из таких наборов (computer applications) имелись датчики температуры под маркировкой SE97BTP. Помимо датчика температуры эта микросхема выполняет функции EEPROM памяти.
Так вот, если есть такая микросхема, то почему бы не попробовать ее использовать где-либо в своих разработках? Мельчайший корпус датчика HWSON8 позволит без труда встроить термометр в любое устройство, ну или почти в любое.
Размер корпуса HWSON8 термодатчика SE97B составляет 2 на 3 миллиметра.
Рассмотрим эту микросхему и ее характеристики. Как указывалось выше, это не только датчик температуры, но и память EEPROM. Последнее нас не очень то и волнует. SE97B позиционируется производителем как температурный сенсор для DDR модулей памяти. Объем EEPROM памяти составляет 256 байт. Вся эта память разделена на 2 части – 128 байт имеют защиту от записи, остальные 128 байт не имеют защиты.
Интерфейс передачи данных используется I2C. При этом микросхема имеет три адреса – один для обращения к регистрам термометра, остальные два для обращения к памяти EEPROM с защитой от записи и без нее. При этом адрес микросхемы в общем учитывает состояние выводов A0, A1, A2 – подключены к земле или к питанию и в зависимости от этого в адрес ставятся единички или нолики в соответствующие места.
Максимальное разрешение информации о температуры составляет 0,125 градусов Цельсия или 11 бит. Период обновления регистров хранения информации о температуре 0,125 секунды или 8 Гц. Также аналогично температурному датчику LM75 того же производителя имеется вывод EVENT.
Сигнал на этом выводе появляется при условии превышения заданной температуры. В карте регистров имеется верхний и нижний предел срабатывания, отдельно задается гистерезис для этого ввода – 6, 3 или 1,5 градуса Цельсия.
Также может задаваться активный уровень для этого вывода – высокий или низкий уровень.
Характеристики микросхемы температурного датчика SE97B:
- напряжение питания от -0,5 до 4,3 вольт
- допустимое напряжение на выводах SCL, SDA, A1, A2, EVENT от -0,5 до 4,3 вольт
- допустимое напряжение на выводе A0 от -0,5 до 12,5 вольт
- допустимый ток на выводах SDA, EVENT 10 мА
- точность измерения температуры в диапазоне от 75 до 95 градусов – ±0,5%
- точность измерения температуры в диапазоне от 40 до 125 градусов – ±1%
- точность измерения температуры в диапазоне от -40 до +125 градусов – ±2%
- потребляемый ток 250 мкА
- частота работы протокола I2C от 0 Гц до 400 кГц
- 100000 периодов перезаписи памяти EEPROM или 10 лет службы
- защита от записи памяти EEPROM
По характеристикам четко просматривается заданная область применения датчика температуры – компьютерные приложения, а именно модeли памяти DDR. дело в том, что максимальная точность измерения температуры находится как раз в рабочей области температур компьютерной техники (от 75 до 95 градусов – критический предел рабочей области, который необходимо максимально точно контролировать).
Спустимся с небес высокой технологии компьютерной техники и перейдем к более насущным проблемам – контроля температуры в домашних условиях.
К слову LM75 в диапазоне от -40 до +125 градусов имеет такую же точность, даже чуть хуже – до ±3%, но чуть больший диапазон отрицательных температур.
Так что если бы стоял выбор между LM75 и SE97B, скорее всего бы я выбрал второй датчик, хоть и специфический, но более точный, да и корпус много более мелкий.
Таким образом, схема термометра выглядит следующим образом:
Микроконтроллер был выбран Atmega8 за свою широкую распространенность и небольшую цену, а также весь необходимый функционал для построения данной схемы. Данный микроконтроллер можно использовать как в корпусе DIP-28, так и в SMD исполнении в корпусе TQFP-32.
Резистор R3 необходим для предотвращения самопроизвольного перезапускания микроконтроллера в случае появления случайных помех на выводе PC6. Резистор R3 подтягивает плюс питания к этому выводу, надежно создавая потенциал на нем. Для индикации используется жидко кристаллический (ЖК или LCD) дисплей. Марка дисплея 2004А – 4 строки по 20 символов.
Большой размер дисплея был использован для построения пользовательского шрифта высотой в 4 строки дисплея. При использовании такого шрифта на экран помещается всего 5 символов, зато больших. Этот шрифт можно найти в исходном коде прошивки микроконтроллера, прилагающемся ниже. Переменный резистор R2 необходим для регулировки контраста символов на дисплее.
Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод “А” и “К” на плате дисплея. Подсветка включается через резистор, ограничивающий ток – R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Однако пренебрегать этим резистором не стоит во избежание порчи подсветки.
Для питания схемы используется микросхема линейного стабилизатора L7805, ее можно заменить на отечественный аналог пяти вольтового линейного стабилизатора КР142ЕН5А, либо применить другу микросхему стабилизатора напряжения в соответствии с подключением ее в схеме (например LM317 или импульсные стабилизаторы LM2576, LM2596, MC34063 и так далее).
Далее 5 вольт стабилизируются другой микросхемой – AMS1117 в исполнении, дающей на выходе 3,3 вольта. Применение второго стабилизатора обусловлено максимальным рабочим напряжением датчика температуры.
Схема была собрана и отлажена на макетной печатной плате для микроконтроллера Atmega8:
Датчик температуры был собран в виде отдельного модуля с необходимой обвязкой:
Логика работы устройства не сложная – извлечение данных по I2C интерфейсу из температурного датчика и вывод их на LCD дисплей с использованием большого шрифта.
Для того, что бы получить данные от датчика необходимо передать условие старта при помощи I2C, далее передать адрес устройства (температурный сенсор) с битом записи, далее передать адрес регистра хранения данных о температуре. Потом, чтобы считать данные из этого регистра, нужно либо передать условие остановки и следом условие старта, либо просто рестарт.
Далее передаем адрес устройства с битом чтения, ну и наконец считываем старший и младший байт данных. В конце передаем условие остановки. Информация в двух байтах располагается следующим образом:
Биты 15 – 13 использовать не будем. Биты с 12 по 1 содержат информацию о температуре – целую и дробную часть. Бит 0 зарезервирован и не используется, всегда равен нулю.
Программно все это выглядит на языке Си так:
void Read_temper (void) { i2c_start_cond(); // запуск i2c i2c_send_byte(adr_write); // передача адреса устройства, режим записи i2c_send_byte(0x05); // передача адреса памяти i2c_stop_cond(); // остановка i2c i2c_start_cond(); // запуск i2c i2c_send_byte(adr_read); // передача адреса устройства, режим чтения t1 = i2c_get_byte(0); // чтение MSB температуры t2 = i2c_get_byte(1); // чтение LSB температуры i2c_stop_cond(); // остановка i2c buf1=t1; buf2=t2; temp1=(buf1*16)+(buf2/16); buf2=t2; temp2=buf2*16; temp2=temp2/128; temp2=temp2*5; }
Далее в бесконечном цикле эта функция вызывается и полученная информация выводится на дисплей. Период обновления данных на экране составляет 7,5 секунд. Информация о текущей температуре выводится на экран с разрешением в 0,5 градуса. Учитывается только один бит дробной части.
Для программирования микроконтроллера Atmega8 необходимо знать конфигурацию фьюз битов (скриншот сделан в программе AVR Studio):
К статье прилагается прошивка для микроконтроллера ATmega8, документация на датчик температуры SE97B, исходный код прошивки в программе AVR Studio, печатная плата для модуля SE97B, а также видео работы термометра (при контакте с теплой поверхностью температура возрастает, при прекращении контакта с теплой поверхностью температура медленно понижается).
Скачать список элементов (PDF)
Прикрепленные файлы:
- 39.hex (19 Кб)
- 39.rar (52 Кб)
- SE97B.lay6 (40 Кб)
Источник: http://cxem.gq/mc/mc317.php
Термометр на ATtiny2313 и DS18B20 (ATtiny2313, С)
В Интернете есть куча схем термометров на AVR, но как всегда хочется чего-то своего.. Да и мозги размять тоже следует. Этот термометр был одним из первых моих проектов.
Чего хотелось:
- минимальные размеры (в разумных пределах)
- минимальная стоимость
- простота конструкции
- высокая повторяемость
- универсальность (об этом чуть позже)
Что получилось:
Посмотрев подобные конструкции и покурив описалово на тиньку, которая оказалась под рукой (ATtiny2313), пришёл к выводу, что можно несколько упростить существующие конструкции и немного улучшить их характеристики.
Схема.
На схеме показан второй вариант включения термодатчика, если он не захотеть работать по однопроводной шине (что встречается очень редко). Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может привести к нестабильной работе датчика в случае включения по однопроводной схеме.
Как видим эта схема отличается от подобных отсутствием транзисторов на управление сегментов. Таким образом схема упростилась на 4 транзистора и 4 резистора, по сравнению с аналогичными схемами.
Тут некоторые скажут: «так нельзя — большая нагрузка на порты!!!». Читаемdatasheet на сей контроллер «DC Current per I/O Pin — 40.0 mA«.
У нас 8 сегментов в каждом символе, по 5 мА каждый — получается 40мА!!!.
Теперь посмотрим графики из того же описания:
Из графиков видно, что ток может достигать и 60 мА и даже 80 мА на пин. Ну не будем увлекаться — нам 5 мА на сегмент (40мА на символ) хватит с головой! Ограничительные резисторы подобраны для получения тока около 5 мА на сегмент. В моей схеме стоят 470 Ом. Яркость сегментов при этом отличная!!! Так, чё-то я увлёкся теорией.
Практика!!!
Печатную плату рисовал исходя их соображений «как можно меньше, но как можно проще». Поэтому она получилась с несколькими перемычками…
На рисунке есть место под кварц — это для небольшой универсальности — у меня было несколько штук AT90S2313, у которых нет внутреннего генератора. КРЕНка применена в корпусе SOT-89.
Защитные стабилитроны BZX79-C5V1 в корпусе DO-35. Конденсаторы в фильтре питания — 10mkF * 16V танталовые (других не нашлось), размера 3528 (SMD-B). Я их обычно не ставлю, а вместо них — 1mkF * 50V размера 1206.
Глюков связанных с питанием не замечено.
Ну и далее фотки платы:
пустая плата, изготовленная «лазерным утюгом»
собранная плата: вид со стороны проводников (не хватает стабилизатора)
вид со стороны элементов (не запаян индикатор)
Далее запаиваем индикатор и программируем:
Проект собран по кускам, что-то из готовых проектов из Интернета, что-то дописано мной… Оригинальной идеей стала динамическая индикация.
Проблема заключалась в том, что во время общения с датчиком температуры DS18B20 возникали моменты, когда «сканирование» индикации останавливалось.
Поэтому обновление индикатора сделано не по прерываниям, а в главном цикле программы, и ещё вставлено кой-где в процедуре общения с датчиком… Плюсом данного способа стала высокая частота обновления, что исключило проблему мерцания.
Чуть не забыл — фьюзы для нормальной работы термометра:
Итак, прошили, включили… Хм… работает!!!
Итак как видим получилось довольно простое (куда уж проще???) устройство, которое по размерам не превышает размер индикатора. Кроме всего ещё и точность высокая: по описанию датчика — «±0.5°C accuracy from –10°C to +85°C». Как показала практика точность гораздо выше — около ±0,1°C. Сверял 10 экземпляров с лабораторным термометром, прошедшим метрологический контроль…
Скачать прошивку для индикатора с ОК(-)
Скачать прошивку для индикатора с ОА(+)
Скачать исходный код на С (CodeVisionAVR)
Автор Юрий. Е-mail: hardlock (пёсик) bk Сайт автора.
Источник: http://elektro-shemi.ru/termometr_na_attiny2313_i_ds18b20_attiny2313_s.html
Примеры CodeVisionAVR
Подключение одного датчика .
Программная часть.
Подключим один датчик к микроконтроллеру ATmega8. Программная часть.
Подключаем к основному коду программы заголовочный файл.h
#include
Чтобы начать работать с одним датчиком, достаточно воспользоваться двумя функциями:
Функция инициализации
ds18b20_init( адрес датчика, нижний порог Т, верхний порог Т, разрешающая способность );
функция чтения температуры
ds18b20_temperature( адрес датчика );
Код программы.
|
Проект использования одного датчика ds18b20
Еще один пример если необходимо выводить значение температуры с точностью до одной сотой,
Код программы.
|
Проект использования одного датчика ds18b20 с точностью до 0.1°C
Подключение двух датчиков.
При подключении более одного датчика ds18b20 на линию 1-wire, необходимо выполнять чтение ROM каждого датчика, чтоб обращаться к каждому индивидуально. Используя функцию w1_search, производим поиск устройств 1-wire, тем самым выясняем их количество на линии и производим чтение ROM данных каждого датчика:
unsigned char devices;
unsigned char rom_code[2][9];
Код программы.
|
Проект использования двух датчиков ds18b20
Пример проекта где можно подключать датчики “десятками”. 🙂
Код программы.
|
Проект такого подключения датчиков ds18b20
Fuse бит , при прошивке МК выставить так
Источник: http://sxem.org/2-vse-stati/codevisionavr/71-codevisionavr?start=3
Классический термометр на AVR со статистикой |GrakovNe – Пробуя, создавать лучшее
20 октября 2014
Категория: Дневник AVR-щика
Всем теплых вечеров!
На самом деле, идея термометра именно в спальне у меня родилась в тот момент, когда я узнал, что существует понятие «комфортной температуры для сна». Но просто термометр — 50 рублей на любом рынке. 100 — если электронный. И самоделка на AVR здесь никак не оправдывает себя.
Так проходили годы… ну, полгода. А потом я перевел дом на газовое отопление с контролем комнатной температуры. И мне стало интересно — «на самом ли деле эту штука позволяет держать температуру с доме постоянной и днем и ночью?».
Так и родилась идея термометра с возможностью отслеживания колебаний температуры.
Итак, задача (она же идея): Термометр должен раз в какое -то время замерять температуру, а на дисплее отображать: Текущую, Максимальную и Минимальную температуру за все время измерений. После перезагрузки все значения обнуляются.
Так, что нам нужно. Во — первых, микруха. Как обычно, моя любимица AtMega88PA-PU. Во-ворых, термодатчик (ну не из воздуха ж данные брать…Хотя, как раз именно из воздуха, хе-хе). Датчиком будет классический DS18B20. Ну, и дисплей. Возьмем простой, как грабли, WinStar WH1602 на контроллере HD44780.
Ну, разумеется, все это упакуется в какой-нибудь корпус (я честно купил. Для самоделанья корпусов руки у меня явно кривоваты) и раз уж у нас дисплей с подсветкой (мой любимый синий цвет), пусть будет клавиша, которая будет ее выключать/включать. Для удобства и из моей природной лени возьмем обычную клавишу с фиксацией и тогда для работы с подсветкой МК вообще не нужен.
Ах, да! печатной платы не будет. Корпус я взял по размеру дисплея, поэтому МК с кучей проводов просто оболью клеем. Не делайте так.
Так, все собрали и разложили. Теперь подумаем что и куда развести.
Пусть дисплей занимает целый порт B, линия данных термодатчика висит на PC0, а питание и землю он будет брать с PC1 и GND.
Тогда не придется тащить еще одну связку проводов (кстати, такая запитка очень удобна. Если нам не нужен датчик — мы всегда может его обесточить и сэкономить немного батарейки)
Если нарисовать в Proteus’е…
Получится примерно так. (питание датчика не отображено).
Ну, прицепить дисплей и датчик в корпусе TO-92 — это дело пустяковое. Теперь напишем прошивку.
Раз уж я пишу в CodeVisionAVR, то буду пользоваться встроенной либой для работы с термодатчиком. Так что вся работа сведется к двум функциям: «найти температуру и обновить статистику» и «нарисовать температуру на дисплее».
Искать будем так:
void GetTemp(){ ds18b20_init(0,0,100,DS18B20_9BIT_RES); Temp = ds18b20_temperature(0); if (Temp > MaxTemp) MaxTemp = Temp; if (Temp
А рисовать вот так:
void DrawTemp(){ GetTemp(); lcd_clear(); if (Temp == -9999) { sprintf(Buffer, “SENSOR”); lcd_gotoxy(5,0); lcd_puts(Buffer); sprintf(Buffer, “IS NOT CONNECTED”); lcd_gotoxy(0,1); lcd_puts(Buffer); } else { if ((Temp 99)) { sprintf(Buffer, “INVALID”); lcd_gotoxy(0,0); lcd_puts(Buffer); sprintf(Buffer, “TEMPERATURE”); lcd_gotoxy(5,1); lcd_puts(Buffer); MinTemp = 0; MaxTemp = 0; } else { sprintf(Buffer, “CURRENT : %+02dC”, Temp); lcd_gotoxy(1,0); lcd_puts(Buffer); sprintf(Buffer, “MAX: %02d MIN: %02d”, MaxTemp, MinTemp); lcd_gotoxy(0,1); lcd_puts(Buffer); } } }
А теперь в по срабатыванию таймера (у меня это Timer1) будем вызывать DrawTemp() и уводить МК в сон.
Надеюсь ничего непонятного не встретилось? Отлично!
Теперь — прошьем МК и начнем разводить все это «в железе»
Соберем и распаяем элементы.
И запихаем упакуем в корпус.
Страшно? Ничего, закрываем крышку и думаем о хорошем
Вот так!
Откуда питание? Из настольной лампы. Там уже год как болтается 5-вольтовый адаптер, от которого я иногда подзаряжал телефон.
Скачать исходники, прошивку и макет для Proteus можно здесь
P.S. А температура ночью все равно опускается на 3-4 градуса, так что газовое отопление — не такая уж идеальная вещь.
Искренне Ваш, замеряющий влажность в комнате, GrakovNe
Источник: https://old.grakovne.org/postno44/
Подключение датчика ds18b20 к микроконтроллеру ATmega8535
Источник: http://mega-avr.ucoz.ru/publ/ds18b20_connect_atmega8535/1-1-0-15
Измерение температуры на AVR. Термометр на AVR на DS18B20. Урок avr 11
Источник: http://articles.greenchip.com.ua/1-0-19.html
Adblockdetector