Hola chicos, estoy simulando la medición de temperatura con el sensor DS18B20 y no logro que funcione. Adjunto imagen del circuito en Proteus y el código que he realizado. ¿Como soluciono este problema?
Código del programa:
#include <OneWire.h>
#include <DallasTemperature.h>
// Configuración del pin de datos
#define ONE_WIRE_BUS 2
// Configurar instancia OneWire y DallasTemperature
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600); // Iniciar comunicación serial
sensors.begin(); // Iniciar el sensor
}
void loop() {
sensors.requestTemperatures(); // Solicitar lectura
float temp = sensors.getTempCByIndex(0); // Leer temperatura en °C
// Verificar si la lectura es válida
if (temp != DEVICE_DISCONNECTED_C) {
Serial.print("Temperatura: ");
Serial.print(temp);
Serial.println(" °C");
} else {
Serial.println("Error: Sensor no conectado");
}
delay(2000); // Esperar 2 segundos entre lecturas
}
[code]
/*
*
* SENSOR TEMPERATURA DS18B20
*
*
*/
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire ourWire(2); //Se establece el pin 2 como bus OneWire
DallasTemperature sensors(&ourWire); //Se declara una variable u objeto para nuestro sensor
void setup()
{
delay(1000);
Serial.begin(9600);
sensors.begin(); //Se inicia el sensor
}
void loop()
{
sensors.requestTemperatures(); //Se envía el comando para leer la temperatura
float temp= sensors.getTempCByIndex(0); //Se obtiene la temperatura en ºC
Serial.print("Temperatura= ");
Serial.print(temp);
Serial.println(" C");
delay(100);
} //LL-LOOP.
//****************************** FIN ******************
[/code]
La simulación de Proteus no es perfecta y posiblemente la librería DallasTemperatura no sea perfecta y no funcione. He probado los dos programas, el tuyo y el de Engral con resultado negativo (usando proteus 9). Sin embargo con otra librería como microDS18B20 si funciona correctamente.