Съдържание:

Мрежов контролер за температурен сензор с непоносимост: 8 стъпки
Мрежов контролер за температурен сензор с непоносимост: 8 стъпки

Видео: Мрежов контролер за температурен сензор с непоносимост: 8 стъпки

Видео: Мрежов контролер за температурен сензор с непоносимост: 8 стъпки
Видео: Zigbee LED Controller - универсальность за небольшую цену, Tuya, HomeKit, Home Assistant, биндинг 2024, Ноември
Anonim
Мрежов контролер с температурен сензор, устойчив на неизправности
Мрежов контролер с температурен сензор, устойчив на неизправности

Тази инструкция ви показва как да конвертирате платка Arduino Uno в едноцелеви контролер за набор от температурни сензори DS18B20, способни за автоматична изолация на дефектни сензори.

Контролерът може да управлява до 8 сензора с Arduino Uno. (И много повече с Arduino Mega или с лека софтуерна модификация.)

Стъпка 1: Историята зад …

Преди няколко години създадох мрежа от температурни сензори DS18B20 в оранжерията на баща ми за моя отоплителен контролер на базата на pi. За съжаление, надеждността на контролера беше лоша главно поради честите прекъсвания на сензорите. Опитах множество настройки - захранване с паразити, директно захранване, свързване на мрежата към pi, както и свързване към персонализирана платка на базата на Atmega (чиято основна цел беше да задвижва клапанни двигатели).

Още по -лошо, надеждността на сензорната мрежа спадна главно през зимните нощи, докато през лятото почти нямаше проблеми! Какво по дяволите става тук?

За да се проучи кой сензор причинява проблема, възникна необходимост от включване/изключване един по един или активиране на всяка комбинация от тях.

Стъпка 2: Как работи

DS18B20 (температурният сензор) използва патентован 1-жичен протокол, който позволява на множество сензори да споделят обща връзка за данни (този един проводник). Тази обща връзка за данни е свързана към един от GPIO щифтовете на Arduino и към + 5 V чрез издърпващ се резистор-нищо необичайно, много инструкции покриват тази настройка.

Номерът е, че захранващите проводници на всеки сензор са свързани към собствени (специални) GPIO щифтове, така че да могат да се включват и изключват отделно. Например, ако сензор има Vcc проводник, свързан към щифт #3 и GND към пин #2, настройката на щифт #3 на HIGH осигурява захранване на сензора (няма изненада), докато настройването на щифт #2 на LOW осигурява заземяване (малка изненада за аз). Задаването на двата пина в режим на вход ще (почти) напълно изолира сензора и неговото окабеляване - без значение каква повреда (напр. Пряк път) се случва вътре в него, това няма да пречи на останалите.

(Честно да кажа, че свързването на кабела за данни към нещо друго, свързано по някакъв начин с Arduino, наистина ще причини смущения, но това е почти невъзможно в моята настройка).

Забележете, че DS18B20 консумира до 1, 5 mA, докато един щифт Arduino може да генерира / поглъща до 40 mA, така че е напълно безопасно да захранвате сензори директно чрез GPIO щифтове.

Стъпка 3: Материали и инструменти

Материал

  • 1 дъска Arduino UNO
  • 3 женски заглавки: 1 × 4, 1 × 6 и 1 × 6 (или по -дълги - изрязах ги от една 1 × 40 заглавка)
  • лепило
  • парче гола медна тел (най -малко 10 см)
  • изолационна лента
  • консумативи за запояване (тел, поток …)

Инструменти

  • запояващо оборудване (желязо, държачи, …)
  • малки клещи за рязане

Стъпка 4: Поправете нещата заедно

Поправете нещата заедно
Поправете нещата заедно

Залепете женските щифтове към заглавките на дъската на Arduino:

  1. 1 × 4 хедър до „аналогов“щифт, отстрани отстрани с щифтове A0 – A4
  2. 1 × 6 заглавка до първата цифрова заглавка на щифта, странично с пинове 2–7
  3. 1 × 6 заглавка до втората цифрова заглавка на щифта, странично с щифтове 8–13

Забележете, че заглавките ми са малко по -дълги … няма минуси и плюсове, предполагам.

Стъпка 5: Свържете нещата заедно

Свържете нещата заедно
Свържете нещата заедно
Свържете нещата заедно
Свържете нещата заедно

Окабеляване на 1-жична шинна линия:

  1. Свържете всички проводници на залепени заглавки от „цифровата“страна (в съседство с щифтове 2–13), като запоите към тях парче гола жица
  2. Запояйте края на този проводник към SCL извода (вътрешно свързан към A5)
  3. Свържете всички проводници на залепения хедър от "аналогова" страна (щифтове A0 -A3), като запоите към тях парче гола жица
  4. Запояйте края на този проводник към проводници A4 и A5 (използвах A5 и A6, защото имам платка с A6 и A7)
  5. Запоявайте резистор 4k7 между другия край на този проводник и +5 V щифт

Бележки:

  • Пиновете A0 -A5, въпреки че са маркирани като "аналогови", могат да се използват и като цифрови пинове GPIO.
  • SCL изводът от "цифровата" страна е вътрешно свързан към A5 от "аналоговата" страна; свързан към заглавките, това образува 1-жична шинна линия
  • A4 (използван като аналогов вход) измерва напрежението на шината за диагностични цели. Това е причината тя да е директно свързана с автобуса.
  • Използвах A6 вместо A4, защото имам дъска, която има A6 & A7; първоначално исках да използвам A7 като 1-проводник на шината, но тези два пина не могат да бъдат конфигурирани като цифрови GPIO.
  • За да предотвратите неправилно свързване на конекторите на сензора, можете да пропуснете / изрежете неизползвания контакт (който не е свързан с нито един проводник) от всеки мъжки конектор и да го поставите в съответния отвор в залепения щифт.

Стъпка 6: Свързване на сензорите

Свързване на сензорите
Свързване на сензорите

Току -що създадохте масив от осем гнезда 2 × 2. Можете да запоявате и сглобявате 2 × 2 съединителя Dupont към сензорните кабели и да ги свързвате към тези гнезда. Софтуерът конфигурира щифтовете така, че четните щифтове са GND щифтове, а нечетните пинове са Vcc щифтове. За всеки сензор Vcc щифтът е само GND щифт + 1. Един от другите два пина на гнездото 2 × 2 (един от тези два в залепената и споената заглавка) е за проводника за данни на сензора. Няма значение кое използвате.

Стъпка 7: Софтуер за контролер

Софтуер за контролер
Софтуер за контролер

Скицата на SerialThermometer изпълнява контролера. Можете да го намерите в github. Отваряне и качване с помощта на Arduino IDE.

Стъпка по стъпка:

  1. Отворете вашата Arduino IDE и инсталирайте библиотеката DallasTemperature и всички нейни зависимости чрез Sketch | Включване на библиотека | Управление на библиотеки.
  2. Клонирайте git хранилище. Ако не сте запознати с git, изтеглете и разопаковайте този цип навсякъде на вашия компютър.
  3. Отворете скицата на SerialThermometer във вашата Arduino IDE.
  4. Свържете модифицираната платка Arduino към компютъра чрез USB кабел (стандартен начин)
  5. Качете скицата, като използвате вашата Arduino IDE
  6. Отворете сериен монитор чрез инструменти | Сериен монитор
  7. Трябва да видите диагностичен изход, съдържащ няколко физически измервания, последвани от температурни показания - всяко гнездо на сензора на един ред. Ако броят на сензорите се различава, когато е включен отделно и когато всички са включени заедно), диагностичните контури се отстраняват. Но не се притеснявайте, също така диагностиката осигурява измерване на температурата!

Вижте анотирана картина за повече подробности относно диагностичния изход.

Стъпка 8: Заключение

Имам силно чувство, че повредите в мрежата на сензора ми са причинени от високия капацитет на дългото ми окабеляване - около 10 м кабел LIYY 314 (3 × 0, 14 мм²) за всеки сензор. Моите експерименти показаха, че комуникацията се прекъсва, ако има капацитет около или по-висок от 0,01 μF между 1-жична шина и земя, мисля, че 4k7 издърпващ резистор не е в състояние да издърпа шината до + 5 V достатъчно бързо, за да спази ограниченията на протокола.

В моята настройка това се случва, когато повече от 3 сензора са свързани заедно. След това контролерът се включва в диагностичния цикъл, измервайки температурата сензор по сензор (какво е готино също …)

Но също така петият сензор (28: ff: f2: 41: 51: 17: 04: 31) изглежда доста зле (може би грешно запояване), така че мога да разследвам по -нататък!

Препоръчано: