Компьютерные подсказки

Вылетает Сталкер: Зов Припяти Программа икс рей 1

Stalker lost alpha гид по прохождению

Pony Express отслеживание почтовых отправлений

Pony Express – время и сроки доставки с Алиэкспресс в Россию

Застряли посылки с Алиэкспресс со статусом Hand over to airline: что делать?

РФ (Nigma) — интеллектуальная поисковая система

Данные для семантики — Яндекс Вордстат

Пиар ВКонтакте при помощи бирж: особенности и использование

Почему я не могу отправить сообщение?

Предупреждение «Подключение не защищено» в Google Chrome по протоколу https Нарушена конфиденциальность данных яндекс браузер

Всё что известно о смартфоне Samsung Galaxy S9 Аккумуляторная батарея Galaxy S9 и мощность

Темы оформления и русификация форума SMF, а так же установка компонента JFusion в Joomla

Автоматическое определение движка форума Позже board powered by smf

Коды в игре скайрим - зелья, ингредиенты, заклинания Код на ингредиенты скайрим

Подробная инструкция, как в "скайриме" открыть дверь золотым когтем

Двухканальный термометр-термостат на ATmega8. Двух канальный термометр-термостат Схема двухканальный термометр на микроконтроллере

Двухканальный термометр на микроконтроллере ATmega8 и датчиках DS18B20

Характеристики термометра:
— 2 канала измерения текущей температуры, датчики подключены к разным разрядам порта микроконтроллера
— каждый канал позволяет измерять текущую температуру в интервале от +125 ºС до -55 ºС с разрешением до 0,1 ºС
— погрешность измерения температуры ±0,5 ºС
— обнаружение и индикация возможных ошибок в работе с датчиками температуры
— интервал измерения текущей температуры — 2 сек

Уважаемые читатели сайта!
Если вас интересует именно конструкция двухканального термометра, то могу посоветовать для прошивки микроконтроллера использовать прошивку для конструкции (здесь более оптимизированный и «причесанный» код)

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

(Хочу сразу предупредить, что время не стоит на месте и после публикации статьи программа термометров была доработана — в нее внесены три изменения: в работе задействован только один таймер Т0, повышена внутренняя тактовая частота микроконтроллера до 8 МГц, изменен алгоритм определения десятых температуры (теперь десятые не рассчитывается а принимают значение в зависимости от числа записанного в младший полубайт регистра LS-bite. Новая программа выложена ниже описанной в этой статье))

Индикация текущей температуры осуществляется на два трехразрядных семисегментных светодиодных индикатора, при этом:
— температура ниже +100 ºС — индикация осуществляется на трех разрядах с точностью до десятых
— температура выше +99,9 ºС — индикация осуществляется на трех разрядах с точностью до градуса
— температура выше -10 ºС — индикация осуществляется: первый разряд знак «-«, второй и третий разряд — единицы и десятки градусов
— температура ниже -9,9 ºС — индикация осуществляется: первый разряд знак «-«, второй и третий разряды — десятки и единицы градусов
— незначащие нули не выводятся
При возникновении возможных ошибок в работе с датчиками температуры на индикаторы выводится:
— нет высокого уровня на линии DQ датчика — «Er1»
— нет импульса присутствия от датчика — «Er2»
— после импульса присутствия линия DQ не вернулась в состоянии логической «1» — «Er3»
Индикация ошибок позволяет своевременно выявить и устранить неисправность.

Схема двухканального термометра на ATmega8 и датчиках DS18B20:


Детали, примененные в конструкции термометра

Микроконтроллер ATmega8-16PU с внутренней тактовой частотой — 4 мГц.
Индикаторы — трехразрядные семисегментные светодиодные индикаторы со схемой включения — «общий катод».
Транзисторы — «NPN»-структуры BC547 (транзисторы можно заменить на любые другие маломощные структуры NPN).
Постоянные сопротивления — любого типа, мощностью 0,25 Вт, близкие к номиналам указанным в схеме.
Датчики — датчики температуры DS18B20. Разрешающая способность установлена «по умолчанию» — 12 bit, что соответствует дискретности измерения температуры 0,0625 ºС.

Общение датчиков с микроконтроллером происходит по 1-Wire шине , что позволяет, в принципе, «посадить» датчики на одну линию. В представленной конструкции датчики подсоединены к разным разрядам порта «PB» (6 и 7 — соответственно) из трех соображений:
— при необходимости разноса датчиков в разных направлениях упрощается прокладка соединительных линий
— упрощается программа — не надо определять 64-битные коды датчиков, соответственно уменьшается время затрачиваемое на общение с датчиками (что немаловажно в данной конструкции при динамической индикации 6 разрядов индикаторов)
— и так остается незадействованным целый порт
Циклический контроль избыточности (CRC) не определяется — в данной конструкции проверять правильность передачи результатов конвертирования температуры датчиками я не вижу смысла.
При больших расстояниях между датчиками и основным блоком возможно потребуется подобрать подтягивающие сопротивления (от 1 до 5 кОм). Возможно лучше будет подсоединять эти сопротивления непосредственно к датчикам .

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

Работа термометра

Программа двухканального термометра написана в среде «Algorithm Builder»


В программе задействовано два таймера микроконтроллера ATmega8 — Т0 и Т1 , которые настроены на вызов прерываний по переполнению счетчиков.
При включении устройства осуществляются предварительные настройки задействованных в работе портов микроконтроллера, занесение необходимых данных в переменные и разрешение прерываний, затем программа переходит в бесконечный цикл. В дальнейшем вся работа устройства осуществляется по перываниям от таймеров Т0 и Т1.
При этом:
При обработке прерывания от таймера Т0 осуществляется:
— динамическая индикация текущих значений температуры на светодиодных индикаторах
— поочередное считывание данных с датчиков температуры
— расчет и преобразование температуры для вывода на индикаторы
При обработке прерывания от таймера Т1 осуществляется
— поочередная подача команды на конвертирование температуры датчиками (с периодичностью — 1 сек)
Делители частоты таймеров при внутренней частоте микроконтроллера 4 мГц настроены:
— Т1 — СК/64 — вызов прерывания происходит почти через 1 секунду
— Т0 — настройка частоты делителя для таймера должна быть СК или СК/8 — 512mcs или 64mcs — не критично (но не менее 2ms). Это обусловлено тем, что время обработки прерывания от таймера Т1 равно времени которое затрачивает датчик на конвертирование температуры (по даташиту, при разрешающей способности 12bit, максимальное время конвертирования — 750ms, реально — намного быстрее)

Для более частого обновления текущей температуры можно настроить внутренний генератор микроконтроллера на частоту 8 мГц а делители частоты таймеров установить:
— T0 — СК/64 (периодичность вызова прерывания около 2ms)
— Т1 — СК/64 (периодичность вызова прерывания около 0,5sec)
что позволит обновлять текущую температуру с датчиков каждую секунду. Более частая подача команды на конвертирование температуры датчикам может привести к их нагреву, и, соответственно, к увеличению погрешности измерений.

Если вы «дружите» с программой «Algorithm Builder» то ее можно настроить для обновления текущей температуры непрерывно, сразу после конвертирования температуры датчиком. Для этого необходимо выполнить следующиу действия:
1. Отключить таймер Т1
2. Отключить подпрограмму обработки прерывания от таймера Т1 (можно и не отключать)
3. Включить кусок «серого кода» в «бесконечном цикле»
Возможно для предотвращения мерцания индикаторов тактовую частоту микроконтроллера придется увеличить до 8 мГц
4. Настроить делитель частоты таймера Т0 на периодичность прерывания не менее 2ms

Если индикаторы все же будут мерцать, попробуйте «поиграть» командами NOP в начале и в конце бесконечного цикла — добавьте или уберите. К примеру:


Часть кода программы отключена, она предназначена для уменьшения разрешающей способности датчиков. Для изменения разрешающей способности температурного преобразователя необходимо:
1. Включить часть кода на главной странице и подпрограмму изменения разрешающей способности на вкладке «DS18B20»:

2. Включить во вкладке «DS18B20» константы выделенные красным цветом:

Назначение констант:
— Read_Scratchpad — функциональная команда DS18B20 ($4E). Эта команда позволяет устройству управления записывать 3 байта данных в память DS18B20. Первый байт данных записывается в регистр (TH), второй байт записывается в регистр (TL), третий байт записывается в регистр конфигурации
— TH и TL — регистры Аварии верхнего и нижнего предела, константа b#01010101 — соответствует 85 ºС (как и установлено в датчиках по умолчанию)
bit11 — регистр конфигурации, запись константы b#01011111 изменит разрешение с 12 до 11 bit, что вдвое уменьшит время конвертирования температуры датчиками. Для 10-битного разрешения — b#00111111, для 9-битного разрешения — b#00011111
3. Изменить в подпрограмме расчета температуры на вкладке «DS18B20» число 625 на число дискретности измерения температуры для соответствующего разрешения (125, 25, 5) и числа 1000 и 999 соответственно (для 125 — 1000 и 999, для 25 — 100 и 99, для 5 — 10 и 9)

Если возникли вопросы, пишите, отвечу.

Приложения к статье:

(50,6 KiB, 26 984 hits)

Тип оборудования: Термометр, прибор теплового контроля, анализатор температуры.

Производитель: Россия

Серия: ТК-5

Модель: ТК-5.11

Описание: Прибор для измерения температуры и относительной влажности.

Гарантия на термометр контактный ТК-5.11: 24 мес.

Термометр контактный ТК-5.11 внесен в Госреестр средств измерений.

Назначение прибора:

Термометр контактный цифровой ТК-5.11 предназначен для измерения температуры различных сред, относительной влажности воздуха путем непосредственного контакта зонда с объектом измерения. Термометр является двухканальным прибором, предусматривающим работу одновременно двумя измерительными зондами. Состоят из электронного блока и сменных зондов. В качестве термочувствительных элементов в зондах используются преобразователи термоэлектрические (ТП) с НСХ по ГОСТ Р 8.585 . А в качестве измерительного элемента в зондах относительной влажности используются емкостные датчики влажности.

Функциональные возможности темометра ТК-5.11:

  • измерение одновременно влажности или температуры по двум каналам в любом сочетании одним прибором;
  • измерение температуры с разрешением 0.1 °С;
  • измерение влажности с разрешением 0,1%;
  • возможность смены зонда;
  • возможность вывода на экран температуры датчика термокомпенсации;
  • возможность вывода на экран температуры воздуха при использовании зонда влажности;
  • сохранение в памяти прибора измеренных значений температуры или влажности;
  • отображение среднего значения температуры или влажности за заданное количество измерений;
  • отображение максимального значения температуры или влажности (за заданное количество измерений);
  • отображение минимального значения температуры или влажности (за заданное количество измерений);
  • индикация напряжения питания;
  • задание граничных значений измеряемых температуры или влажности;
  • звуковая индикация при достижении заданных уровней измеряемых температур или влажности;
  • подсветка индикатора;
  • автоматическое отключение прибора через заданное время;
  • автоматическое сохранение при выключении текущего, усредненного, max, min, напряжения питания, остатка времени работы прибора на момент отключения.

Особенности термометра ТК-5.11:

  • Измерение влажности.
  • Одновременное измерение температуры и влажности.
  • Возможность работы со сменными зондами.
  • Двухканальный.
  • Питание от стандартных элементов питания типа АА.
  • Низкое энергопотребление (не менее 350 часов работы от одного комплекта батарей).

Технические характеристики термометра ТК-5.11:

Диапазон измеряемых температур, °С

100...+1800 (зависит от типа используемого зонда)

Относительная погрешность, %

±0,5 +ед.мл.разр

Цена единицы младшего разряда, °С

0,1

Количество типов сменных зондов

Диапазон измерения относительной влажности, %

3...97

Абсолютная погрешность измерения относительной влажности, %

Рабочие условия эксплуатации, °С

20...+50

Напряжение питания, В

1,5x2

Условия эксплуатации

температура окружающей среды, °С

20...+50

относительная влажность, %

не более 80 % при T = 35 °С

атмосферное давление, кПа

86 - 106

Область применения термометра ТК-5.01:

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

Комплект поставки термометра ТК-5.01П:

  • термометр ТК-5.11
  • руководство по эксплуатации и паспорт
  • свидетельство о поверке
  • сумка-чехол

*Технические характеристики и комплект поставки приборов для контроля температуры могут быть изменены производителем без предварительного уведомления.

Дополнительную информацию по термометрам можно получить, обратившись к нашим специалистам, по телефонам, указанным разделе" контакты ".

Доставляем приборы для измерения температуры по всей России курьерскими службами и транспортными компаниями.

Перед вами проект двухканального термометра. Он может измерять температуру в диапазоне от -50.0 до +99.9 градусов. Устройство было разработано для измерения температуры в доме и на улице, но ему также можно найти и множество других применений. При небольшом изменении программы устройство также можно использовать в качестве термостата. Термометр построен на популярном и очень широко распространенном датчике и микроконтроллере ATtiny2313, что значительно упростило разработку и позволило значительно уменьшить размеры. Термометр удалось сжать так, что почти все элементы расположены под трехразрядным дисплеем 15 мм. Практически все элементы SMD. Конечно, можно было бы применить TH компоненты, но в эпоху миниатюризации лучше сделать еще один шаг вперед по созданию системы с наименьшими размерами. Термометр может измерять температуру в двух местах, с помощью двух датчиков, подключенных на независимых шинах. Изменение отображаемой температуры осуществляется с помощью двух кнопок.

Принцип работы

Принципиальная схема:

Сердцем устройства является микроконтроллер U1 (ATTINY2313), который тактируется от внутреннего генератора 8MHz , без делителя частоты. Отсутствие кварца позволило уменьшить размеры устройства, а также освободило две ножки МК, к одной из них сейчас подключена кнопка S2. Микроконтроллер получает показания температуры с двух датчиков, преобразовывает данные в форму, пригодную для отображения на дисплее и обрабатывает нажатия кнопок S1 и S2. Конденсатор С1 (100nF), расположенный рядом с микроконтроллером - фильтрующий. Конденсаторы С2 (10 мкФ) и С3 (10 мкФ) необходимы для правильной работы U3 (78L05).Простота схемы обусловлена используемым датчиком температуры. Это 12-битный цифровой термометр, который может работать в диапазоне от -55 до +125 градусов. Время обработки (преобразования) температуры длится не дольше, чем 750 мс. Связь с микроконтроллером осуществляется по интерфейсу 1-Wire. В качестве индикатора температуры используется трехзначный светодиодный дисплей (AT5636BMR-В) с внутренними соединениями сегментов, адаптированный для динамической индикации. Резисторы R4-R11 ограничивают ток на светодиодном дисплее до 10-12 мА (на сегмент). Тем не менее, средний ток меньше из-за использования динамической индикации. Управление анодами осуществляется тремя популярными транзисторами Т1 - Т3 (BC857). Токи базы ограничены резисторами R1-R3 (3,3 кОм). Важным компонентом является разъем GP1, через который подключаются датчики и управляющий выход (в случае термостата).

Изготовление

Устройство изготовлено на основе печатной платы. Плата односторонняя, и почти все элементы SMD. Исключением является дисплей, кнопки управления и разъемы. Сборка не сложная, но требует большого мастерства при пайке SMD. Недостатком платы является отсутствие разъема для программирования, так что если придется вносить изменения в программу вам необходимо будет припаять провода программатора к плате напрямую. Но можно установить на плате миниатюрный разъем.

Распиновка разъема

Выводы 1 и 2 этого разъема это питание и заземление. Вывод 3 предназначен для подключения индикации отрицательных температур (Катодом на разъем, анодом на +5В через резистор 200 - 300 Ом). Датчики подключаются через трехжильный провод. Первый датчик подключается к выводу 5, а второй датчик к выводу 6. Устройство питается от 7-12В через стабилизатор 78L05.

Программирование

Программа написана в известной среде программирования . Она занимает около 70% памяти микроконтроллера и может быть успешно скомпилирована в демо версии BASCOM"a. Программа не сложная. Далее представлены некоторые элементы кода

Обработчик прерывания Timer0 :

Przerwanie0: Timer0 = 131 Set F4ms Incr Dziel(1) If Dziel(1) = 25 Then Dziel(1) = 0 Set F100ms Incr Dziel(2) If Dziel(2) = 10 Then Dziel(2) = 0 Set F1s End If End If Return

Основной цикл:

Do If F4ms = 1 Then Reset F4ms "co 4ms Wysw = T Gosub Wyswietl_zmierz End If If F100ms = 1 Then Reset F100ms "co 100ms If Pind.2 = 0 Then Kanal = 1 If Pina.0 = 0 Then Kanal = 0 End If Loop End

Процедура управления дисплеем:

Wyswietl_zmierz: Incr Mux If Mux = 5 Then Mux = 0 Portd.3 = Not Minus For I = 1 To 3 Wysw_pomoc = Wysw Mod 10 Ww = Wysw_pomoc W(i) = Lookup(ww , Tabela) Wysw = Wysw / 10 Next I If W(3) = 40 Then W(3) = 255 "wygaszenie zera wiodącego Select Case Mux Case 0: Portb = W(3) Reset Portd.6 Case 1: Set Portd.6 Portb = W(2) And &B11011111 Reset Portd.5 Case 2: Set Portd.5 Portb = W(1) Reset Portd.4 Case 3: Set Portd.4 Portb = 255 Gosub Temp "Case 4: End Select Return Tabela: Data 40 , 235 , 50 , 162 , 225 , 164 , 36 , 234 , 32 , 160

Процедура измерения температуры:

Temp: If F1s = 1 Then Reset F1s 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &HBE , 1 , Pind , Kanal T = 1wread(2 , Pind , Kanal): Minus = T.15 T = Abs(t) T = T * 10 T = T / 16 1wreset Pind , Kanal 1wwrite &HCC , 1 , Pind , Kanal 1wwrite &H44 , 1 , Pind , Kanal End If Return

Fusebits микроконтроллера должны быть установлены для работы с внутренним RC-генератором с частотой 8 МГц

Фотографии

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит

ATtiny2313

1 SO20 В блокнот
U3 Линейный регулятор

L78L05

1 SOT89 В блокнот
T1-T3 Биполярный транзистор

BC857

3 В блокнот
C1 Конденсатор 100 нФ 1 В блокнот
C2, C3 Электролитический конденсатор 10 мкФ 2 Танталовый SMD 3216A В блокнот
R1-R3 Резистор

3.3 кОм

3 SMD 0805 В блокнот
R4-R11 Резистор

330 Ом

8 SMD 0805 В блокнот
R12, R13 Резистор

4.7 кОм

2 SMD 0805 В блокнот
W1 Семисегментный индикатор AT5636BMR 1

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

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

Ниже представлена схема беспроводного датчика на микроконтроллере PIC12F675.

После подачи питания микроконтроллер считывает значение температуры с датчика BK1 и отправляет эти данные на радиопередатчик A1, после чего происходит переход в спящий режим. Пробуждение микроконтроллера происходит по прерыванию, которое генерируется изменением уровня на линии GP0. К этой линии подключена RC цепочка на элементах R2 и C4, которая выполняют функцию таймера. При выходе из спящего режима на линии GP0 устанавливается низкий логический уровень, тем самым конденсатор C4 разряжается. Перед уходом в “сон” линия настраивается на вход, конденсатор начинает заряжаться через резистор R4, при достижении порогового напряжения (около 1,2В) происходит прерывание и пробуждение микроконтроллера. При указанных на схеме номиналах R2, C4 период пробуждения составляет примерно 5 минут. Установив перемычку JP1, можно сократить период до 5,5 секунд. Путем подбора конденсатора и резистора можно настраивать желаемое время периода, но при этом надо учитывать ток заряда конденсатора, в плане энергопотребления.

Значение температуры по радиоканалу передается в виде пакета из 3-х байт, последний байт представляет собой контрольную сумму первых 2-х байт. Алгоритм передачи данных, который я использую, в принципе позволяет обходиться без контрольной суммы, вероятность приема неправильных данных низкая. Скорость передачи составляет 3,3 Кбит/сек. Каждый раз после измерения температуры отсылается 3 пакета байтов, пауза между пакетами составляет 10 мс, такой вариант передачи я применил для увеличения надежности получения данных приемником. Это связано с тем, что приемная сторона прерывает прием сигнала на 4-5 мс, во время измерения температуры с внутреннего (домашнего) датчика.

В качестве питания используется батарея 6F22 на 9В (“Крона”), модуль радиопередатчика A1 питается напрямую от батареи. Для питания микроконтроллера используется микромощный стабилизатор напряжения DA1 (MCP1702) на 5В, собственный ток потребления стабилизатора составляет всего 1-2 мкА, максимальный ток нагрузки до 250 мА. Стабилизатор MCP1702 можно заменить на LP2950, ток потребления которого выше и составляет 75 мкА. Обычные стабилизаторы напряжения типа L78хх имеют большой ток потребления в несколько миллиампер, поэтому не годятся для аппаратуры с батарейным питанием. Ток потребления устройства в спящем режиме меняется с течением времени по мере заряда конденсатора С4, первые 2,5 минуты потребление составляет 10 мкА, последующие 2,5 минуты ток плавно увеличивается, до момента выхода из спящего режима. Данное явление возникает из-за наличия токов переключения входного буфера микроконтроллера.

Хочу отметить, что при низких температурах емкость батареек уменьшается быстрее, не все типы батареек можно использовать в таких условиях. Лучшими показателями при отрицательных температурах обладают литиевые батарейки, далее следуют Ni-Mh аккумуляторы, щелочные батарейки занимают третью позицию, солевые элементы не пригодны для таких условий.

Ниже представлена схема термометра на микроконтроллере PIC16F628A.


Дисплей HG1, датчик BK1 и микроконтроллер питаются напряжением 3,3В от стабилизатора DA2. Такое значение было выбрано в связи с характеристиками дисплея, максимальное напряжение питания которого составляет 3,3В, кроме этого отпадает необходимость в согласовании уровней напряжения между линиями ввода/вывода дисплея и микроконтроллера. Модуль приемника A1 питается от стабилизатора DA1, с выходным напряжением 5В. Резисторы R6, R7 установлены для согласования уровней напряжения.

Микроконтроллер DD1 считывает значение температуры с датчика BK1 каждые 2 секунды, параллельно принимает сигнал с приемника, при получении пакета байтов от передатчика вспыхивает светодиод HL1. В верхней части дисплея отображается надпись “Дом”, под которой выводится значение температуры с внутреннего (домашнего) датчика, ниже отображается надпись “Улица” и температура, полученная от беспроводного датчика. После приема данных по радиоканалу, микроконтроллер запускает таймер, который ведет отсчет времени для контроля получения данных. Если данные не были получены за период отсчета таймера, вместо показаний температуры, на дисплее высвечивается символы тире “- – – – -”. Время отсчета можно задать в пределах 1-15 минут с шагом в одну минуту. Для этого, перед программированием микроконтроллера, необходимо записать число от 1 до 15 в ячейку EEPROM с адресом 0x00. По умолчанию устанавливается период в 7 минут. При неисправности датчиков BK1, для обоих устройств, вместо значения соответствующей температуры, выводится надпись “ERROR”. Кнопка SB1 управляет подсветкой дисплея, по умолчанию подсветка включена. Кнопка SB2 предназначена для регулировки контрастности дисплея, так как у разных экземпляров она может отличаться.

Для питания устройства подойдет нестабилизированный источник питания с выходным напряжением 8-12В. Оба устройства размещены в пластиковых корпусах. Антенна для радиомодулей выполнена в виде отрезка одножильного провода длиной 17 см (четверть длины волны несущей частоты).





25.11.2012 Внимание! Программа термостата обновлена до версии v2b_1.

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

В качестве датчиков использовал DS18B20. Микроконтроллер (ATmega8) работает от внутреннего задающего генератора на 4 мГц (дополнительно, на плате предусмотрена возможность установки кварца). Из-за артефактов динамической индикации (заметно было подмигивания в момент опроса датчика) пришлось отказаться от чтения ROM датчика и подсчёта CRC. Тем не менее, в устройстве используются два датчика, которые подключены к разным выводам МК. Один измеряет температуру наружного воздуха, другой в ящике. Термостатирование организовано только для датчика №2 (ящик).



Термометр-термостат разделён по двум корпусам. В одном управляющая часть и дисплей, в другом блок питания и реле управления нагрузкой. На плате управления предусмотрена установка стабилизатора питания с конденсаторами для питания микроконтроллера, но так как питание приходит и так 5 v он не впаян (в случае питания от блоков питания с выходным напряжением больше 5 v, его необходимо впаять). Корпус управления снабжён кронштейном который позволяет устанавливать его как на DIN-рейку или просто саморезами к стене.



Разъёмы устройства:
— по USB разъёму передаются управляющие сигналя для включения реле;
— через аудио разъёмы подключены датчики температуры.

Так как программа занимает 66 % памяти, решено было сделать ещё и второй канал управления, на всякий случай, от РВ5. В данной программе второго канала нет, и понадобится ли вообще, пока не знаю, но на ПП второй канал организован в полном объёме, только не установлено реле.












Описание работы термостата.
Устройство имеет три кнопки для управления. Кнопка (ОК), (Up), (Dn). При включении питания на индикаторе высвечивается температура датчика №1 (наружный воздух).




Для просмотра температуры в ящике необходимо нажать кнопку (ОК). При этом загорается светодиод синий HL1 (см. схему), указывающий, что на дисплей выведена температура датчика №2.




При повторном нажатии кнопки (ОК), на дисплей выводится температура датчика №1, а светодиод HL1 гаснет.

Для входа в режим установки верхнего порога отключения и нижнего порога включения обогрева. Необходимо нажать обе кнопки (Up), (Dn) и удерживать их нажатыми не менее 5 сек. По истечении этого времени устройство перейдёт в режим просмотра верхнего порога выключения обогрева. Теперь кнопки нужно отпустить. На дисплее будет высвечиваться значение порога и у четвёртого разряда засветится верхний сегмент, указывающий, что это верхний порог.




Для изменения уставки порога, необходимо нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. Уставку можно менять в пределах от +1 до +10 градусов, с дискретностью 1 градус. Увеличение значения происходит с помощью кнопки (Up), а уменьшение с помощью кнопки (Dn). Для сохранения уставки или просто для перехода на следующий порог, необходимо нажать кнопку (ОК). На дисплее высветится нижний порог и у четвёртого разряда засветится нижний сегмент, указывающий, что это нижний порог.




Для изменения уставки порога, необходимо опять нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. После установки порога включения, нажимаем кнопку (ОК) для сохранения и выхода из режима установки порогов термостатирования. Уставки сохраняются в энергонезависимой памяти МК и при исчезновении питания не сбрасываются.

Для удобства контроля состояния температуры в ящике, был введён дополнительный алгоритм сигнализации о низкой температуре в ящике. Что он из себя представляет? Когда на дисплее отображается температура датчика №1, а температура в ящике снижается (допустим, из-за неисправности нагревателя) и достигает значения ниже +1 градуса, светодиод HL1 начинает мигать, сигнализируя о низкой температуре в ящике. Если температура в ящике поднимется выше + 2 градусов, светодиод перестанет мигать.

Алгоритм неисправности датчиков. При неисправности датчика да дисплее выводится надпись Err №. Номер обозначает код неисправности от 1 до 3. Цифра 1 обозначает – нет высокого уровня, 2 – нет датчика, 3 – высокий уровень не восстановлен.




Когда на дисплее отображается температура датчика №1, и произошла неисправность датчика №2,то светодиод HL1 начинает мигать, сигнализируя о неисправности. Таким образом, при выведенной на дисплей температуре датчика №1 Вы не пропустите возникшую неисправность термостата. Естественно при неисправности датчика №2, обогрев отключается.

Ещё несколько моментов. Термостат отключен если уставка нижнего порога равна уставке верхнего порога, или уставка нижнего порога выше уставки верхнего порога. Если неисправны датчик №1 или №2, то в меню уставок, значение уставки Вы не увидите, хотя уставку изменить можно, но вслепую. Это сделано для того, что бы пользователь не лез изменять уставки при неисправных датчиках.


Файлы для сборки устройства.

(Visited 19 717 times, 1 visits today)

Раздел: Метки: ,

Навигация по записям

084-Двуканальный термометр-термостат на ATmega8. : 86 комментариев

  1. fizik_89

    Здравствуйте, SVN.
    Планирую собрать девайс по вашему проекту. Интересно узнать какой нагреватель вы использовали для термоящика? Судя по блоку питания он выдает 12В 0,5А. То есть нагреватель всего на 6 Вт? Мощность в 6 Вт мне кажется не обеспечит требуемый тепловой режим. Или я что-то не так понял?)

  2. SVN Автор записи
  3. alex52

    Я собрал термостат.Заработал сразу. Только вот температуру показывает странную: минус 38,6 (оба датчика)в теплой комнате, где примерно 20 градусов. Датчики (DC18B20) реагируют на изменеие температуры. при подогреве паяльником температура повышается до минус 21 градусов. В чем проблема?

  4. SVN Автор записи
  5. alex52

    При подаче питания на устройство, на дисплее высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,3*С. Потом поменял датчики местами: опять высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,5*С. К сожалению я болел и не смог приобрести новые датчики. На днях я это сделаю и о результатах напишу. Спасибо Вам за помощь.

  6. SVN Автор записи

    :
    При подаче питания на устройство, на дисплее высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,3*С. Потом поменял датчики местами: опять высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,5*С. К сожалению я болел и не смог приобрести новые датчики. На днях я это сделаю и о результатах напишу. Спасибо Вам за помощь.

    При подаче питания на датчик, датчик записывает в регистры значения равное 85,0, что и считывает устройство. Это подтверждает, о правильном перерасчёте считываемых значений. Таким образом, складывается впечатление, что Вам попались неликвиды, что большая редкость. Попробуйте приобрести датчики в другом магазине. Но такой эффект может возникнуть если на датчик не приходит +5 В. Проверьте соответствие питания датчика.

  7. alex52

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

  8. alex52

    Кстати, может это DS18S20? У них разный вид представления температуры. Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде, а для DS18B20 в виде двоичного числа с разрядностью от 9 до 12 бит. У DS18S20 и DS18B20 кроме серийного номера в ПЗУ содержится код семейства (10h — для DS18S20, и 28h — для DS18B20). У Вас нет программы для чтения кода семейства или программы для работы с DS18S20?

  9. SVN Автор записи

    :
    Кстати, может это DS18S20? У них разный вид представления температуры. Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде, а для DS18B20 в виде двоичного числа с разрядностью от 9 до 12 бит. У DS18S20 и DS18B20 кроме серийного номера в ПЗУ содержится код семейства (10h – для DS18S20, и 28h – для DS18B20). У Вас нет программы для чтения кода семейства или программы для работы с DS18S20?

    Нет у меня такой программы. Но если бы это были DS18S20, то и значение +85*С при старте программы, Вы бы не увидели. Это, однозначно брак. А брак лучше вернуть в магазин.

  10. alex52
  11. pino24

    а не красивей будет если использовать двух строчный дисплей??

  12. SVN Автор записи

    :
    а не красивей будет если использовать двух строчный дисплей??

    Это уже кому как нравится. Для двух строчного дисплея, программу придётся полностью переписывать.

  13. Vladimir1619

    Здравствуйте. Спасибо автору и всем кто участвовал в разработке данного устройства.
    Я собрал его, но возникла проблема которую я уже не могу решить (не хватает знаний и опыта).
    Устройство работает, но на индикаторы показывают все наоборот;
    светятся все запятые кроме второй, а числа непонятные,
    отключая все датчики DS18B20, пишет E.9.9.2..
    Индикатор собирал сам, но он точно правильно распаян, в других устройствах работает.
    Если возможно помогите советом. Спасибо.

  14. Skifco

    Огромное спасибо разработчикам! Хотел уточнить такой вопрос. Я делаю приблизительно такой же прибор, но более медицинского направления. Хотел бы узнать есть ли возможность помочь с составлением временных диаграмм на Ваш прибор и узнать бы, какие пакеты и как передают датчики, что нужно им послать, чтоб их опросить и какова частота опроса?
    Заранее спасибо!

Вам также будет интересно:

Читы и консольные команды для Counter-Strike: Global Offensive Команда в кс го чтобы летать
В этой статье мы рассмотрим некоторые из наиболее полезных и забавных консольных команд в...
Arduino и четырехразрядный семисегментный индикатор Семисегментный индикатор 4 разряда распиновка
В сегодняшней статье поговорим о 7-сегментных индикаторах и о том, как их «подружить» с...
«Рабочие лошадки» Hi-Fi: собираем бюджетную систему Хороший бюджетный hi fi плеер
Выбор плеера - это сложный процесс, иногда человек желает получить не просто коробочку,...
Как правильно пользоваться сургучными печатями
На самом деле, сургуч - это смесь смол, окрашенная в определенный цвет. Если у вас на руках...
Лагает fallout 4 как снизить графику
10 ноября состоялся релиз долгожданной игры на ПК, PlayStation 4 и Xbox One, и постепенно...