
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

В этом руководстве показано, как преобразовать плату Arduino Uno в универсальный контроллер для набора датчиков температуры DS18B20, способных автоматически изолировать неисправные датчики.
Контроллер может управлять до 8 датчиками с Arduino Uno. (И многое другое с Arduino Mega или с небольшой модификацией программного обеспечения.)
Шаг 1. История позади…
Пару лет назад я установил сеть датчиков температуры DS18B20 в теплице моего отца для своего контроллера отопления на основе пи. К сожалению, надежность контроллера была низкой, в основном из-за частых отключений датчиков. Я пробовал несколько настроек - паразитное питание, прямое питание, подключение сети к пи, а также подключение к специальной плате на базе Atmega (основной целью которой было управление двигателями клапанов).
Что еще хуже, надежность сенсорной сети падала в основном в зимние ночи, в то время как летом проблем почти не было! Что, черт возьми, здесь происходит?
Чтобы выяснить, какой датчик вызывает проблему, возникла необходимость включать / выключать их по одному или включать любую их комбинацию.
Шаг 2: как это работает
DS18B20 (датчик температуры) использует собственный протокол 1-Wire, который позволяет нескольким датчикам использовать общий канал передачи данных (этот один провод). Этот общий канал передачи данных подключен к одному из выводов GPIO Arduino и к + 5 В через подтягивающий резистор - ничего необычного, многие инструкции охватывают эту настройку.
Хитрость в том, что провода питания каждого датчика подключены к собственным (выделенным) контактам GPIO, так что их можно включать и выключать по отдельности. Например, если датчик имеет вывод Vcc, подключенный к контакту №3, а GND - к контакту №2, установка контакта №3 в положение ВЫСОКОЕ обеспечивает питание для датчика (неудивительно), а установка контакта №2 в положение НИЗКИЙ обеспечивает заземление (небольшой сюрприз для меня). Установка обоих контактов в режим ввода (почти) полностью изолирует датчик и его проводку - независимо от того, какой сбой (например, ярлык) произойдет внутри него, он не будет мешать другим.
(Справедливо сказать, что подключение провода данных к чему-то еще, каким-то образом подключенному к Arduino, действительно вызовет помехи, но в моей настройке это практически невозможно).
Обратите внимание, что DS18B20 потребляет до 1,5 мА, в то время как один вывод Arduino может потреблять / потреблять до 40 мА, поэтому питание датчиков напрямую через выводы GPIO совершенно безопасно.
Шаг 3: Материал и инструменты
Материал
- 1 плата Arduino UNO
- 3 штекерных разъема с внутренней резьбой: 1 × 4, 1 × 6 и 1 × 6 (или больше - я вырезал их из одного заголовка 1 × 40)
- клей
- кусок голой медной проволоки (не менее 10 см)
- изоляционная лента
- расходные материалы для пайки (проволока, флюс…)
Инструменты
- паяльное оборудование (утюг, держатели,…)
- маленькие кусачки
Шаг 4: исправляем вещи вместе

Приклейте разъемы женских выводов к заголовкам платы Arduino:
- Разъем 1 × 4 рядом с разъемом «аналогового» контакта, бок о бок с контактами A0 – A4
- Заголовок 1 × 6 рядом с первым цифровым штыревым штырем, бок о бок с контактами 2–7
- Заголовок 1 × 6 рядом со вторым цифровым штыревым штырем, бок о бок с контактами 8–13
Обратите внимание, что мои заголовки немного длиннее… Полагаю, у них нет ни минусов, ни плюсов.
Шаг 5: соедините все вместе


Подключение 1-проводной шины:
- Подключите все выводы приклеенных разъемов на «цифровой» стороне (рядом с контактами 2–13), припаяв к ним кусок неизолированного провода.
- Припаяйте конец этого провода к выводу SCL (внутренне подключен к A5).
- Подключите все выводы приклеенного разъема на «аналоговой» стороне (контакты A0 – A3), припаяв к ним кусок неизолированного провода.
- Припаяйте конец этого провода к выводам A4 и A5 (я использовал A5 и A6, потому что у меня есть плата с A6 и A7).
- Припаяйте резистор 4 кОм между другим концом этого провода и выводом +5 В.
Примечания:
- Контакты A0 – A5, хотя и отмечены как «аналоговые», также могут использоваться как цифровые контакты GPIO.
- Контакт SCL на «цифровой» стороне внутренне подключен к A5 на «аналоговой» стороне; подключенный к заголовкам, это формирует линию шины 1-wire
- A4 (используется как аналоговый вход) измеряет напряжение шины в диагностических целях. По этой причине он напрямую подключен к шине.
- Я использовал A6 вместо A4, потому что у меня есть доска с A6 и A7; Изначально я хотел использовать A7 в качестве мастера шины 1-Wire, но эти два контакта не могут быть сконфигурированы как цифровые GPIO.
- Чтобы предотвратить неправильное подключение разъемов датчика, вы можете исключить / вырезать неиспользуемый контакт (не подключенный к какому-либо проводу) из каждого штекерного разъема и вставить его в соответствующее отверстие в наклеенной контактной колодке.
Шаг 6: Подключение датчиков

Вы только что создали массив из восьми сокетов 2 × 2. Вы можете припаять и собрать разъемы Dupont 2 × 2 к кабелям датчиков и подключить их к этим разъемам. Программное обеспечение настраивает контакты так, что четные контакты являются контактами GND, а нечетные контакты - контактами Vcc. Для каждого датчика контакт Vcc - это просто контакт GND + 1. Один из двух других контактов разъема 2 × 2 (один из этих двух в приклеенном и припаянном разъеме) предназначен для провода данных датчика. Неважно, какой вы используете.
Шаг 7: программное обеспечение контроллера

Скетч SerialThermometer запускает контроллер. Вы можете найти его на гитхабе. Откройте и загрузите с помощью Arduino IDE.
Шаг за шагом:
- Откройте IDE Arduino и установите библиотеку DallasTemperature и все ее зависимости через Sketch | Включить библиотеку | Управляйте библиотеками.
- Клонировать репозиторий git. Если вы не знакомы с git, скачайте и распакуйте этот zip в любом месте на вашем компьютере.
- Откройте эскиз SerialThermometer в вашей Arduino IDE.
- Подключите модифицированную плату Arduino к компьютеру с помощью USB-кабеля (стандартный способ)
- Загрузите скетч с помощью Arduino IDE.
- Откройте Serial Monitor через Инструменты | Последовательный монитор
- Вы должны увидеть диагностический вывод, содержащий несколько физических измерений, за которыми следуют показания температуры - каждое гнездо датчика на одной строке. Если количество датчиков различается при включении по отдельности и при включении всех вместе), диагностика будет повторяться, пока не будет устранена проблема. Но не беспокойтесь, также диагностика обеспечивает измерение температуры!
См. Аннотированное изображение для более подробной информации о диагностических выводах.
Шаг 8: Заключение
У меня есть сильное ощущение, что сбои в моей сенсорной сети были вызваны большой емкостью моей длинной проводки - около 10 м кабеля LIYY 314 (3 × 0, 14 мм²) для каждого датчика. Мои эксперименты показали, что связь прерывается, если между 1-проводной шиной и землей есть емкость около или выше 0,01 мкФ, я думаю, потому что подтягивающий резистор 4k7 не может подтянуть шину к + 5 В достаточно быстро, чтобы соответствовать ограничениям протокола..
В моей настройке это происходит, когда более 3 датчиков подключены друг к другу. Затем контроллер зацикливается на диагностическом цикле, измеряя температуру датчик за датчиком (что тоже круто …)
Но также 5-й датчик (28: ff: f2: 41: 51: 17: 04: 31) выглядит довольно плохо (возможно, неправильная пайка), поэтому я могу продолжить исследование!
Рекомендуемые:
Чтение и отображение данных датчика освещенности и температуры с помощью Raspberry Pi: 5 шагов

Чтение и отображение данных датчика освещенности и температуры с помощью Raspberry Pi: в этом руководстве вы узнаете, как считывать данные датчика освещенности и температуры с помощью Raspberry Pi и аналого-цифрового преобразователя ADS1115 и строить график с помощью matplotlib. Начнем с необходимых материалов
Подключение датчика температуры DS18B20 к Arduino и ESP8266: 8 шагов

Сопряжение датчика температуры DS18B20 с Arduino и ESP8266: Привет, как дела, ребята! Акарш от CETech. Сегодня мы собираемся добавить новый датчик в наш арсенал, известный как датчик температуры DS18B20. Это датчик температуры, аналогичный DHT11, но имеющий другой набор применений. Будем сравнивать с
Контроллер DIY на базе Arduino - Игровой контроллер Arduino PS2 - Игра в Tekken с DIY-геймпадом Arduino: 7 шагов

Контроллер DIY на базе Arduino | Игровой контроллер Arduino PS2 | Игра в Tekken с помощью DIY Arduino Gamepad: Здравствуйте, ребята, играть в игры всегда весело, но играть с вашим собственным игровым контроллером DIY еще веселее. Поэтому мы создадим игровой контроллер с использованием arduino pro micro в этих инструкциях
Считывание температуры с помощью датчика температуры LM35 с Arduino Uno: 4 шага

Считывание температуры с помощью датчика температуры LM35 с Arduino Uno: Привет, ребята, в этой инструкции мы узнаем, как использовать LM35 с Arduino. Lm35 - это датчик температуры, который может считывать значения температуры от -55 ° C до 150 ° C. Это трехконтактное устройство, обеспечивающее аналоговое напряжение, пропорциональное температуре. Выс
YABC - еще один контроллер Blynk - контроллер температуры и влажности облака IoT, ESP8266: 4 шага

YABC - Еще один контроллер Blynk - Контроллер температуры и влажности облака IoT, ESP8266: Привет, производители, недавно я начал выращивать грибы дома, вешенки, но у меня уже есть 3x таких контроллера дома для контроля температуры ферментера для моего домашнего пива, жена также сейчас занимается этим чайным грибом, и в качестве термостата для тепла