# Interfaz Termómetro y Termostato USB HID



## vl4dx (Jul 19, 2012)

La siguiente interfaz fue diseñada para practicar con el sensor de temperatura DS1631 en la cual podemos ver la temperatura , configurar el termostato, acceder a su configuración  mediante i2c, a travez de un microcontrolador Pic18f4550 , Pic18f2550 o similar















EL circuito es el siguiente






en donde podemos podemos modificar los pines A0,A1,A2 - en el software se configura la dirección


Parte del código del PIC,  si deseamos modificar el codigo solo hay que tener en cuenta  recibe[1] tiene que ser los mismos valores que se muestran ya que el programa de la pc los envia de esa forma


```
[COLOR="Green"]#include     <18F4550.h>
#fuses       NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use         delay(clock=48000000)
#use         i2c(Master,sda=PIN_B0,scl=PIN_B1)
#include     <pic18_usb.h>                  
#include     <APLICACION_HID.h>             
#include     <Descriptor_easyHID.h> 
#include     <USB.c>  
#include     <TEMP_ds1621.c.encrypted>
//#include     <ds3232.c> 
#use         fast_io(c)
void main(void){
///////////////////////////////////////////////////////////////////////////////
// DECLARACION DE VARIABLES
///////////////////////////////////////////////////////////////////////////////
   int8  recibe[USB_EP1_RX_SIZE];
   int8  envia[USB_EP1_TX_SIZE];
   int8  datah;
   int8  datal;
   int8  adress=7;
///////////////////////////////////////////////////////////////////////////////
// CONFIGURACION DE PUERTOS
///////////////////////////////////////////////////////////////////////////////
//   set_tris_b(0xFF);
//   set_tris_c(0b01000000);
///////////////////////////////////////////////////////////////////////////////   
// CONFIGURANDO DS1631 (SENSOR DE TEMPERATURA)
///////////////////////////////////////////////////////////////////////////////
   init_temp(adress);
   config_temp(adress,0b01101110);//Configuration Registers
///////////////////////////////////////////////////////////////////////////////
// CONFIGURANDO DS3232 (REAL TIME CLOCK)
///////////////////////////////////////////////////////////////////////////////
//   ds3232_init();
//   DS3232_setTime(1,59,30);
//   DS3232_setDate(3,3,+--3,3);
/////////////////////////////////////////////////
//   setup_adc_ports(AN0); // Configura canales usados por el ADC.
//setup_adc(ADC_CLOCK_DIV_64);
///////////////////////////////////////////////////////////////////////////////
// CONFIGURACION DE USB
///////////////////////////////////////////////////////////////////////////////
  usb_init();
  usb_task();  
  usb_wait_for_enumeration();

    while (TRUE)                                                       
    {
         recibe[1]=0;
         if(usb_enumerated())                                            
         {
            delay_ms(100);
            read_full_temp(adress,datah,datal);
            datal=datal>>4;
            envia[1]=datah;
            envia[2]=datal;
            //Enviando paquete USB
            usb_put_packet(1, envia, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE); 

         if (usb_kbhit(1))
         {  
            //Recibiendo paquete USB
            usb_get_packet(1, recibe, USB_CONFIG_HID_RX_SIZE);
            //Configuracion del DS1631
            if (recibe[1]==10)//configuracion de thermostato
            {
               write_TH(adress,recibe[2],recibe[4]<<4);
               write_TL(adress,recibe[3],recibe[5]<<4);  
            }
            if (recibe[1]==11)//configuracion de sensor
            {
               adress=recibe[2];
               init_temp(recibe[2]);
               config_temp(recibe[2],recibe[3]);
            }
            
         }
      
         }
   }
}
[/COLOR]
```
Programa C# (requiere net 3.5) solo el ejecutable
Programa pic hex + source code​


----------



## GNM (Nov 26, 2012)

Muy buen proyecto amigo, solo un apregunta como haces para agregar esos controles en visual, porque yo uso labview pero e leido que visual es mas potente y me gustaria, adentrarme mas en visual pero con ese tipo de controles gracias, y nuevamente felicidades por tu proyecto te quedo de 10


----------



## Fogonazo (Nov 26, 2012)

vl4dx dijo:


> La siguiente interfaz fue diseñada para practicar con el sensor de temperatura DS1631 en la cual podemos ver la temperatura , configurar el termostato, acceder a su configuración  mediante i2c, a travez de un microcontrolador Pic18f4550 , Pic18f2550 o similar. . .



No había visto este tema, *! Gracias por el aporte ¡*


----------



## Adelson (Nov 28, 2012)

Gracias vl4dx , proyecto excelente.


----------



## vl4dx (Dic 26, 2012)

GNM dijo:


> Muy buen proyecto amigo, solo un apregunta como haces para agregar esos controles en visual, porque yo uso labview pero e leido que visual es mas potente y me gustaria, adentrarme mas en visual pero con ese tipo de controles gracias, y nuevamente felicidades por tu proyecto te quedo de 10



Gracias, lo de los controles se desarrollan mediante gdi (Graphics Device Interface)


----------



## bronce (Abr 10, 2013)

hola que tal, primeramente quiero saludarles, tengo dudas del mi ccs compiler(programa), acabo de descargar los dos link de es tema, por que tengo desde el viernes que no logrado hacer comunicacion Usb con el 18f4550, me he bajado como 4 ejemplos(usb para pic 18f4550) y antes de compilar con el ccs compiler me funcionan, y despues de hacer ya no funcionan me marca errores, voy anexar la imagen para ver si me pueden ayudar con este problema, haaa y  tambien me aparece lo mismo en la lap, estoy llegando a la conclusion que de el programa CCS compiler no es el problema, les pedire de favor que compilen este ejemplo y publiquen un print screen y asi poder ir descartando posibles causas


----------



## vl4dx (Abr 15, 2013)

que version de CCS estas usando.. para que te funcione correctamente el usb tienes que tener puesto el sensor tal y como se muestra en el esquematico, caso contrario tienes que qiutar el codigo relacionado con el sensor ya que antes se inicializa el sensor y si no hay respuesta la comunicacion USB no se lleva acabo


----------



## acj8991 (Jul 19, 2013)

hola esta exelente tu post....
Sera possible subir el codigo fuente del C# si no es mucha molestia...


----------



## ETTORE (Jun 19, 2014)

¿y como se puede hacer inalámbrico es vez de conectarla directamente a la pc?


----------

