Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

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

На рисунке показана схема термометра выполненного на основе микроконтроллера PIC16F628A, в качестве датчика используется цифровой датчик температуры DS18B20. Индикатор термометра состоит из 4-х разрадного семисегментного индикатора. Диапазон измеряемой температуры от -55 до + 125 градусов Цельсия. Температура считывается каждые 15 секунд, время считывания можно изменить в коде.

Напряжение питания термометра 5В, ток потребления 90 мА. В схеме используются транзисторы BC337 или аналогичные. Ток потребления каждого сегмента индикатора 15 мА (динамическая индикация), который ограничен резисторами 220 Ом (индикатор с общим катодом).

Файл прошивки —

DS18B20 цифровой термометр с программируемым разрешением, от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются центральным микропроцессором.

Диапазон измерений от –55°C до +125°C и точностью 0.5°C в диапазоне от –10°C до +85°C. В дополнение, DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника напряжения.
Каждый DS18B20 имеет уникальный 64-битный последовательный код, который позволяет, общаться с множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать один микропроцессор, чтобы контролировать множество датчиков DS18B20, распределенных по большому участку. Приложения, которые могут извлечь выгоду из этой особенности, включают системы контроля температуры в зданиях, и оборудовании или машинах, а так же контроль и управление температурными процессами.

  • Похожие статьи

Войти с помощью:

Случайные статьи
  • 10.

    10.2014

    На рисунке показана схема предварительного усилителя с тембро-блоком, тембро-блок включен в цепь обратной связи предварительного усилителя. Напряжение питания уст-ва может варьироваться от 12 до 24В, потребляемый ток не более 10 мА. Входной сигнал поступает через разделительный конденсатор С1, резисторы R1 и R2 определяют напряжение смещения транзистора VT1, после предварительного усиления …

Это обычный цифровой термометр, на просторах интернета подобных девайсов очень много. Основа микроконтроллер PIC16F628A и цифровой датчик температуры DS18S20 (DS18B20). В качестве индикаторов применены светодиодные 3-х разрядные индикаторы зеленого цвета. Индикация динамическая. Термометр работает во всем диапазоне температур датчика DS18S20, т.е. от -55 до +125 градусов.

Собран термометр на печатной плате, вместе с индикатором. Датчик и питание подключаются отдельно. Если датчик не подключен, на индикаторе высвечивается буква Е (Error). Никаких особенностей данный прибор не имеет. Диод VD1 служит для защиты от переполюсовки источника питания.

Прибор может работать как с датчиком DS18B20, так и с датчиком DS1820(DS18S20). Под каждый датчик используется своя прошивка микроконтроллера. Ниже приведен вариант этого термометра с уже установленным на печатную плату диодным мостом и стабилизатором 7805, т.е. для питания этого устройства достаточно подключить вторичную обмотку трансформатора к разъему питания. Кроме того, на этой плате установлен светодиод, который кратковременно вспыхивает во время опроса микроконтроллером датчика температуры. Светодиод подключен между ножкой RB3 (вывод 9) и "массой", естественно с резистором. Отсутствие светодиода на плате никак на работу термометра не повлияет.

Прибор удобно разместить в любой пластиковой коробке подходящих размеров. Я разместил его в корпусе сетевого блока питания (Адаптора) вместе с трансформатором. Т.е. из коробки выходит только разъем на датчик DS18B20, а сам корпус вставляется в сеть 220В.

Файл:
Размер:

Содержимое:

sm_termo. rar
38.3 КБ
Рисунки плат (LAY) и прошивки микроконтроллера.

Схема термометра на ATmega8 и DS18B20

Цифровой термометр DS18B20
Семисегментный светодиодный индикатор
Алгоритм программы термометра
Программа цифрового термометра на DS18B20

Схема и программа очень простого цифрового термометра с использованием микроконтроллера ATmega8 и датчика температуры DS18B20 . Термометр позволяет измерять температуру от 0 до 99 градусов с точностью до 0,5 градусов с разрешением 0,1 градуса

Термометр по своим характеристикам очень прост, и его можно использовать только как термометр для измерения «комнатной» температуры. Использовать в этой конструкции микроконтроллер с памятью 8 килобайт конечно расточительно, можно применить микроконтроллер и попроще. Но дело в том, что эта конструкция — основа для дальнейшего развития проекта с использованием цифрового датчика температуры DS18B20.

В следующей статье будет опубликована конструкция другого термометра — на двух датчиках DS18B20, что позволит измерять температуру не только в комнате, но и «за бортом». Естественно, будет добавлена возможность измерять и отрицательные температуру. В дальнейшем в конструкцию будет добавлена функция термостата, часы, возможность работы с различными нагрузками, что позволит уже собрать несложную конструкцию — основу «умного дома». Ну а сегодня первая статья из этой серии.

Схема термометра на ATmega8 и датчике температуры DS18B20

Давайте посмотрим на схему термометра:

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

Напряжение питания конструкции — 5 вольт. Если вы примените микроконтроллер с низковольтным питанием , то можно и понизить питающее напряжение конструкции, но в этом случае, возможно придется уменьшить номинал гасящих сопротивлений в сегментах индикатора.

Приблизительно номиналы сопротивлений можно брать:
— при питании 5 вольт — 200-300 Ом
— при питании 2,7 — 3 вольта — 100-150 Ом

Транзисторы — любые, маломощные, структуры NPN.
Датчик температуры — DS18B20
Семисегментный индикатор — любой трехразрядный с общим катодом. Если вы захотите применить другие, с общим анодом, тогда придется заменить транзисторы на PNP и внести изменения в программу (заменить массив двоичных кодов для вывода цифр на индикатор). Я применил индикатор красного цвета свечения, и заодно, для следующей схемы, приготовил такой-же, но голубого цвета свечения.

Детали термометра на микроконтроллере ATmega и DS18B20



Распиновка микроконтроллера ATmega8:

Трехразрядный семисегментный индикатор FYT-5631AUR-21:

Датчик температуры DS18B20:

Транзисторы BC547C:

Алгоритм работы программы термометра на ATmega и DS18B20

Все установки микроконтроллера заводские, FUSE-биты трогать не надо.

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

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

Вот так выглядит основная часть программы в Algorithm Builder:

Где:

SP — настройка начального адреса стека

Timer 0 — настройка таймера T0:

Timer 1 — настройка таймера Т1:

TIMSK — настройка прерываний от таймеров:

Init_Display — подпрограмма настройки разрядов портов, участвующих в динамической индикации вывода данных на трехразрядный семисегментный индикатор

1 —> I — глобальное разрешение прерываний

Если возникнут вопросы, если что-то изложено не понятно или есть вопросы по программе, пишите — отвечу.

(2,4 KiB, 7 004 hits)

По просьбам тех, кто собрал предыдущую конструкцию барометра на PIC 16F684 и датчике давления BMP180, публикуем статью (продолжение). Данное устройство позволяет отображать одновременно и температуру и давление. Для этого в конструкции был применен индикатор на базе микросхемы MAX7219 которая позволяет работать с матрицей 8Х7, применение данного индикатора позволило сократить число задействованных портов микропроцессора.

Датчик температуры применен самый распространенный — 18b20, который имеет трехвыводную конструкцию. DS18B20 (Programmable Resolution 1-Wire® Digital Thermometer). Диапазон измерения температуры составляет от -55 до +125 °C. Для диапазона от -10 до +85 °C погрешность не превышает 0,5 °C.

Схема устройства показана на рисунке 1.

Индикатор MAX7219 приобретался на Aliexpress. Но данный индикатор продается уже в готовом виде и вам остается только 5ю проводниками его подключить к запрограммированной плате.

Принципиальная схема индикатора показана на рисунке 2, внизу показано фото такого индикатора.

Внешний вид собранного устройства показан на фото ниже.

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

Скачать рисунок печатной платы, схему и прошивку.

Описание работы термометра

Назначение этого термометра всего лишь показывать температуру. Небольшие отличия от других подобных схем только в формате вывода температуры на LED индикатор, который представляет из себя 4-х разрядный сверхяркий CA04-41SRWA. В качестве датчика температуры применён DS18B20 в обычном включении с отдельным проводом питания.

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



Затем на индикатор выводятся сами показания температуры.



Вид вывода показаний следущий:


Отличие формы вывода есть только для низких положительных температур. При индикации такой температуры к символу "градус" добавлен знак "C". То есть градусы цельсия.Символ "градус" присутствует на индикаторе при любой измеряемой температуре.

Датчик температуры DS18B20 измеряет температуру с разрешением 0,0625 градусов цельсия. Термометр считывает показания из датчика и округляет их до десятых долей градуса. Десятые доли градуса выводятся на индикацию во всех режимах индикации, кроме режима температур меньших, чем -10 градусов цельсия. Это сделано для того, чтобы на показаниях отрицательных температур всегда присутствовал знак "минус".

Показания присутствуют на индикаторе в течение 30 секунд. Затем прибор снова уходит в спящий режим и индикатор выключается.


Моделирование термометра в протеусе


Модель в протеусе позволила отработать программную часть термометра не собирая сам прибор в железе. Все режимы оттестированы. Сбоев при моделировании в программе нет.



Саму модель можно загрузить по ссылке: termo_i_v2. DSN

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


Схема нарисована отталкиваясь от рисунка печатной платы. Сначала была сделана разводка проводников печатной платы, таким образом, чтобы длина проводников и расположениен деталей было оптимальным и только после того, как на печатной плате было получено соответствие портов микроконтроллера PIC16F628A выводам индикатора CA04-41SRWA была составлена точная принципиальная схема.


Печатная плата термометра

ЧАСЫ-ТЕРМОМЕТР НА МИКРОКОНТРОЛЛЕРЕ ATMEGA8

Привет всем читателям и почитателям сайта Радиосхемы! Сегодня хочу поделиться с вами очередной простенькой конструкцией «Часы-термометр». Немного предыстории: вечером очень плохо видно показания уличного термометра, чтобы разглядеть положение стрелки, необходимо довольно долго вглядываться и иной раз пользоваться фонариком. Спустя определённое время мне это надоело и решил заменить прибор на электронный, который бы отображал информацию на светодиодных семи сегментных индикаторах. После чего бы не пришлось даже подходить к окну, чтоб узнать уличную температуру. Так как индикацию хорошо видно более чем с трёх метров. Схем данного устройства в сети полно, но я, как человек относящийся к семейству Радиолюбителей, решил собрать свою. Так как с недавних пор пытаюсь осваивать микроконтроллеры, то выбор пал на широко распространённый и дешёвый МК Atmega8. Далее была изготовлена плата по технологии ЛУТ, после чего уже приступил к программной части. Программа написана на языке Си с помощью среды разработки CodeVisionAVR.

Схема принципиальная электрическая

В одном устройстве объединено две функции: собственно измерение температуры и времени (часы). Индикация производится попеременно, сменяясь через десять секунд. Для настройки часов используется две кнопки, аналогично простым китайским электронным часам: одна отвечает за выбор параметра, вторая за его изменение. Питается устройство от сети с помощью постоянного стабилизированного источника тока напряжением пять вольт (плата от зарядного устройства телефона).

Датчиком температуры является микросхема DS18B20. Так как в устройстве «Часы-термометр» нет своей батареи, при пропадании питания естественно показания будут сбиваться. И что бы это не явилось причиной какого-нибудь опоздания человека на жизненно важные дела, имеется интересная «фишка» - при подаче питания вместо времени на дисплее будут отображаться прочерки, пока не нажмёшь одну из двух кнопок настройки.

Корпусом самодельного измерителя температуры послужила подходящая коробочка от запонок. В неё была помещена сама плата часов-термометра и плата вытащенная из телефонного зарядника. Датчик DS18B20 сделан выносным и подсоединяется через разъём.

Список необходимых деталей

  • Микроконтроллер Atmega8 – 1шт.
  • Кварц  32768 Гц – 1 шт.
  • Датчик температуры DS18B20 – 1шт.
  • Семи сегментный индикатор(4 – разряда) – 1 шт.
  • Резисторы SMD типоразмера 0805:
  • 620 Ом – 8шт.
  • 0 Ом (перемычка) – 1шт.
  • 4,7 кОм – 1шт.
  • Тактовые кнопки – 2 шт.

Видео работы устройства на Ютуб-канале

Все файлы проекта (схема, прошивка и исходник) прилагаются. По всем вопросам относительно проекта можно обращаться на форум. До новых встреч на страницах сайта Радиосхемы! С вами был Темыч (Артём Богатырь).

   Форум

   Форум по обсуждению материала ЧАСЫ-ТЕРМОМЕТР НА МИКРОКОНТРОЛЛЕРЕ ATMEGA8


Двухканальный термометр на atmega8 | Gadget-apple.ru

Двухканальный термометр на AtMega8

Автор: Nusik1975
Опубликовано 15.05.2012
Создано при помощи КотоРед.

Понадобился мне термометр, который одновременно показывает температуру на улице и дома. В Интернете полно схем, которые реализованы с использованием датчика DS18B20, и даже не одного, а нескольких… Но во всех термометрах, схемы которых я нашел, был только один семисегментный индикатор с 2, 3 или 4 разрядами. Вывод температуры на него с двух и более датчиков производится попеременным переключением индикации. Аналогичный термометр прослужил мне некоторое время. Но мне показалось это неудобным. Было принято решение использовать 2 трехразрядных семисегментника, чтобы температура с каждого из двух датчиков выводилась на свой дисплей. Но готовых решений в Интернете я не нашел, поэтому пришлось самому сделать то, что требуется. Конечно, можно изготовить два отдельных термометра и разместить их в одном корпусе… Но это нерационально.

В моем двухканальном термометре используется 2 датчика DS18B20-один для улицы и второй для дома. Датчики эти привлекают достаточной точностью показаний и неприхотливостью. Применен микроконтроллер AtMega8А в корпусе TQFP32 (других под рукой не оказалось), и семисегментные трехразрядные индикаторы с общим анодом CPD05231UR2/A. Они достаточно яркие при небольшом токе потребления. Транзисторы в цепях анодов являются ключевыми, дабы не превышать максимальные токи для портов МК.

Схема устройства (нажмите для увеличения)

Схема питания стандартна — стабилизатор 7805. В качестве источника питания применил зарядное устройство от сотового телефона Siemens. Оно дает на выходе примерно 7,5 вольт, что достаточно для нормальной работы стабилизатора 7805.

Печатная плата у меня получилась двусторонней, разрабатывалась под конкретный корпус. На одной стороне размещен стабилизатор, 2 семисегментника, разъем питания, электролитический конденсатор, разъем для программирования и подтягивающий резистор на 4,7 кОм для нормальной работы датчиков. Все остальные детали размещены на другой стороне платы. Конечно, можно использовать микроконтроллер и в DIP-корпусе, но тогда придется нарисовать свою печатную плату, ориентируясь на названия портов микроконтроллера.

Один датчик (комнатный) установлен сбоку корпуса, а второй-на улице. Для правильности показаний уличный датчик нужно установить так, чтобы на него не падал солнечный свет и не попадали атмосферные осадки. Желательно его ставить с северной стороны дома, где солнышка мало. Я его разместил в воронке, сделанной из пол-литровой пластиковой бутылки, обрезав ее. Предварительно надо загерметизировать контакты датчика. У меня это выглядит так (кликабельно):

Датчик закреплен с внешней стороны балкона.

Тактовая частота МК выбрана 8 МГц. Кварц я не использовал-нет необходимости. Частоту внутреннего генератора выставляем фьюзами, как на картинке:

Картинка дана для программы CodeVision AVR.

Для выставления фьюзов в других программах я пользуюсь универсальным правилом. Считываем фьюзы нового МК и смотрим на фьюз RSTDISBL. Если на нем нет галочки (как в CodeVision и как на скриншоте), то все галочки ставим также. А вот если на этом фьюзе есть галочка, то все фьюзы нужно выставить инверсно, то есть наоборот. Фьюз RSTDISBL никогда не трогайте. Если его изменить, то прошивка МК станет невозможна.

Прошить микроконтроллер можно любым программатором AVR. Я постоянно пользуюсь программатором STK200. Мне он нравится своей простотой, развязкой от LPT-порта и скоростью прошивки чипов.

Микроконтроллер можно применить с любыми буквами. Если используете МК в DIP-корпусе, будьте внимательны при разводке платы. Семисегментные индикаторы можно применить любые трехразрядные (или 4-х разрядные) с общим анодом. Резисторы R4-R11 являются токоограничительными, ими можно подобрать яркость свечения индикаторов, не забывая о максимальном токе в 20 мА на порт микроконтроллера. Транзисторы BC857B можно заменить аналогичными с проводимостью PNP. Так как отладкой я занимался непосредственно в железе, был установлен разъем для ISP-программирования.

Вот что получилось в итоге.

Термометр на стене.

Сзади корпуса прорезаны небольшие отверстия для крепления на стене. В качестве лицевой панели применил оргстекло, затемнив его пленкой для тонировки автомобильных стекол. Корпус был взят от леденцов Монпансье, сверху он закрывался жестяной крышечкой. На верхнем индикаторе-температура дома, на нижнем-за бортом. Яркость индикаторов большая, фото сделано при сильном освещении, и даже тонировочная пленка не мешает нормально видеть показания термометров.

Двухканальный термометр на AtMega8

Автор: Nusik1975
Опубликовано 15.05.2012
Создано при помощи КотоРед.

Понадобился мне термометр, который одновременно показывает температуру на улице и дома. В Интернете полно схем, которые реализованы с использованием датчика DS18B20, и даже не одного, а нескольких… Но во всех термометрах, схемы которых я нашел, был только один семисегментный индикатор с 2, 3 или 4 разрядами. Вывод температуры на него с двух и более датчиков производится попеременным переключением индикации. Аналогичный термометр прослужил мне некоторое время. Но мне показалось это неудобным. Было принято решение использовать 2 трехразрядных семисегментника, чтобы температура с каждого из двух датчиков выводилась на свой дисплей. Но готовых решений в Интернете я не нашел, поэтому пришлось самому сделать то, что требуется. Конечно, можно изготовить два отдельных термометра и разместить их в одном корпусе… Но это нерационально.

В моем двухканальном термометре используется 2 датчика DS18B20-один для улицы и второй для дома. Датчики эти привлекают достаточной точностью показаний и неприхотливостью. Применен микроконтроллер AtMega8А в корпусе TQFP32 (других под рукой не оказалось), и семисегментные трехразрядные индикаторы с общим анодом CPD05231UR2/A. Они достаточно яркие при небольшом токе потребления. Транзисторы в цепях анодов являются ключевыми, дабы не превышать максимальные токи для портов МК.

Схема устройства (нажмите для увеличения)

Схема питания стандартна — стабилизатор 7805. В качестве источника питания применил зарядное устройство от сотового телефона Siemens. Оно дает на выходе примерно 7,5 вольт, что достаточно для нормальной работы стабилизатора 7805.

Печатная плата у меня получилась двусторонней, разрабатывалась под конкретный корпус. На одной стороне размещен стабилизатор, 2 семисегментника, разъем питания, электролитический конденсатор, разъем для программирования и подтягивающий резистор на 4,7 кОм для нормальной работы датчиков. Все остальные детали размещены на другой стороне платы. Конечно, можно использовать микроконтроллер и в DIP-корпусе, но тогда придется нарисовать свою печатную плату, ориентируясь на названия портов микроконтроллера.

Один датчик (комнатный) установлен сбоку корпуса, а второй-на улице. Для правильности показаний уличный датчик нужно установить так, чтобы на него не падал солнечный свет и не попадали атмосферные осадки. Желательно его ставить с северной стороны дома, где солнышка мало. Я его разместил в воронке, сделанной из пол-литровой пластиковой бутылки, обрезав ее. Предварительно надо загерметизировать контакты датчика. У меня это выглядит так (кликабельно):

Датчик закреплен с внешней стороны балкона.

Тактовая частота МК выбрана 8 МГц. Кварц я не использовал-нет необходимости. Частоту внутреннего генератора выставляем фьюзами, как на картинке:

Картинка дана для программы CodeVision AVR.

Для выставления фьюзов в других программах я пользуюсь универсальным правилом. Считываем фьюзы нового МК и смотрим на фьюз RSTDISBL. Если на нем нет галочки (как в CodeVision и как на скриншоте), то все галочки ставим также. А вот если на этом фьюзе есть галочка, то все фьюзы нужно выставить инверсно, то есть наоборот. Фьюз RSTDISBL никогда не трогайте. Если его изменить, то прошивка МК станет невозможна.

Прошить микроконтроллер можно любым программатором AVR. Я постоянно пользуюсь программатором STK200. Мне он нравится своей простотой, развязкой от LPT-порта и скоростью прошивки чипов.

Микроконтроллер можно применить с любыми буквами. Если используете МК в DIP-корпусе, будьте внимательны при разводке платы. Семисегментные индикаторы можно применить любые трехразрядные (или 4-х разрядные) с общим анодом. Резисторы R4-R11 являются токоограничительными, ими можно подобрать яркость свечения индикаторов, не забывая о максимальном токе в 20 мА на порт микроконтроллера. Транзисторы BC857B можно заменить аналогичными с проводимостью PNP. Так как отладкой я занимался непосредственно в железе, был установлен разъем для ISP-программирования.

Вот что получилось в итоге.

Термометр на стене.

Сзади корпуса прорезаны небольшие отверстия для крепления на стене. В качестве лицевой панели применил оргстекло, затемнив его пленкой для тонировки автомобильных стекол. Корпус был взят от леденцов Монпансье, сверху он закрывался жестяной крышечкой. На верхнем индикаторе-температура дома, на нижнем-за бортом. Яркость индикаторов большая, фото сделано при сильном освещении, и даже тонировочная пленка не мешает нормально видеть показания термометров.

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих — 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 — 70
  • Двухканальный термостат, терморегулятор на ATmega8 — 67

Характеристики термометра:
— 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 ºС.

Соединение датчиков с микроконтроллером осуществляется по трехпроводной линии — «GND, +5V, линия данных DQ», подключение по двухпроводной линии (паразитное питание) не предусмотрено по причинам:
— возможной ошибки при конвертирование температуры выше +100 ºС
— необходимости применения дополнительных MOSFET транзисторов

Общение датчиков с микроконтроллером происходит по 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)

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

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

Схема двухканального термометра на ATmega8 и DS18B20 в формате SPL (50,6 KiB, 27 096 hits)

Программа двухканального термометра в формате HEX (4,8 KiB, 27 278 hits)

Программа двухканального термометра в Algorithm Builder (19,5 KiB, 32 062 hits)

Вторая версия программы термометра в НЕХ-файле (5,0 KiB, 2 065 hits)

Вторая версия программы термометра в Algorithm Builder (20,1 KiB, 26 348 hits)

(47 голосов, оценка: 4,96 из 5)

НАШ САЙТ РЕКОМЕНДУЕТ:

Метки:  

Схема.

Барометр и термометр на ATmega8

      
      Пределы измерения и погрешность прибора определяются в основном примененными в нем датчиками: температура -55…+125 °С, атмосферное давление 225. 825 мм ртутного столба. Прибор питается напряжением 9 В от гальванической батареи типа «Крона» или сетевого адаптера Потребляемый ток — 30 мА (при выключенной подсветке ЖКИ). Размеры корпуса -118×72-28 мм. Работа прибора была проверена при температуре от -5 до +25 °С Погрешность измерения давления не превысила 4 мм ртутного столба.

      Схема барометра и термометра изображена на рис. 1, причем собранный на отдельной плате модуль измерения давления выделен штрихпунктирной линией.
      Необходимые для работы датчика тактовые импульсы частотой 32768 Гц вырабатывает кварцевый генератор на элементах микросхемы DD1. В принципе, эти импульсы мог бы формировать и микроконтроллер DD2 с помощью одного из имеющихся в нем таймеров. Но это потребовало бы усложнения программы.
      Напряжение 3,6 В для питания датчика В1 и микросхемы DD1 получено с помощью стабилитрона VD1. Резисторы R1—R3 — нагрузочные для линий связывающего датчике микроконтроллером интерфейса I2С и сигнала XCLR Печатная плата модуля измерения давления показана на рис. 2.

      Хотя датчик HP03SB содержит и встроенный измеритель температуры, его показания используются программой микроконтроллера DD2 только для уточнения результатов измерения давления. На ЖКИ HG1 вместе со значением давления выводятся показания другого датчика температуры — DS1624 (В2) Причина этого проста — он точнее.
      При необходимости датчик В2 можно сделать выносным и расположить там, где температура представляет наибольший интерес. При установке в корпусе прибора этот датчик следует вынести на боковую стенку, сделав в ней окно по его размерам. Иначе неизбежна ошибка на 1,5… 1,8 °С, в чем я убедился на практике.

      Напряжение питания +5 В стабилизировано микросхемой DA1. Подстроечным резистором R8 устанавливают наилучшую контрастность изображения на ЖКИ. Кнопкой SB1 включают подсветку его табло. Остальные элементы необходимы для работы микроконтроллера. Элементы R7, R9 С10 VD2 — цепь установки микроконтроллера в исходное состояние Кварцевый резонатор ZQ2 с конденсаторами С11.С12 — частотозадающая цепь тактового генератора микроконтроллера.

      На рис. 3 представлен чертеж основной печатной платы прибора а на рис. 4 — расположения деталей на ней. В переходное отверстие показанное залитыми (плата на рис. 2), необходимо вставить и пропаять с двух сторон проволочную перемычку. Для микроконтроллера DD1 должна быть предусмотрена панель, так как в процессе налаживания прибора эту микросхему придется извлекать и вновь устанавливать.
      Остановимся на некоторых особенностях датчика HP03SB, общий вид и габаритные размеры показаны на рис. 5. Для определения давления необходимо предварительно прочитать из памяти установленного в приборе экземпляра этого датчика двухбайтные значения коэффициентов С1—С1 и однобайтные значения параметров А—D. Все они индивидуальны для данного экземпляра.
      Результаты измерения представляют собой два двухбайтных числа: D1 —давление. D2 — температура. Прочитав их из памяти датчика, программа должна вычислить вспомогательные значения:

А затем — давление воздуха в гектопаскалях:
PhP = X·10/32+C7;
и в миллиметрах ртутного столба:
PHg = PhP·1000/13332.

      Более подробные сведения о датчике HP03SB имеются в [1]. Однако необходимо отметить что там указаны неверно адреса внутренней памяти датчика, по которым хранятся его индивидуальные константы. Следует пользоваться теми адресами что приведены в [2]. В приборе можно применить и другие датчики серии НР03. Некоторые из них имеют меньшую точность, другие отличаются конструктивным оформлением.

      Работа программы начинается с инициализации портов микроконтроллера и ЖКИ. Успешную инициализацию подтверждает вывод на табло надписи TERMOBAR» (буква Н пропущена). Затем инициализируется датчик давления, считываются его показания, выполняются расчеты, результаты которых преобразуются в двоично-десятичный формат и выводятся на индикатор, занимая три десятичных разряда. Аналогично происходят обработка и вывод на ЖКИ значения температуры. Его целая часть — три разряда, дробная — два разряда. Продолжительность показа значений давления и температуры по 3,5 с.

      Подпрограмма Timer_int каждые 70 мин проверяет в каком направлении за это время изменилось давление, и выводит на ЖКИ знаки «↑», «↓», «=». В подпрограммах инициализации и чтения показаний датчиков HP03SB и DS1624 состояние регистра статуса модуля TW1 микроконтроллера не проверяется.

      Для чтения коэффициентов и параметров датчика предназначена специальная программа ReadCC, которую необходимо загрузить в программную память микроконтроллера полностью собранного прибора (с подключенным модулем измерения давления), включить его и через несколько секунд выключить. После этого нужно извлечь микроконтроллер и с помощью программатора прочитать содержимое его EEPROM. В нем по адресам, указанным в табл. 1, находятся значения индивидуальных коэффициентов и параметров датчика. Далее необходимо открыть файл рабочей программы барометра-термометра BARO-2 asm, найти в нем фрагмент, приведенный в табл. 2, и исправить значения объявленных там констант в соответствии с прочитанными из EEPROM. Параметр D в программе не используется.

      Теперь программа готова к работе с установленным в прибор экземпляром датчика. Остается оттранслировать ее с помощью AVR Studio и загрузить полученный НЕХ-файл в микроконтроллер. Учтите, что аналогичный файл, приложенный к статье, рассчитан на работу с датчиком, имевшимся у автора Если загрузить его в микроконтроллер, прибор с другим экземпляром датчика давления будет работать но давать неточные показания.

      В разработке использованы фрагменты программ из [3] и [4]. Подпрограммы преобразования чисел из шестнадцатеричного формата в двоично-десятичный переработаны с учетом разрядности чисел. Подпрограммы перемножения и деления двухбайтных чисел, предназначенные для микроконтроллеров семейства MCS-51, переведены на язык ассемблера AVRASM Меньше всего подверглась изменениям подпрограмма управления ЖКИ, учтены лишь особенности индикатора MT-10S1 а для ввода и вывода сигналов использованы другие порты микроконтроллера.

Прилагаемые файлы:    baro-2.zip   

ЛИТЕРАТУРА
1. НР03 Series of calibrated sensor module HP03SB —    www.hoperf.com/pdf/HP03SB.pdf    .
2. HP03 programming guide —    www.hoperf.com/pdf/hp03_code.pdf   
3. Трамперт В. AVR-RISC микроконтроллеры.— К.. МК-Пресс, 2006
4. Фрунзе А. Микроконтроллеры? Это же просто! Том. 1. — М . Додэка-ХХI 2007.

Н. САЛИМОВ, г. Ревда Свердловской обл.
«Радио» №6 2010г.

Похожие статьи:
Барометрический высотомер
Цифровой термометр

Post Views: 929

Многоканальный термометр на микроконтроллере. Термометр на ATmega8 и датчике температуры DS18B20. Внешний вид готовой печатной платы для термометра

Схема термометра на ATmega8 и DS18B20

Цифровой термометр DS18B20
Семисегментный светодиодный индикатор
Алгоритм программы термометра
Программа цифрового термометра на DS18B20

Схема и программа очень простого цифрового термометра с использованием микроконтроллера ATmega8 и датчика температуры DS18B20 . Термометр позволяет измерять температуру от 0 до 99 градусов с точностью до 0,5 градусов с разрешением 0,1 градуса

Термометр по своим характеристикам очень прост, и его можно использовать только как термометр для измерения «комнатной» температуры. Использовать в этой конструкции микроконтроллер с памятью 8 килобайт конечно расточительно, можно применить микроконтроллер и попроще. Но дело в том, что эта конструкция — основа для дальнейшего развития проекта с использованием цифрового датчика температуры DS18B20. В следующей статье будет опубликована конструкция другого термометра — на двух датчиках DS18B20, что позволит измерять температуру не только в комнате, но и «за бортом». Естественно, будет добавлена возможность измерять и отрицательные температуру. В дальнейшем в конструкцию будет добавлена функция термостата, часы, возможность работы с различными нагрузками, что позволит уже собрать несложную конструкцию — основу «умного дома». Ну а сегодня первая статья из этой серии.

Схема термометра на ATmega8 и датчике температуры DS18B20

Давайте посмотрим на схему термометра:

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

Напряжение питания конструкции — 5 вольт. Если вы примените микроконтроллер с низковольтным питанием , то можно и понизить питающее напряжение конструкции, но в этом случае, возможно придется уменьшить номинал гасящих сопротивлений в сегментах индикатора. Приблизительно номиналы сопротивлений можно брать:
— при питании 5 вольт — 200-300 Ом
— при питании 2,7 — 3 вольта — 100-150 Ом

Транзисторы — любые, маломощные, структуры NPN.
Датчик температуры — DS18B20
Семисегментный индикатор — любой трехразрядный с общим катодом. Если вы захотите применить другие, с общим анодом, тогда придется заменить транзисторы на PNP и внести изменения в программу (заменить массив двоичных кодов для вывода цифр на индикатор). Я применил индикатор красного цвета свечения, и заодно, для следующей схемы, приготовил такой-же, но голубого цвета свечения.

Детали термометра на микроконтроллере ATmega и DS18B20



Распиновка микроконтроллера ATmega8:

Трехразрядный семисегментный индикатор FYT-5631AUR-21:

Датчик температуры DS18B20:

Транзисторы BC547C:

Алгоритм работы программы термометра на ATmega и DS18B20

Все установки микроконтроллера заводские, FUSE-биты трогать не надо.

Для работы программы задействовано два таймера/счетчика микроконтроллера:
восьмиразрядный Т0
шестнадцатиразрядный Т1
С помощью восьмиразрядного таймера Т0 настроенного на вызов прерывания по переполнению, с внутренней частотой СК/8 (период 2 миллисекунды) организован:
— расчет текущей температуры
— динамический вывод результатов измерения температуры датчиком DS18B20
С помощью шестнадцатиразрядного таймера Т1 настроенного на вызов прерывания по переполнению, с внутренней частотой СК/64 (период 4 секунды) организованно:
— подача команды датчику DS18B20 на измерение температуры
— считывание измеренной температуры с датчика
В принципе, можно задействовать и один восьмиразрядный таймер/счетчик, также настроенный на вызов прерывания по переполнению, с внутренней частотой СК/8, и всю работу схемы организовать в процессе обработки прерывания. Но дело в том, что смысла в этом нет — датчику DS18B20 необходимо чуть меньше 1 секунды (при 12-ти битном разрешении) для конвертирования (определения) температуры, т.е., чаще чем 1 раз в секунду мы не сможем обновлять данные температуры. Кроме того, столь частое обновление температуры приведет к нагреву датчика и, соответственно, к искажению реальных данных. Использование второго счетчика позволяет отдельно задавать промежутки времени измерения температуры.

Вот так выглядит основная часть программы в Algorithm Builder:

Где:

SP — настройка начального адреса стека

Timer 0 — настройка таймера T0:

Timer 1 — настройка таймера Т1:

TIMSK — настройка прерываний от таймеров:

Init_Display — подпрограмма настройки разрядов портов, участвующих в динамической индикации вывода данных на трехразрядный семисегментный индикатор

1 —> I — глобальное разрешение прерываний

Если возникнут вопросы, если что-то изложено не понятно или есть вопросы по программе, пишите — отвечу.

(2,4 KiB, 7 004 hits)

Доброго времени суток уважаемые читатели. Как видно из названия статьи, речь в ней пойдет о термометре собранном на PIC. Итак. Почему и как всё начиналось?!
Понадобилась мне схема простейшего термометра для подвала гаража. Начал искать подходящую схему в Интернете. Важным критерием было применение минимального количества элементов в схеме. Сразу скажу, что таких схем термометров в сети навалом. Но! Чаще всего они выполнены на AVR с которыми я к глубокому своему сожалению не дружу. Поэтому стал искать схему на PIC. Но и тут меня ожидало разочарование. Схемы термометров на PIC есть. Но там применяют, то транзисторы для индикаторов, то внешний кварц, либо еще что то, что усложняло схему и было неприемлемо в моем случае. Наконец, после долгих поисков, подходящая мне схема была найдена тут:

http://www.labkit.ru/html/show_meter?id=38
И была успешно повторена неоднократно. Всё прекрасно работает. (на сайте автора этой схемы есть и прошивка и печатная плата для повторения данного термометра). Время шло. И в одно прекрасное время во первых выяснились недочеты данной схемы и еще мне понадобилось применить индикатор с Общим Катодом (на сайте автора прошивка была только под Общий Анод). Теперь о недочете схемы в первоисточнике. Изначально в схеме автора нет резистора подтяжки у датчика температуры. Тоесть резистор на 4,7К в схеме отсутствует. Да действительно при таком исполнении схемы термометр может работать, но только при условии, если датчик температуры впаян сразу в плату, либо длина провода на котором находится датчик не должен превышать длины провода метр, полтора метра. Не более. В противном случае индикатор начинает показывать какую- то ерунду, а не температуру.
Такой поворот событий меня совсем не обрадовал. Потому как длинна провода с датчиком мне была нудна не менее 10 метров.
Эта проблема решилась очень просто и быстро, именно установкой подтягивающего резистора 4,7К на датчике. После чего датчик стал работать стабильно при любой длине провода. Но как быть, если у меня есть индикаторы только с общим катодом! А прошивка сделана под анод… Вот тут мне и помог Станислав Дмитриев. За что ему огромнейшее спасибо. Он не только написал прошивку под общий анод. Но так же и под общий катод и под разные типы датчиков температуры (DS18S20 или DS18B20). Что позволило еще более унифицировать данную схему. И рекомендовать её к повторению. Также можно применить в схеме как четырех разрядные семисегментники так и трех разрядные семисегментники. Что является не большим, но все, же плюсом.
Теперь сама схема

Как вы видите, схема не отличается от той, что представлена, была на сайте http://www.labkit.ru
Так и было задумано изначально. Единственное изменение в схеме это установка дополнительного резистора. Схему я не стал перерисовывать с нуля. Просто добавил недостающий элемент схемы. По сути если Вы хотите еще более упростить схему и у вас есть стабильный источник питания 5В, то Вы можете исключить из схемы и линейный стабилизатор. И запитать МК сразу от 5В.
Теперь поговорим немного о том, как самому настроить прошивку под нужный вам индикатор или датчик. Тут всё просто.

Загрузив файл прошивки в программатор, Вы сами: исходя из того, что вам нужно и смотря на данный скриншот, прописываете нужные вам параметры в файл прошивки в разделе EPROM. После чего можете прошивать контролер.

В моём варианте печатной платы в плате предусмотрено место не только для линейного стабилизатора, но и для диодного моста (что позволит запитывать схему напряжением от 7,5В до 12В. А так же на плате предусмотрено место для установки клемника, который позволяет не впаивать датчик температуры в плату, а зажать его зажимами. Это удобно при смене датчика, либо при установке датчика на длинный провод. Позволяет быстро сменить провод.

Рисунок платы

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

Это обычный цифровой термометр, на просторах интернета подобных девайсов очень много. Основа микроконтроллер PIC16F628A и цифровой датчик температуры DS18S20 (DS18B20). В качестве индикаторов применены светодиодные 3-х разрядные индикаторы зеленого цвета. Индикация динамическая. Термометр работает во всем диапазоне температур датчика DS18S20, т.е. от -55 до +125 градусов.

Собран термометр на печатной плате, вместе с индикатором. Датчик и питание подключаются отдельно. Если датчик не подключен, на индикаторе высвечивается буква Е (Error). Никаких особенностей данный прибор не имеет. Диод VD1 служит для защиты от переполюсовки источника питания.

Прибор может работать как с датчиком DS18B20, так и с датчиком DS1820(DS18S20). Под каждый датчик используется своя прошивка микроконтроллера. Ниже приведен вариант этого термометра с уже установленным на печатную плату диодным мостом и стабилизатором 7805, т.е. для питания этого устройства достаточно подключить вторичную обмотку трансформатора к разъему питания. Кроме того, на этой плате установлен светодиод, который кратковременно вспыхивает во время опроса микроконтроллером датчика температуры. Светодиод подключен между ножкой RB3 (вывод 9) и "массой", естественно с резистором. Отсутствие светодиода на плате никак на работу термометра не повлияет.

Прибор удобно разместить в любой пластиковой коробке подходящих размеров. Я разместил его в корпусе сетевого блока питания (Адаптора) вместе с трансформатором. Т.е. из коробки выходит только разъем на датчик DS18B20, а сам корпус вставляется в сеть 220В.

Файл:
Размер:
Содержимое:

sm_termo. rar
38.3 КБ
Рисунки плат (LAY) и прошивки микроконтроллера.

Описание работы термометра

Назначение этого термометра всего лишь показывать температуру. Небольшие отличия от других подобных схем только в формате вывода температуры на LED индикатор, который представляет из себя 4-х разрядный сверхяркий CA04-41SRWA. В качестве датчика температуры применён DS18B20 в обычном включении с отдельным проводом питания.

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



Затем на индикатор выводятся сами показания температуры.



Вид вывода показаний следущий:


Отличие формы вывода есть только для низких положительных температур. При индикации такой температуры к символу "градус" добавлен знак "C". То есть градусы цельсия.Символ "градус" присутствует на индикаторе при любой измеряемой температуре.

Датчик температуры DS18B20 измеряет температуру с разрешением 0,0625 градусов цельсия. Термометр считывает показания из датчика и округляет их до десятых долей градуса. Десятые доли градуса выводятся на индикацию во всех режимах индикации, кроме режима температур меньших, чем -10 градусов цельсия. Это сделано для того, чтобы на показаниях отрицательных температур всегда присутствовал знак "минус".

Показания присутствуют на индикаторе в течение 30 секунд. Затем прибор снова уходит в спящий режим и индикатор выключается.


Моделирование термометра в протеусе


Модель в протеусе позволила отработать программную часть термометра не собирая сам прибор в железе. Все режимы оттестированы. Сбоев при моделировании в программе нет.



Саму модель можно загрузить по ссылке: termo_i_v2. DSN

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


Схема нарисована отталкиваясь от рисунка печатной платы. Сначала была сделана разводка проводников печатной платы, таким образом, чтобы длина проводников и расположениен деталей было оптимальным и только после того, как на печатной плате было получено соответствие портов микроконтроллера PIC16F628A выводам индикатора CA04-41SRWA была составлена точная принципиальная схема.


Печатная плата термометра

Или его аналоги. Приборы имеют хорошую точность, помехоустойчивость, и, по сравнению с аналоговыми решениями, значительно упрощают схему. Пределы измеряемых подобными датчиками температур, как правило, ограничены диапазоном от -55 до 125 ºС. Что же делать, если нужно измерить температуру выше 125 °С? Очевидно, нужно использовать аналоговые датчики, температурный диапазон которых может достигать +300 °С. Надо отметить, что в этом случае точность измерений снизится. Но часто при измерении больших температур знать точное значение необязательно, и погрешность в несколько градусов будет приемлемой, а при отображении на аналоговой шкале, например, на линейке светодиодов, и вовсе незаметной.

Для нормальной работы устройства в температуре 0 … 250 °С, был выбран аналоговый датчик , рабочий диапазон которого составляет -40 + 300 °С. Его параметры идеально подходят под выбранный температурный диапазон. За обработку данных отвечает микроконтроллер (МК) . Конечно, годится и любой другой, но автору этот МК представляется одним их самых доступных и популярных. Фьюз биты оставлены заводские. При решении задачи критерии точного измерения были отложены на второй план. Погрешность в пределах нескольких градусов вполне устраивала.

Цифровая индикация результатов измерений

Для цифрового отображения данных используются LCD дисплей. При желании устройство можно модернизировать, доработав код программы. Свободных портов ввода-вывода для этого достаточно. LCD дисплей подключен по 4-битной шине (Рисунок 1). Старшие разряды индикатора D4 - D7 подключены к младшим разрядам D0 - D4 микроконтроллера. Поскольку точных временных привязок в этом устройстве нет, то нет и необходимости во внешнем задающем кварцевом резонаторе. К портам PB6 и PB7 подключены управляющие выводы дисплея. Как можно видеть, все линии управления дисплея выходят с одной стороны корпуса МК, что упрощает трассировку печатной платы.

Вычисление значения температуры

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

Таблица 1. Зависимость сопротивления от температуры.

Температура ºС

Сопротивление Ω

Построив на основании Таблицы 1 график в Mathcad (Рисунок 2), можно увидеть зависимость сопротивления аналогового датчика от приложенной температуры. Исходные данные таблицы взяты из технического описания KTY84_130. Функция имеет практически линейный характер, лишь с небольшим отклонением на высоких температурах.

При измеряемой температуре 0 ºС сопротивление терморезистора составляет 498 Ом. Напряжение на выходе делителя равно

  • U Д - напряжение на датчике температуры относительно земли,
  • U ПИТ - напряжение питания,
  • R Д - сопротивление датчика температуры,
  • R 1 - установленное сопротивление переменного резистора.

При температуре 0 ºС напряжение на входе АЦП должно составлять 0.6 В. Для вычисления значения температуры автор использовал следующую формулу:


  • АЦП - 10 разрядный цифровой код АЦП, снятый с датчика,
  • U ОТС - отсекающее значение (60), равное 0.6 В при 0 ºС.

Диапазону измеряемых температур от 0 ºС до 250 ºС соответствуют поступающие с делителя входные напряжения АЦП от 0.6 до 1.8 В. Опорное напряжение АЦП составляет 5 В, поэтому при указанных значениях цифровой код будет находится в пределах от 123 до 368. Это число помещается в регистр и конвертируется в три разряда ASCII кода. Поскольку датчик KTY84_130 рассчитан на максимальную температуру 300 ºС, лучше оставить небольшой запас и ограничится 250 ºС.

На Рисунке 5 показано устройство, собранное на макетной плате. Код программы открытый, и каждый может с легкостью доработать его под собственные задачи.

Программное обеспечение МК и виртуальная модель Proteus для LCD 16×2 -

Программное обеспечение МК и виртуальная модель Proteus для LCD 8×2 -

Часы, будильник, термометр на ATmega8, DS1307, DS18B20


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


Захотел, чтобы новые часы информировали не только о текущем времени, но и о температуре в помещении, где они находятся. Задался поиском подобных схем в интернете, отталкиваясь от уже имеющихся комплектующих, а именно: микроконтроллер ATmega8 и светодиодный индикатор с общим катодом. Отличное решение нашлось на этой странице, которое предоставил пользователь Soir, за что ему большая благодарность.


Схема часов не сложная, плюс, я сделал в ней некоторые упрощения. Что получилось, я привожу ниже. Оригинальная и упрощенная схема, разведенная в Proteus, имеется в АРХИВЕ. В данном архиве приведены также прошивки ATmega8, дающие разный функционал часам, пример выставления фьюзов, полная инструкция по настройке часов и их возможностях, а так же разведенная печатная плата в формате *.lay6. Печатная плата разводилась мной под уже имеющийся корпус. В архиве представлены прошивки для индикаторов с общим анодом и катодом.



Хочу признать, что часы получились отлично. В часах есть будильник (как разовый, так и по дням недели), термометр. Для регулировки освещения индикатора в дневное и ночное время, могут использоваться как предустановки в часах, так и специальный датчик (фоторезистор). Есть возможность коррекции времени, если оно отстает или спешит; цифровая коррекция отображения температуры с градацией 0,1ºС.


Большим плюсом является наличие сохранения настроек в энергонезависимой памяти микроконтроллера. Помимо этого, применение микросхемы DS1307, в паре, с батарейкой, делают часы абсолютно энергонезависимыми. Батарейка выполняет дежурное питание часов. Теперь, сколько бы поставка электричества у Вас не обрывалась, при ее возобновлении, часы буду идти, без каких-либо изменений и отклонений, даже останется заведенным будильник(и).



В эстетическом плане, данные часы, также хороши. Есть более десяти видов визуальных эффектов смены отображения времени и температуры. Кстати, эти эффекты можно выбирать самостоятельно или выставить их отображение в случайном порядке.


Пользователь "yurich" предоставил свой вариант разводки платы под корпус советских часов "Кварц". Файл можно скачать ЗДЕСЬ.

Четырехканальный цифровой термометр - Готовые проекты - - Сообщество

Представленная система может использоваться везде, где вам нужно контролировать температуру сразу в нескольких точках в широком диапазоне температур. Используя цифровой датчик DS18B20 с разрешением до 12 бит, схема может измерять температуру в диапазоне от -55 до 125 ° C с разрешением 0,1C. Устройство считывает температуру с датчиков за один цикл, что значительно увеличивает скорость измерения. Система может обнаружить отсутствующий или поврежденный датчик, что будет видно на дисплее.
 Принципиальная схема термометра представлена на рис.1:

                                                    

Сердцем схемы является микроконтроллер ATmega8, работающий на внутреннем RC-генераторе с частотой 1 МГц. Резистор R1 со значением 10 кОм подтягивает выход Reset до напряжения Vcc, чтобы микроконтроллер не сбрасывался из-за помех во время работы. Конденсаторы C1 и C2 фильтруют напряжение для микроконтроллера.
ЖК-дисплей подключен к микроконтроллеру в 4-битном режиме. Потенциометр PRI регулирует контрастность дисплея. Сигнал R/W постоянно подключен к земле, потому что он не используется. Для измерения температуры использовались цифровые датчики DS18B20 с высоким разрешением и точностью измерения (на рисунке 2 представлены характеристики, показывающие точность датчиков).

                                             

Датчики подключены параллельно к портам микроконтроллера, потому что эта конфигурация увеличивает скорость измерения температуры и обеспечивает беспроблемную замену данного датчика без необходимости калибровки (сохранение адреса нового датчика).

                                                         Программа

Программа управления микроконтроллером написана в среде BASCOM AVR. Полный текст программы находится в архиве.В порядке ускорения процесса измерения температуры, считывание производится со всех датчиков одновременно. 
 Для начала программа цикла сбрасывает все датчики и отправляет команду считывания температуры. После 750 мс программа цикла считывает и рассчитывает температуру от всех датчиков. Все расчеты, связанные с преобразованием температуры, были сделаны на целые числа. 
В начале значение самого старшего байта температуры MSB умножается на 256 (сдвиг битов на 8 позиций влево) и к нему добавляется значение самого младшего байта LSB. Затем полученное значение делится без остатка на 16 (битовый сдвиг 0 на 4 позиции вправо), а остальное получается с помощью операции деления по модулю и считывания округления из фиксированной таблицы.
В случае отрицательных температур процесс аналогичен. Перед делением вычисленное значение отменяется и увеличивается.

                                          Изготовление устройства...

не должно вызвать больших затруднении. Расположение элементов показано на рис.3, а вид собранного устройства на фото1. Печатная плата в формате Sprint-Layout 6.0 находится в архиве.

                                                     

 Прошивка для микроконтроллера находится в архиве. Фьюзы трогать не надо-используются заводские по умолчанию.

                                                      Особенности эксплуатации                           

 Устройство не требует калибровки или настройки, после включения оно готово к работе. Термометр  питатется от 5 В постоянного тока. Фото 2 показывает устройство во время нормальной работы.

                                              

Для отключенных или поврежденных датчиков отображаются прочерки - фото 3:

                                              

Датчик лучше  заменять  после выключения устройства. Делая это во время работы термометра, можно ожидать появления значения 85C на дисплее (это значение вводится в регистры после подачи питания).

Материал взят из журнала Elektronika dla Wszystkich за №1 2014

                   
 

Многоканальный термометр на микроконтроллере. Термометр на датчике температуры ATmega8 и DS18B20. Внешний вид готовой печатной платы термометра

Схема термометра на ATmega8 и DS18B20

Цифровой термометр DS18B20
Семисегментный светодиодный индикатор
Алгоритм программы термометра
Программа цифрового термометра на DS18B20

Схема и программа очень просты, цифровой термометр с использованием микроконтроллера ATmega8 и датчика температуры DS18B20 . .. Термометр позволяет измерять температуру от 0 до 99 градусов с точностью до 0,5 градуса с разрешением 0,1 градуса

Термометр очень прост по своим характеристикам, и его можно использовать только как термометр для измерения «комнатной» температуры. Конечно, использовать в этой конструкции микроконтроллер с 8 килобайтами памяти расточительно, можно использовать более простой микроконтроллер. Но дело в том, что эта конструкция является основой для дальнейшего развития проекта с использованием цифрового датчика температуры DS18B20.В следующей статье будет опубликована конструкция еще одного градусника - на двух датчиках DS18B20, который позволит измерять температуру не только в помещении, но и «за бортом». Естественно, добавится и возможность измерения отрицательных температур. В будущем в конструкцию добавят функцию термостата, часов, возможность работы с различными нагрузками, что позволит собрать простую конструкцию - основу «умного дома». Что ж, сегодня первая статья из этой серии.

Цепь термометра на датчике температуры ATmega8 и DS18B20

Давайте посмотрим на схему термометра:

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

Структура напряжения питания - 5 вольт. Если использовать микроконтроллер с низковольтным источником питания, то можно снизить напряжение питания конструкции, но в этом случае, возможно, придется уменьшить значение сопротивлений демпфирования в сегментах индикатора.Примерные значения сопротивления можно принять:
- при питании от 5 вольт - 200-300 Ом
- при питании от 2,7 - 3 вольта - 100-150 Ом

Транзисторы - любые маломощные NPN структуры.
датчик температуры - DS18B20
Семисегментный индикатор - любой трехзначный с общим катодом. Если вы хотите использовать другие, с общим анодом, то вам придется заменить транзисторы на PNP и внести изменения в программу (заменить массив двоичных кодов для вывода чисел в индикатор). Я использовал индикатор красного цвета свечения, и заодно для следующей схемы приготовил такое же, но синего цвета свечения.

Детали термометра на микроконтроллере ATmega и DS18B20



Распиновка микроконтроллера ATmega8:

Трехзначный семисегментный индикатор FYT-5631AUR-21:

Датчик температуры DS18B20:

Транзисторы BC547C:

Алгоритм программы термометра на ATmega и DS18B20

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

Программа использует два таймера / счетчика микроконтроллера:
- восьмибитный T0
- шестнадцатибитный T1
Через восьмибитный таймер T0, настроенный на вызов прерывания переполнения, с внутренней частотой CK / 8 (период 2 миллисекунды), организовано:
- расчет текущей температуры
- динамическое отображение результатов измерения температуры датчиком DS18B20
Через шестнадцатибитный таймер Т1, настроенный на вызов прерывания переполнения, с внутренней частотой CK / 64 (период 4 секунды) организован:
- отправка команды на датчик DS18B20 для измерения температуры
- считывание измеренной температуры с датчика
В принципе, можно использовать один восьмибитный таймер / счетчик, также сконфигурированный для запуска прерывания переполнения, с внутренней частотой CK / 8, и организовать всю работу схемы во время обработки прерывания. Но дело в том, что в этом нет никакого смысла - сенсору DS18B20 для преобразования (определения) температуры требуется чуть меньше 1 секунды (при разрешении 12 бит), т.е. чаще 1 раза в секунду мы не будем возможность обновления данных о температуре ... Кроме того, такое частое обновление температуры приведет к нагреву датчика и, соответственно, к искажению реальных данных. Использование второго счетчика позволяет отдельно установить временные интервалы измерения температуры.

Так выглядит основная часть программы в Конструкторе алгоритмов:

Где:

- SP - установка начального адреса стека

- Таймер 0 - установка таймера T0:

- Timer 1 - установка таймера T1:

- TIMSK - установка прерываний от таймеров:

- Init_Display - подпрограмма для установки битов портов, участвующих в динамической индикации вывода данных на трехзначный семисегментный индикатор

- 1 -> I - глобальное разрешение прерывания

Если есть вопросы, если что-то непонятно или есть вопросы по программе, пишите - отвечу.

(2,4 КБ, 7,004 обращений)

Доброго времени суток уважаемые читатели. Как видно из названия статьи, речь пойдет о термометре, собранном на ПОС. Так. Почему и как все началось ?!
Мне понадобилась схема простейшего градусника для подвала гаража. Я начал искать в интернете подходящую схему. Важным критерием было использование минимального количества элементов в схеме. Сразу скажу, что таких схем термометров в сети много.Но! Чаще всего они выполняются на AVR, с которым я, к моему глубокому сожалению, не дружу. Поэтому я стал искать схему ПОС. Но даже здесь я был разочарован. На PIC есть схемы термометров. Но там для индикаторов транзисторы, потом внешний кварц или что-то еще, что усложняло схему и было неприемлемо в моем случае. Наконец, после долгих поисков, подходящая схема была найдена здесь:

http://www.labkit.ru/html/show_meter?id\u003d38
И это было успешно повторено много раз.Все отлично работает. (на сайте автора этой схемы есть и прошивка, и печатная плата для повтора этого градусника). Время шло. И в один прекрасный момент недостатки этой схемы впервые прояснились и мне также потребовалось использовать индикатор с Common Cathode (на сайте автора прошивка была только для Common Anode). Теперь о недоработке схемы в первоисточнике. Изначально в авторской схеме нет подтягивающего резистора на датчике температуры.То есть в схеме нет резистора 4,7К. Действительно, при такой конструкции схемы термометр может работать, но только если датчик температуры впаян прямо в плату, либо длина провода, на котором расположен датчик, не должна превышать длину провода в метр, метра полтора. Больше не надо. Иначе индикатор начинает показывать какую-то ерунду, а не температуру.
Такой поворот событий меня совсем не обрадовал. Потому что длина провода с датчиком мне утомила не менее 10 метров.
Эта проблема решилась очень просто и быстро, а именно установкой на датчик подтягивающего резистора 4,7К. После этого датчик стал стабильно работать при любой длине провода. А что, если у меня есть индикаторы только с общим катодом! И прошивку делали на анод . .. Тут мне помог Станислав Дмитриев. За что ему огромное спасибо. Он не только написал прошивку на общий анод. Но также для общего катода и для разных типов датчиков температуры (DS18S20 или DS18B20).Это позволило еще больше унифицировать данную схему. И рекомендую к повторению. Также можно использовать в схеме как четырехбитный семисегментный, так и трехбитный семисегментный. Что не очень хорошо, но все же плюс.
Теперь сама схема

Как видите, схема не отличается от представленной на сайте http://www.labkit.ru
Это было задумано изначально. Единственное изменение схемы - установка дополнительного резистора. Перерисовывать схему с нуля не стал.Просто добавил недостающий элемент схемы. Фактически, если вы хотите еще больше упростить схему и у вас есть стабильный источник питания 5 В, то вы можете исключить из схемы линейный регулятор. И запитать МК напрямую от 5В.
А теперь поговорим немного о том, как самому настроить прошивку под нужный вам индикатор или датчик. Здесь все просто.

Загрузив файл прошивки в программатор, вы сами: исходя из того, что вам нужно, и глядя на этот скриншот, записываете нужные вам параметры в файл прошивки в разделе EPROM.Потом можно прошить контроллер.

В моем варианте печатной платы на плате предусмотрено место не только для линейного стабилизатора, но и для диодного моста (который позволит запитать схему напряжением от 7,5В до 12В. А также есть место на плате для установки клеммной колодки, что позволяет не впаивать датчик температуры в плату, а зажимать его струбцинами. Это удобно при смене датчика, или при установке датчика на длинный провод.Позволяет быстро менять провод.

Чертеж платы

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

Обычный цифровой термометр; Таких устройств в Интернете очень много.В основе лежит микроконтроллер PIC16F628A и цифровой датчик температуры DS18S20 (DS18B20). В качестве индикаторов используются 3-значные зеленые светодиодные индикаторы. Индикация динамическая. Термометр работает во всем температурном диапазоне датчика DS18S20, т.е. от -55 до +125 градусов.

Термометр в сборе на печатной плате вместе с индикатором. Датчик и питание подключаются отдельно. Если датчик не подключен, на индикаторе будет отображаться буква E (Ошибка).У этого устройства нет особых функций. Диод VD1 служит для защиты от переполюсовки источника питания.

Устройство может работать как с датчиком DS18B20, так и с датчиком DS1820 (DS18S20). Каждый датчик использует собственную прошивку микроконтроллера. Ниже представлен вариант этого термометра с уже установленным на печатной плате диодным мостом и стабилизатором 7805, т.е. для питания этого устройства достаточно подключить вторичную обмотку трансформатора к разъему питания. Кроме того, на этой плате есть светодиод, который кратковременно мигает, когда микроконтроллер опрашивает датчик температуры. Светодиод подключается между ножкой RB3 (вывод 9) и землей, естественно, с помощью резистора. Отсутствие светодиода на плате никак не повлияет на градусник.

Устройство удобно разместить в любом пластиковом ящике подходящих размеров. Я поместил его в корпус сетевого адаптера (адаптера) вместе с трансформатором. Те. из коробки выходит только разъем для датчика DS18B20, а сам корпус вставляется в сеть 220В.

Файл:
Размер:
Содержание:

sm_termo. rar
38,3 КБ
Чертежи плат (LAY) и прошивки микроконтроллера.

Описание термометра

Назначение этого термометра - только показывать температуру. Небольшие отличия от других подобных схем только в формате вывода температуры на светодиодный индикатор, который представляет собой 4-значное сверхъяркое CA04-41SRWA.DS18B20 используется как датчик температуры при обычном подключении с отдельным проводом питания.

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



Тогда на индикаторе отображаются сами показания температуры.



Тип считывания следующий:


Разница в форме вывода только для низких положительных температур. Когда указана эта температура, к символу «градуса» добавляется «C». Это градусы Цельсия. Символ «градус» присутствует на индикаторе при любой измеряемой температуре.

Датчик температуры DS18B20 измеряет температуру с разрешением 0,0625 градуса Цельсия.Термометр считывает показания датчика и округляет их до десятых долей градуса. Во всех режимах отображения отображаются десятые доли градуса, кроме температуры ниже -10 градусов Цельсия. Это сделано для того, чтобы на показаниях отрицательных температур всегда присутствовал знак минус.

Показания присутствуют на индикаторе 30 секунд. Затем устройство снова переходит в спящий режим и индикатор гаснет.


Моделирование термометра в Proteus


Модель в протее позволила проработать программную часть термометра без сборки самого прибора в сальнике.Все режимы протестированы. В программе нет сбоев в моделировании.



Саму модель можно скачать по ссылке: termo_i_v2.DSN

Схема термометра


Схема нарисована на основе чертежа печатной платы. Сначала производилась разводка печатной платы, чтобы длина проводов и расположение деталей были оптимальными, и только после того, как было выполнено соответствие портов микроконтроллера PIC16F628A выводам индикатора CA04-41SRWA На печатной плате была нарисована точная принципиальная схема.


Печатная плата термометра

Или его аналоги. Устройства обладают хорошей точностью, помехозащищенностью и, по сравнению с аналоговыми решениями, значительно упрощают схему. Пределы температур, измеряемых такими датчиками, обычно ограничиваются диапазоном от -55 до 125 ºС. Что делать, если вам нужно измерить температуру выше 125 ° C? Очевидно, необходимо использовать аналоговые датчики, температурный диапазон которых может достигать +300 ° С. Следует отметить, что в этом случае точность измерения снизится.Но часто при измерении высоких температур знать точное значение не обязательно, и погрешность в несколько градусов будет допустимой, а при отображении на аналоговой шкале, например, на линейке светодиодов, она совершенно незаметна.

Для нормальной работы прибора при температуре 0 ... 250 ° С был выбран аналоговый датчик, рабочий диапазон которого составляет -40 + 300 ° С. Его параметры идеально подходят для выбранного диапазона температур. За обработку данных отвечает микроконтроллер (MC).Конечно, подойдет любой другой, но этот МК автор видит как один из самых доступных и популярных. Биты предохранителя остаются на заводе. При решении проблемы критерии точного измерения были отложены на второй план. Ошибка в несколько градусов - это нормально.

Цифровая индикация результатов измерений

ЖК-дисплей

используется для цифрового отображения данных. При желании устройство можно модернизировать, изменив программный код. Для этого достаточно свободных портов ввода-вывода.ЖК-дисплей подключается по 4-битной шине (рисунок 1). Старшие биты индикатора D4 - D7 подключены к младшим битам микроконтроллера D0 - D4. Поскольку в этом устройстве нет точной синхронизации, нет необходимости во внешнем кварцевом резонаторе. Контакты управления дисплеем подключены к портам PB6 и PB7. Как видите, все линии управления дисплеем выходят с одной стороны MCU, что упрощает прокладку печатной платы.

Расчет значения температуры

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

Таблица 1. Сопротивление в зависимости от температуры.

Температура ºС

Сопротивление Ом

Построив в Mathcad график на основе таблицы 1 (рисунок 2), можно увидеть зависимость сопротивления аналогового датчика от приложенной температуры. Исходные данные таблицы взяты из технического описания KTY84_130. Функция почти линейная, с небольшими отклонениями при высоких температурах.

При измеренной температуре 0 ºС сопротивление термистора составляет 498 Ом. Напряжение на выходе делителя

  • U D - напряжение на датчике температуры относительно земли,
  • U PIT - напряжение питания,
  • R D - сопротивление датчика температуры,
  • R 1 - установленное сопротивление переменного резистора.

При температуре 0 ºС напряжение на входе АЦП должно составлять 0,6 В. Для расчета значения температуры автор использовал следующую формулу:


  • ADC - 10-битный цифровой код ADC, взятый с датчика,
  • U UTS - значение отсечки (60) 0,6 В при 0 ºС.

Диапазон измеряемых температур от 0 ºС до 250 ºС соответствует входному напряжения АЦП от делителя от 0,6 до 1,8 В. опорного напряжения АЦП составляет 5 В, следовательно, с указанными значениями, цифровой код будет в диапазоне от 123 до 368. Это число помещается в регистр и преобразуется в трехбитовый код ASCII. Поскольку датчик KTY84_130 рассчитан на максимальную температуру 300 ºС, лучше оставить небольшой запас и ограничиться 250 ºС.

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

Программа

MK и виртуальная модель Proteus для LCD 16 × 2 -

Программное обеспечение

MK и виртуальная модель Proteus для ЖК-дисплея 8 × 2 -

Цепь цифрового датчика температуры

с использованием микроконтроллеров 8051 и AVR

Датчики температуры широко используются в электронном оборудовании для отображения температуры.Вы можете увидеть цифровые часы, отображающие значение температуры в помещении. Это связано с встроенным в него датчиком температуры. В этом проекте я покажу вам, как разработать схему цифрового датчика температуры. В процессе я объясню две схемы: одна использует микроконтроллер 8051, а другая - микроконтроллер ATmega8.

Значение температуры аналоговое. Следовательно, оно преобразуется в цифровое значение с помощью аналого-цифрового преобразователя (АЦП), а затем отображается. В этой статье описывается то же самое - преобразование аналогового значения в цифровое.

Принцип цепи цифрового датчика температуры

Основной принцип этой схемы - принимать аналоговые значения температуры, преобразовывать их в цифровые значения и отображать цифровое значение температуры на ЖК-дисплее или 7-сегментном дисплее.

Здесь используются микроконтроллеры 8051 и ATmega8. ATmega8 имеет встроенный аналого-цифровой преобразователь с шестью мультиплексированными каналами с 10-битным разрешением. Это уменьшает взаимодействие внешнего аналого-цифрового преобразователя IC. Аналоговое значение температуры подается непосредственно на входные каналы АЦП микроконтроллера.Для внутреннего аналогово-цифрового преобразования используется метод последовательного приближения.

Но в случае с микроконтроллером 8051 (в этом проекте используется AT89C51), он не имеет встроенного АЦП, как ATmega8. Следовательно, я собираюсь соединить внешний АЦП ADC0804 с микроконтроллером 8051 для преобразования аналоговых значений температуры в цифровые значения.

Связанное сообщение: Термометр со шкалой Цельсия с использованием микроконтроллера AT89C51

Цепь цифрового датчика температуры

с использованием 8051

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

Необходимые компоненты

  • AT89C51 (микроконтроллер 8051)
  • 11.0592 МГц Cystal
  • Конденсатор 2 X 33 пФ
  • Конденсатор 10 мкФ / 16 В
  • Резистор 3 X 10 кОм
  • Комплект резисторов 1 кОм x 8
  • 10 кОм POT
  • ЖК-дисплей 16X2
  • АЦП 0804
  • LM35
  • Конденсатор 150 пФ
  • Резистор 330 Ом
  • Блок питания
  • Соединительные провода
  • 8051 Программист
Схемотехника

Выводы цифрового выхода ИС АЦП подключены к выводам PORT3 8051.Контакты PORT0 подтягиваются вверх с помощью блока резисторов 1 кОм и подключаются к контактам данных ЖК-дисплея 16 × 2. P2.0 и P2.1 8051 подключены к RS и E ЖК-дисплея.

LM35 подключен к выводу аналогового входа VIN + (вывод 6) ADC0804. Основные компоненты, такие как генератор, сброс и т. Д., Здесь не объясняются.

Код
рабочий

После выполнения всех подключений и записи кода на микроконтроллер 8051 включите источник питания. Датчик температуры LM35 передает аналоговые данные о температуре на ADC0804, которые он преобразует в цифровые значения и отправляет на 8051.

После получения цифровых значений микроконтроллер 8051 выполняет небольшой расчет и затем отображает температуру на ЖК-дисплее.

Цепь цифрового датчика температуры

с использованием ATmega8

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

Схема цифрового датчика температуры

Компоненты цепи:

  • Резисторы - от R1 до R7 номиналом 330 Ом каждый.
  • LM35 Датчик температуры
  • Микроконтроллер ATmega8
  • 7-сегментный дисплей
Конструкция схемы цифрового датчика температуры

Цифровая цепь температуры состоит из микроконтроллера ATmega8, датчика температуры LM35, 7-сегментного дисплея.Датчик температуры Lm35 подключен к одному из каналов АЦП микроконтроллера.

ATmega8 имеет шесть каналов АЦП на порту C. Контакты PC0-PC5 Atmega8 действуют как каналы АЦП. Это показывает, что можно связать шесть аналоговых значений. Но одновременно выполняется только одно преобразование в зависимости от приоритета входных каналов. Разрешающая способность АЦП - 10 бит. Помните, что для преобразования Vref и Avcc подключаются извне, как показано на схеме.

Как правило, все выводы порта микроконтроллера ATmega8 действуют как обычные выводы ввода / вывода, пока не будут объявлены их специальные функции.Регистры АЦП внутри контроллера должны быть объявлены, чтобы порт C работал как канал АЦП.

Датчик температуры

Lm35 имеет три контакта. Если расположить плоскую поверхность к себе, первый контакт - это Vcc, второй контакт - это выход, а третий контакт - заземление. Выходной вывод датчика температуры подключен к первому каналу АЦП, то есть выводу PC0 микроконтроллера.

Семисегментный дисплей имеет восемь контактов и один общий контакт. Оставляя Dp, подключите все семь контактов к порту B. Подключите A к PB0, B к PB1, _____, G к PB6.Используемый здесь семисегментный дисплей является обычным катодным дисплеем. Между контроллером и дисплеем использовались токоограничивающие резисторы.

Видео моделирования цепи цифрового датчика температуры
Как работать со схемой цифрового датчика температуры?

Первоначально запитать схему. Микроконтроллер постоянно проверяет вход на канал АЦП. Он преобразует аналоговую температуру в цифровое значение и отображается на семи сегментах. Увеличивайте или уменьшайте значение температуры, щелкая стрелки под дисплеем датчика температуры.Всякий раз, когда происходит изменение, канал АЦП преобразует входной сигнал и отображает семисегментный сегмент. Отображаемое значение температуры вдвое превышает исходное значение. Это связано с различиями в размере шага. Итак, перед отображением значения разделите значение на 2 и вычтите из него 1, чтобы отобразить точное значение.

Алгоритм программирования для микроконтроллера

Следующие шаги объясняют, как установить внутренние регистры АЦП микроконтроллера ATmega8 и отобразить значение на семисегментном дисплее.

  • Изначально выбрать один канал из шести каналов АЦП, к которому подключен датчик температуры и выбора источника для опорного напряжения с помощью ADMUX регистра.

Пример: ADMUX = 01000000.
Если выбран канал ADC0 и выбран Avcc с внешним конденсатором на выводе Aref

  • Включите АЦП и выберите предскалярное значение с помощью регистра ADCSRA.

Пример: ADCSRA = (1 << ADEN) | (1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2)
Если выбрано предскалярное значение 128 и включено ADC.ADPS0, ADPS1, ADPS2, ADPS3 - это предскалярные биты.

  • Проверить бит флага в регистре ADCSRA, который устанавливается после завершения преобразования.
  • Считайте значение из регистра АЦП и присвойте значение порту B, который отображается на семи сегментах.
  • Полученное двузначное значение может отображаться в двух семи сегментах.
Цифровой датчик температуры Project Output Video

Применение схемы цифрового датчика температуры

  1. Цифровые датчики температуры широко используются в повседневной жизни
  2. Они используются в экологических приложениях.
  3. Цифровые датчики температуры можно найти в кондиционерах, где они регулируют температуру в соответствии с комнатной температурой.
  4. Их можно увидеть в цифровых часах, отображающих комнатную температуру вместе со временем.
  5. Его можно использовать в приборных панелях автомобиля для отображения температуры двигателя, чтобы избежать внезапной остановки из-за перегрева.
  6. Нет необходимости во внешней ИС АЦП для преобразования в случае ATmega8.

Беспроводной термометр для домашней автоматизации на базе ATmega8

Обновление 2021 года: Замена платы была разработана с использованием более современного модуля передатчика RFM119, см. Thermometer_v2.pdf и thermometer_v2.zip. Прошивка последует.

В качестве внешних датчиков для моего беспроводного термостата я сделал несколько термометров, описанных ниже. Передавая данные о температуре из разных комнат интеллектуальному термостату, они вместе образуют «подсистему отопления (и / или кондиционирования)» системы домашней автоматизации, которая управляется домашним сервером Linux на базе Raspberry Pi.

И оборудование, и программное обеспечение открыты (под лицензией GPLv3), и я использовал программу KiCad с открытым исходным кодом для проектирования печатной платы. быть полностью свободным.Файлы дизайна KiCad, а также файлы Gerber и Excellon для производства находятся в файле thermometer_hw.zip, источник прошивки находится в файле thermometer_sw.zip. Для удобства экспорт схем в PDF находится здесь. Беспроводная связь очень проста с использованием амплитудно-модулированных модулей 433,92 МГц от Aurel, вся модуляция обрабатывается программно, отправляя 128-битные датаграммы. Аутентификация достигается с использованием метода скользящего кода, и в качестве шифра я использовал по историческим причинам двойной Keeloq, хотя сегодня я бы перешел на AES128, если бы было время переписать код.Это предпочтительнее более продвинутых беспроводных протоколов, таких как, например, Возможность подключения к Wi-Fi, поскольку объем передаваемых данных крошечный, поэтому Wi-Fi будет излишним и будет стоить намного дороже, потребует гораздо более продвинутого MCU и т. Д. Даже диапазон беспроводной связи, достижимый с помощью этого устройства (при использовании дополнительного усилителя на печатной плате), лучше, чем при использовании WiFi без специальных антенн.
Устройство находится в непрерывной эксплуатации с 2007 г. и не требует обслуживания в течение многих лет.
При компиляции прошивки имя "generic" может быть изменено путем изменения #define LOCATION в termometer.c и соответствующего переименования файлов заголовков, что позволяет составлять прошивку для термостатов, размещенных в разных местах (домах) с разными ключами шифрования. Термостаты в одном доме (или квартире), работающие в одной системе домашней автоматизации, должны иметь одинаковое МЕСТОПОЛОЖЕНИЕ и различаться. просто по СЕРИЙНОМУ номеру и соответствующие ключи шифрования должны быть определены в заголовке. (Конечно, вам нужно заменить пустышки 0xffffffff на собственные ключи (полученные e.грамм. из / dev / random) в файле заголовка. Обратите внимание, что файл generic_keys.h содержит общие ключи для всех видов домашней автоматизации, нужно установить только один сенсорный ключ, соответствующий СЕРИЙНОМУ номеру #, определенному в termometer.c.)

Изображения скоро появятся ...

Моя страница «Электроника»

Моя страница для хобби

Моя главная страница с адресом электронной почты

ТОП моих семейных страниц

Паяльная станция «Сделай сам» с ATmega8

Мощный паяльник.Если он вам нужен, вы хотите его или просто любите создавать вещи, то этот проект для вас.

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

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

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

Конструкция

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

  • Переносимость - Это достигается за счет использования импульсного источника питания (импульсного источника питания) вместо обычного трансформатора и выпрямительного моста.
  • Простой дизайн - Мне не нужны ЖК-дисплеи, ненужные светодиоды или кнопки. Я просто хотел, чтобы сегментный светодиодный дисплей показывал мне заданную и текущую температуру. Я также хотел иметь простую ручку для выбора температуры (потенциометр) и отсутствие потенциометра для регулировки точности, поскольку это можно легко сделать с помощью программного обеспечения.
  • Universal - Я использовал стандартный 5-контактный штекер Aviator (какой-то тип DIN), так что он совместим с паяльниками Hakko и их наконечниками.

На мой взгляд, лучший способ регулирования температуры паяльника - это использование микроконтроллера в качестве ПИД-регулятора (пропорционально-интегрально-производного). Очень вероятно, что вы слышали о PID раньше, например, 3D-принтеры используют его для установки температуры горячего конца. Этот принцип не нов, так как его можно использовать для всего, что требует автоматической настройки, и он широко используется в промышленности.Даже в вашем домашнем цифровом термостате используется контроллер такого типа.

Как это работает

Прежде всего, поговорим о PID. Чтобы объяснить это прямо, давайте рассмотрим наш конкретный случай с паяльной станцией. Система постоянно отслеживает ошибку, которая представляет собой разницу между заданным значением (в нашем случае, температурой, которую мы хотим, и нашей текущей температурой). Он регулирует выходной сигнал микроконтроллера, который управляет нагревателем через ШИМ, по следующей формуле:

.

Как видим, есть три параметра Kp, Ki, Kd. Параметр Kp пропорционален ошибке в настоящее время. Параметр Ki учитывает ошибки, которые накапливаются с течением времени. Параметр Kd - это прогноз будущей ошибки. В нашей настройке мы используем библиотеку PID Бретта Борегарда для адаптивной настройки, которая имеет два набора параметров: агрессивный и консервативный. Когда текущая температура далека от заданной, контроллер использует агрессивные параметры, в противном случае - консервативные.Это позволяет сократить время нагрева при сохранении точности.

Вот схема. Он использует 8-битный микроконтроллер ATMEGA8 в DIP (вы можете использовать ATMEGA168-328, если у вас есть один из них), который очень распространен, и вариант 328 находится в Arduino UNO. Я выбрал его, потому что его очень просто программировать с использованием IDE Arduino, в которой также есть несколько хороших библиотек, готовых к работе.

Температура считывается термопарой, встроенной в паяльник.Мы усиливаем напряжение, генерируемое термопарой, примерно в 120 раз с помощью операционного усилителя из-за термоэлектрического эффекта. Выход подключен к выводу ADC0 микроконтроллера, который преобразует напряжение в значение от 0 до 1023.

Уставка задается потенциометром, который используется в качестве делителя напряжения. Он подключен к выводу ADC1 ATMEGA8. Диапазон 0-5 В (выход потенциометра) изменяется на 0-1023 АЦП и снова на 0-350 градусов Цельсия функцией «карта».

Спецификация материалов

IR195
Ссылка Значение Счетчик
IC1 ATMEGA8-P 1
U1 1
R4 120k 1
R6; R3 1k 2
R5; R1 10k 100nF 3
Y1 16 МГц 1
C1; C2 22pF 2
R2 100 100
C5; C6 100 мкФ (может быть ниже) 2
R7; R8; R9; R10; R11; R12; R13; R14 150 8

Вот список материалов, экспортированных из Kicad.Дополнительно вам понадобится:

  • Паяльник Hakko clone, самые популярные на eBay и китайских сайтах (с термопарой, а не термистором)
  • Блок питания 24В 2А (рекомендую SMPS, но можно использовать трансформатор с выпрямительным мостом)
  • Потенциометр 10k
  • 5-контактный электрический штекер авиационного типа
  • Электрический разъем на панели
  • Печатная плата
  • Выключатель питания
  • Разъемы с контактами 2,54 мм
  • Набор проводов
  • Разъемы Dupont
  • Кейс (я напечатал мой на 3D-принтере)
  • Один тройной светодиодный матричный дисплей
  • AVR ISP-программатор (для этого можно использовать Arduino).

Конечно, вы можете легко заменить светодиодную матрицу ЖК-дисплеем или использовать кнопки вместо потенциометра, в конце концов, это ваша паяльная станция. Я изложил свой выбор дизайна, но вы можете делать это, как хотите. Если вам нужна помощь с кодом или вы меняете компоненты, оставьте комментарий, и я вам помогу!

Инструкции по сборке

Во-первых, вы должны сделать печатную плату. Используйте любой способ, который вы предпочитаете, я рекомендую перенос тонера, так как это самый простой способ.Кроме того, моя печатная плата длиннее, потому что я хотел, чтобы она была размером с SMPS, чтобы я мог ставить одну поверх другой. Не стесняйтесь изменять его, вы можете загружать файлы и редактировать их с помощью Kicad. После этого припаиваем все детали к плате.

Убедитесь, что между источником питания и разъемом питания установлен переключатель. Используйте относительно толстые провода для сети, а также для соединения между источником питания и печатной платой, а также между выходом MOSFET (H на печатной плате) и заземляющим проводом для выхода.Чтобы подключить потенциометр, подключите 1-й контакт к 5 В, 2-й контакт к POT, а 3-й контакт к земле. Все необходимые соединения находятся на печатной плате. Обратите внимание, что для светодиодной матрицы я использовал общий анод, но ваш может быть другим. Вам придется немного изменить код, но инструкции закомментированы в скетче. Подключите контакты E1-E3 к общим анодам / катодам, а контакты a-dp - к соответствующим контактам на вашем массиве. Вам следует ознакомиться с таблицей данных для этого. Наконец, установите заглушку для паяльной станции и припаяйте соединения.Картинка со схемой должна вам здесь помочь.

А теперь самое интересное - загрузка кода. Для этого вам понадобится библиотека PID. Если у вас есть программист AVR ISP, вы знаете, что вам нужно делать. Подключите контакты + 5v, Ground и MISO, MOSI, SCK и RESET, загрузите эскиз Arduino, откройте его (на вашем компьютере должна быть установлена ​​Arduino IDE) и нажмите кнопку «Загрузить».

Если у вас его нет, вы можете использовать для этого свой Arduino. Подключите ваш Arduino (UNO / NANO) к ПК, перейдите в файл -> примеры -> ArduinoISP и загрузите его.Затем перейдите в Инструменты -> Программист -> Arduino как ISP. Подключитесь, как показано ниже (ИЗОБРАЖЕНИЕ), а затем загрузите скетч Arduino, откройте его и нажмите Sketch -> Upload using Programmer.

ВНИМАНИЕ! Если вы, как и я, используете ATMEGA8 вместо 168/328 и ваша версия Arduino выше 1.6.0, вам необходимо выполнить следующие инструкции:

Вот и все. Теперь вы можете наслаждаться своей паяльной станцией, созданной своими умелыми руками.

Калибровка

Я соврал, это не то.Теперь нам нужно его откалибровать. Так как нагреватели и термопары внутри могут отличаться, особенно если вы не используете оригинальный паяльник Hakko, нам необходимо его откалибровать.

Во-первых, вам понадобится цифровой мультиметр с термопарой для измерения температуры наконечника, хотя лучший способ сделать это - купить термометр для наконечника (на eBay есть несколько поддельных Hakko, которых должно хватить). После измерения температуры вам необходимо изменить значение по умолчанию «510» в этой строке в коде: map (Input, 0, 510, 25, 350) по следующей формуле:

, где TempRead - это температура, которая отображается на вашем цифровом термометре, а TempSet - это температура, которую вы установили на своей паяльной станции. Это всего лишь приблизительная настройка, но ее должно быть достаточно, вам не нужна особая точность для пайки.Я использовал градусы Цельсия, потому что они обычно используются в электронике, но вы можете изменить код по Фаренгейту, если хотите.

Корпус с 3D-печатью (необязательно)

Я разработал и напечатал сам корпус, потому что я могу сложить SMPS и печатную плату, чтобы он был красивым и аккуратным. К сожалению, чтобы вы могли использовать этот случай, вам нужно будет найти точный тип SMPS. Если он у вас есть, и вы хотите его построить или изменить в соответствии с вашими потребностями, вы можете загрузить файлы. Я напечатал свой с заполнением 20%, 0.Высота 3 слоя. Вы можете использовать большее заполнение и меньшую высоту слоя, если у вас есть время и терпение.

Заключение

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

Я предоставляю вам еще раз внимательно прочитать инструкции; Найдите свои детали и соберите вещь. Желаю пайки без пригорания!

Паяльная станция.zip

Попробуйте сами! Получите спецификацию.

Микроконтроллеры - Страница 2 - Candrian - Харис Андрианакис

Введение:
Автономная метеостанция с отслеживанием погоды в реальном времени. Он принимает (аналоговые / цифровые) измерения и отправляет их на веб-сервер через GPRS. Добавив батарею и солнечную станцию, вы можете сделать его полностью автономным. Он поддерживает до 3 аналоговых или цифровых входов. Основным "мозгом" является PIC 16F877A , который также управляет GSM-модулем SIM900 / 300 , который находится на задней стороне печатной платы.
Основная цель этого проекта - проводить измерения ветрового потока в различных точках и удаленно сохранять их в базе данных. Благодаря этому вы знаете, подходят ли места для будущей установки ветряных генераторов.

Данные отправляются с GSM на веб-сервер с помощью запросов GET, что не самый безопасный и лучший способ, но это простой способ заставить его работать. Пример кода, который вы можете найти на github, является очень простым примером и не несет ответственности за безопасность.

Модуль GSM:

Для связи GSM я использовал SIM900 / 300 , который является очень хорошим, простым в использовании и дешевым модулем GSM.Он предлагает связь UART и может управляться с помощью AT-команд . Он работает при напряжении 3,6 В и использует внешнюю антенну GSM. Модуль также включает в себя зарядное устройство, которое очень полезно, если внешний аккумулятор используется в сочетании с солнечной панелью или ветрогенератором для автономного использования. На конструкции также присутствует светодиодный индикатор LED1 , который показывает статус GSM (мигает). Модуль может быть включен / выключен кнопкой [ S3 ]. В качестве руководства по проектированию оборудования я использовал модель Sim300 Hardware Design.

Примечание 1. Я начал разрабатывать плату для SIM300 , производство которой окончательно прекратилось, и я заменил ее на SIM900 . Руководства по проектированию аппаратного обеспечения отличаются друг от друга, поэтому вы можете найти некоторые бесполезные компоненты, включенные в соединение между SIM-картой и SIM-модулем, которые были включены в руководство для SIM300 , но не в SIM900 . Следы этих двух модулей одинаковы.

Примечание 2. S3 , который я использовал для включения / выключения модуля, но может быть заменен транзистором, подключенным к PIC , для включения / выключения модуля от MCU.

Примечание 3. Модуль работает идеально, с тем единственным недостатком, что ему требуется напряжение питания> 4 В на В при выводе .

Основной "мозг" ПИК 16F877A:

Основным "мозгом" является PIC 16F877A , работающий на 16МГц. MCU поставляется с Vbat в качестве модуля GSM. RA0,1,2 используются для аналоговых входов (аналоговые измерения). Входные напряжения преобразуются в цифровое внутреннее значение ( ADC ) с Vref = 3.1V , который стабилизируется диодом 3.1Zener . Распиновка аналоговых входов также включает вывод Vbat и GND для питания возможного внешнего источника питания измерительного прибора. Q3 (BC547) используется для импульсной ( PWM ) подсветки ЖК-дисплея с целью снижения энергопотребления и регулировки яркости подсветки. S4 Переключатель используется для сброса микроконтроллера, а R1 используется в качестве подтягивающего резистора для поддержания высокого напряжения в рабочем режиме. D1 предназначен для того, чтобы остановить 12Volt , чтобы «зарядить» батарею и сжечь SIM900 ( Vbat ). R2 ограничивает ток программирования до MCLR . В этот дизайн также включен заголовок PIC-ICSP , который позволяет разработчику программировать картинку в системе без необходимости что-либо отключать.

Модель 16 × 2 Char LCD HD 44780:

A 16x2 LCD HD44780 используется для отображения некоторой информации о состоянии и делает устройство удобным для пользователя.На аноде светодиода имеется перемычка подсветки ( POWER-LCD ), ​​которая дает пользователю возможность выключить подсветку для потребления энергии. Там вы можете видеть, что эта сеть подключена к PIC INT ( LCD-INT ), ​​который используется для того, чтобы PIC узнал, когда LCD включен для запуска процедур инициализации ЖК-дисплея (ЖК-дисплей на нем при первом включении необходимо отправить некоторые команды для инициализации и подготовки к отображению данных, которые будут получены).Таким образом, вы можете снять ЖК-дисплей во время работы микроконтроллера, вставить его обратно, сбросить перемычку, и ЖК-дисплей снова начнет работать.

Еще фотографии:

Прототип макета:

Видео тестирования:

Вы можете скачать PCB design , Firmware , datasheets и data storage web site с github.

СКАЧАТЬ ЗДЕСЬ

Это было построено как проект лаборатории микропроцессоров для Технического института Пирея отдела Разработка электронных компьютерных систем .

Проект документации Linux


Информация о LDP
FAQ
Манифест / лицензия
История
Волонтеры / сотрудники
Должностные инструкции
Списки рассылки
IRC
Обратная связь

Автор / внесите свой вклад
Руководство для авторов LDP
Помогите / помогите
Ресурсы
Как отправить
- Репозиторий GIT
Загрузок
Контакты

Спонсор сайта LDP
Мастерская

LDP Wiki : LDP Wiki - это отправная точка для любой незавершенной работы
Члены | Авторы | Посетители
Документы

HOWTO : тематическая справка
последние обновления | основной индекс | просматривать по категориям
Руководства : более длинные, подробные книги
последние обновления / основной индекс
Часто задаваемые вопросы : Часто задаваемые вопросы
последние обновления / основной индекс
страницы руководства : справка по отдельным командам (20060810)
Linux Gazette : Интернет-журнал
Поиск / Ресурсы

Ссылки
Поиск OMF
Объявления / Разное


Обновления документов
Ссылка на HOWTO, которые были недавно обновлены.

Arduino FIO Внутренний вольтметр и термометр - semifluid.com

Как партнер Amazon я зарабатываю на соответствующих покупках.

Давайте расширим систему Ardunio Fio + Xbee с низким энергопотреблением, о которой я ранее писал. Я хотел посмотреть, смогу ли я создать простой беспроводной датчик температуры, который позволил бы вести журнал в течение длительного времени. Интересно, что ATmega328P на Arduino Fio имеет как «секретный» внутренний термометр, так и внутренний вольтметр, что означает, что я мог (потенциально) создать беспроводной датчик без внешних дополнительных внешних компонентов (кроме Fio, XBee и батареи).

Итак, воспользовавшись доступным оборудованием и имеющимся кодом, я приступил к созданию беспроводного регистратора температуры с использованием Arduino Fio (доступен на Amazon.com) и двух XBee (один для Fio и один для координатора).

У меня уже есть код для настройки регистратора с очень низким энергопотреблением, который использует преимущества режима сна Arduino Fio, а также режима гибернации XBee (см. Здесь). Итак, все, что мне нужно было сделать, это добавить код термометра и вольтметра, который задокументирован tinkerit.

Вот пример кода внутреннего термометра:

Я изменил функцию readTemp () так, чтобы она возвращала «читаемое человеком» значение с плавающей запятой в градусах Фаренгейта (мой местный метод измерения температуры). Кроме того, я добавил небольшой расчет, чтобы получить более точную температуру (откалиброванную по термометру в моем доме). Если вы хотите откалибровать внутренний термометр, поместите Arduino Fio в стакан с ледяной водой (я рекомендую положить его в пластиковый пакет и откачать как можно больше воздуха!), Измерьте возвращаемые значения, затем поместите его в чашку горячей воды известной температуры и измерьте возвращаемые значения.Было бы лучше, если бы было несколько измерений ряда температур, подтвержденных предварительно откалиброванным термометром (т. Е. Ртутным термометром). После проведения измерений вы можете подогнать к данным линейную модель (т. Е. Наиболее подходящую линию), чтобы получить наклон и точку пересечения по оси Y для вашего устройства.

Я также добавил их пример кода внутреннего вольтметра:

Единственная модификация заключалась в преобразовании десятичной дроби в число с плавающей запятой для (снова) удобочитаемого формата:

И последнее, но не менее важное: я обнаружил «мусорные данные», которые могут быть переданы, когда XBee выходит из спящего режима, поэтому я добавил байт синхронизации (DEC 170), который упрощает анализ данных.Вот пример вывода TeraTerm (я измерил температуру окружающей среды для измерений 1-10, затем положил большой палец на ATmega328P для измерений 11 и 12, а затем позволил Arduino вернуться в состояние окружающей среды для показаний 13-20):

[code gutter = ”false”]
ª 0 0 0
~
? ª 1 3.303 69.83
~
? ª 2 3.303 69.62
~
? ª 3 3.303 69.62
~
@ ª 4 3.303 69.41
~
? ª 5 3.303 69,41
~
? ª 6 3.303 69,83
~
? ª 7 3.303 69.41
~
? ª 8 3.303 68,78
~
? ª 9 3.303 69.20
~
# ª 10 3.303 69.20
~ 1100009
~
(12 3.303 72.77
~
# ª 13 3.303 72.14
~
> ª 14 3.303 72.35
~
15 3.303 70.88
~
> 16 3.303 70.25
~
> ª 17 3.303 69,62
~
> 18 3,303 69,41
~
> 19 3,303 69,41
~
> 20 3,303 68,36
[/ code]

Да, у меня плохое кровообращение в руках (отсюда скачок всего на 3 градуса). Я сохранил данные еще для 30 показаний, вырезал все данные мусора между возвратами каретки (исключая показания) и символами синхронизации (которые визуально отображаются как «ª» в TeraTerm), удалил начальные показания синхронизации и построил график данные о температуре в системе Mathematica (напряжение было постоянным в течение ~ 50 минут, пока я писал этот пост):

Отлично!

Вот весь код Arduino Fio SuperSleepyTempAndVolts:

Amazon и логотип Amazon являются товарными знаками Amazon.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *