Paso 5: Lectura de temperatura - DS18B20
Cerca de $2 en http://goo.gl/X5FRN
Originalmente había instalado la resistencia y las conexiones en la placa de divisor de tensión. Me metía la temida salida 85C/185F del sensor, así que mis conexiones eran malas. Luego trasladó las conexiones directamente a Arduino y había hecho dos puertos digitales sin usar + 5vdc y Gnd escribiendo un alto y un bajo respectivamente. Lo hice para mantener los cables juntos, en lugar de cortar el cable aparte y que los separa. No solucione el problema, así que miré sobre mi código con un peine de dientes finos. No he encontrado ningún error, así que creé un segundo boceto (no cortar y pegar), y uno trabajó. No veo diferencias respecto a la antigua, pero tenía que haber que algo en alguna parte corrupta. He utilizado estos sensores en decenas de proyectos y nunca tuvo este problema surge antes. No era un sensor malo o conexión.
Este sketch de Arduino Lee DS18B20 digital de "1-Wire"
sensores de temperatura.
Tutorial:
http://www.hacktronics.com/tutorials/Arduino-1-Wire-tutorial.html
#include < OneWire.h >
#include < DallasTemperature.h >
Cable de datos esté conectado en el pin 3 en el Arduino
#define ONE_WIRE_BUS 3
Configuración de una instancia de oneWire para comunicarse con dispositivos OneWire
OneWire oneWire(ONE_WIRE_BUS);
Pasar nuestra referencia oneWire a temperatura de Dallas.
DallasTemperature sensors (& oneWire);
Asigne las direcciones de sus sensores de temperatura 1-Wire.
Consulte el tutorial sobre cómo obtener estas direcciones:
http://www.hacktronics.com/tutorials/Arduino-1-Wire-Address-Finder.html
DeviceAddress insideThermometer = {0x28, 0x94, 0xE2, 0xDF, 0 x 02, 0 x 00, 0 x 00, 0xFE}; su dirección será diferente
void setup(void)
{
iniciar el puerto serie
Serial.Begin(9600);
Puesta en marcha de la biblioteca
Sensors.Begin();
Ajuste la resolución a 10 bit (suficiente?)
sensors.setResolution (insideThermometer, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
flotador tempC = sensors.getTempC(deviceAddress);
Si (tempC ==-127.00) {}
Serial.Print ("Error al obtener la temperatura");
} else {}
Serial.Print ("C:");
Serial.Print(tempC);
Serial.Print ("F:");
Serial.Print(DallasTemperature::toFahrenheit(tempC));
}
}
void loop(void)
{
Delay(2000);
Serial.Print ("para temperatures...\n\r");
sensors.requestTemperatures();
Serial.Print ("temperatura interior es:");
printTemperature(insideThermometer);
Serial.Print("\n\r\n\r");
}