Как работает термометр на микроконтроллере PIC16F628A и датчике DS18B20. Какие преимущества дает такая схема. Как настроить и использовать устройство для измерения температуры. Какие функции реализованы в прошивке микроконтроллера.
Основные компоненты и принцип работы термометра
Термометр на основе микроконтроллера PIC16F628A и цифрового датчика температуры DS18B20 представляет собой простое и эффективное устройство для измерения температуры. Рассмотрим основные компоненты схемы:
- Микроконтроллер PIC16F628A — обрабатывает данные с датчика и управляет индикацией
- Датчик DS18B20 — измеряет температуру в диапазоне от -55°C до +125°C
- Семисегментный индикатор — отображает измеренную температуру
- Кнопки управления — для настройки параметров
- Блок питания — обеспечивает напряжение 5В
Принцип работы термометра заключается в следующем:
- Датчик DS18B20 измеряет температуру и передает данные в цифровом виде на микроконтроллер
- Микроконтроллер обрабатывает полученные данные
- Результат измерения выводится на семисегментный индикатор
- С помощью кнопок можно настроить параметры работы устройства
Преимущества использования DS18B20 в термометре
Датчик температуры DS18B20 обладает рядом преимуществ, которые делают его отличным выбором для создания термометра:
- Цифровой интерфейс 1-Wire для подключения к микроконтроллеру
- Широкий диапазон измеряемых температур от -55°C до +125°C
- Точность измерения ±0.5°C в диапазоне от -10°C до +85°C
- Возможность подключения нескольких датчиков на одну линию
- Не требует калибровки или внешних компонентов
- Низкое энергопотребление
Благодаря этим особенностям DS18B20 позволяет создать надежный и точный термометр с минимумом компонентов.
Функциональные возможности прошивки микроконтроллера
Прошивка микроконтроллера PIC16F628A реализует следующий функционал термометра:
- Измерение температуры с точностью до 0.1°C
- Отображение текущей температуры на индикаторе
- Настройка яркости индикатора
- Установка верхнего и нижнего порогов температуры
- Звуковая сигнализация при выходе за пороги
- Переключение единиц измерения °C/°F
- Сохранение настроек в энергонезависимой памяти
Все эти функции делают термометр удобным и функциональным устройством для различных применений.
Настройка параметров работы термометра
Настройка параметров работы термометра осуществляется с помощью кнопок управления. Рассмотрим основные настройки:
Установка верхнего и нижнего порогов температуры
Для установки порогов температуры необходимо:
- Нажать и удерживать кнопку «Режим» 3 секунды
- Кнопками «+» и «-» установить верхний порог
- Нажать «Режим» для перехода к нижнему порогу
- Установить нижний порог кнопками «+» и «-«
- Нажать «Режим» для сохранения настроек
Настройка яркости индикатора
Яркость индикатора регулируется в диапазоне от 1 до 10:
- Нажать кнопку «Яркость»
- Кнопками «+» и «-» выбрать нужный уровень яркости
- Нажать «Яркость» для сохранения
Переключение единиц измерения
Для переключения между °C и °F:
- Нажать и удерживать кнопку «Единицы» 2 секунды
- На индикаторе отобразится текущая единица измерения
- Повторное нажатие переключает единицы
Все настройки сохраняются в энергонезависимой памяти микроконтроллера.
Области применения термометра на PIC16F628A и DS18B20
Благодаря своей простоте и функциональности, термометр на основе PIC16F628A и DS18B20 может применяться в различных областях:
- Бытовые измерения температуры в помещении
- Контроль температуры в системах «Умный дом»
- Мониторинг температуры в теплицах и оранжереях
- Измерение температуры в промышленных процессах
- Контроль температуры в системах охлаждения
- Метеостанции и системы мониторинга окружающей среды
Широкий диапазон измерений и возможность работы с несколькими датчиками делают это устройство универсальным решением для различных задач.
Расширение функционала термометра
Базовая схема термометра может быть легко модифицирована для расширения функционала. Рассмотрим некоторые варианты улучшений:
Добавление функции термостата
Для реализации функции термостата достаточно добавить в схему реле и немного изменить прошивку микроконтроллера. Это позволит автоматически управлять нагревательными или охлаждающими устройствами.
Подключение к компьютеру
Добавив в схему преобразователь USB-UART, можно организовать передачу данных на компьютер для дальнейшей обработки и визуализации. Это позволит создать систему долговременного мониторинга температуры.
Беспроводная передача данных
Использование радиомодуля позволит передавать данные о температуре на удаленный приемник. Это может быть полезно для создания распределенной системы мониторинга.
Заключение
Термометр на основе микроконтроллера PIC16F628A и датчика DS18B20 представляет собой простое, но функциональное устройство для измерения температуры. Благодаря широким возможностям настройки и модификации, он может применяться в различных областях — от бытовых измерений до промышленных систем контроля. Простота схемы и доступность компонентов делают этот проект отличным выбором для начинающих разработчиков электроники.
……….Хорошо известен и широко распространён сегодня
датчик температуры DS18B20. Дёшев, легко купить, малогабаритный,
надёжный. Может работать в сетях, когда на одном двухпроводном кабеле
подключено несколько датчиков. Очень удобен, но требует для работы
наличия микроконтроллера. А там где микроконтроллер, там и своя
электронная схема и программа. При использовании переходника USB_USART
схема выходит достаточно простой и паяется на макетной плате за пару
часов. Чем проще схема, тем меньше работы по её изготовлению, а лень
как известно двигатель прогресса, поэтому приступим. ……….Вот такая схема термометра на DS18B20, рассчитанного на работу с переходником у меня получилась: ……….Как видите действительно просто. Нет цепей питания, можно убрать разъём для программирования контроллера, да и светодиод скорее для любителей наглядности, чем необходимость. Светодиод в термометре включается на время замера температуры датчиком. ……….По схеме особо и говорить нечего. Паяем, заливаем прошивку (внизу страницы) в микроконтроллер и дело сделано. Чем проще схема, тем надёжнее и устойчивее в работе, поэтому можно рассчитывать на стопроцентную безотказность термометра. ……….Основное назначение термометра – показывать температуру. Этим занимается программа в компьютере. О программе немного поподробнее. Основное окно программы – всего лишь индикатор, на который выводятся показания температуры. По умолчанию выводится над трем в правом нижнем углу дисплея. При желании его можно переместить в другое место. Это кому как нравится, мне показался более подходящим правый нижний угол экрана. ……….Когда программа посылает запрос термометру, точка в левом верхнем углу индикатора краснеет. После получения ответа цвет точки становится зелёным. По цвету можно судить, что процесс измерения температуры датчиком прошёл удачно. Так же ведёт себя и светодиод термометра. При начале преобразования светодиод включается, после того как измерение завершено – гаснет. ……….Для того, чтобы добраться до остальных функций программы предусмотрено всплывающее меню, которое открывается при клике правой кнопкой мыши по индикатору температуры. В меню всего два пункта. Пункт «выход», при выборе которого программа закрывается и пункт «настройки», который нам собственно и нужен. ……….Кликаем по пункту «настройки», после чего получаем доступ к остальным функциям программы. Настройки порта ……….По поводу настроек порта – выбираем в выпадающем списке тот порт, на котором у нас определился переходник. Увидеть номер порта можно в диспетчере устройств(подробнее здесь perehodnik.html ). Если переходник подключен и порт успешно открылся, то рядом с выпадающим списком увидим синюю надпись «порт открыт», если же что-то не так, то справа от выпадающего списка красная надпись «ошибка порта». Программа примерно раз в секунду проверяет подключен ли к нашему порту термометр, посылая проверочные запросы. Если термометр не обнаружен, то под выпадающим списком видим красную надпись «нет подключения». В случае, если термометр подключен, выводится зелёное подтверждение «устройство подключено». Если надпись «устройство подключено» появилась, то можете себя поздравить, Вы всё сделали правильно. Программа в микроконтроллере успешно запустилась и корректно отвечает на запросы компьютера. ……….Правее настроек порта находится ссылка на эту страницу, это на случай, если кто то что то подзабудет, в любой момент можно заглянуть и вспомнить что к чему. Автозагрузка ……….Если Вы решили использовать термометр для постоянного измерения, то выставив галочку в этом пункте, создадите ярлык программы термометра в папке «автозагрузки» Windows. Программа при этом будет автоматически стартовать при каждом старте системы. Убрать ярлык из автозагрузки можно сняв галочку. При автозапуске программы появляется возможность наблюдать на экране показания температуры когда пожелаешь, не беспокоясь о том, чтобы специально запускать программу термометра. Запрос температуры ……….По умолчанию выставлен интервал запроса температуры один раз в три секунды. Можно изменить интервал в пределах 1…20 секунд или вовсе отключить запрос температуры. Есть непроверенная информация, что при слишком частых замерах, датчик DS18B20 немного завышает показания температуры, нагреваясь от той мощности, которую сам потребляет при измерении. Пока датчик ничего не измеряет, потребляемая им мощность близка к нулю и соответственно самонагрев тоже нулевой. Возможно со временем появятся на этот счёт проверенные сведения и можно будет точно знать оптимальный интервал запроса температуры. ID DS18B20 ……….Нажав на эту кнопку можно определить 8 байтов, которые записаны изготовителем в EEPPROM датчика. Эти 8 байтов(выводятся в HEX виде) являются уникальным номером. Номер у каждого датчика свой – они никогда не повторяются. По номеру датчика программа, считывающая показания может определить какой датчик опрашивается, при наличии в сети нескольких одновременно подключенных DS1820. ……….Здесь левый байт – контрольная сумма, правый байт – номер серии 1 WARE устройств 0x28 для всех DS18B20 одинаков. Между ними сам уникальный код датчика. Эти данные, если они вам нужны можно скопировать, выделив их в строке и нажав CTRL+C. Затем можно вставить значение уникального номера в вашу программу, нажав CTRL+V. ……….Остальные настройки в отдельных комментариях особо не нуждаются и относятся к деталям отображения индикатора температуры на экране. Здесь все с успехом разберутся самостоятельно. Прошивка для микроконтроллера ds_04_hex.rar Программа для компьютера: DS18B20_usart.rar |
Простой термостат на PIC16F628A и DS18B20
Опубликовано автором Moldik
684 просмотров
Термометр позволяет измерять температуру в диапазоне от -55 до +125 градусов, а также осуществлять функции термостата во всем диапазоне температур, с любым гистерезисом. Реализована и функция контроля ошибок датчика. Кроме того, я постарался сделать его максимально универсальным, поэтому здесь размещено две схемы, одна под индикатор с общим анодом (ОА), другая под индикатор с общим катодом (ОК). Также есть возможность применять датчики DS18B20 и DS18S20.
Управление осуществляется 2-мя кнопками. Нажатием кнопки +1 активируется режим настройки температуры ВКЛЮЧЕНИЯ реле. Кратковременно выскакивает надпись On и далее мигают цифры установленной температуры включени. Кнопками +1 и -1 можно изменять это значение от -55 до +125 градусов. После установки температуры нужно подождать несколько секунд, на дисплее кратковременно мигнут три тире (—), новые данные будут записаны в EEPROM и прибор перейдет в основной режим отображения температуры. Аналогично, нажав кнопку -1 на дисплее появится надпись OFF и начнет мигать значение температуры ОТКЛЮЧЕНИЯ реле. Точно так же после паузы в несколько секунд появятся три тире и произойдет сохранение в EEPROM температуры отключения реле.
Обратите внимание, что термостат понимает любые ситуации. Температура отключения меньше или больше температуры включения, от этого будет зависить как сработает реле. А в случае если заданные температуры равны, то реле вообще не сработает, прибор будет работать как обычный термометр. Так же важно, что запись в EEPROM происходит именно в момент, когда появляются три тире. По этому до записи данных не отключайте питание.
реклама
Для включения режима настроек типа индикации и типа датчика нужно удерживая кнопку +1 подать питание. Так же этот режим автоматически включается при первом включении устройства, после прошивки микроконтроллера. В этом режиме сначала поочередно на несколько секунд будут отображаться цифры 123 то под общий АНОД, то под общий КАТОД. В момент когда цифры отображаются правильно нужно нажать любую кнопку, режим индикации будет запомнен. Далее на дислее будет мигать надпись или (-S-) или (-b-). Кнопками можно выбрать тип датчика, 18S20 или 18B20 – -S- и -b- соответственно. А не нажимая кнопки несколько секунд выбранный датчик будет запомнен и все настройки сохранятся в EEPROM. Термостат перейдет в основной режим работы.
В случае получения ошибочных данных с датчика на дисплее появляется надпись (Err) – ошибка. Ошибка появляется только в том случае, если ошибочные данные получены с датчика 3 раза подряд (защита от случайных сбоев). При ошибке функции термостата будут выключены, реле отключено.
Простой универсальный термостат на микроконтроллере PIC16F628A и датчике DS18B20 (вер.2)
реклама
Термометр позволяет измерять температуру в диапазоне от -55 до +125 градусов, а также осуществлять функции термостата во всем диапазоне температур, с любым гистерезисом. Реализована и функция контроля ошибок датчика. Кроме того, я постарался сделать его максимально универсальным, поэтому здесь размещено две схемы, одна под индикатор с общим анодом (ОА), другая под индикатор с общим катодом (ОК). Также есть возможность применять датчики DS18B20 и DS18S20. Схемы остались прежними, изменилась только прошивка.
Управление осуществляется 2-мя кнопками. Нажатием кнопки +1 активируется режим настройки температуры ВКЛЮЧЕНИЯ реле. Кратковременно выскакивает надпись On и далее мигают цифры установленной температуры включени. Кнопками +1 и -1 можно изменять это значение от -55 до +125 градусов. После установки температуры нужно подождать несколько секунд, на дисплее кратковременно мигнут три тире (—), новые данные будут записаны в EEPROM и прибор перейдет в основной режим отображения температуры. Аналогично, нажав кнопку -1 на дисплее появится надпись OFF и начнет мигать значение температуры ОТКЛЮЧЕНИЯ реле. Точно так же после паузы в несколько секунд появятся три тире и произойдет сохранение в EEPROM температуры отключения реле.
Обратите внимание, что термостат понимает любые ситуации. Температура отключения меньше или больше температуры включения, от этого будет зависить как сработает реле. А в случае если заданные температуры равны, то реле вообще не сработает, прибор будет работать как обычный термометр. Так же важно, что запись в EEPROM происходит именно в момент, когда появляются три тире. По этому до записи данных не отключайте питание.
Для включения режима настроек типа индикации и типа датчика нужно удерживая кнопку +1 подать питание. Так же этот режим автоматически включается при первом включении устройства, после прошивки микроконтроллера. В этом режиме сначала поочередно на несколько секунд будут отображаться цифры 123 то под общий АНОД, то под общий КАТОД. В момент когда цифры отображаются правильно нужно нажать любую кнопку, режим индикации будет запомнен. Далее на дислее будет мигать надпись или (-S-) или (-b-). Кнопками можно выбрать тип датчика, 18S20 или 18B20 – -S- и -b- соответственно. А не нажимая кнопки несколько секунд выбранный датчик будет запомнен и все настройки сохранятся в EEPROM. Термостат перейдет в основной режим работы.
В случае получения ошибочных данных с датчика на дисплее появляется надпись (Err) – ошибка. Ошибка появляется только в том случае, если ошибочные данные получены с датчика 3 раза подряд (защита от случайных сбоев). При ошибке функции термостата будут выключены, реле отключено.
В термостате применен 3-х разрядный светодиодный индикатор с общим анодом (или общим катодом). Индикация температуры осуществляется так: температура ниже -9 градусов, отображается знак минус и 2 цифры. От -9 до +99 добавляется символ градуса в 3-м знакоместе, при плюсовой температуре знак + естественно не отображается. Температура выше 100 градусов также отображается без символа градуса. В качестве датчика температуры использован ходовой, можно сказать классический датчик – DS18B20 или DS18S20 (DS1820). Хоть термостат и может работать на температурах до 125 градусов, длительная эксплуатация его в таких режимах не рекомендуется, датчик долго не проживет. Оптимальная макс.температура 80…90 градусов.
Поделится
PIC, Микроконтроллеры, Термометр
термометр
богди.ро | Цифровые часы
bogdi.ro | Цифровые часы Особенности- Часы с датой и температурой на 4х7-сегментном дисплее CC или CA
- Поддерживаемые микросхемы: PIC16F84(A)/PIC16F628(A)
- Поддерживаемые датчики температуры: DS18S20/DS18B20
- Широкий диапазон температур от -55 до +120°С
- Простая схема: PIC-микро, несколько резисторов, 4 транзистора, один дисплей
- Настраиваемое время (в секундах) для отображения часов, даты, температуры
- Цифровая настройка для синхронизации. константа может сделать часы +/- 1 секунда/месяц
- Меню с кнопками SET, PLUS и MINUS (RESET опционально)
- Настройки сохранены в памяти для предотвращения потери в случае сбоя питания
- Режим работы
- Режим настроек
- Синхронизация часов.
Работающее устройство будет перебирать экраны часы-дата-температура. При использовании настроек по умолчанию часы настроены на показ в течение 8 секунд, затем дату в течение 2 секунд и температуру в течение 3 секунд. Эти тайминги можно настроить в меню. Пользователь может скрыть экраны даты и температуры, установив время для их отображения на 0 секунд. Температура преобразуется в последнюю секунду предыдущего экрана (часы или дата) и после каждого чтения.
Пользователь может активировать режим настроек, нажав кнопку установки. Следующие экраны будут повторять настройки устройства. Пользователь может установить: часы (часы, минуты), дату (день, месяц, год, тип даты), время отображения в секундах (показать часы, показать дату, показать температуру) и константы синхронизации часов (минимум, максимум). Все настройки сохраняются в EEPROM. Часы будут начинаться с 0 секунды при выходе из меню. Подробнее смотрите в разделе настроек.
Часы можно откалибровать с помощью программного обеспечения. Это полезно, если часы потеряли или увеличили секунды в течение определенного периода времени. Это может произойти по разным причинам. Идея состоит в том, чтобы сделать второй дольше или меньше. Одна секунда длится 1 000 000 микросекунд. Это большое число для моего дисплея, где я могу написать только 4 числа, но если мы представим это число в шестнадцатеричном виде, оно будет иметь следующее значение: F4240. Калибровка означает настройку около 1.000.000, поэтому я опустил F, вы не можете установить это, но вы можете настроить 42 (Sh) и 40 (Sl) от 00 до FF. Это дает вам большую возможность настроить свой второй. Для получения дополнительной информации, пожалуйста, прочитайте Синхронизация часов. из документации (есть также примеры).
ZIP-файл проекта- Исходный код ASM
- HEX-файлы
- Файл png орла и файл sch
- Документация
Скачать Проект
16Ф84 общий анод
16Ф84 общий катод
16Ф628 общий анод
16Ф628 общий катод
Включите JavaScript для просмотра комментариев с помощью Disqus.
Следующий проектПредыдущий проектPICAXE 18M2 Показания DS18B20 Однопроводной цифровой термометр
Схема моей самодельной тестовой платы без резисторов ввода/вывода.
Здесь мы собираемся подключить цифровой термометр Dallas DS18B20 1-Wire к микроконтроллеру PICAXE. Это очень просто, потому что детали серии M2 имеют прямую однострочную команду для доступа к детали. Он имеет диапазон рабочих температур от -55°С до +125°С.
Здесь меня не интересуют действительно расширенные функции DS18B20, а основная функция, которая будет использоваться в 90% случаев; просто читать температуру. Чтобы использовать действительно расширенные функции, используйте микроконтроллер Arduino.
Команды READTEMP pin, переменная и READTEMP12 pin, словесная переменная объясняются на страницах 184-185 в литературе PICAXE. Здесь меня просто беспокоит READTEMP, потому что использовать READTEMP12 — это беспорядок, и это просто не стоит усилий. Поймите, что микроконтроллер PICAXE имеет встроенную интерпретируемую основу, которая в меньших версиях, которые я использую, имеет ограничения. Это с лихвой компенсируется простотой использования и легкостью в освоении.
Ниже приведен пример отлаженного кода, который должен работать на любой версии для проверки датчика. DS18B20_Pin может быть любым входным контактом. В моем случае я использовал PICAXE-18M2 и преобразовал показания Цельсия в Фаренгейты, которые отображались на терминале.
О команде readtemp:
Эта команда работает только на частоте 4 МГц. М2, Х1 и Х2 части автоматически используют внутренний резонатор 4 МГц для этой команды.
Температура считывается в целых градусах, и датчик работает от от -55 до +125 градусов Цельсия. Обратите внимание, что бит 7 равен 0 для положительных значений температуры. и 1 для отрицательных значений (т.е. отрицательные значения будут отображаться как 128 + числовое значение).
Обратите внимание, что команда readtemp не работает со старыми моделями DS1820 или DS18S20. так как они имеют разное внутреннее разрешение. Эта команда не предназначена для используется с датчиками DS18B20 с паразитным питанием, контакт 5V датчика должен всегда быть на связи.
символ DS18B20_Pin = C.1 главный: темп чтения DS18B20_Pin, w1 ; прочитать значение в w1 если w1 > 127, то отрицательно; тест на отрицательный w1 = w1 * 9/5 + 32; по Фаренгейту sertxd("+", #w1, "градусы", 13, 10) ; передать значение в термин перейти на главную отрицательный: ; этикетка пусть w1 = w1 - 128 ; настроить отрицательное значение ш1 = ш1 * 9/ 5 + 32 ; по Фаренгейту sertxd("-", #w1, "градусы", 13, 10) ; передать на срок перейти на главную
Проекты микроконтроллеров Picaxe!
Серия микроконтроллеров PICAXE считается самым простым и экономичным способом использования процессоров Microchip. Мне нужен был более простой и дешевый способ познакомить моих студентов с микроконтроллером PIC. Здесь я надеюсь помочь тем, кто начинает с плохо написанной литературы и отсутствия простых примеров рабочего кода.