В этой статье напишу про получение температуры из цифрового датчика DS1820 и передачи её по последовательному порту.
Схема соединения очень простая и состоит собственно из самого датчика и сопротивления на 4.7 кОм:
Собственно сам скейтч:
#include <OneWire.h>
#include <OneWireTempSensor.h>
OneWireTempSensor sensors(12);
int numdevs;
void setup(void)
{
numdevs = sensors.getDevices();
Serial.begin(9600);
Serial.println("Dallas Temperature Demo");
}
void loop(void)
{
int currdev;
int temp;
for (currdev = 0; currdev < numdevs; ++currdev) {
temp = (int) sensors.getTempC(currdev);
Serial.print("Temperature: ");
Serial.println(temp);
delay(1000);
}
}
Для работы понадобится библиотека OneWireTempSensor.h, которую легко можно найти в интернете. Для удобного наблюдения за температурой лучше всего выводить информацию на LCD дисплей, но так как его у меня нет, то будем выводить температуру в последовательный порт. Для просмотра передаваемой информации можно использовать функцию в IDE Arduino, которая называется Serial Monitor, но я написал простенький скрипт на Python.
#!/usr/bin/python
__author__="aspire89"
__date__ ="$03.04.2010 22:24:23$"
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600)
while 1:
s = ser.readline().strip()
print s
Для работы скрипта понадобится библиотека и как видно из кода, ничего сложного там нет.
Записал небольшое , в котором можно это все увидеть.
Если внимательно приглядеться, то можно увидеть, как в один момент температура подпрыгнет до +85 градусов. Это проблема в моем датчике, библиотека написана для более современных сенсоров, таких как DS18b20, DS18s20, а у меня старенький DS1820.
отличное начало!
на видео обратил внимание на эти скачки до 85-градусов — очень забавно может получиться если вешать на это дело события :)
Думаю, это можно поправить если брать несколько отсчётов и выводить среднее значение :) Или же просто отсеивать слишком большие отклонения из выборки.
Специально сфоткал:
Видно что первой ножкой датчик подключен к земле, второй ножкой к 12 пину и через резистр к питанию. Контакты между собой где не надо не замыкаются (на фото можно подумать иначе).
Комментарии (10)
RSS свернуть / развернутьна видео обратил внимание на эти скачки до 85-градусов — очень забавно может получиться если вешать на это дело события :)
Думаю, это можно поправить если брать несколько отсчётов и выводить среднее значение :) Или же просто отсеивать слишком большие отклонения из выборки.
noonv
Кстати, +85 это скорее всего не в датчике проблема: Ищите плохой контакт )
boa
До этого я на этом датчике собирал и тоже были проблемы с +85.
aspire89
boa
Исправил скейт, теперь +85 отсеивается и вывожу значение на conky:
aspire89
dokluch
aspire89
dokluch
oleamm
Видно что первой ножкой датчик подключен к земле, второй ножкой к 12 пину и через резистр к питанию. Контакты между собой где не надо не замыкаются (на фото можно подумать иначе).
oleamm
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.