Termostato con DS18B20 y 16F877A ajustable.

Me gustaría, si es posible, me digáis donde he cometido algún error, ya que cuando lo pruebo en proteus, aunque va como yo quiero, me marca enseguida la saturación de CPU a niveles altos incluidos 100%
Lo único que tienes que hacer para reducir la carga de CPU, es cambiar la resistencia pull-up del DS18B20 de análoga a digital.

Igualmente para otras resistencias que realicen algún tipo de conmutación. (Por ejemplo, LED's o transistores.)
En la simulación es mejor que algunas resistencias sean digitales para evitar la sobrecarga.
 
Sí señor, ese era el problema. Gracias de nuevo, D@rkbytes.
Lo que no entiendo es el por qué de que se sature, si se supone que no debería influir como lo hace. Pero bueno, ya sé algo más.
Una pregunta: ¿Se supone que sólo afecta en el programa de proteus, verdad?
 
Última edición por un moderador:
Lo que no entiendo es el por qué de que se sature, si se supone que no debería influir como lo hace. Pero bueno, ya sé algo más.
Se satura el programa por la cantidad de datos a los que está siendo expuesta la resistencia.
Al trabajar en modo análogo, se está comportando como una resistencia normal y eso es lo que produce la sobrecarga.
Una pregunta: ¿Se supone que sólo afecta en el programa de proteus, verdad?
Así es. Eso únicamente ocurrirá en el simulador, en el montaje físico no existe ese tipo de problema.
 
Buenas, estoy tratando de hacer funcionar el codigo con un pic 16f887 pero me arroja valores negativos, no se si es porque desactive el delay por medio del crystal.

Se agradece la ayuda.

Adjunto archivo en ccs y proteus con 16f887
 

Adjuntos

  • 3-DS18B20 16F887.zip
    62.5 KB · Visitas: 63
Hola picnoob

En el archivo main.h tienes definido esto: #use delay(clock=8000000) pero el PIC tiene programado 1MHz.
Lo cambié y ya no da valores negativos.

saludos
a sus ordenes
 
Hola picnoob

En el archivo main.h tienes definido esto: #use delay(clock=8000000) pero el PIC tiene programado 1MHz.
Lo cambié y ya no da valores negativos.

saludos
a sus ordenes

Gracias! :) El que no sabe es como el que no ve.

Ahora mi pregunta es, este pic tiene oscilador interno, ya lo he utilizado antes, pero este circuito trae con crystal, si elimino esta parte del circuito sera que funcionara correctamente?
 
Debe funcionar igual, porque no necesitas conteos de precisión y tampoco frecuencias de operación elevadas.
La salida del DS18B20 es digital, así que no debe preocuparte el tipo de oscilador.
 
Gente!!! Primero que nada, hace rato que vengo buscando info de cómo conectar este sensor a un pic, y es la primera vez que encuentro algo concreto y que ande.
Mis conocimientos de programación son mínimos, pero tengo ganas de agregar unas cosillas al proyecto.
La idea principal sería un PIC con lcd y un sensor DS18B20 (tal cual como comenzaron hablando en este tema del foro) pero me gustaría agregar a esto que los valores de temperatura puedan almacenarse en una tarjeta SD o pendrive y que, mediante un real time clock, almacenar también los datos de fecha y hora para cada valor de temperatura. Mi consulta inicial sería cómo puedo comenzar a conectar la SD y el RTC y, dicho sea de paso, en qué formato podrían quedar los valores almacenados para luego verlos en una PC.

Muchas gracias!!!!
 
Mi consulta inicial, sería. ¿Cómo puedo comenzar a conectar la SD y el RTC? Y dicho sea de paso. ¿En qué formato podrían quedar los valores almacenados para luego verlos en una PC?
La conexión de una memoria SD o uSD es por SPI y el RTC, por ejemplo, un DS1307, es por I2C.
El formato depende de la forma de obtener las lecturas.
Y se pueden guardar como Float o Word usando 4 bytes, o se pueden dividir las lecturas y guardarlas como bytes.
 
La conexión de una memoria SD o uSD es por SPI y el RTC, por ejemplo, un DS1307, es por I2C.
El formato depende de la forma de obtener las lecturas.
Y se pueden guardar como Float o Word usando 4 bytes, o se pueden dividir las lecturas y guardarlas como bytes.
Gracias por el aventón!!! Voy a arrancar por eso y con unos pdf q encontré en internet.
Si alguien más tiene más para adentrar en el tema sería genial.
Gracias!!!
 
Si, el DS1305 se controla por SPI, pero el DS1307 que mencioné, se controla por I2C, menos pines y más sencillo.

Existen módulos listos para usar.

Este módulo RTC con DS1307 ya cuenta con todo lo necesario, hasta con batería y una EEPROM 24LC32

Tiny RTC DS1307.jpg
Y este otro es un adaptador para micro SD por SPI.
Adaptador micro SD.jpg
Si no hay que almacenar muchos datos, yo optaría por usar la memoria interna del PIC.​
 
Hola, soy nuevo y estoy montando un circuito con el sensor ds18b20 , Pic 16f877a y lcd 2x 16 para mi pecera, ya tengo todo pero estoy estudiando cómo utilizarlo ya que solo he manejado el lm35 pero ese no se puede sumergir, entonces, cualquier cosa puedo solicitar su ayuda?
 
Última edición por un moderador:
Hola

Estoy montando un control de temperatura para mi pecera con el ds18b20 y pic 16f877a y no me lee el sensor, ¿Alguien me puede ayudar?, adjunto programa y esquema
 

Adjuntos

  • PEZ.rar
    100.7 KB · Visitas: 27
Última edición por un moderador:
El programa está muy mal estructurado y contiene bastantes declaraciones que no son necesarias.

Fuera de eso, el problema lo tienes en la librería DS18B20.C
En la función ds1820_read(); debes seleccionar el resultado para un DS18B20 y dejar comentado (//) el resultado para un DS18S20.
 
Buenos dias

Será que usted me_puede ayudar? Es que es la primera vez que utilizo ese sensor y lo que he hecho es basado en lo que he encontrado en internet, le agradeceria
 
Última edición por un moderador:
Saludos. Ya te mencioné lo que se tiene qué hacer.
Aquí te dejo la parte del cambio en la librería DS18B20.C
PHP:
//result = (float) temp3 / 2.0;   //Calculation for DS18S20 with 0.5 deg C resolution 
result = (float) temp3 / 16.0;  //Calculation for DS18B20 with 0.1 deg C resolution
Como verás, sólo es cambiar un tipo de resultado por otro.
 
Hola, estoy tratando de implementar la librería modificada para 2 sensores en un 16f886 uso proteus 8.5 para simular y el compilador pcwhd. implementando la librería para un solo sensor no tuve inconvenientes, pero con estas en 0.5 ° de precisión me da 0° en display y con 0.1 me da -0.6°. No se donde puedo haber cometido el error o si es algún inconveniente del compilador o el emulador. Adjunto el comprimido. Desde ya gracias por la respuesta y la ayuda.
 

Adjuntos

  • Doble Sensor.rar
    4.6 MB · Visitas: 20
Atrás
Arriba