Външен термометър Arduino с дисплей. Термометър Arduino с температурен сензор LM35. Изработка на корпус за сензора

В този урок ще използваме температурен сензор DS18B20 с Arduino UNOза създаване на термометър. Сензорът DS18B20 е добър варианткогато в проект с висока прецизностнеобходима е добра реакция. Ще ви покажем как да свържете DS18B20 към вашия и да изведете данните за температурата на 16x2 LCD.

Сензорът DS18B20 комуникира с Arduino чрез 1-проводна шина. По дефиниция е необходима само една линия за данни (и заземяване) за комуникация с Arduino.

Всеки DS18B20 има уникален 64-битов сериен код или адрес, който позволява на няколко DS18B20 да работят на една и съща еднопроводна шина. Следователно използването на микропроцесор улеснява управлението на множество DS18B20, разпределени върху голяма площ. Приложенията за тази функция включват контрол на околната среда, системи за контрол на температурата в сгради и механично оборудване.

Характеристики на DS18B20

  • Необходим е само един едножилен интерфейс за комуникация между микроконтролера и сензора.
  • Необходим е само един външен компонент: 4.7K резистор.
  • Може да се захранва директно от линията за данни, изисквайки напрежение от 3,0 до 5,5 V.
  • Всяко устройство има уникален 64-битов сериен код, съхранен във вградения ROM.
  • Може да измерва температури от -55 ° C до + 125 ° C (-67 ° F до + 257 ° F).
  • Точност ± 0,5 ° C от -10 ° C до + 85 ° C.

Този проект използва DS18B20, който се предлага под формата на температурна сонда, която е водоустойчива. Използването на водоустойчив сензор разширява възможностите – температурният сензор може да измерва температурата на течности като вода, химикали, чай и кафе.

Изисквания към компонентите

Изискванията за оборудване за вашия термометър са доста стандартни, ще ни трябва:

  • LCD дисплей 16х2
  • DS18B20 температурен сензор
  • Джъмперни проводници
  • 1K резистор
  • Дъска за хляб

Схема на свързване

Направете връзки според диаграмата по-долу.

Свързваме сензора и Arduino

  • VCC -> Arduino 5V, плюс 4.7K резистор, преминаващ от VCC към данни
  • Данни -> Пин 7 Arduino
  • GND -> GND Arduino

Връзки за LCD и Arduino UNO

  • Пин 1 -> GND
  • Пин 2 -> VCC
  • Пин 3 -> Ардуино Пин 3
  • Пин 4 -> Ардуино Пин 33
  • Пин 5 -> GND
  • Пин 6 -> Ардуино Пин 31
  • Пин 7-10 -> GND
  • Пин 11 -> Пин 22 на Arduino
  • Пин 12 -> Пин 24 на Arduino
  • Пин 13 -> Пин 26 на Arduino
  • Пин 14 -> Пин 28 на Arduino
  • Пин 15 -> VCC през резистор 220 ома
  • Пин 16 -> GND

Свържете потенциометър, както е показано по-горе, към щифт 3 на LCD дисплея, за да контролирате контраста.

Този проект работи при температури до 125 ° C. Ако има някакъв дисонанс в показаната температура, проверете отново връзките с резистора, свързан към DS18B20. След като свържете всичко описано по-горе, можем да преминем към програмиране.

Изходен код за термометъра

Преди зареждане програмен кодтрябва да настроите двете библиотеки, необходими за изпълнение на този код в средата на Arduino.

  • Първата библиотека се нарича OneWire ().
  • Втората библиотека се нарича DallasTemperature ().

След като изтеглите и двете библиотеки, преместете файловете в папката Ардуино библиотекипо подразбиране. След това копирайте кода и го качете след двойна проверка дали сензорът ви е свързан правилно.

// Кодът започва #include #включи #включи #define ONE_WIRE_BUS 7 OneWire oneWire (ONE_WIRE_BUS); Далас температурни сензори (& oneWire); float tempC = 0; float tempF = 0; LiquidCrystal lcd (12,11,5,4,3,2); void setup () (sensors.begin (); lcd.begin (16,2); lcd.clear (); pinMode (3, OUTPUT); analogWrite (3, 0); Serial.begin (9600);) void loop () (sensors.requestTemperatures (); tempC = sensors.getTempCByIndex (0); tempF = сензори.toFahrenheit (tempC); забавяне (1000); Serial.println (tempC); lcd.setCursor (0,0); lcd. print ("C:"); lcd.print (tempC); lcd.print ("градуси"); lcd.setCursor (0,1); lcd.print ("F:"); lcd.print (tempF); lcd.print ("градуси");)

Изглежда така:

С този сензор успяхме да измерим температури до 100°C! Той е много отзивчив.

След като създадете проект, тествайте устройството, като потопите сензора в топла и студена вода.

Сега ще научите как да превърнете обикновен (аналогов) волтметър в цифров термометър с помощта на платформата Arduino и температурен сензор ds18b20. По принцип тази технология е подходяща не само за показване на температура - могат да се показват всякакви други (физически и електрически) количества от различни сензори цифровона указателно устройство съгласно този метод.

DS18B20 модул

Добре познатият готов модул ds18b20 е цифров термометър, който осигурява 9-битово измерване на температурата и има енергонезависима програмируема функция за горна и долна работна точка. В допълнение, ds18b20 комуникира през 1-Wire шина и изисква само една линия за данни, за да комуникира с микропроцесора. В допълнение, ds18b20 може да се захранва директно от линията за данни, елиминирайки необходимостта от външен източникхранене.

pinout ds18b20

Всъщност всеки ds18b20 има уникален 64-битов сериен код, който позволява дори няколко DS18B20 да функционират на една и съща 1-Wire шина. По този начин, използвайки само един микропроцесор, е възможно да се наблюдават много температурни сензори, разпределени върху голяма площ.

Схема за монтаж на термометър


Свързващи елементи към платката

Самата схема е толкова проста, че няма смисъл да я рисувате - всички връзки се виждат на снимката. Първо, свържете ds18b20 към щифт (-) за Arduino земята, щифт (+) за 5V и изход на сигнал към цифров пин 2. За да управлявате волтметъра, свържете положителния му проводник към пин 9 (един от PWM) и свържете минус към GND. След това, за да промените скалата на волтметъра на термометър, просто отпечатайте снимката, която е приложена към артикула. Тук волтметърът е 5 V, но можете да вземете всеки друг индикатор, включително обикновен микроамперметър, като добавите необходимия резистор последователно към него (около 10-100 kOhm).


Термометър с стрелка и волтметър

Списък на необходимите части

  • Arduino Uno
  • Сензор DS18b20
  • Показателен волтметър
  • Множество проводници
  • Захранване (може и батерия)

Части на термометъра

Принцип на действие

Широтинно-импулсната модулация или PWM е техника за получаване на аналогови резултати с помощта дигитална медия.


Управление на превключвателя за модулация на импулсната ширина

Когато мигате микроконтролера, трябва да добавите “DallasTemperature library” към вашата среда за разработка на Arduino, тъй като това е библиотеката, която поддържа температурния сензор ds18b20.

Кодът има три основни части:

  1. Отчитане на температурата от сензора
  2. Преобразуване на температурата в PWM
  3. Показване на стойността на скалата

Настройка на термометъра

В настройките ще отчитаме температурата от сензора. След това преобразуваме тази стойност в PWM функция в диапазона от 0 до 255. Това може да се направи вътре в програмна функция. След това нека приложим сигнал към щифт 9, който е свързан към волтметър за набиране.

При настройка температурен диапазонимайте предвид - колкото по-малка е разликата между екстремните стойности, толкова по-голяма е разделителната способност на термометъра. Можете да изтеглите листа с данни за сензора и кода на фърмуера.

Видео за работата на устройството

Температурният сензор в Arduino е един от най-често срещаните видове сензори. За разработчиците на проекти за термометър Arduino има много различни опции, различаващи се по принцип на действие, точност, дизайн. Цифровият сензор DS18B20 е един от най-популярните температурни сензори, често използвани в водоустойчив калъфза измерване на температурата на водата или други течности. В тази статия ще намерите описание на сензора ds18b20 на руски език, заедно ще разгледаме характеристиките на свързване към arduino, принципа на работа на сензора, описание на библиотеки и скици.

DS18B20 е цифров температурен сензор с множество полезни функции... Всъщност DS18B20 е цял микроконтролер, който може да съхранява измерваната стойност, да сигнализира, когато температурата надхвърли зададените граници (можем да задаваме и променяме самите граници), да променя точността на измерване, начина на взаимодействие с контролера и много повече. Всичко това в много малък калъф, който се предлага и във водоустойчив дизайн.

Температурният сензор DS18B20 има различни типове корпуси. Има три възможности за избор - 8-Pin SO (150 mils), 8-Pin µSOP и 3-Pin TO-92. Последният е най-разпространеният и е направен в специален водоустойчив калъф, за да може безопасно да се използва под вода. Всеки сензор има 3 щифта. За пакет TO-92 погледнете цвета на проводниците: черен за заземяване, червен за захранване и бял / жълт / син за сигнал. Можете да закупите готов модул DS18B20 в онлайн магазините.

Къде да купя сензор

Естествено, DS18B20 е най-евтиният за закупуване на Aliexpress, въпреки че се продава и във всеки специализиран руски онлайн магазин с arduino. Ето няколко връзки за пример:

Сензорната памет се състои от два вида: оперативна и енергонезависима - SRAM и EEPROM. Последният съхранява конфигурационните регистри и регистрите TH, TL, които могат да се използват като регистри с общо предназначениеако не се използва за определяне на диапазон допустими стойноститемпература.

Основната задача на DS18B20 е да определи температурата и да преобразува резултата в цифров изглед... Можем самостоятелно да попитаме необходимо разрешениечрез задаване на броя на прецизните битове - 9, 10, 11 и 12. В тези случаи разделителната способност ще бъде съответно 0.5C, 0.25C, 0.125C и 0.0625C.

Получените температурни измервания се съхраняват в SRAM на сензора. 1 и 2 байта съхраняват получената температурна стойност, 3 и 4 съхраняват границите на измерване, 5 и 6 са запазени, 7 и 8 се използват за високоточно определяне на температурата, последните 9 байта съхраняват устойчивия на смущения CRC код.

Свързване на DS18B20 към Arduino

DS18B20 е цифров сензор... Цифровите сензори предават стойността на измерената температура под формата на определена двоичен кодкойто се подава към цифровите или аналоговите щифтове на arduino и след това се декодира. Кодовете могат да бъдат много различни, ds18b20 работи с 1-Wire протокол за данни. Няма да навлизаме в подробности за този цифров протокол, само ще посочим необходимия минимумда разбере принципите на взаимодействие.

Обменът на информация в 1-Wire се осъществява поради следните операции:

  • Инициализация - определяне на последователността от сигнали, от които започват измерването и други операции. Главният изпраща импулс за нулиране, след което сензорът трябва да даде импулс за присъствие, показващ, че е готов за извършване на операция.
  • Запис на данни - байтът от данни се прехвърля към сензора.
  • Четене на данни - от сензора се получава байт.

За да работим със сензора, имаме нужда от софтуер:

  • Arduino IDE;
  • Библиотека OneWire, ако се използват множество сензори на шината, може да се използва библиотеката DallasTemperature. Той ще работи върху OneWire.

Оборудване, от което се нуждаете:

  • Един или повече сензори DS18B20;
  • Микроконтролер Arduino;
  • Конектори;
  • 4,7 kOhm резистор (в случай на свързване на един сензор, ще отиде резистор с номинална стойност от 4 до 10K);
  • Платка;
  • USB кабел за свързване към компютър.

Сензорът е просто свързан към платката Arduino UNO: GND от температурния сензор е свързан към GND на Arduino, Vdd е свързан към 5V, Данните са свързани към всеки цифров щифт.

Най-простата диаграма за свързване на цифров сензор DS18B20 е показана на фигурата.

Алгоритъмът за получаване на информация за температурата в скицата се състои от следните стъпки:

  • Определяне на адреса на сензора, проверка на връзката му.
  • Към сензора се изпраща команда с изискване за отчитане на температурата и записване на измерената стойност в регистъра. Процедурата отнема повече време от останалите, отнема около 750 ms.
  • Издава се команда за четене на информация от регистъра и изпращане на получената стойност към "монитора на порта",
  • Ако е необходимо, се преобразува в Целзий / Фаренхайт.

Пример за проста скица за DS18B20

Най-простата скица за работа с цифров сензор изглежда така. (в скицата използваме библиотеката OneWire, за която ще говорим по-подробно малко по-късно).

#включи / * * Описание на взаимодействието с цифров сензор ds18b20 * Свързване на ds18b20 към arduino чрез пин 8 * / OneWire ds (8); // Създайте обект OneWire за шината 1-Wire, който ще се използва за работа с настройка на void на сензора () (Serial.begin (9600);) void loop () (// Определете температурата от байта на сензора DS18b20 data; // Местоположение за стойността на температурата ds.reset (); // Стартирайте взаимодействието, като нулирате всички предишни команди и параметри ds.write (0xCC); // Инструктираме сензора DS18b20 да пропусне търсенето по адрес. В нашия случай , само едно устройство ds.write (0x44) ; // Даваме на сензора DS18b20 команда за измерване на температурата. Самата температурна стойност все още не е получена - сензорът ще я постави вътрешна паметзабавяне (1000); // Микросхемата измерва температурата и чакаме. ds.reset (); // Сега се подготвяме да получим стойността на измерената температура ds.write (0xCC); ds.write (0xBE); // Моля, предайте ни стойността на регистрите със стойността на температурата // Вземете и прочетете данните за отговор = ds.read (); // Прочетете долния байт на данните за стойността на температурата = ds.read (); // И сега старшата // Формирайте крайната стойност: // - първо "залепваме" стойността, // - след това я умножаваме по коефициента, съответстващ на разделителната способност (за 12 бита по подразбиране е 0,0625) float температура = ((данни<< 8) | data) * 0.0625; // Выводим полученное значение температуры в монитор порта Serial.println(temperature); }

Скица за работа със сензор ds18b20 без забавяне

Възможно е да усложните малко програмата за ds18b20, за да се отървете от забавянето на изпълнението на скицата.

#включи OneWire ds (8); // OneWire обект int температура = 0; // Глобална променлива за съхранение на стойността на температурата от сензора DS18B20 long lastUpdateTime = 0; // Променлива за запаметяване на времето на последното отчитане от сензора const int TEMP_UPDATE_TIME = 1000; // Определете честотата на проверките void setup () (Serial.begin (9600);) void loop () (detectTemperature (); // Определете температурата от сензора DS18b20 Serial.println (температура); // Отпечатайте получения стойност на температурата // Т тъй като променливата температура е от тип int, дробната част просто ще бъде изхвърлена) int detectTemperature () (байт данни; 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 (); // Формиране на стойността температура = (данни<< 8) + data; temperature = temperature >> 4; } }

DallasTemperature и библиотека DS18b20

В нашите скици можем да използваме библиотеката DallasTemperature, която опростява някои аспекти на работата със сензор ds18b20 чрез 1-Wire. Примерна скица:

#включи // 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); // Закъснение, за да можете да анализирате нещо на екрана забавяне (1000);) // Спомагателна функция за отпечатване на стойността на температурата за устройството void printTemperature (DeviceAddress deviceAddress ) (float tempC = dallasSensors.getTempC (deviceAddress); Serial.print ("Temp C:"); Serial.println (tempC);) // Помощна функция за показване на адреса на сензора ds18b20 void printAddress (DeviceAddress deviceAddress) (за ( uint8_t i = 0; i< 8; i++) { if (deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } }

Библиотека OneWire за DS18B20

DS18B20 използва протокола 1-Wire за комуникация с arduino, за който вече е написана отлична библиотека. Можете и трябва да го използвате, за да не изпълнявате всички функции ръчно. ... За да инсталирате библиотеката, изтеглете архива, разопаковайте го в папката на библиотеката на вашата директория на Arduino. Библиотеката се свързва с помощта на командата #include

Всички сензори DS18B20 са свързани паралелно, всички те се нуждаят от един резистор. С помощта на библиотеката OneWire всички данни от всички сензори могат да се четат едновременно. Ако броят на свързаните сензори е повече от 10, трябва да изберете резистор със съпротивление не повече от 1,6 kOhm. Също така, за по-точно измерване на температурата, трябва да поставите допълнителен резистор от 100 ... 120 Ohm между изходните данни на платката Arduino и данните на всеки сензор. Можете да разберете от кой сензор е получена определена стойност, като използвате уникален 64-битов сериен код, който ще бъде издаден в резултат на изпълнението на програмата.

За да свържете температурните сензори в нормален режим, използвайте схемата, показана на фигурата.

заключения

Чипът Dallas DS18B20 е много интересно устройство... Създадените на негова основа температурни сензори и термометри имат характеристики, приемливи за повечето задачи, развита функционалност и са сравнително евтини. Сензорът DS18B20 е особено популярен като водоустойчиво устройство за измерване на температурата на течности.

Пер допълнителни функциитрябва да плати относителна сложностработа със сензора. За да свържете DS18B20, определено ще ни трябва резистор със стойност около 5K. За да работите със сензора в arduino скици, трябва да инсталирате допълнителна библиотекаи да придобиете определени умения за работа с него - там не всичко е съвсем тривиално. Можете обаче да закупите готов модул, но в повечето случаи ще бъде достатъчен за скица прости примерипредоставени в тази статия.

При създаване на различни технически проектичесто има нужда от оборудване на температурни индикатори. Тези компоненти ви позволяват да наблюдавате по-добре работата на устройствата. В този преглед ще научим как да преобразуваме аналогов волтметър в точен термометър. За да работим, имаме нужда от платка Arduino ( специална схемаоборудван със собствена памет, процесор, както и няколко десетки функционални контакта) и температурен сензор модел DS18B20.

Характеристики на температурния модул DS18B20

Невъзможно е да не споменем още едно предимство на модулите DS18B20. Всеки сензор от този типизползва уникален сериен 64-битов код за работа. Това означава, че всички такива компоненти могат да работят на една 1-Wire шина, през която, както беше отбелязано по-горе, се предава цялата информация. По този начин за управление на няколко модула е необходим само един микропроцесор, а самите температурни сензори могат да бъдат разпръснати върху твърда площ.

Подробности за работа върху термометър с DS18B20 на базата на Arduino

За да сглобите висококачествен аналогов термометър, трябва да подготвите:

  • Окабеляване тип Arduino (за предпочитане ново);
  • температурен сензор модел DS18B20;
  • аналогов волтметър;
  • 5 шнура - необходими са две въжета, за да се създаде верига между тях Arduino платкаи волтметър, 3 проводника са необходими за свързване на температурния сензор към електрическата верига;
  • външна батерия.

Създаване на електрическа верига за базиран на Arduino термометър DS18B20

Тук алгоритъмът на работа е доста прост, така че дори начинаещ може да свърже всички компоненти в една верига. Първо, трябва да намерите отрицателен контакт на модула DS18B20 (ако погледнете сензора отгоре, този контактще бъде отляво). Отрицателният щифт трябва да бъде свързан към долната точка на земята в Arduino платка(ще бъде съкратено като GND). Положително зареденият щифт (вдясно) трябва да бъде свързан към захранващия щифт 5 V (също разположен в долната част на платката). След това се прави сигнален изход към цифров контакт 2 (разположен в горната част на платката), за да може да се измери температурата (в този случай се използва централният щифт на сензора).

За да осигурите контрол на волтметъра по време на работа, трябва да свържете положителния му контакт цифров изходпод номер 9. Отрицателният извод на волтметъра е свързан към горната точка на земята на платката (означава се и с абревиатурата GND). За да промените цифровата скала на волтметъра, просто трябва да отпечатате предварително подготвена картина с градуси по Целзий. Тази картина или е залепена върху старата скала, или се вмъква вместо нея.

Описание на импулсната ширина модулация

Накратко, широчинната импулсна модулация е метод за получаване на аналогови резултати (като температура) с помощта на цифрови средства. Добре е, че дори много високи или много ниски стойности се предават по комуникационни канали с един импулс. Целият процес широчинно импулсна модулациястава така: сензорът изпраща сигнален импулс към процесора, а самият процесор вече го обработва, след което дава стойността на термометъра. За да можете да получавате информация по този начин, трябва да използвате специалните щифтове на платката Arduino. Много лесно е да разпознаете тези контакти - до тях има такава икона "~". Между другото, тази иконаприсъства и близо до контактния номер 9, с който свързваме положителния щифт на волтметъра. Пин 9 е използван само като пример; ако желаете, можете да използвате всеки друг контакт, който има "~" до него.

Писане на кода за работа на термометъра с DS18B20 на базата на Arduino

На първо място към програмата за разработка трябва да се добави библиотека, наречена DallasTemperature. Струва си да му се даде предпочитание, тъй като съдържа най-високите температурни стойности (и това е важно при използване на модула DS18B20).

Когато създавате кода, ще трябва да регистрирате три основни команди:

  1. Отчитане на температурни стойности от сензора.
  2. Преобразуване на температурата чрез модулация на ширината на импулса.
  3. Извеждане на стойности към термометър.
Въз основа на това в самото начало се конфигурира отчитането на температурата от сензора. След това се настройва процесът на широчинно-импулсна модулация. Ако посочената библиотека е налична, потребителят ще може да получава стойности в диапазона от 0 до 255. Широтинно-импулсната модулация е конфигурирана в програмата за разработка (за това има елемент от менюто, наречен "карта" там ). Кодът задава минималните и Максимална температуракоито термометърът ще вземе предвид. Да предоставя софтуерна комуникациямежду волтметъра и платката Arduino, трябва да регистрирате 9-ия цифров щифт в определена част от кода (по-горе беше посочено, че самият волтметър е свързан към него).

Трябва да се има предвид, че минималните и максимален прагтемпературата може да бъде много различна (тук всичко зависи от предпочитанията на потребителя). Едно нещо, което трябва да запомните обаче, е, че колкото по-голяма е разликата между долната и горната граница, толкова по-малки ще бъдат числата в скалата.

Ето как изглежда целият код, необходим за настройка на термометъра.

Изглежда, какво може да бъде интересно и ново в измерването на температурата с помощта на Arduino? Написани са стотици статии, с размер десетки мегабайта, може би малко по-малко, а може би малко повече скици... И ето моята статия. За какво? Честно казано, аз също мислех, че този въпрос е „дъвчен нагоре-надолу“, докато самият аз не се сблъсках с измерването на температурата. И тогава стана. Нещо не работи, нещо не работи, има много въпроси, на които трябва да се „издраскат“ отговорите, като се прекъсне половината интернет, а не само рускоезичният. Тази статия, за разлика от предишните ми статии за този ресурсмного по-практично, но нека започнем отначало. Защо всъщност да измервате температурата с нещо ново, когато се продават термометри - за всеки вкус и портфейл? И фактът е, че температурата често трябва не само да бъде измерена, но и след това, въз основа на получените данни, да направите нещо или просто да регистрирате, за да проследите промените. Свързване, използване , термичен сензор с релеен блок, ще получим най-простия термостат и ако този термостат може да следи температурата в няколко точки (зони) и да действа според определен алгоритъм, ще получим доста сериозно устройство, индустриалният аналог на което е сравнимо с цената на добър лаптоп. Целта на тази статия обаче не е да създава сложни устройства. Целта е друга - да се предложи на начинаещия просто, доказано в полето решение за измерване на температурата. Също така, както и предишните статии, тази ще се състои от части. Всеки от тях ще разгледа своя собствен въпрос. Частите ще вървят във възходящ ред на трудност.

Част първа. Най-простият, но и полезен

И така, от думи към дела! За изпълнение на този проектна първия етап се нуждаем от цифров термичен сензор DS18B20, ARDUINO UNO, резистор 4,7 kΩ (мощността всъщност няма значение, от 0,125 до 2 W е напълно подходяща, но точността има значение, колкото по-точно, толкова по-добре), а парче 3-жилен проводник (и отделно окабеляване на етапа на експеримента също ще работи), както и няколко щифта за платката. Въпреки че е възможно и без тях, ако внимателно, разбира се. Изборът на този сензор не е случаен. Факт е, че той може да наблюдава температурата в диапазона от -55 ° C до + 125 ° C с точност в основната част от диапазона от 0,5 ° C, което е напълно достатъчно за контролиране както на битово отопление, така и на различни замразявания и хладилни агрегати, както и бани, сауни, оранжерии, кувьози, детски ясли и други. Напомням ви, че ARDUINO UNO можете да закупите безплатно тук:или тук: , термодатчик DS18B20 - , въпреки че лично аз имам това: моето предимство е малкият размер, съпоставим с размера на кабела. Недостатъци - липсата на платка, което при някои условия се отразява негативно върху лекотата на инсталиране и жизнеспособността на сензора. Също - на сензора вграден е резистор и не е необходимо да се запояват повече резистори, но възможността за свързване на няколко сензора "във верига" изчезва. Връзката на сензора към Arduino може да се види на фиг. 1 и е показано в Таблица 1. Лесно е да се идентифицират контактите на термичния сензор. Трябва да го вземете така, че да погледнете разреза с цифри, а краката да са отдолу. Най-левият крак ще бъде GND, средният DQ и най-десният VDD.

Маса 1.

Pin Arduino Uno

Забележка

5V, единият крак на резистора 4,7 kOhm също е запоен.




Фигура 1. Свързване на един термичен сензор.

Фигурата показва, че са използвани два резистора. Това се дължи на факта, че резисторът, който намерих с маркировката "4K7", всъщност имаше доста висока грешка, която трябваше да компенсирам с втория резистор. Пълно съпротивлениетози монтаж беше 4,695 kOhm, което според мен е доста приемливо. Можете също да видите на фигурата, че сензорът не е запоен директно към проводниците (разрез на контура), а е вмъкнат в конектора. Това беше направено по причини за развитието на експеримента. Силно препоръчително е тези сензори да се запояват. Самата скица също е доста компактна:


Само 14 реда код с коментари. Всеки начинаещ ще може да го разбере. В резултат на работата програмата ще даде нещо подобно:



Фигура 2. Резултат от работа с един сензор.



Част две. Малко сложно.

Ще усложним тази част, като добавим друг сензор. Да предположим, че трябва да измерим температурата на открито и на закрито. За да направите това, просто добавяме един сензор "във верига". Много подобно паралелна връзка... Електрическите ценители ще разберат какво имам предвид. Но има разлика: в този случайпроводниците от централния проводник трябва да са възможно най-къси.



Фигура 3. Платка с два сензора.



Скицата е нараснала само с 3 реда. Сега има 17 реда:


Резултатите от тази скица могат да се видят на фигура 4.



Фигура 4. Работа с два сензора.



Част трета. Финал.

Сега нека свържем светодиод към Arduino, който ще светне при достигане на определена температура. Такова "прагово сигнално устройство". Това изисква конвенционален светодиод и токоограничаващ резистор. Попаднах на 100 ома под мишницата си и го използвах, като го свързах към 7-ия щифт на Arduino. Запояваме дългия крак на светодиода (анода) към резистора и свързваме късия крак (катод) към GND щифта на Arduino. Трябва да получите нещо като фигура 5.




Скицата също не нарасна много:


Работата на тази програма на компютъра се показва точно по същия начин, както е показано на Фигура 4. Естествено, променливата sensors.getTempCByIndex (1) може да се управлява в много широк диапазон и LED управлението е само най-простият пример от всички възможни .

И в заключение на тази статия, още една стъпка. Сега ще ви кажа как да свържете няколко "гирлянди" от тези устройства към една Arduinka. Факт е, че дължината на "венца" не може да бъде безкрайна, освен това е много ограничена. В идеални условия - 300 метра, но създаването на "идеални" условия е доста скъпо удоволствие. В реални условия не се препоръчва да надвишавате 10 метра. За обикновен "стаен" термометър това е повече от достатъчно, но ако идваза всяко по-сериозно оборудване - това е твърде малко. Освен това, за стабилна работае необходимо датчиците да са разположени възможно най-близо до проводниците на шината - "маргаритна верига". Отхвърлянето, разбира се, също е възможно, но точността и устойчивостта на шум в този случай ще бъдат изключително ниски. И така, ние свързваме няколко „гирлянди“ именно за да събираме информация от Голям бройточки, като същевременно се поддържа достатъчна точност и устойчивост на шум. Добавете контакти според таблица 2:

Pin Arduino Uno

Забележка

5V, единият крак от 4,7 kOhm резистори също е запоен.

Цифров вход, вторият крак на резистора 4,7 kΩ също е запоен.

Цифров вход, вторият крак на резистора 4,7 kΩ също е запоен.



Както можете да видите от таблицата - няма нищо сложно, точно същата шина, само на различна цифрова вода. Не запоявах на пин 9 само от съображения за удобство и скорост на запояване.
Скица:


Малко вероятно е скицата да се нуждае от излишни коментари.

Резултатът от скицата изглежда така:



Фигура 6. Едновременна работа на две сензорни линии.



И дъската с две свързани линии изглежда така:



Фигура 7. Табло с два автобуса.



От фигурата се вижда, че резисторът 4,7 kOhm също е направен композитен за подобряване на точността.

Библиотеките, използвани за писане на скиците, разгледани в статията, се намират тук:



Рецензия, изготвена от Павел Сергеев