Сеть 1-wire и термометры DS18B20.

Форум по покупкам в интернете.

Благодарим разработчиков движка форума!

Форум по покупкам в интернете. »   Success story »   Сеть 1-wire и термометры DS18B20.
RSS

Сеть 1-wire и термометры DS18B20.

Микросхема DS18B20 это термометр с цифровым вводом/выводом, работающий с точностью ±0.5°C. Данные считываются через последовательную шину 1-wire в дополнительном от 9 до 12 битном (программируется пользователем) коде с ценой младшего разряда от 0.5°C до 0

<<Назад  Вперед>>AdminПечать
 
aost
Долгожитель форума


Всего сообщений: 200
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 окт. 2009
Начало темы по DS18B20.

На современных материнских платах все чаще компорты не выводят наружу, а оставляют на пинах внутри. В этом случае можно самостоятельно вывести этот компорт, руководствуясь распиновокй из мануала материнской платы.





Не всегда нумерация пинов на материнской плате соответствует нумерации пинов разъема DB9 компорта, в таком случае использовать "стандартную" колодку, где пины разведены один к одному, нельзя!
Описание стандарта rs232: http://www.gaw.ru/html.cgi/txt/interface/rs232/start.htm

Чтобы подключиться к пинам - можно использовать слегка подпиленную колодку от флопового шлейфа, которые тоже, зачастую, валяются без дела.

---
Best regards!
aost
Долгожитель форума


Всего сообщений: 200
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 окт. 2009
В связи с отмиранием аппаратных компортов на материнских платах, возникла необходимость в варианте подключения цифрового термометра к компьютеру через переходники USB-UART (TTL). И такой вариант нашелся: https://haklabos.wordpress.com/projekti/digitemp/

[q]
Digitemp on small TP-Link WR703N wireless router

Measuring ambient temperature with cheap Dallas sensor DS18B20 (~ 1$) over USB 2.0 to UART TTL 6PIN Module Serial Converter CP2102 (~1,50 $) and showing temperature on simple static html web page hosted on wireless router TP-Link WR703N (~ 25$), acting as cheap wireless “meteo” station.

We need wireless router TP-Link WR703N with OpenWrt image on it. If you don’t know how to flash with OpenWrt, take a look on great OpenWrt Wiki page.

Simple electronic circuit

You can order USB 2.0 to UART TTL 6PIN Module Serial Converter CP2102 from e-bay and Dallas sensor DS18B20 from Maxim-IC (or you can acquire one free sample :)

– connect GND and +5V to DS18B20

– connect RX and TX together and to thedata line of 1-wire sensor DS18B20

– that’s all :)
[/q]


После этого попалась статья на easyelectronics, в которой была рекомендация разделить Rx и Tx диодом (катодом к Tx) и резистором 3K сделать подтяжку линии данных к Vcc. Две пропавшие картинки из статьи найдены в web-архиве:




sch.PNG




conv.JPG

В соответствии с данной схемой термометр DS18B20 был подсоединен к переходнику на чипе CP2102, в систему был установлен digitemp и все сразу заработало. Подключено два датчика DS18B20: один на расстоянии примерно 10 см от переходника UART-1-wire, второй - на расстоянии 1.5 метра.

Ubuntu 14.04 - адаптер подхватился сразу, digitemp ставится через apt-get
FreeBSD 8/9 - в конфигурации ядра должен быть драйвер "uslcom # SI Labs CP2101/CP2102 serial adapters", digitemp - из портов.


---
Best regards!
aost
Долгожитель форума


Всего сообщений: 200
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 окт. 2009
Изготавливается всё достаточно просто:

1. Выпаиваем из переходника CP2102 ненужные крайние выводы, после чего паяем резистор и диод прямо на ножки переходника:




2. Аккуратно (иначе потом керамика лопается) подгибаем выводы, паяем конденсатор на питание термометра DS18B20 и подключаем соединительный провод (далее одеваем термоусадку):










3. Заливаем расплавом добавленные навесные детали и трехпиновый разъем на плате CP2102:




4. В результате, после заделки в термоусадку, получаем готовую к употреблению конструкцию:




По стоимости деталей: переходник $8/5= $1.6, термометр в районе $1, остальное - можно выбрать из отходов. При цене переходника на DS9097 от $10 и "кому сколько совесть позволит" - мы остаемся в очевидном выигрыше.

---
Best regards!
aost
Долгожитель форума


Всего сообщений: 200
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 окт. 2009
Скрипт опроса для munin (должен быть установлен и настроен пакет digitemp):

#!/bin/sh
# -*- sh -*-

: << =cut

=head1 NAME

digitemp_ - Plugin to monitor Dallas 1-wire temperature sensors using
digitemp

=head1 CONFIGURATION

The following enviroment variables are used by this plugin:

digitemprc - config file to use. (Default /etc/digitemp.conf)
              This must be generated with digitemp_<model> -i

=head1 USAGE

Symlink as the name of the digitemp program to use, i.e. digitemp_DS2490

=head1 AUTHOR

Copyright © 2006 Dagfinn Ilmari Mannsaaker <ilmari@ilmari.org>

=head1 LICENSE

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 dated June, 1991.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

=head1 MAGIC MARKERS

#%# family=manual

=cut

digitemp="/usr/local/bin/digitemp_DS9097"
#${0##*/}
model=${digitemp##*_}
digitemprc=${digitemprc:-/etc/digitemp.conf}

if ! [ -x "`which $digitemp`" ]; then
    echo "$digitemp not found" >&2
    exit 1
fi
if [ "$1" = "config" ]; then
    echo "graph_title DigiTemp $model temperatures"
    echo 'graph_vlabel degrees C'
    echo 'graph_category sensors'
    echo "graph_info This graph shows the temperature read from $model 1-wire sensors"
    $digitemp -c "$digitemprc" -q -a -o '%s %R' | grep -v ^Found | while read sensor serial; do
  echo "sensor$serial.label sensor #$sensor"
  echo "sensor$serial.type GAUGE"
  echo "sensor$serial.info Temperature from sensor #$sensor"
  echo "sensor$serial.critical 35"
        echo "sensor$serial.warning 30"
   done
   exit 0
fi

$digitemp -c "$digitemprc" -q -a -o 'sensor%R.value %C'|\
  awk '/sensor/ {
  if ($2 == 85) $2 = 12;
  if ($2 <= 13)
  system("echo \"Temperature too low= \"" $2 "|\
   mail -s \"Warning from host!!!\" root"); printf "%s %0.2f \r\n", $1, $2 }'


---
Best regards!
<<Назад  Вперед>>AdminПечать
Форум по покупкам в интернете. »   Success story »   Сеть 1-wire и термометры DS18B20.
RSS

Последние RSS
Хвощ полевой
Вино
Хранение яблок на балконе
автосервис "Автор+"
BOSH Quigo кубик-нивелир

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0505. Количество выполненных запросов: 16, время выполнения запросов 0.0128