Autor Tema: DS1620  (Leído 4058 veces)

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

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
DS1620
« en: 07 de Septiembre de 2005, 13:47:00 »
Alguien podria, por favor, indicarme si existe una libreria para manejar el integrado sensor de temperatura DS1620. Y si existe me la puede enviar.

Salud2




Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: DS1620
« Respuesta #1 en: 08 de Septiembre de 2005, 01:48:00 »
Despues de varios dias de mi pregunta nadie ha respondido, creo que debo dar por hecho que dicha libreria no existe.

Salud2

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: DS1620
« Respuesta #2 en: 08 de Septiembre de 2005, 04:26:00 »
Krustal yo tngo por aquí algunos de esos, si nos animamos podemos hecharlo andar juntos ... de todas maneras buscaré un poco antes por si nos ahorra el trabajo Vacilando
Si juegas contra el mejor, pierdes como los demás.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: DS1620
« Respuesta #3 en: 08 de Septiembre de 2005, 08:06:00 »
Perdon, pero en el CCS viene una libreria para el DS1621, son muy diferentes entre si ??
Porque tal vez puedan adaptarlas...
Yo hice eso para el MCP3204, utilizando la del MCP3208....Sonrisa GiganteSonrisa GiganteSonrisa Gigante
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: DS1620
« Respuesta #4 en: 08 de Septiembre de 2005, 10:17:00 »
Ahora mismo corro a mirar los datasheets Sonrisa Gigante

Pues entre otras cosas, (esta de bastante peso ...), uno es por I2C y el otro tiene protocolo propio creo Enfurruñado

Edito:

¡¡Si lo se antes sampleo el DS1621 en vez del 20!! Helado

(Suerte que tb tengo algunos DS1624, que son parecidos pero en vez de termostato son sensor de temp + memoria Avergonzado)
Si juegas contra el mejor, pierdes como los demás.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: DS1620
« Respuesta #5 en: 08 de Septiembre de 2005, 10:36:00 »
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: DS1620
« Respuesta #6 en: 09 de Septiembre de 2005, 21:49:00 »
Muy buena informacion la del foro de CCS. Me parece que es necesario construir una libreria para el integrado, lamentablemente no cuento con el tiempo para dedicarme a hacer eso tengo que terminar un proyecto para una feria tecnologica en que voy a participar. Salvare el problema usando lo mas simple y util que logre reunir

Gracias y Salud2

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: DS1620
« Respuesta #7 en: 10 de Septiembre de 2005, 05:59:00 »
Navegando por los link"s que ofreci en el anterior mensaje me encontre un .pdf del ds1620, vamos su libreria....yo no la he provado aunque pienso hacerlo(en cuanto termine con la serie I2C jeje) aqui os la podeis descargar la libreria ds1620:
http://miarroba.com/foros/ver.php?foroid=348538&temaid=3581236

PD: Yo no la he provado asi que no se si funciona o no...de todas formas lei en el foro de CCS que modificando algunas cositas de la libreria del ds1302 funcionaria correctamente....Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: DS1620
« Respuesta #8 en: 10 de Septiembre de 2005, 07:53:00 »
hehe el ds1620 es unwire e el 21 es i2c la entrenadora mia tiene uno dessos e para probar programe un pic16f628 con la libreria que viene en el foro de ccs realmente funciona pero no da la temperactura correcta solo me da 3.0 grados si lo caliento um poco se verificam cambios en la lectura tal como mustra cambios en la lectura si le meto frio va asta -2 grados creo que seria cosa de ajustar um poco el codigo pero esso lo dejo a los professores e maestros que si le pego yo seguro que lo ago esplotar Sonrisa Gigante


edito porque e metido la pata hehe el mio no es un 1620 sino 1820 este si que es unwire perdon Helado

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: DS1620
« Respuesta #9 en: 10 de Septiembre de 2005, 08:28:00 »
Ayer estube con nocturno mirando la libreria del DS1624 que no iba fina,  pero una vez arreglada, este sensor es impresionante, 0.03ºC de resolución Sonrisa Gigante

Todavia no lo he podido poner a temperaturas negativas porque por mucho hielo que le acerce y le pose con el papel de plata no baja de 3ºC Muchas risas, supuestamente llega hasta -55ºC.

¿Alguien tiene una gotita de nitrógeno líquido? AvergonzadoAvergonzadoAvergonzadoHelado
Si juegas contra el mejor, pierdes como los demás.

Desconectado nordestenica

  • PIC16
  • ***
  • Mensajes: 215
RE: DS1620
« Respuesta #10 en: 10 de Septiembre de 2005, 10:23:00 »
hehe radon tienes nieve en spray yo la uso en el talher e te baja de 20 grados a -20 o menos en menos de um segundo el bote vale unos 6€

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: DS1620
« Respuesta #11 en: 10 de Septiembre de 2005, 11:23:00 »
Joer, que pasada, ¿donde venden esas cosas? RollEyes
Si juegas contra el mejor, pierdes como los demás.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: DS1620
« Respuesta #12 en: 10 de Septiembre de 2005, 12:06:00 »
Bueno y aqui otra mas que me encontre no se donde.....jeje tampoco esta provada pero le metere mano a la anterior y a esta haber si funcionan:

// Define DS1620 interface pins
#define DQ PIN_B2     // Wire rb2 to pin #1 on DS1620
#define CLKD PIN_B3   // Wire rb3 to pin #2 on DS1620
#define RST PIN_B4    // Wire rb4 to pin #3 on DS1620


// DS1620 & temp related function prototypes
void write_1620(byte cmd);  // write to DS1620
void init_1620(void);       // initialize DS1620
void read_temp(void);       // read temp from DS1620
void convert(void);         // convert C to F then to BCD for display
void ouch(void);            // display OUCH when >= high temp setpoint
char toBCD(char bin_val);   // conversion to BCD



// write a byte to the DS1620
void write_1620(byte cmd)
{
   byte i;

   for(i=0; i<8; i++)
   {
     output_low(CLKD);
     output_bit(DQ, shift_right(&cmd,1,0));
     output_high(CLKD);
   }
}

// initialize the DS1620
void init_1620(void)
{
   // set CLK and RST to correct states
   output_high(CLKD);
   delay_us(2);
   output_low(RST);

   // set DS1620 config to continuous convert
   // and CPU communications mode
   output_high(RST);
   write_1620(0x0C);           // send Write Config command
   write_1620(0x02);           // configure for CPU mode, continuous convert
   output_low(RST);

   // start conversion
   output_high(RST);
   write_1620(0xEE);           // send Start Convert command
   output_low(RST);
}

// read & display temperature from DS1620.
void read_temp(void)
{
   byte i;

   output_high(RST);
   write_1620(0xAA);          // send Read Temp command

   temp_data = 0;             // clear temp_data on entry

   for(i=0; i<9; i++)         // loop for 9-bits
   {
     output_low(CLKD);
     temp_data = temp_data >> 1;
     if (input(DQ))
     {
        temp_data = temp_data | 0x100;
     }
     output_high(CLKD);
   }

   temp_data = temp_data/2;      // convert temp_data to whole deg C

   output_low(RST);

   convert();                    // convert C to F then to BCD

   if (temp_r >= setpoint)       // if temp >= setpoint display OUCH
   {
      ouch();                    // call OUCH function if temp >= high setpt
      return;                    // do not update temp display when temp >= setpt
   }

   enable();                     // enable SLED4C data entry
   send_byte(0b11001011);        // digits 5,4,2 HEX decode. Digits 3,1 special
   disable();                    // write config value into config register

   delay_ms(1);                  // short pause between config & display reg write

   enable();                     // enable SLED4C data entry
   send_nib(0x00);               // DIM display + DP"s off
   send_byte(temp_r);            // display temp on digits 5/4
   send_byte(0xFF);              // display Deg F on digits 3/2
   send_nib(0x00);               // turn colon off
   disable();                    // write data into display registers
   delay_ms(2000);               // wait 2 seonds between temp & time updates
}

// convert temp from deg C to deg F, then pass
// to BCD conversion conversion function
void convert(void)
{
   temp_data = (temp_data * 9/5)+32; // convert C to F
   temp_r = toBCD(temp_data);        // convert to BCD for display
}
// this function converts an 8 bit binary value
// to an 8 bit BCD value. Input range from 0 to 99.

char toBCD(char bin_val)
{
   char temp;
   char retval;

   temp = bin_val;
   retval = 0;

   while(1)
   {
   // get tens digit by multiple subtraction
   // of 10 from bin_val
      if(temp >= 10)
      {
         temp -= 10;
         retval += 0x10; // increment tens digit
      }
         else            // get ones digit by adding remainder
      {
         retval += temp; // adjusted result
         break;
      }
   }
         return(retval);
}
// say the temperature
void say_temp(void)
{
   printf("say=the temperature iz %Ld degrees faren hyte;",temp_data);
   delay_ms(2000);          // allow time for message to play
}                           // adjust as required for message length

Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: DS1620
« Respuesta #13 en: 19 de Octubre de 2005, 06:12:00 »
Holaa ke tal!!! bueno estaba aburrido en el avion y decidi hacer un apaño del la libreria ds1302.c del CCS y adaptarla para el dispositivo ds1620, aqui esta:

///////////////////////////////////////////////////////////////////////////////////
///      VsZeNeR"05                     ///
///         15/Octubre/05                     ///
///                              ///
///   Libreria: DS1620.C    Compilador: CCS               ///
///   Version: 0.0                        ///
///                              ///
///     Notas: Controlador para temperatura del dispositivo ds1620         ///
///            de Dallas Instruments                                       ///
///                                ///
///   Funciones:   ds1620_init()     -> inicializacion del dispositivo   ///
///         read_ds1620(0xAA) -> obtiene la temperatura        ///
///                                                                        ///
///     ·Libreria inspirada del archivo del compilador CCS ds1302.c             ///
///   ·Libreria solamente provada en simulador PROTEUS         ///
///////////////////////////////////////////////////////////////////////////////////


#ifndef DS1620_DQ

#define DS1620_DQ      PIN_B5   //declaracion...
#define DS1620_CLK      PIN_B6   
#define DS1620_RST      PIN_B7   //...de pines

#endif

void write_ds1620_byte(BYTE cmd) {
   BYTE i;

   for(i=0;i<=7;++i) {
      output_bit(DS1620_DQ, shift_right(&cmd,1,0) );
      output_high(DS1620_CLK);
      output_low(DS1620_CLK);
   }
}

void write_ds1620(BYTE cmd, BYTE data) {

   output_high(DS1620_RST);
   write_ds1620_byte(cmd);
   write_ds1620_byte(data);
   output_low(DS1620_RST);
}

BYTE read_ds1620(BYTE cmd) {
   BYTE i,data;

   output_high(DS1620_RST);
   write_ds1620_byte(cmd);

   for(i=0;i<=7;++i) {
      shift_right(&data,1,input(DS1620_DQ));
      output_high(DS1620_CLK);
      delay_us(2);
      output_low(DS1620_CLK);
      delay_us(2);
   }
   output_low(DS1620_RST);

   return(data/2);
}

void ds1620_init() {
   BYTE x;
   output_low(DS1620_RST);
   delay_us(2);
   output_low(DS1620_CLK);
   write_ds1620(0x8e,0);
   write_ds1620(0x90,0xa6);
   x=read_ds1620(0x81);
   if((x & 0x80)!=0)
     write_ds1620(0x80,0);
}

Repito esta muyyyy BETA haber si tengo tiempo de ponerla perfect! pero de momento funciona, eso si solamente provada en PROTEUS! aqui os dejo el enlace para bajarsela: http://miarroba.com/foros/ver.php?foroid=348538&temaid=3740041
Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: DS1620
« Respuesta #14 en: 19 de Octubre de 2005, 19:39:00 »
Excelente una libreria la voy a probar en un circuito real, al final termine usando el LM35 para medir temperatura ambiente mucho mas sencillo de manejar pero menos sensible en la medicion.


Saludos.