Autor Tema: Libreria DS1820  (Leído 33593 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Libreria DS1820
« en: 15 de Diciembre de 2007, 10:46:35 »
Hola, aqui os dejo una libreria en CCS para el sensor de temperatura DS1820, la pega es que consume mucha memoria, si alguien conoce una libreria mejor que la pegue.

Código: [Seleccionar]
////////////////////////////////////////////////////////////////////////////
////   Library for a Dallas 1820 Temperature chip                       ////
////                                                                    ////
////   init_temp();          Call before the other functions are used   ////
////                                                                    ////
////                                                                    ////
////   d = read_full_temp(); Read the temp in degrees C (0 to 125)      ////
////                                                                    ////
////////////////////////////////////////////////////////////////////////////


#ifndef DS1820_PIN
   #define DS1820_PIN  PIN_B0
#endif

#define TOUCH_PIN  DS1820_PIN
#include "touch.c"
void init_temp() {

}

float read_full_temp()
{
    byte i, buffer[9];
    float minstep;

    if (touch_present()) {         // get present (reset)                    (2)
        touch_write_byte(0xCC);    // Skip ROM                               (3)
        touch_write_byte (0x44);   // Start Conversion
        delay_ms(200);             // delay 200 ms                           (4)
        touch_present();           // get present (reset)                    (5)
        touch_write_byte(0xCC);    // Skip ROM                               (6)
        touch_write_byte (0xBE);   // Read Scratch Pad

        for(i=0; i<9;i++)          // read 9 bytes                           (7)
            buffer[i] = touch_read_byte();
    }


//minstep = (float)(buffer[0]/2)-0.25+((float)( buffer[7]-buffer[6])/buffer[7]);
     if(buffer[1]){
      minstep = (float)(-1)*(~make16(buffer[1],buffer[0])+1)/2;
     }else{
      minstep = (float)(make16(buffer[1],buffer[0])/2);
     }
      minstep = minstep - 0.25 + ((float)( buffer[7] - buffer[6])/buffer[7]);
      return (minstep);
}

Aqui un ejemplo de uso:

Código: [Seleccionar]
#include <16F876.h> //Standard header file
#fuses NOWDT,HS, NOPUT, NOPROTECT,NOLVP,BROWNOUT //Oscillator mode HS
#use delay(clock=20000000) //Clock speed HZ = 20MHZ
#define use_portd_lcd //define for use port d lcd
#define DS1820_PIN  PIN_A2
#define use_portb_lcd TRUE
#include "lcd.c"
#include "ds1820.c"

void main() {
   float minstep;
   int16 a;
   int b;
   lcd_init();
   do {
         minstep = read_full_temp();
         printf (lcd_putc,"\fTemp :%3.2f C", minstep);
         delay_ms(1000);
   } while (TRUE);


}
« Última modificación: 15 de Diciembre de 2007, 10:49:50 por micro_pepe »
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Libreria DS1820
« Respuesta #1 en: 16 de Diciembre de 2007, 07:39:42 »
Gracias micropepe

Desconectado maxluis

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
Re: Libreria DS1820
« Respuesta #2 en: 16 de Diciembre de 2007, 09:47:13 »
Estimado nocturno: Yo use en un proyecto que "estaba armando" estas dos y funcionaba.
en la 1wire defines el pin.( fueron posteadas en este gran foro )
Saludos.
Maxluis.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria DS1820
« Respuesta #3 en: 16 de Diciembre de 2007, 21:11:14 »
he probado tu libreria y tu codigo micro_pepe, esta muy bueno, funciano mbien, dentro mi cuarto ahora estoy en 22ºC jeje
por afuera ya va 18.56ºC ... .36 ta muy bueno :mrgreen:

mas o menos en cuanto tiempo toma la temperatura del ambiente?? tiene que ver con las clases de termodinamica a las que no atendi? :oops:

sigue bajando, ya van como 5 minutos, jeje

ahora me toca probar el otro codiog que dejo maxluis :mrgreen:
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria DS1820
« Respuesta #4 en: 16 de Diciembre de 2007, 21:38:57 »
he utilizado las otras dos librerias, en mi 16f648a y he visto estas diferencias:

para en de maxluis:
1. ocupa menor cantidad de memoria, compilado con el 4.058 de ccs, en ROM me ocupa 27% y en RAM 4%
2. siempre va decrementando o incrementando de .5 en .5

para el de micro_pepe:
1. ocupa mayor cantidad de memoria, compilado con la misma version: ROM=40% y RAM=5%
2. incrementa y decrementa con valores a veces muy pequeños .12 .6 .7, osea, creo que es mas exacto, claro considerando el error del ds1820, pero lo hace muy bien

un comentario, me parece que el de micro_pepe esta mejor diseñado, a costa de memoria, pero es el mejor diseño :mrgreen:
claro que sin desmeritar al otro q tb funciona mbien :)

un saludo y gracias a ambos por los aportes!!! justo lo que buscaba :mrgreen:
.

Desconectado maxluis

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 129
Re: Libreria DS1820
« Respuesta #5 en: 16 de Diciembre de 2007, 22:28:27 »
Estimado Cryn:Revisa en la libreria ds1820 ( 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 ) y ahi le activas, a mi me resulto bien en la tarjeta real (0.1 grados de resolucion), aun que al simular en el proteus solamente se movia de .5 en .5...
saludos.
Maxluis.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria DS1820
« Respuesta #6 en: 16 de Diciembre de 2007, 23:43:55 »
si maxluis, me he fijado ahi, y he cambiado al linea comentada por la otra, osea prove ambos, y con el DS1820 que tengo asi sin ninguna letra mas, el unico que funciona es el de .5 de resolucion, y el otro no funciona correctamente con el ds qeu tengo, ya que el valor de temperatura leido se va como a 2 y algo grados, seguramente funcionara con otro integrado pero beuno ahi ya viste los resultados que obtuve con ambas librerias y con el mismo integrado :mrgreen:

un saludo
.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Libreria DS1820
« Respuesta #7 en: 17 de Diciembre de 2007, 20:25:51 »
Yo aun estoy esperando el pedido de los DS1820, pero en el proteus funciona de lujo.

La libreria no la hice yo, la saque de otro foro, pero me pareció buena idea colgarla aqui.

1 saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria DS1820
« Respuesta #8 en: 18 de Diciembre de 2007, 00:10:53 »
valga la aclaracion :mrgreen: jeje

si muy buena idea colocarlo aquie, jeje porque talvez ni lo hubiera intentado buscar en otrso lados, jeje
todo lo busco por aca y si no encuentro ni modo, jejeje, si es muy urgente lo busco pòr el san google, jeje

un saludo, gracias por el aporte
.

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: Libreria DS1820
« Respuesta #9 en: 25 de Diciembre de 2007, 16:35:57 »
Es posible que esta librería sólo funcione con el DS1820  y no en el DS18S20 ??????
Tengo un DALLAS 18S20p, he probado esta librería y a mi no me funciona, me da una temperatura disparatada -0.25.
Ni que decir tiene que tiene conectada su resitencia de 4K7 a Vdd en su linea de datos como dice el datasheet .

Gracias de antemano, saludos y felices fiestas.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria DS1820
« Respuesta #10 en: 26 de Diciembre de 2007, 16:35:23 »
probaste tambien con la libreria que dejo maxluis??

ya que hay una linea en la libreria que dice:

// Calculation for DS18B20 with 0.1 deg C resolution (se que no es tu integrado pero, nose talvez sean compatibles)

que esta comentada, dependiendo de cual uses cambias la linea comentada, talvez te sirva, nose, prueba y nos avisas
.

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: Libreria DS1820
« Respuesta #11 en: 27 de Diciembre de 2007, 14:07:56 »
Sí que la probé pero nada de nada empiezo a pensar que el sensor está defectuoso.
He probado con todas las recomendaciones de este hilo con sus respectivos códigos:

 http://www.todopic.com.ar/foros/index.php?topic=17216.msg115490#msg115490

Sigue mostrándome temperaturas disparatadas . Tengo otro DS18S20 por ahí, así que voy a buscarlo primero y después a probarlo a ver si consigo algo.
Saludos.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Libreria DS1820
« Respuesta #12 en: 02 de Enero de 2008, 21:09:23 »
Hola pelusac: ¿Estas usando interrupciones en tu programa? el DS1820 no puede ser interrumpido mientras esta realizando la conversión.

1 saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Libreria DS1820
« Respuesta #13 en: 03 de Enero de 2008, 00:03:59 »
caray, eso no lo habria pensado, entonces a deshabilitar interrupciones cuando se lea el ds1820 :mrgreen:
.

Desconectado pelusac

  • PIC16
  • ***
  • Mensajes: 118
Re: Libreria DS1820
« Respuesta #14 en: 03 de Enero de 2008, 17:44:16 »
Hola, no he utilizado ninguna interrupción. He usado el código de ejemplo propuesto por Micro_pepe unos post más arriba.
Todavía no he encontrado el otro DS18S20 así que no he podido probar con otro sensor.
Saludos


 

anything