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