TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: bigluis en 30 de Abril de 2011, 00:57:47

Título: Medidor de Energía con ADE7753
Publicado por: bigluis en 30 de Abril de 2011, 00:57:47
Hola amigos de TodoPIC.

Hace algún tiempo prometi crear un nuevo tema para el dieño de un medidor de energía domiciliar, en esta ocasión decidí que el dispositivo que utilizaré como Analog Front-End (AFE) será el ADE7753 del fabricante Microchip.

Mi objetivo es utilizar este AFE en conjunto con un PIC18FXX5X que posee comunicación USB con la PC, lo que nos permite transmitir los datos almacenados durante un período de medición (Por lo general 1 mes) desde el medidor hacia la PC. A continuación muestro el diagrama del circuito que voy a montar.

(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=34614.0;attach=15633)

A continuación muestro el código que he realizado para manipular este dispositivo.

Medidor_Energia.c
Código: C
  1. #include <18f14k50.h>            //pic a utilizar
  2. #DEVICE ADC=10
  3. #include <Puertos.c>
  4. #FUSES NOWDT, INTRC_IO, NOMCLR, PLLEN, CPUDIV1, NOPCLKEN
  5. #use delay (clock=32M)         //Fosc=32Mhz
  6.  
  7. #define LCD_DATA4       PIN_C2
  8. #define LCD_DATA5       PIN_C3
  9. #define LCD_DATA6       PIN_C4
  10. #define LCD_DATA7       PIN_C6
  11. #define LCD_ENABLE_PIN  PIN_C1
  12. #define LCD_RS_PIN      PIN_C0
  13. #include <lcd.c>                  //libreria manejo lcd
  14.  
  15. #USE SPI(FORCE_HW,ENABLE=PIN_B7,)
  16. #define ADE7753_CS RB7
  17. #include "ADE7753_Driver.c"
  18.  
  19. int32 Vrms,Irms;
  20.  
  21. void main(){
  22.    TRISA=0;
  23.    TRISB=1;
  24.    SETUP_ADC_PORTS(NO_ANALOGS);
  25.    SETUP_COMPARATOR(NC_NC_NC);
  26.    SETUP_TIMER_2(T2_DIV_BY_1,3,1);
  27.    SET_PWM1_DUTY(2);
  28.    SETUP_CCP1(CCP_PWM);
  29.    setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_4 | SPI_SAMPLE_AT_END );
  30.    lcd_init();                                  //Iniciamos el LCD            
  31.    while(1){
  32.      lcd_gotoxy(1,1);                //Enviamos el Cursor a la posicion 1,1
  33.      read_ADE7753((int8)Vrms,_VRMS); //Leemos el Vrms del ADE7753
  34.      read_ADE7753((int8)Irms,_IRMS); //Leemos el Irms del ADE7753
  35.      printf(lcd_putc,"%Lu\n",Vrms);  //Imprimimos en la primera linea el valor de Vrms
  36.      printf(lcd_putc,"%Lu",Irms);    //Imprimimos en la segunda linea el valor de Irms              
  37.    }
  38. }
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 30 de Abril de 2011, 01:23:28
ADE7753_Driver.c
Código: C
  1. /****************************************************************************
  2.  
  3. Autor: Luis Alberto Vargas Tijerino.
  4.  
  5. Alias: Bigluis.
  6.  
  7. Version: 1.0
  8.  
  9. ****************************************************************************/
  10. #ifndef   ADE7753_CS
  11.    #define ADE7753_CS      RC0
  12. #endif
  13.  
  14. //The following memory locations come from the ADE7758 datasheet
  15.  
  16.          //Name      Address No. Bits
  17. #define   _WAVEFORM     0x01,3   //24
  18. #define   _AENERGY      0x02,3   //24
  19. #define   _RAENERGY     0x03,3   //24
  20. #define   _LAENERGY     0x04,3   //24
  21. #define   _VAENERGY     0x05,3   //24
  22. #define   _RVAENERGY    0x06,3   //24
  23. #define   _LVAENRGY     0x07,3   //24
  24. #define   _LVARENERGY   0x08,2   //16
  25. #define   _MODE         0x09,2   //16
  26. #define   _IRQEN        0x0A,2   //16
  27. #define   _STATUS       0x0B,2   //16
  28. #define   _RSTSTATUS    0x0C,2   //16
  29. #define   _CH1OS        0x0D,1   //8
  30. #define   _CH2OS        0x0E,1   //8
  31. #define   _GAIN         0x0F,1   //8
  32. #define   _PHCAL        0x10,1   //6
  33. #define   _APOS         0x11,2   //16
  34. #define   _WGAIN        0x12,2   //12
  35. #define   _WDIV         0x13,1   //8
  36. #define   _CFNUM        0x14,2   //12
  37. #define   _CFDEN        0x15,2   //12
  38. #define   _IRMS         0x16,3   //24
  39. #define   _VRMS         0x17,3   //24
  40. #define   _IRMSOS       0x18,2   //12
  41. #define   _VRMSOS       0x19,2   //12
  42. #define   _VAGAIN       0x1A,2   //12
  43. #define   _VADIV        0x1B,1   //8
  44. #define   _LINECYC      0x1C,2   //16
  45. #define   _ZXTOUT       0x1D,2   //12
  46. #define   _SAGCYC       0x1E,1   //8
  47. #define   _SAGLVL       0x1F,1   //8
  48. #define   _IPKLVL       0x20,1   //8
  49. #define   _VPKLVL       0x21,1   //8
  50. #define   _IPEAK        0x22,3   //24
  51. #define   _RSTIPEAK     0x23,3   //24
  52. #define   _VPEAK        0x24,3   //24
  53. #define   _RSTVPEAK     0x25,3   //24
  54. #define   _TEMP         0x26,1   //8
  55. #define   _PERIOD       0x27,2   //16
  56. #define   _TMODE        0x3D,2   //8
  57. #define   _CHKSUM       0x3E,1   //6
  58. #define   _DIEREV       0x3F,1   //8
  59.  
  60. #byte   POSTDEC0=   getenv("SFR:POSTDEC0")
  61. #byte   POSTINC0=   getenv("SFR:POSTINC0")
  62. #word   FSR0=      getenv("SFR:FSR0L")
  63.  
  64. void LFSR0(int &_val){
  65.    #asm
  66.       LFSR FSR0, &_val+2
  67.    #endasm
  68.    }
  69.  
  70. void r_ADE7753(int8 addres,int8 len){
  71.    ADE7753_CS=0;           //Desactiva CS para iniciar transmision
  72.    spi_write(addres);      //Escribe la direccion que sera leida
  73.    Delay_us(4);            //Retardo de 4us para iniciar lectura
  74.    do{
  75.       spi_write(0);        //Se envian los pulsos de lectura
  76.       POSTDEC0=spi_read(); //Se lee el dato del bufer y se almacena en la direccion del puntero
  77.    }while(--len);          //predecrementa la variable len, que almacena la longitud, hasta que sea 0
  78.    ADE7753_CS=1;           //Activa Cs para finalizar la transmicion
  79. }
  80.  
  81. void read_ADE7753(int8 &_val, _addres, _len){
  82.    LFSR0(_val);            //Cargamos el valor de la direccion de _val en el registro FSR0
  83.    r_ADE7753(_addres,_len);//Enviamos la direccion y la longitud a leer
  84. }
  85.  
  86. void write_ADE7753(int32 *val,int8 addres,int8 len){
  87.    ADE7753_CS=0;
  88.    spi_write(0x80&addres);
  89.    do{
  90.       spi_write(*val++);
  91.    }while(--len);
  92.    ADE7753_CS=1;
  93. }

Y finalmente adjunto los archivos fuentes.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Nocturno en 30 de Abril de 2011, 02:12:18
Hola Bigluis, gracias por compartirlo.
Tengo una duda: ¿esto sirve para monitorizar el consumo de un domicilio, o para monitorizar que el suministro de la red es correcto?
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 30 de Abril de 2011, 11:07:17
¿Lo has probado físicamente? ¿Como te ha ido con el tema de calibraciones de parámetros y medidas en el rango?  :rolleyes:


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 30 de Abril de 2011, 14:52:14
Hola Bigluis, gracias por compartirlo.
Tengo una duda: ¿esto sirve para monitorizar el consumo de un domicilio, o para monitorizar que el suministro de la red es correcto?

Pues el ADE esta hecho para medir el consumo de un Domicilio y el de una industria, ya que tambien mide VAR y factor de potencia, y para monitorear el suministro de red. Es decir lo puedes utilizar para lo que desees.

¿Lo has probado físicamente? ¿Como te ha ido con el tema de calibraciones de parámetros y medidas en el rango?  :rolleyes:

 :oops: Aún no lo he probado fisicamente ya que no tengo muchos de los equipos que necesito para hacerlo, es por eso que recurro a ustedes para que hagan las pruebas en físico y me avisen si funciona o no.

Los dispositivos me llegan aproximadamente dentro de un mes, y decidi ir avanzando mientras tanto debido a que solo tengo como 6 meses para terminarlo. :(
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 30 de Abril de 2011, 17:55:58
... es por eso que recurro a ustedes para que hagan las pruebas en físico y me avisen si funciona o no.

Eso creo que es imposible...  :? Sin ánimos de ofender, te puedo decir que todos disponemos de la buena voluntad de ocuparnos un par de minutos para tratar de resolver alguna duda que surja, pero no horas como para analizar algo por el estilo.  ;-)


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 30 de Abril de 2011, 17:58:43
 :) No te preocupes, ustedes me han dado mucha ayuda, con este foro he aprendido muchas cosas y seguire haciendolo.

 :-/
Título: Re: Medidor de Energía con ADE7753
Publicado por: titoanr en 06 de Junio de 2011, 23:30:43
Hola Big Luis,, me parece muy buen post.

Veo que dominas bien Proteus y programación en C para PICs.

Tengo que desarrollar un proyecto similar al tuyo, un medidor de energía, que mida Vrms, Irms, P. Activa, P. Aparente y F. P.

Encontré esta nota de aplicación y decidí basarme en ella:

http://www.analog.com/static/imported-files/application_notes/an564.pdf

Aunque la nota esta muy completa, ha sido dificil encontrar los componentes.

Conseguí el ADE7763 de Analog Devices, que es similar a tu IC; lo soldé a una base para poderlo montar en una tarjeta de pruebas (por ser SMD).

Pienso ulitizar el PIC 18F4550, una memoria EEPROM, y un LCD.

Sólo me falta la EPROMM, ya que tengo una p24C04 que es I2C y necesito la 25C04 SPI.

Tengo el sensor de AC Si85XX.. pero no me servirá y también necesito remplazarlo por un Transformador de Corriente (que he batallado para encontrarlo).

Resumiendo,, casi estoy listo para probar tu programa en físico, pero también me gustaría simularlo en Proteus antes.

Busque en las librerías y no encontre dispositivos ADE77XX. ¿cómo le hiciste para simularlo?

Nos podrías pasar el archivo de Proteus?





Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 07 de Junio de 2011, 11:20:08
Hola tito.

El archivo del medidor de energia con el codigo fuente y el esquematico aparecen en la segunda respuesta del post.

El ADE7753 no me es posible simularlo en proteus, lo que yo hago es observar el dato SPI mediante el SPI debugger y utilizo el esquema del ADE7753 para realizar las interconexiones en el PCB que hare en ARES-PROTEUS.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Robocardo en 10 de Junio de 2011, 11:51:31
Bueno Uds ya encararon el proyecto con este chip que hace todo ADE7753 mas allá de los problemas de puesta en marcha que siempre tenemos todos en estos casos.
Lo interesante y sería un proyecto aparte es armar un proyecto de medidor de energía, Vrms, Irms, etc, etc sin el aDE7753.
Si alguien está interesado, yo siempre quise trabajar en algo asi por varios motivos.
1. para proteger un dispositivo eléctrico x corriente, tal vez implementar la curva i2t y tener una protección mas eficaz, que solo fijar un setpoint de corriente.
2. Saber su coseno Phi.
3. Conocer su consumo energético, su potencia activa y reactiva

Todo esto es facilmente obtenible con este chip y a veces uno se pregunta si vale la pena reinventar la rueda cuando este chip cuesta y vean el link de DIGIKEY (http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2556716&k=ADE7753) solo 5.74 x unidad en EEUU

Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 10 de Junio de 2011, 12:10:43
Bueno Uds ya encararon el proyecto con este chip que hace todo ADE7753 mas allá de los problemas de puesta en marcha que siempre tenemos todos en estos casos.
Lo interesante y sería un proyecto aparte es armar un proyecto de medidor de energía, Vrms, Irms, etc, etc sin el aDE7753.
Si alguien está interesado, yo siempre quise trabajar en algo asi por varios motivos.
1. para proteger un dispositivo eléctrico x corriente, tal vez implementar la curva i2t y tener una protección mas eficaz, que solo fijar un setpoint de corriente.
2. Saber su coseno Phi.
3. Conocer su consumo energético, su potencia activa y reactiva

Todo esto es facilmente obtenible con este chip y a veces uno se pregunta si vale la pena reinventar la rueda cuando este chip cuesta y vean el link de DIGIKEY (http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2556716&k=ADE7753) solo 5.74 x unidad en EEUU



Mira por aquí: http://www.todopic.com.ar/foros/index.php?topic=34506.msg288408#msg288408

También tienes chips de cirrus

Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 10 de Junio de 2011, 12:57:53
Ciertamente la diferencia de Precios que se muestra en Digikey entre el MCP3909 y el ADE7753 es alta, pero cuando hablamos de comprar ambos dispositivos al fabricante en el orden de miles la diferencia resulta ser solamente de unos cuantos centavos, cosa que se ve reducida por la cantidad de esfuerzo que debes realizar ya que la tarea es bastante grande con un MCP3909.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Robocardo en 10 de Junio de 2011, 21:11:40
Tengo una consulta respecto del Riesgo Eléctrico o RE.
Cuando hablo de RE me refiero a que la conexión de corriente esta aislada pero la conexión de tensión pone posiblemente por error al Vivo en contacto con la masa del circuito, eso constituye un peligro de manipulación para el operador.
La interfaz con el PC deberia estar aislada entonces algo que no se si existe.
Dejo esta observación aunque el proyecto esta muy interesante y en lo personal buscaré como resolver este tema.
Una solución simple es usar transformador de tensión.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 10 de Junio de 2011, 21:37:22
Se puede aislar galvanicamente la comunicación SPI y la alimentación. Texas Instruments tiene dispositivos del estilo.


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: Robocardo en 11 de Junio de 2011, 15:06:26
Ya que estas en tema Suky, se consigue en Argentina este chip?
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 11 de Junio de 2011, 16:43:15
Ya que estas en tema Suky, se consigue en Argentina este chip?

Yo trabajé con el MPC3909 y CS5461A... El último conseguido mediante sample. Dispositivos de Analog nada.  :undecided:


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: miltonmc en 22 de Julio de 2011, 00:17:17
saludos a todos.
yo estoy interesado en este proyecto ya tengo el ade7753  y lo pienso usar con una lcd 2x16 y un pic 18f2550 o el 18f2680
me gustaria saber si ya alguien lo puso a funcionar y como le fue con el ade7753
gracias
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 03 de Agosto de 2011, 22:48:53
Hola a todos. Veo que estan trabajando con el ADE7753, en mi caso voy a utilizar el ADE7758 lo cual
compre 2 directamente a china a un monto de 14 dolares ambos con envío incluido.
Me llego la semana pasada luego de 1 mes y ahora voy a empezar a analizar bien la hoja de datos del
mismo. Sobre todo en la manera de leer los datos que el dispositivo mide, desde un pic.
Agradeceria si alguien tiene informacion de como leer los puertos, ya que en este caso vienen con
interfase PULSED y SPI, nunca use las mismas asi que me voy a tener que poner desde cero.
El que tenga algo de info al respecto, estare más que agradecido.
Les dejo informacion del ADE7758.

http://www.analog.com/en/analog-to-digital-converters/energy-measurement/ade7758/products/product.html

Saludos !!
Título: Re: Medidor de Energía con ADE7753
Publicado por: AcoranTf en 04 de Agosto de 2011, 07:36:28
Para el aislamiento lo mas sencillo es utilizar un transformador comun y corriente para la entrada de voltaje, la de corriente ya esta aislada si se utiliza un transformador de corriente. Para adaptar el transfo de tension, simplemente recalcular el divisor de tension de entrada, para la relacion de transformacion del transformador utilizado.
Me apunto al proyecto, a ver cuando saco un rato y lo armo.
Para quien le interese, los ADE de Analog Devices, los tienen en RS, aunque un poco caros pero para pruebas vale.

Saludos.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 25 de Agosto de 2011, 22:21:17
Alguien probo esto armando el circuito ? Alguien tiene algo parecido probado y funcionando, para entender como manejar la interfase SPI ?
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 25 de Agosto de 2011, 23:39:51
Con el ADE7753 no, con MCP3909 o CS5461 si  :mrgreen:

Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 27 de Agosto de 2011, 01:21:05
Posee interfase SPI ?? puedes explicar como funciona para acceder a los registros del micro ??
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 27 de Agosto de 2011, 10:39:02
Puedes buscar en los siguientes enlaces:

http://www.todopic.com.ar/foros/index.php?topic=35036.0

http://www.micros-designs.com.ar/trabajando-con-el-mcp3909-c-i-para-medicion-de-energia/


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 01 de Septiembre de 2011, 21:20:38
Estoy haciendo lo mismo intentando leer los registros del ADE7758...
Como hago para leer cada uno de los registros en CCS utilizando la funcion
spi_read ()  ???

Agradeceria una respuesta ya que me estoy iniciando con SPI y por el momento
renegando bastante jeje

Saludos
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 01 de Septiembre de 2011, 23:09:51
Ya probaste con el codigo que postee al inicio, ya que el ADE7753 y el ADE7758 utilizan un mecanismo de comunicacion similar, lo que cambia son los registros y alguna que otra cualidad.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 06 de Septiembre de 2011, 17:16:12
Estoy en eso... El código esta hecho en CCS ??
Voy a tener que cambiar algunas configuraciones ya que voy a usar el
16F877A por el momento..

Hay que hacer algo en particular para sincronizar ambos dispositivos?
Me refiero a la frecuencia a la que trabaja cada uno, ya que el pic
lo voy a usar con un cristal de 4 MHz y el ADE7758 lleva uno de 10 MHz.

Saludos a todos y gracias bigluis por tu aporte.. :lol:
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 06 de Septiembre de 2011, 23:28:49
a que te refieres con eso que el ade7758 usa uno de 10MHz?

Si es al la frecuencia de oscilacion, la puedes generar con un modulo ccp y la frecuencia de transmision significa que el maximo valor que puede tener es 10MHz, es decir puedes transmitir a mucho menor velocidad sin ningun problema.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 06 de Septiembre de 2011, 23:31:16
Calculo que el ADE7758 usa el cristal de 10 MHz para hacer los muestreos de la señal..
Habria que ver de cuanto hay que poner la vlocidad de la transmision SPI en la configuracion
inicial...
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis en 07 de Septiembre de 2011, 14:50:54
En la pagina 48 de la hoja de datos del ADE7753 aparece lo siguiente:

Citar
CLKIN FREQUENCY
In this data sheet, the characteristics of the ADE7753 are shown
when CLKIN frequency is equal to 3.579545 MHz. However, the
ADE7753 is designed to have the same accuracy at any CLKIN
frequency within the specified range. If the CLKIN frequency is
not 3.579545 MHz, various timing and filter characteristics need
to be redefined with the new CLKIN frequency. For example,
the cutoff frequencies of all digital filters such as LPF1, LPF2, or
HPF1, shift in proportion to the change in CLKIN frequency
according to the following equation:

(http://img206.imagenar.com/206/3af90a9d/fe9d6c87/ecuacion.png) (http://imagenar.com/i/ecuacion/nBy)

Eso significa que debes conectar un cristal de 3.579545 MHz o puedes poner cualquier otra frecuencia parecida. Por ejemplo, puedes ponerle una frecuencia de 4MHz generada con un modulo CCP y despues realizar la correccion del margen de error.
Título: Re: Medidor de Energía con ADE7753
Publicado por: MossGallagher en 04 de Octubre de 2011, 16:40:26
Hola que tal amigos de todoPic. En estos momentos yo me encuentro trabajando con dicho dispositivo, el cual me esta funcionando perfectamente, escribo datos en el ADE7763 y recibo datos del mismo a través de un PIC16F877A, sin embargo la verdadera proesa de este circuito se encuentra en calibrarlo, es decir el ADE envía un dato al pic sin embargo este dato debe ser leído por el pic y traducirlo en Wh/LSB. Como mencione me encuentro trabajando en ello, si alguien esta interesado en compartir información con gusto le comparto mis experiencias. Por cierto utilice lenguaje PicBasic.
Saludos
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 17 de Octubre de 2011, 17:19:10
Agradeceria pudieras compartir tus experiencias con el ADE ...
Saludos

Título: Re: Medidor de Energía con ADE7753
Publicado por: bondadoso 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 :)
Título: Re: Medidor de Energía con ADE7753
Publicado por: bondadoso 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
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis 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.
Título: Re: Medidor de Energía con ADE7753
Publicado por: bondadoso 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.
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis 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 (http://www.todopic.com.ar/foros/index.php?topic=30662.0)
Título: Re: Medidor de Energía con ADE7753
Publicado por: xybonier 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
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 14 de Noviembre de 2011, 10:52:30
 :shock: Que manera de escribir!  :tongue:  Revisa el siguiente tema (http://www.todopic.com.ar/foros/index.php?topic=28952.msg299382#msg299382), 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!
Título: Re: Medidor de Energía con ADE7753
Publicado por: xybonier 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
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 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
Título: Re: Medidor de Energía con ADE7753
Publicado por: tincho_a 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:
Título: Re: Medidor de Energía con ADE7753
Publicado por: albertosedes 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.
Título: Re: Medidor de Energía con ADE7753
Publicado por: bigluis 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.
Título: Re: Medidor de Energía con ADE7753
Publicado por: tincho_a 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");
   } 
}
Título: Re: Medidor de Energía con ADE7753
Publicado por: beto1234 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
Título: Re: Medidor de Energía con ADE7753
Publicado por: tincho_a en 01 de Junio de 2012, 14:58:04
Beto, desgraciadamente en argentina estos bichitos no los consegui, los hice traer de usa (por el tema de las importaciones). definitivamente el codigo se puede aplicar a un pic18f, con ccs haciendo las modificaciones pertinentes, yo lo tengo implementado en dspic 30f y simon lo implemento en un 16f asiq debe andar en todos los otros saludos y esperamos tu aporte
Título: Re: Medidor de Energía con ADE7753
Publicado por: beto1234 en 01 de Junio de 2012, 15:03:20
 Estamos arruinado con el tema de las importaciones y el dolar  :5].
 Me podrías dar el link de donde compraste en USA y como hiciste para que te lo envíen y el pago es por deposito?, cuanto es la cantidad mínima?.
 Como te llega a tu casa? por correo?.

Saludos
Título: Re: Medidor de Energía con ADE7753
Publicado por: tincho_a en 01 de Junio de 2012, 15:06:03
beto desgraciadamente no te puedo dar eso por q lo hice comprar por alguien alla y me lo trajo personalmente, habria q ver si en la pagina de analog no te los venden, por q los vendedores "oficiales" de argentina me dijieron q no los traian y menos los importaban asiq desgraciadamente no te puedo ayudar con eso.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Simon21 en 02 de Junio de 2012, 02:52:15
Hola Beto !!

Te dejo el link del producto que compre.

http://www.ebay.com/itm/ADE7758-ADE7758ARW-Poly-Phase-Multifunction-Energy-Mete-/150710893487?pt=LH_DefaultDomain_0&hash=item231711bbaf#ht_648wt_952

Me llegó a mi casa al cabo de un mes aproximadamente.

El vendedor es muy confiable.

Saludos
Título: Re: Medidor de Energía con ADE7753
Publicado por: beto1234 en 03 de Junio de 2012, 12:53:12
 Hola pero ese es el ADE7758 que es para trifásico yo necesito el ADE7753, bueno pero ya que no los consigo capas compre los dos. Che y como haces el pago y en que te envían?, yo tengo una tarjeta mastercard link de deposito será que puedo pagar con eso por transferencia?. Cuanto te cobran el envió hasta acá?.
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 03 de Junio de 2012, 13:25:34
Hola pero ese es el ADE7758 que es para trifásico yo necesito el ADE7753, bueno pero ya que no los consigo capas compre los dos. Che y como haces el pago y en que te envían?, yo tengo una tarjeta mastercard link de deposito será que puedo pagar con eso por transferencia?. Cuanto te cobran el envió hasta acá?.

En ebay se paga con paypal, podes revisar en la página que te han puesto en Shipping and Payments. Para el ADE7753 podes utilizar el buscador, y lo recomendable es elegir algún top seller.


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: beto1234 en 09 de Julio de 2012, 17:50:14
 Hola veo por aca que solo miden la corriente y el voltaje pero no el consumo en KWH. Les dejo un documento para que les ayude un poco.

DOCUMENTO (http://www.unne.edu.ar/Web/cyt/cyt/2002/07-Tecnologicas/T-043.pdf)
Título: Re: Medidor de Energía con ADE7753
Publicado por: AZUL8 en 11 de Julio de 2012, 21:53:25
señores buen dia

me acabo de dar cuenta del avance del tema, pues hace algunos meses no lo veia, tengo el siguiente problema estoy trabajando con el ade7754 pero aun no puedo optener una comunicación exitosa, pidiendole el registro de temperatura, por ello me he comunicado directamente con un ascesor de analog device, para que me ayude con el tema y la verdad no me dio solución al problema, antes me dejo mas dudas, ademas que para leer temperatura no necesito de las banderillas de las interupciones, que seria lo unico a configurar junto con opmode y leer el rstatus para dejar en nivel bajo el irq.

me desconcierta que sr tincho_a le alla salido pero cambiando de spi a rs232.

señores amablemente les pido que me ayuden a evaluar o dar pautas si cambiar el spi por rs232 y ademas estoy utilizando un 18f4550.


muchas gracias, no se si necesitan ayuda para la configuración de los dispositivos pues el acesor medio ciertas pautas interesantes

gracias
Título: Re: Medidor de Energía con ADE7753
Publicado por: angel9009 en 14 de Noviembre de 2012, 01:01:39
Hola estoy realizando el mismo proyecto pero he tenido problemas con la conexión de las tierras estoy usando una resistencia shunt como sensor de corriente, el chip necesita de alguna configuración inicial para su funcionamiento??, el pin cf nos dice la potencia activa, sin necesidad de algúna configuración, pero cuando pongo un osciloscopio no veo ninguna señal, a pesar que pongo una carga pesada
Título: Re: Medidor de Energía con ADE7753
Publicado por: Suky en 14 de Noviembre de 2012, 11:48:38
Hola estoy realizando el mismo proyecto pero he tenido problemas con la conexión de las tierras estoy usando una resistencia shunt como sensor de corriente, el chip necesita de alguna configuración inicial para su funcionamiento??, el pin cf nos dice la potencia activa, sin necesidad de algúna configuración, pero cuando pongo un osciloscopio no veo ninguna señal, a pesar que pongo una carga pesada

Has leído el datasheet? Yo no utilice este, pero si los de Microchip y Cirrus, y se debían inicializar para establecer cierta configuración he iniciar el muestreo.


Saludos!
Título: Re: Medidor de Energía con ADE7753
Publicado por: mincho en 22 de Noviembre de 2012, 16:09:03
Hola, alguien tiene todavia el pdf?

Saludos...
Título: Re: Medidor de Energía con ADE7753
Publicado por: artti en 08 de Diciembre de 2012, 17:04:38
Estimados,

Sobre el código que postio tincho_a, como puedo acondicionarlo para que los datos me aparezcan por un LCD, por que según entiendo esta ocupando el hyperterminal cierto?, por favor, si me pudieran ayudar ya que no logro saber si estoy comunicándome con el ADE, entonces seria bueno ver si aparecen algunos datos por el lcd no importa que sean erroneos por lo menos sabre que ya he leido algun registro....esperare sus respuestas muchas gracias : )