Примеры работы для Arduino
Один датчик
Рассмотрим простой пример — подключения одного датчика.
Сенсор подключается к управляющей плате через один сигнальный пин.
При подключении к Arduino в компактном формфакторе, например Arduino Micro или Iskra Nano Pro, воспользуйтесь макетной платой и парочкой нажимных клеммников.
Между сигнальным проводом и питанием установите сопротивление 4,7 кОм.
При коммуникации сенсора со стандартными платами Arduino формата Rev3, Arduino Uno или Iskra Neo, используйте Troyka Slot Shield совместно с модулем подтяжки.
Код программы
Выведем температуру сенсора в Serial-порт.
- simple.ino
-
// библиотека для работы с протоколом 1-Wire #include <OneWire.h> // библиотека для работы с датчиком DS18B20 #include <DallasTemperature.h> // сигнальный провод датчика #define ONE_WIRE_BUS 5 // создаём объект для работы с библиотекой OneWire OneWire oneWire(ONE_WIRE_BUS); // создадим объект для работы с библиотекой DallasTemperature DallasTemperature sensor(&oneWire); void setup(){ // инициализируем работу Serial-порта Serial.begin(9600); // начинаем работу с датчиком sensor.begin(); // устанавливаем разрешение датчика от 9 до 12 бит sensor.setResolution(12); } void loop(){ // переменная для хранения температуры float temperature; // отправляем запрос на измерение температуры sensor.requestTemperatures(); // считываем данные из регистра датчика temperature = sensor.getTempCByIndex(); // выводим температуру в Serial-порт Serial.print("Temp C: "); Serial.println(temperature); // ждём одну секунду delay(1000); }
Серия датчиков
Каждый сенсор DS18B20 хранит в своей памяти уникальный номер, такое решение позволяет подключить несколько датчиков к одному пину.
Добавим к предыдущем схемам подключения ещё по паре датчиков в параллель.
Код программы
Просканируем все устройства на шине и выведем температуру каждого сенсора отдельно в Serial-порт.
- multipleSensors.ino
-
// библиотека для работы с протоколом 1-Wire #include <OneWire.h> // библиотека для работы с датчиком DS18B20 #include <DallasTemperature.h> // сигнальный провод датчика #define ONE_WIRE_BUS 5 // создаём объект для работы с библиотекой OneWire OneWire oneWire(ONE_WIRE_BUS); // создадим объект для работы с библиотекой DallasTemperature DallasTemperature sensors(&oneWire); // создаём указатель массив для хранения адресов датчиков DeviceAddress *sensorsUnique; // количество датчиков на шине int countSensors; // функция вывода адреса датчика void printAddress(DeviceAddress deviceAddress){ for (uint8_t i = ; i < 8; i++){ if (deviceAddressi < 16) Serial.print("0"); Serial.print(deviceAddressi, HEX); } } void setup(){ // инициализируем работу Serial-порта Serial.begin(9600); // ожидаем открытия Serial-порта while(!Serial); // начинаем работу с датчиком sensors.begin(); // выполняем поиск устройств на шине countSensors = sensors.getDeviceCount(); Serial.print("Found sensors: "); Serial.println(countSensors); // выделяем память в динамическом массиве под количество обнаруженных сенсоров sensorsUnique = new DeviceAddresscountSensors; // определяем в каком режиме питания подключены сенсоры if (sensors.isParasitePowerMode()) { Serial.println("Mode power is Parasite"); } else { Serial.println("Mode power is Normal"); } // делаем запрос на получение адресов датчиков for (int i = ; i < countSensors; i++) { sensors.getAddress(sensorsUniquei, i); } // выводим полученные адреса for (int i = ; i < countSensors; i++) { Serial.print("Device "); Serial.print(i); Serial.print(" Address: "); printAddress(sensorsUniquei); Serial.println(); } Serial.println(); // устанавливаем разрешение всех датчиков в 12 бит for (int i = ; i < countSensors; i++) { sensors.setResolution(sensorsUniquei, 12); } } void loop(){ // переменная для хранения температуры float temperature10; // отправляем запрос на измерение температуры всех сенсоров sensors.requestTemperatures(); // считываем данные из регистра каждого датчика по очереди for (int i = ; i < countSensors; i++) { temperaturei = sensors.getTempCByIndex(i); } // выводим температуру в Serial-порт по каждому датчику for (int i = ; i < countSensors; i++) { Serial.print("Device "); Serial.print(i); Serial.print(" Temp C: "); Serial.print(temperaturei); Serial.println(); } Serial.println(); // ждём одну секунду delay(1000); }
Подключение DS18B20 к Arduino
DS18B20 является цифровым датчиком. Цифровые датчики передают значение измеряемой температуры в виде определенного двоичного кода, который поступает на цифровые или аналоговые пины ардуино и затем декодируется. Коды могут быть самыми разными, ds18b20 работает по протоколу данных 1-Wire. Мы не будем вдаваться в подробности этого цифрового протокола, укажем лишь необходимый минимум для понимания принципов взаимодействия.
Обмен информацией в 1-Wire происходит благодаря следующим операциям:
- Инициализация – определение последовательности сигналов, с которых начинается измерение и другие операции. Ведущее устройство подает импульс сброса, после этого датчик должен подать импульс присутствия, сообщающий о готовности к выполнению операции.
- Запись данных – происходит передача байта данных в датчик.
- Чтение данных – происходит прием байта из датчика.
Для работы с датчиком нам понадобится программное обеспечение:
- Arduino IDE;
- Библиотека OneWire, если используется несколько датчиков на шине, можно использовать библиотеку DallasTemperature. Она будет работать поверх OneWire.
Из оборудования понадобятся:
- Один или несколько датчиков DS18B20;
- Микроконтроллер Ардуино;
- Коннекторы;
- Резистор на 4,7 кОм (в случае подключения одного датчика пойдет резистор номиналом от 4 до 10K);
- Монтажная плата;
- USB-кабель для подключения к компьютеру.
К плате Ардуино UNO датчик подключается просто: GND с термодатчика присоединяется к GND Ардуино, Vdd подключается к 5V, Data – к любому цифровому пину.
Простейшая схема подключения цифрового датчика DS18B20 представлена на рисунке.
В режиме паразитного питания контакт Vdd с датчика подключается к GND на Ардуино – в этом случае пригодятся только два провода. Работу в паразитном режиме лучше не использовать без необходимости, так как могут ухудшиться быстродействие и стабильность.
Принцип работы термореле
Модульное температурное реле предназначено для контроля температуры не агрессивной среды. Температурное реле осуществляет контроль и поддержание заданного температурного режима, может управлять оборудованием для нагрева или охлаждения температуры в шкафах, помещениях, управления в системах отопления и охлаждения в системах.
реле температуры на динрейке
Модульное устройство в основном устанавливается на DIN-рейку с присоединением проводов питания и коммутируемых электрических цепей оборудования для обеспечения заданных параметров.
На лицевой панели, как правило, находится цифровой индикатор температуры, либо жидко-кристалический дисплей в зависимости от модели, кнопка программирования, светодиодный индикатор, указывающий рабочее состояния устройства.
Температурное реле включает прибор охлаждения (вентилятор) или обогреватель.
Как работает термостат
Вместе с изменением температуры происходит изменение давления. Например, когда температура понижается, понижается и давление, рычаг под влиянием изменения размеров мембраны поворачивается, в определённый момент происходит размыкание электросети. Когда температурный режим будет повышаться, рычаг начнёт двигаться в обратную сторону, благодаря чему электрическая цепь снова сомкнётся.
Важную роль в этой структуре играет пружина, действующая на рычаг. Если для изменения положения рычага будет прилагаться меньше усилий, размыкание начнёт осуществляться при меньшей температуре. То же самое можно сказать об увеличении температуры. Именно регулировка требуемых усилий влияет на установку допустимого температурного режима. В некоторых моделях для этого используется ручка, часто же регулирование производится на заводе, потом в него нельзя вносить коррективы.
Советы профессионалов
Чтобы водный пол работал безупречно, а монтаж терморегулятора прошел идеально, стоит принять на заметку некоторые тонкости установки:
- наличие нормального сечения кабеля терморегулятора приветствуется;
- если в доме проводка старая, будет безопаснее смонтировать отдельную линию (при подключении котла, питающегося от электричества);
- регулятор, устанавливаемый на контроль за несколькими системами водяного пола, не совсем удобен, так как регулировка будет доступна только в той комнате, где он установлен;
- нельзя применять термодатчик в единственном числе, если эксплуатационные режимы в разных комнатах отличаются.
Самостоятельное подключение терморегулятора к системе водяного теплого пола не доставит больших хлопот. Достаточно выбрать прибор, отвечающий всем требованиям, внимательно просмотреть поэтапное проведение работ и наслаждаться теплом и комфортом собственного дома.
Библиотека OneWire для работы с DS18B20
DS18B20 использует для обмена информацией с ардуино протокол 1-Wire, для которого уже написана отличная библиотека. Можно и нужно использовать ее, чтобы не реализовывать все функции вручную. Скачать OneWire можно здесь. Для установки библиотеки скачайте архив, распакуйте в папку library вашего каталога Arduino. Подключается библиотека с помощью команды #include
Основные команды библиотеки OneWire:
- search(addressArray) – ищет температурный датчик, при нахождении в массив addressArray записывается его код, в ином случае – false.
- reset_search() – производится поиск на первом приборе.
- reset() – выполнение сброса шины перед тем, как связаться с устройством.
- select(addressArray) – выбирается устройство после операции сброса, записывается его ROM код.
- write(byte) – производится запись байта информации на устройство.
- write(byte, 1) – аналогично write(byte), но в режиме паразитного питания.
- read() – чтение байта информации с устройства.
- crc8(dataArray, length) – вычисление CRC кода. dataArray – выбранный массив, length – длина кода.
Важно правильно настроить режим питания в скетче. Для паразитного питания в строке 65 нужно записать ds.write(0x44, 1);
Для внешнего питания в строке 65 должно быть записано ds.write(0x44).
Write позволяет передать команду на термодатчик. Основные команды, подаваемые в виде битов:
- 0x44 – измерить температуру, записать полученное значение в SRAM.
- 0x4E – запись 3 байта в третий, четвертый и пятый байты SRAM.
- 0xBE – последовательное считывание 9 байт SRAM.
- 0х48 – копирование третьего и четвертого байтов SRAM в EEPROM.
- 0xB8 – копирование информации из EEPROM в третий и четвертый байты SRAM.
- 0xB4 – возвращает тип питания (0 – паразитное, 1 – внешнее).
Основные области применения
К областям наиболее широкого применения биметаллических реле относятся: электронагреватели, радиаторы, электро- и газовые котлы, электрические плиты и термосы, пылесосы, фены, калориферы, теплообменники, тепловые завесы, обогреватели сидений и т. д. Вместе с тем биметаллические термореле используются не только в зонах нагрева, но и в зонах хранения (до 20 °С, то есть в овощехранилищах, на птицефабриках, в теплицах, термокожухах камер видеонаблюдения) — то есть практически везде, где требуется дискретное регулирование температуры или аварийный контроль ее состояния. Например, в газовых котлах используются терморегуляторы (в качестве датчиков тяги и датчиков перегрева, настроенные соответственно на 80 и 95 °С), имеющие функцию аварийного отключения подачи тепла. В накопительных водонагревателях аккумуляционного типа используются терморегуляторы, настроенные на отключение при температуре 50 °С и включение при температуре 40 °С. Их назначение — поддержание температуры в требуемом диапазоне (термостатирование).
2 Принцип работы
Любые виды термореле с регулировкой температуры работают по одинаковому принципу. На температурные датчики поступают данные о состоянии окружающей среды, которые передаются на основной прибор.
Благодаря этому терморегулятор осуществляет включение и отключение электрического оборудования. Рекомендуется устанавливать датчики подальше от прямого влияния нагревающих приборов, чтобы не происходило искажение передачи данных.
Терморегуляторы по конструкции могут быть механическими или электронными, а по способу измерения температуры они разделяются на такие виды:
- с использованием датчиков воздуха;
- измерение температуры в районе пола;
- комбинированные.
Обзор модуля термостата W 1209
Размеры модуля следующие: 50x40x16 мм Качественная машинная пайка, плата внешне чистая. После пристального осмотра плата чуть чуть попросила спирта на протирку.
W1209 с тыльной стороны
Похоже в магазины идет один из вариантов модуля и не совсем удобный для встраивания. На плате размещены выступающие выше индикатора и кнопок элементы клемм, разъема и само реле. Причем реле только с одним контактом на замыкание. Кроме того продавец скромно обходит параметры коммутируемого напряжения и делает упор на ток. На реле указано напряжение коммутации 125 Вольт при токе 20А.
Параметры коммутации реле
Модуль позволяет поддерживать необходимую температуру в диапазоне от -50ºС +110ºС. Можете смело покупать модуль и как термометр для бани или котла. На плате модуля размещен светодиодный трехразрядный индикатор размером 22×10 мм. Это дает возможность отображать температуру десятых долей градуса. В диапазоне ниже -10ºС и выше 100ºС температура отображается только целыми числами. На плате установлен красный светодиод для сигнализации включения реле. Модуль настраивается при помощи трех кнопок: set, «+»,»-«. Кнопка set — выбирает режим настройки параметров. Кнопки «+» и «-» изменяют цифровые уставки и задаваемые параметры. Модуль можно настроить на один из режимов работы — охлаждение или нагрев.
В режиме «охлаждение» реле в модуле выключено, пока температура ниже заданного значения. При достижении заданной температуры реле включится и останется включенным до снижения температуры на величину заданного гистерезиса (а гистерезис настраивается!).
Горит светодиод включения реле
В режиме «нагрев» модуль работает в обратном порядке
Термодатчик сопротивлением 10 кОм подключен к модулю через разъем. Термодатчик герметичный, что очень удобно. Кабель термодатчика можно удлинить, что тоже хорошо. Настройка модуля по ниже изложенной инструкции проблем не вызовет.
3 Классификация оборудования
Существуют механические приборы, работа которых основана на принципе расширения жидкости. При нагревании теплоноситель в датчике расширяется и поступает по капиллярной трубке к регулятору. В нем она давит на мембрану, которая размыкает контакты в электрической цепи.
Терморегуляторы такой конструкции устанавливаются в тепловентиляторах и кондиционерах. Как противоположность биметаллической конструкции, применяются приборы с датчиками, наполненными газом, которые срабатывают быстрее металлических контактов.
Такие терморегуляторы используются в системах отопления, а раньше их устанавливали на старые марки автомобилей. На современных моделях машин устанавливают восковые термостаты. Представляет он собой закрытую камеру с пробкой из воска и металлическим стержнем.
Воск постепенно, по мере нагрева, расплавляется и выталкивает стержень, который замыкает цепь. По такому принципу работают аварийные терморегуляторы, оповещающие о закипании охлаждающей жидкости в двигателе.
Биметаллические термореле
В числе рассматриваемой продукции широкое распространение получили биметаллические термореле, производимые ЗАО «Ани-Электроника». Основные параметры данных изделий представлены в таблице.
Таблица. Основные параметры термореле ЗАО «Ани-Электроника»
Обозначение терморегуляторов «Ани-Электроника» определяется в соответствии со схемой, приведенной на рисунке.
Рисунок. Обозначение терморегуляторов «Ани-Электроника»: а — терморегуляторы; б — термоограничители
Пример обозначения терморегулятора ТК20 конструктивного исполнения 01, имеющего: вид контактов размыкающий — 1, температура срабатывания — 120 °С, погрешность срабатывания ±6%, температура возврата — 100 °С: ТК20-01-1-120 °С ±6% –100 °С.
Пример обозначения термоограничителя ТК30 конструктивного исполнения 02 со следующими характеристиками: вид контактов размыкающий — 1, температура срабатывания — 100 °С, погрешность срабатывания — ±3%: ТК30-02-1-100 °С ±3%.
Конкретные значения температуры срабатывания и возврата, значения требуемой погрешности, конструктивное исполнение, а также тип контактов могут быть скорректированы в пределах указанных температурных диапазонов по требованию заказчика.
Если потребитель не знает, какой тип термореле ему требуется, целесообразно определиться по следующим вопросам и представить ответы на них их поставщику:
- требуется ли термореле с самовозвратом (кнопочное);
- необходимо ли термореле с возможностью для потребителя регулирования температуры срабатывания;
- вид напряжения коммутации и его максимальное, номинальное, минимальное значение;
- максимальное, номинальное, минимальное значение коммутируемого тока;
- переходное сопротивление (мОм);
- тип контакта (размыкающий или замыкающий);
- температура срабатывания;
- температура возврата;
- относительная погрешность;
- конструктивное исполнение (с крепежным хомутом; с лепестками; с лепестками, согнутыми под углом 90°; без лепестков с проводами; длина и тип провода; с резьбовым хвостом; размер резьбы);
- степень защиты оболочки;
- окружающая среда, климатические воздействия, механические воздействия.
Все изделия из таблицы, кроме ТКР-1, 2, 3 и 4, не позволяют осуществлять регулировку температур срабатывания потребителем.
Изделия типов ТКР-1, 2, 3 и 4, ТК-100 и ТК-40 предназначены для работы в нормально загрязненной среде. Остальные — для работы в сильно загрязненной среде.
Вид климатического исполнения всех приборов — УХЛ4.
Повышение заданной температуры, чтобы быстрее отопить помещение
Если вы только что вошли в холодный дом в морозный зимний день, может показаться разумным включить термостат на большую температуру. Но это не поможет вам быстрее почувствовать тепло и уют. Причина этого проста: термостат не контролирует, насколько быстро нагревается ваш дом, все, что он делает, это устанавливает конечную температуру для вашего уровня комфорта. Лучше всего думать о базовом термостате, как об ограничителе температуры. Это позволяет полностью включить нагрев, пока не будет достигнута заданная температура, после чего термостат выключит нагрев, пока температура снова не упадет. Таким образом, если вы повернете термостат выше уровня комфорта, система перегреет пространство, что сделает ваш дом слишком теплым и будет тратить значительную энергию.
Скетч для DS18B20
Алгоритм получения информации о температуре в скетче состоит из следующих этапов:
- Определение адреса датчика, проверка его подключения.
- На датчик подается команда с требованием прочитать температуру и выложить измеренное значение в регистр. Процедура происходит дольше остальных, на нее необходимо примерно 750 мс.
- Подается команда на чтение информации из регистра и отправка полученного значения в «монитор порта»,
- Если требуется, то производится конвертация в градусы Цельсия/Фаренгейта.
Пример простого скетча для DS18B20
Самый простой скетч для работы с цифровым датчиком выглядит следующим образом. (в скетче мы используем библиотеку OneWire, о которой поговорим подробнее чуть позже).
#include /* * Описание взаимодействия с цифровым датчиком ds18b20 * Подключение ds18b20 к ардуино через пин 8 */ OneWire ds(8); // Создаем объект OneWire для шины 1-Wire, с помощью которого будет осуществляться работа с датчиком void setup(){ Serial.begin(9600); } void loop(){ // Определяем температуру от датчика DS18b20 byte data; // Место для значения температуры ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем — датчик его положит во внутреннюю память delay(1000); // Микросхема измеряет температуру, а мы ждем. ds.reset(); // Теперь готовимся получить значение измеренной температуры ds.write(0xCC); ds.write(0xBE); // Просим передать нам значение регистров со значением температуры // Получаем и считываем ответ data = ds.read(); // Читаем младший байт значения температуры data = ds.read(); // А теперь старший // Формируем итоговое значение: // — сперва «склеиваем» значение, // — затем умножаем его на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию — это 0,0625) float temperature = ((data <<
Скетч для работы с датчиком ds18b20 без delay
Можно немного усложнить программу для ds18b20, чтобы избавиться от функции delay(), тормозящей выполнение скетча.
#include OneWire ds(8); // Объект OneWire int temperature = 0; // Глобальная переменная для хранения значение температуры с датчика DS18B20 long lastUpdateTime = 0; // Переменная для хранения времени последнего считывания с датчика const int TEMP_UPDATE_TIME = 1000; // Определяем периодичность проверок void setup(){ Serial.begin(9600); } void loop(){ detectTemperature(); // Определяем температуру от датчика DS18b20 Serial.println(temperature); // Выводим полученное значение температуры // Т.к. переменная temperature имеет тип int, дробная часть будет просто отбрасываться } int detectTemperature(){ byte data; ds.reset(); ds.write(0xCC); ds.write(0x44); if (millis() — lastUpdateTime > TEMP_UPDATE_TIME) { lastUpdateTime = millis(); ds.reset(); ds.write(0xCC); ds.write(0xBE); data = ds.read(); data = ds.read(); // Формируем значение temperature = (data <<
Библиотека DallasTemperature и DS18b20
В своих скетчах мы можем использовать библиотеку DallasTemperature, упрощающую некоторые аспекты работы с датчиком ds18b20 по 1-Wire. Пример скетча:
#include // Номер пина Arduino с подключенным датчиком #define PIN_DS18B20 8 // Создаем объект OneWire OneWire oneWire(PIN_DS18B20); // Создаем объект DallasTemperature для работы с сенсорами, передавая ему ссылку на объект для работы с 1-Wire. DallasTemperature dallasSensors(&oneWire); // Специальный объект для хранения адреса устройства DeviceAddress sensorAddress; void loop(void){ // Запрос на измерения датчиком температуры Serial.print(«Измеряем температуру…»); dallasSensors.requestTemperatures(); // Просим ds18b20 собрать данные Serial.println(«Выполнено»); // Запрос на получение сохраненного значения температуры printTemperature(sensorAddress); // Задержка для того, чтобы можно было что-то разобрать на экране delay(1000); } // Вспомогательная функция печати значения температуры для устрйоства void printTemperature(DeviceAddress deviceAddress){ float tempC = dallasSensors.getTempC(deviceAddress); Serial.print(«Temp C: «); Serial.println(tempC); } // Вспомогательная функция для отображения адреса датчика ds18b20 void printAddress(DeviceAddress deviceAddress){ for (uint8_t i = 0; i < 8; i++) { if (deviceAddress< 16) Serial.print(«0»); Serial.print(deviceAddress, HEX); } }
Принцип действия
Реле температуры функционирует по довольно простой схеме. Котлы, оборудованные данным конструктивным элементом, также оснащаются термодатчиком. Он собирает информацию относительно температуры теплоносителя, циркулирующего в системе. При этом комнатные датчики регистрируют климатические показатели в самом помещении. Собранная информация поступает на блок управления.
Принцип работы простейшего термореле заключается в том, что встроенный в устройство регулятор сверяет полученные данные с заданными пользователем настройками. В последующем он повышает мощность прибора или, наоборот, уменьшает ее.
Термопары
Термопара — это термопреобразовательный элемент, представляющий собой «спай» разнородных металлов.
В схеме с двумя такими спаями при разности температур между ними в цепи появится термо-ЭДС, величина которой будет зависеть от природы металлов и разности температур между спаями. Впервые термоэлектрический эффект обнаружили ещё в первой половине девятнадцатого века.
Применение для термопар самое различное — в промышленности, в медицине, для научно-исследовательских целей. Термопары могут измерять довольно высокие температуры, например температуру жидкой стали (около 1800 0С).
Материал для изготовления термопар — медь,хромель,алюмель, платина, и полупроводниковые материалы.
Используется и обратный эффект — при пропускании электрического тока в цепи, появляется разность температур между двумя спаями, в середине прошлого века выпускали холодильники, рабочим элементом была термопара на основе полупроводников. Но из-за более низкого к.п.д., по сравнению с компрессорными холодильниками, их перестали выпускать.
Выводы и полезное видео по теме
Виды терморегуляторов и их сравнение:
Выбрав оптимальную модель терморегулятора и правильно установив его в розетку, можно сделать свою жизнь значительно комфортней.
Теперь, чтобы поддерживать в доме/офисе нужный температурный режим, не придется постоянно уделять внимание обогревателю, включая и выключая его. Термостат сам будет контролировать этот процесс, учитывая установленные пользователем настройки, что поможет экономно расходовать электроэнергию
Подыскиваете практичный и удобный терморегулятор на розетку? Или есть опыт использования таких девайсов? Оставляйте, пожалуйста, комментарии к статье и делитесь впечатлениями об использовании термостатов для обогревателей.