Interfaz Termómetro y Termostato USB HID

#1
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

Código:
[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​
 

Adjuntos

Última edición por un moderador:
#2
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

Exorcista & Moderador eventual
#3
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 ¡
 
#5
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)
 
#6
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
 

Adjuntos

Última edición:
#7
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
 

Temas similares

Arriba