Gracias Alexander Santana
Pues estoy finalizando la carrera en la unexpo puerto ordaz, y actualmente trabajo con el compilador CCS de C y con el proteus 7.6 sp4, te voy a enviar lo que he realizado para que me ayudes.
con respecto al sensor acs712 maneja corrientes directas en ac y dc de 5amp, 20 amp, 30 amp y su salida es de 0 a 5v proporcional a la entrada, es decir, a medida que incremente el consumo de corriente incrementara su voltaje de salida pero teniendo en cuenta que su limite es de 5 amp (mi caso), al pasarlo por el pic lo conviertto A/D y voy a controlar la potencia activa, proque voy a referenciar 500 kw/h y el va ser el encargado de decirme si el usuario ya sobre paso los limites de corrientes al mes . como es un prototipo va ser monofasico de 120v rms y el sensor de 5 amp. este es mi alcance hasta los momentos
#include <18f4550.h>
#fuses NOWDT,NOPROTECT,NOCPD,NOLVP,XT,NOMCLR,
#device adc=10
#use fast_io (A)
#use fast_io (B)
#use fast_io (C)
#use fast_io (D)
#use delay(clock=4000000)
#INCLUDE "lcd_c.c"
FLOAT VALOR;
FLOAT X;
VOID MAIN(VOID)
{
SET_TRIS_A(0XFF); // Puerto A como entrada
SET_TRIS_B(0X00); // Puerto B como salida
OUTPUT_A(0X00); // Limpio el puerto A
SETUP_PORT_A(AN0_ANALOG_AN3_REF); // UTILIZA CONV AN0 Y COLOCO AN3 COMO REFERENCIA
SETUP_ADC(ADC_CLOCK_INTERNAL);
lcd_init(); // Inicializa la rutina lcd
while(true)
{
set_adc_channel(0); // Especifica el canal de lectura
delay_us(10); // retardo de 10 us
valor=read_adc(); // Valor lee lo que esta en el canal seleccionado
X=(valor*5)/1023; // Multiplica valor por 5v / 1024 conversor de 10 bits
delay_ms(500); // retardo de 500 ms
printf(lcd_putc,"\f"); // indica que envia un valor float
printf(lcd_putc," P=%2.3g volt",X); // Indica que envia X 2 enteros, 3 decimales volt
delay_ms(1000); // retardo de 1000 seg
}
}
muchas gracias. y si es necesario abrie un tema lo hacemos