Simulación de sensor DS18B20 en Proteus

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
}

Muchas gracias !
Saludos.

Pusiste la captura, agrega el archivo del proyecto extensión .pdsprj para no tener que hacerlo nosotros.

Bueno probé tu código con el MEGA, con un NANO.

El único que funciona es el ejemplo AVR hecho con el UNO y que no usa Dallas Temperature.h

Hola @ing_if

Prueba este:

[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]

Un saludo !!:cocktail_glass::cocktail_glass:

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.

Prueba a simular con otras librerías.

Exacto, es DallasTemperatura.h la que falla en Proteus porque en Arduino físico funciona.