Boa tarde,

Gostaria de saber qual tempo o sensor mencionado leva para realizar a leitura e enviar para a serial monitor do arduino. Estou utilizando o mesmo no modo padrão de 12 bits. Não estou utilizando função delay em meu código. Segue esbouço abaixo:

void loop(){

    digitalWrite(fan, LOW);         // Turn Fans On
    digitalWrite(peltier, LOW);     // Turn Peltier On
    digitalWrite(red_led, LOW);     // Turn Red Led Off
    digitalWrite(green_led, HIGH);  // Turn Green Led On

    sensor_ds18b20.requestTemperatures();  // Request Sensor Data
    intern_temperature = sensor_ds18b20.getTempCByIndex(0);

    int estadoAtual = 1;

    Serial.print(estadoAtual);
    Serial.print(" , ");
    Serial.print(intern_temperature);
    Serial.println(" ");
}
Pesquisando encontrei que levaria aproximadamente 0,75s para ele enviar um dado na serial monitor, procede?

Exibições: 255

Responder esta

Respostas a este tópico

Olá, Felipe!

   Em primeiro lugar, sugiro dar uma olhada no tópico LINK >>> Sugestões de como "postar" no LdG por Rui Viana &...

   Principalmente na parte que fala em não postar o código no próprio corpo do post. Inclusive, como você não postou o código inteiro, não sabemos qual a biblioteca que está usando.

   Quanto ao DS18B20, faz uns 20 anos que não o uso mas, se bem me lembro, 0.75 s é o tempo que ele leva para fazer uma leitura de temperatura a uma dada resolução, no caso, 12 bits.

   Pelo que me lembro, e posso estar errado, você pode fazer leituras de temperatura em sequência, sem conversão e sem delay entre elas, mas a temperatura lida será a da última conversão feita através do comando CONVERT T, que dispara o procedimento que leva os 0.75 s.

   Além disso, se você estiver utilizando uma biblioteca, terá de verificar se toda vez que solicita uma leitura, a biblioteca primeiro emite um comando CONVERT T. Neste caso, se não houver tempo suficiente para uma conversão entre 2 solicitações consecutivas de leitura, provavelmente a temperatura correta nunca será lida, pois o processo de conversão estaria sendo abortado por um novo antes do seu final.

D. T. Ribeiro.

Bom dia, 

estou utilizando a biblioteca OneWire e a DallasTemperature

Olá.

  Se vc quer saber de quanto em quanto tempo vc consegue uma leitura recomendo medir com o proprio arduino, com uma rotina do tipo:

  oldTime = currentTime;  

  currentTime = millis();  

  deltaTime = currentTime - oldTime;

  inserida no meio do loop();

  Se precisar mesmo da informação de velocidade ela pode ser encontrada no manual: 
https://www.analog.com/media/en/technical-documentation/data-sheets...

  Vc vai ver que os tempos dos pulsos tem limites inferiores e superiores, são determinados como uma faixa válida, não é como usa serial comum que tem baud rate determinado.

   Ainda, a temperatura é afetada por questões mecanicas, físicas, etc. Se vc tem por ex um encapsulamento metálico é preciso que a temperatura se propague pela carcaça toda do sensor até chegar ao elemento sensível lá dentro dele.
   Certamente isso demora muuuuito mais que a leitura.

   Também, no seu loop, possivelmente mandar dados para a serial pode demandar bem mais tempo que fazer a leitura da temperatura, faça o teste, meça o tempo por ex de 100 leitura de temperatura com e sem impressão na serial de cada uma. 

Ref: https://forum.arduino.cc/t/calculating-delta-time/490002

Ok, obrigado pela ajuda!

Boa noite, Segundo as informações do Datasheet:

Temperature Conversion Time = 750 ms (para 12 bits)

Portanto sugiro que o intervalo entre as medições de temperatura seja de 1 segundo. 

obrigado!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço