Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

1-проводный датчик температуры DS1820 на Raspberry Pi (напрямую через GPIO)

Есть несколько возможностей для измерения температуры в помещении или на улице с помощью Raspberry Pi. В данной статье описывается версия с минимальным количеством внешних компонентов. Это основано на датчике температуры DS18S20 и программной эмуляции протокола 1-Wire.

DS18S20 и связанные с ним DS18B20 и DS1822 представляют собой интегральные схемы в корпусе TO-92, содержащие датчик температуры, аналого-цифровой преобразователь и однопроводный интерфейс. Указанные типы совместимы по выводам и программному обеспечению, они существенно различаются по точности измерения и цене. Три разъема (см. Рисунок слева) - это земля (GND, контакт 1), данные (DQ контакт 2) и рабочее напряжение (V DD , вывод 3). Можно подключить V DD и GND и работать с датчиком от паразитного источника питания 3-5 вольт. Тогда соединение схемы с компьютером возможно с помощью простого двухжильного кабеля витой пары.

По этому кабелю - шине 1-wire - вы можете подключить несколько DS1820 параллельно. Каждый датчик имеет уникальный код, присвоенный производителем для идентификации.

Raspberry Pi и 1-проводный

Измерение температуры с помощью Raspberry Pi и однопроводного датчика температуры DS1820 содержит список различных способов управления однопроводной шиной от Raspberry Pi. В этой статье описывается решение (1) с наименьшим количеством внешних схем. Вам понадобится, помимо датчиков, только один резистор, так как это решение полностью имитирует протокол 1-Wire в программном обеспечении.

Только один резистор

Порт данных DQ DS1820 подключен напрямую к порту GPIO4 интерфейса GPIO Raspberry Pi. GND и V DD находятся на клемме заземления GND. Паразитный источник питания имеет подтягивающий резистор 4k7 между 3,3-вольтовым соединением 3V3 и GPIO4.

Резистор, гнездовой разъем для подключения к порту GPIO и 1-проводное соединение припаяны к небольшой макетной плате, которая находится непосредственно на порту GPIO. 1-проводное соединение может быть реализовано с помощью компактного углового гнездового разъема. Все это умещается в корпусе TEK-BERRY Raspberry Pi.

программные драйверы 1-Wire

Модули ядра, необходимые для активации датчика температуры 1-Wire, являются частью дистрибутива Linux Raspbian «wheezy». Однако вы должны явно загрузить их:

 sudo modprobe w1-gpio pullup =1sudo modprobe w1-therm 

Важным является параметр pullup =1 . , который сообщает модулю о наличии паразитного источника питания через подтягивающий резистор. Модули создают подкаталог для каждого датчика, находящегося чуть ниже / sys / bus / w1 / devices. Имя каталога состоит из семейного кода датчика и его уникального идентификационного номера. Датчики типа DS1820 и DS18S20 имеют код семейства 10, DS18B20 - код 28, а DS1822 - 22. В каждом подкаталоге есть файл w1_slave, содержащий состояние датчика и измеренное значение температуры:

 cd / sys / bus / w1 / devicescd 10-000801b5 * cat w1_slave  0f 00 4b 46 ff ff 06 10 0c:crc =0c YES0f 00 4b 46 ff ff 06 10 0c t =7375  

Файл состоит из двух строк, каждая из которых содержит дамп шестнадцатеричного регистра ИС датчика. В конце первой строки находится контрольная сумма (CRC) и информация о том, является ли это правильным чтением (ДА). Вторая строка заканчивается показанием температуры в тысячных долях градуса Цельсия. В этом примере температура составляет 7,375 ° C. Точность до трех знаков после запятой, конечно, только очевидна; в таблице данных DS18S20 указано, например, что точность измерения составляет всего ± 0,5 ° C. Фактическая температура составляет от 6,8 до 7,9 ° C.

Если до сих пор все работает, вам следует ввести два необходимых модуля в файл / etc / modules, чтобы они автоматически загружались во время загрузки:

 # / etc / modulesw1-gpio pullup =1w1-therm 

Round Robin Database RRDtool

Для долговременной записи показаний температуры и комфортной генерации графики рекомендуется использовать RRDtool. В статьях «Сбор данных о погоде с помощью USB WDE1» и «Измерение температуры с помощью Raspberry Pi (USB-последовательный порт)» подробно описывается этот инструмент.

Сначала вам нужно установить RRDtool с помощью диспетчера пакетов на Raspberry Pi:

 sudo apt-get install rrdtool python-rrdtool 

Второй установленный пакет python-rrdtool - это интерфейс Python для RRDtool, который будет использоваться позже. В начале работы с RRDtool стоит определение базы данных. В следующем примере создается база данных для двух датчиков температуры temp0 . и temp1 . Цель состоит в том, чтобы сохранять одно значение за четверть часа (900 секунд). Через десять дней (=960 значений) происходит сокращение до одного среднего, минимального и максимального значения в день. Срок хранения этих ежедневных значений составляет десять лет (=3600 значений):

 rrdtool create temperature.rrd --step 900 \ DS:temp0:GAUGE:1200:-40:80 \ DS:temp1:GAUGE:1200:-40:80 \ RRA:AVERAGE:0,5:1:960 \ RRA:MIN:0,5:96:3600 \ RRA:MAX:0,5:96:3600 \ RRA:AVERAGE:0,5:96:3600 

Сбор данных с помощью Python

Скрипты Python считывают специальные файлы w1_slave и вставляют значения температуры в базу данных циклического перебора:

Подробнее:1-проводный датчик температуры DS1820 на Raspberry Pi (напрямую через GPIO)


Производственный процесс

  1. Регистратор температуры Raspberry Pi
  2. Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
  3. Считать температуру с помощью DS18B20 | Raspberry Pi 2
  4. Мониторинг температуры на Raspberry Pi
  5. Измерение температуры с помощью RASPBERRY PI
  6. Библиотека Python датчика температуры TMP006 с использованием Raspberry pi,
  7. Датчик температуры Python и Raspberry Pi
  8. Метеостанция Raspberry Pi
  9. Мониторинг температуры с помощью Raspberry Pi
  10. Ультразвуковой датчик (HC-SR04) + Raspberry Pi