Autor Tema: Medidor de Energía con ADE7753  (Leído 28179 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Simon21

  • PIC18
  • ****
  • Mensajes: 302
Re: Medidor de Energía con ADE7753
« Respuesta #30 en: 17 de Octubre de 2011, 17:19:10 »
Agradeceria pudieras compartir tus experiencias con el ADE ...
Saludos

INGENIERIA ELECTRONICA
UNIVERSIDAD TECNOLOGICA NACIONAL

Desconectado bondadoso

  • PIC10
  • *
  • Mensajes: 16
Re: Medidor de Energía con ADE7753
« Respuesta #31 en: 25 de Octubre de 2011, 17:55:05 »
este tema me parece realmente interesante, ya tengo en mi poder dos ade7753. espero mas foreros se unan a este proyecto :)

Desconectado bondadoso

  • PIC10
  • *
  • Mensajes: 16
Re: Medidor de Energía con ADE7753
« Respuesta #32 en: 25 de Octubre de 2011, 20:34:26 »
a bigluis: al compilar tu codigo en la siguiente linea:
#byte   POSTDEC0=   getenv("SFR:POSTDEC0")
me aparece lo siguiente: A #DEVICE required for this line

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Medidor de Energía con ADE7753
« Respuesta #33 en: 26 de Octubre de 2011, 15:56:38 »
a bigluis: al compilar tu codigo en la siguiente linea:
#byte   POSTDEC0=   getenv("SFR:POSTDEC0")
me aparece lo siguiente: A #DEVICE required for this line


Esa linea solo es util si estas utilizando un PIC18. Es decir, si no me equivoco tu problema es que estas utilizando un PIC16.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado bondadoso

  • PIC10
  • *
  • Mensajes: 16
Re: Medidor de Energía con ADE7753
« Respuesta #34 en: 26 de Octubre de 2011, 16:06:59 »
busque un poco y al parecer era porque el ccs intentaba compilar el driver como main, cree un nuevo proyecto y se arreglo pero no tengo la libreria puertos.c espero la puedas compartir.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Medidor de Energía con ADE7753
« Respuesta #35 en: 26 de Octubre de 2011, 19:23:03 »
Lo siento, esa libreria ya tiene mucho rato en el foro pero ovide mencionarlo.

Por aqui el enlace:
http://www.todopic.com.ar/foros/index.php?topic=30662.0
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado xybonier

  • PIC10
  • *
  • Mensajes: 2
Re: Medidor de Energía con ADE7753
« Respuesta #36 en: 14 de Noviembre de 2011, 02:41:48 »
se que el tema es un poco viejo pero alguien me podria dar una mano con el ade7758 o el 53 no soy muy bueno con los pic pero estoy aprendiendo es para la tesis ya ley la hoja de datoa y tengo el circuito para probar y megustaria leer y escrivir en el si no es mucha molestia espero que me puedan ayudar

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Medidor de Energía con ADE7753
« Respuesta #37 en: 14 de Noviembre de 2011, 10:52:30 »
 :shock: Que manera de escribir!  :tongue:  Revisa el siguiente tema, allí Simon comenta como ha trabajado para establecer comunicación con un ADE. Es un proyecto de tesis, así que tenes que estudiar bastante, microcontrolador, lenguaje usado, datasheet del ADE... Hay para rato  :mrgreen:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado xybonier

  • PIC10
  • *
  • Mensajes: 2
Re: Medidor de Energía con ADE7753
« Respuesta #38 en: 16 de Noviembre de 2011, 01:52:20 »
gracias suky la verdad tengo la cabeza dando bentas contantascosas pero leere el en lace que me pro pones gracias por la pronta respuesta y el enlace

Desconectado Simon21

  • PIC18
  • ****
  • Mensajes: 302
Re: Medidor de Energía con ADE7753
« Respuesta #39 en: 26 de Febrero de 2012, 21:26:21 »
Hola a todos !!
Alguien pudo hacer algo con el ADE7758, o probar el código
de bigluis del ADE7753 ??
Saludos
INGENIERIA ELECTRONICA
UNIVERSIDAD TECNOLOGICA NACIONAL

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Medidor de Energía con ADE7753
« Respuesta #40 en: 18 de Abril de 2012, 20:42:39 »
Hola como estan? estoy intentando hacer andar el ade7753 con un dspic30f3013, intento compilar el codigo, haciendo las modificaciones pertinentes, pero no recibo nada por el spi, las conexiones fisicas estan bien, pero realmente no puedo hacer andarlo

adjunto los archivos
agradeceria su rta.  :lol:
« Última modificación: 20 de Abril de 2012, 11:37:09 por tincho_a »

Desconectado albertosedes

  • PIC10
  • *
  • Mensajes: 2
Re: Medidor de Energía con ADE7753
« Respuesta #41 en: 26 de Abril de 2012, 07:02:07 »
Hola,
Estoy usando la placa de Olimex chile basada en el ADE7753. Arduino Energy Shield.

El problema es que no consigo realizar una buena calibración.

Alguién tiene conocimientos orientados a su calibración.  Gracias.
"Buscas la alegría en torno a ti y en el mundo". No sabes que sólo nace en el fondo de tu corazón?

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Medidor de Energía con ADE7753
« Respuesta #42 en: 26 de Abril de 2012, 13:53:05 »
 :-/ Excelente circuito lo único malo que no tienen distribuidores en USA y el envío cuesta casi 17 dls.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado tincho_a

  • PIC10
  • *
  • Mensajes: 14
Re: Medidor de Energía con ADE7753
« Respuesta #43 en: 23 de Mayo de 2012, 20:43:36 »
Adjunto codigo de un ADE7753 implementado funcionando, NO simulado.
Falta la calibracion de los registros pero funciona.  ((:-))

#include <30F3013.h>



#fuses XT, PR, NOWDT, NOPROTECT, NOWRT, NOMCLR,NOBROWNOUT
#use delay(clock=3582056)

#use rs232(UART2, baud=9600, xmit=PIN_F5, rcv=PIN_F4, parity=N, bits=8)


#define SDO PIN_F3
#define SCK PIN_F6
#define SDI PIN_F2
#define CS  PIN_D8

#define LEDV PIN_D9
#define LEDR PIN_C14
 

///////////////////////////////////////////////////
//Definición de direción de registros del ADE7753
///////////////////////////////////////////////////

//Direcciones de Registro de Lectura
/// si empieza en 0 leo
//#define RESERVED   0x00 // No utilizado
#define   WAVEFORM     0x01   //24
#define   AENERGY      0x02   //24
#define   RAENERGY     0x03   //24
#define   LAENERGY     0x04   //24
#define   VAENERGY     0x05   //24
#define   RVAENERGY    0x06   //24
#define   LVAENRGY     0x07   //24
#define   LVARENERGY   0x08   //16
#define   MODE         0x09   //16
#define   IRQEN        0x0A   //16
#define   STATUS       0x0B   //16
#define   RSTSTATUS    0x0C   //16
#define   CH1OS        0x0D   //8
#define   CH2OS        0x0E   //8
#define   GAIN         0x0F   //8
#define   PHCAL        0x10   //6
#define   APOS         0x11   //16
#define   WGAIN        0x12   //12
#define   WDIV         0x13   //8
#define   CFNUM        0x14   //12
#define   CFDEN        0x15   //12
#define   IRMS         0x16   //24
#define   VRMS         0x17   //24
#define   IRMSOS       0x18   //12
#define   VRMSOS       0x19   //12
#define   VAGAIN       0x1A   //12
#define   VADIV        0x1B   //8
#define   LINECYC      0x1C   //16
#define   ZXTOUT       0x1D   //12
#define   SAGCYC       0x1E   //8
#define   SAGLVL       0x1F   //8
#define   IPKLVL       0x20   //8
#define   VPKLVL       0x21   //8
#define   IPEAK        0x22   //24
#define   RSTIPEAK     0x23   //24
#define   VPEAK        0x24   //24
#define   RSTVPEAK     0x25   //24
#define   TEMP         0x26   //8
#define   PERIOD       0x27   //16
#define   TMODE        0x3D   //8
#define   CHKSUM       0x3E   //6
#define   DIEREV       0x3F   //8

//Direcciones de Registro de Escritura
//con 0x1 escribo
//#define RESERVED   0x00 // No utilizado

#define   _MODE         0x89   //16
#define   _IRQEN        0x8A   //16
#define   _CH1OS        0x8D   //8
#define   _CH2OS        0x8E   //8
#define   _GAIN         0x8F   //8
#define   _PHCAL        0x90   //6
#define   _APOS         0x91   //16
#define   _WGAIN        0x92   //12
#define   _WDIV         0x93   //8
#define   _CFNUM        0x94   //12
#define   _CFDEN        0x95   //12
#define   _IRMSOS       0x98   //12
#define   _VRMSOS       0x99   //12
#define   _VAGAIN       0x9A   //12
#define   _VADIV        0x9B   //8
#define   _LINECYC      0x9C   //16
#define   _ZXTOUT       0x9D   //12
#define   _SAGCYC       0x9E   //8
#define   _SAGLVL       0x9F   //8
#define   _IPKLVL       0xA0   //8
#define   _VPKLVL       0xA1   //8
#define   _TMODE        0xBD   //8

#define tpo_lect_esc  1
#define tpo_esp       5

////////////////////////////////////////
//ESCRITURA SPI del ADE
////////////////////////////////////////

void escribir(int8 dato)
{
int8 datoaux_esc=0x00;
int8 i;

datoaux_esc=dato;

for(i=1; i<=8; ++i){

output_high(SCK);
delay_us(2);     
output_bit(SDO,shift_left(&datoaux_esc,1,0));
delay_us(8);
output_low(SCK);
delay_us(10);
}

}

/////////////////////////////////////////
///LECTURA SPI del ADE
/////////////////////////////////////////

int8 leer()
{

int8 datoaux_lec;
int8 i;

for(i=1; i<=8; ++i){

output_high(SCK);
delay_us(5);
shift_left(&datoaux_lec,1,input(SDI));
delay_us(5);
output_low(SCK);
delay_us(10);
}
return(datoaux_lec);
}



/////////////////////////////////////////
///PROGRAMA PRINCIPAL
/////////////////////////////////////////

int8 datoL[64]; // arreglo de datos de registros de Lectura
int8 datoE[64]; // arreglo de datos de registros de Configuracion
int8 cont=0x00;
int8 band1=0x00;
int8 selec=0x00;
int8 bandz=1;
int8 i=0;

void main(void)
{
char a;
   output_low(SCK); 
   output_high(CS); 
   
   output_high(LEDV);             
   output_low(LEDR);


   output_low(LEDV);
    output_high(LEDR);         // leds de prueba
 
  /////////////////////////////////////////////////////////////////////////////
   while (TRUE)
   {
      /////////////////////////////////////////////////////////////////////////////
  //////////////////////////CONFIGURO MODO DEL ADE//////////////////////////////
            output_low(CS);
            delay_us(tpo_esp);
            escribir(_MODE);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            escribir(0x60);            // 01100000 en binario selecciono chanel 2 solamente lo demas en default
            delay_ms(tpo_lect_esc);
            escribir(0x28);         //00101000 disable SAG output selecciono para medir temp(bit 5)
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
  /////////////////////////////////////////////////////////////////////////////
  //////CONF INTERRUP para sincronizar con el cruce por cero///////////////////
            output_low(CS);
            delay_us(tpo_esp);
            escribir(_IRQEN);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            escribir(0x00);
            delay_ms(tpo_lect_esc);
            escribir(0x01);
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
  /////////////////////////////////////////////////////////////////////////////
 printf("\r PRESIONE 1 para leer ADE\n"); // para q no este andando en el bucle infinito lo manejo yo por hyperterminal
a=getc();
 if(a=='1')
 {
  //////////////////////////LECTURA DE TEMPERATURA//////////////////////////////       
                       
            delay_us(tpo_esp);
            escribir(TEMP);             // PIC lee al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[52]=leer();
            delay_ms(tpo_lect_esc);           
           
            output_high(CS);
            delay_us(tpo_esp);
           

  //////////////////////////LECTURA DE MODO//////////////////////////////           
           
            output_low(CS);
            delay_us(tpo_esp);
            escribir(MODE);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[1]=leer();
            delay_ms(tpo_lect_esc);
            datoL[2]=leer();
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
           
           
            output_low(CS);
            delay_us(tpo_esp);
            escribir(RSTSTATUS);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[9]=leer();
            delay_ms(tpo_lect_esc);
            datoL[10]=leer();
            delay_ms(tpo_lect_esc);
            delay_us(tpo_esp);
               //Lectura VRMS 24bits
           
            delay_ms(tpo_lect_esc);
            output_low(CS);
            delay_us(tpo_esp);
            escribir(VRMS);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[3]=leer();
            delay_ms(tpo_lect_esc);
            datoL[4]=leer();
            delay_ms(tpo_lect_esc);
            datoL[5]=leer();
            delay_ms(tpo_lect_esc);
                               
            output_high(CS);
            delay_us(tpo_esp);
           
             //Lectura IRMS 24bits
           
            delay_ms(tpo_lect_esc);
            output_low(CS);
            delay_us(tpo_esp);
            escribir(IRMS);             // PIC escribe al ADE7754
            delay_ms(tpo_lect_esc);
            datoL[6]=leer();
            delay_ms(tpo_lect_esc);
            datoL[7]=leer();
            delay_ms(tpo_lect_esc);
            datoL[8]=leer();
            delay_ms(tpo_lect_esc);
                     
            output_high(CS);
            delay_us(tpo_esp);
           
           
            printf("\rtemp:%Lx\n",datoL[52]);
            printf("\rmode:%Lx%Lx\n",datoL[1],datoL[2]);
            printf("\rVrms:%Lx%Lx%Lx\n",datoL[3],datoL[4],datoL[5]);
            printf("\rirms:%Lx%Lx%Lx\n",datoL[6],datoL[7],datoL[8]);
   
            delay_ms(20);// retardo de 20ms correspondiente a los 50hz
           
 }
 else /// escribo nada si me equivoque de tecla
 printf("\r NADA\n");
   } 
}

Desconectado beto1234

  • PIC12
  • **
  • Mensajes: 52
    • Osm Gps Pwa
Re: Medidor de Energía con ADE7753
« Respuesta #44 en: 01 de Junio de 2012, 14:55:12 »
 Hola tincho_a en argentina como puedo pedir estos integrados? como lo conseguiste?. Tu código se puede implementar para un pic18f4550 en ccs sin ningún cambio?

Saludos
« Última modificación: 01 de Junio de 2012, 14:58:28 por beto1234 »