Autor Tema: CONTADOR DE ENERGÍA ELECTRICA  (Leído 3210 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tessla_1

  • PIC10
  • *
  • Mensajes: 4
CONTADOR DE ENERGÍA ELECTRICA
« en: 06 de Noviembre de 2004, 10:27:00 »
Saludos a todos desde Bogotá, Colombia

Este foro es el mejor de todos en PIC´s. He estado observandolo desde hace un mes y hasta ahora participo. Su filosofía la comparto a pleno. Sus ayudas son interesadas y a mi tambien me han servido.

ahora al punto.

Estoy construyendo un contador de energía eléctrica utilizando el pic 16f877A.
lo tengo ya pensado. lo compilado en MPLAB y todas las rutinas que utilizo funcionan en la simulación.
El problema es que al montar las partes del programa no funcionan.

1. El conversor A/D
2. El temporizador.
3. La comunicación serie. (aunque esta ya nos transmite)

Sobre el conversor les quería mostrar el codigo que he realizado.. lo hago por partes para montarlo y luego probarlo. potenciometro a la entrana ANA0 y leds a la salida del puerto B. pero nada no funciona. Este es pues el codigo.

LIST      P=16F877A

RADIX      HEX

INCLUDE      <P16F877A.INC>

ORG      0x00

               ;CONVERSION SIN TEMPORIZACION, RESULTADO EN PUERTO

INICIO               ;B Y PUERTO C, ENTRADA ANALOGA (PIN 2)   

   bsf   STATUS,RP0      ;Seleccion banco 1
   bcf   STATUS,RP1
   movlw   b"10001111"      ;Configuracion entradas Anal (ADCON1)
   movwf   ADCON1         ;PUERTA 0 COMO ENTRADA ANALOGA
   movlw   B"11111111"      ;Configuracion de puerta A como entrada
   movwf   TRISA
   clrf   TRISB         ;Puerta B y C como salidas
   clrf   TRISC
   movlw   b"10000111"      ;Configuracion del TMR0
   movwf   OPTION_REG      ;con predivisor de 256
   
BUCLE   bcf   STATUS,RP0      ;Seleccion banco 0
   movlw   b"10000001"      ;Activacion del A/D y TAD=32Tosc
   movwf   ADCON0         ;activacion canal 0 analogo (ADCON0)
   
   bsf   ADCON0,02      ;Comienza a convertir señal TC (GO/DONE#)
wait   btfsc   ADCON0,02      ;Salta si termina la conversion
   goto   wait   

   movf   ADRESH,0      ;w=ADRESH
   movwf   PORTC         ;PUERTOC
   
   bsf   STATUS,RP0      ;Seleccion banco 1
   movf   ADRESL,0      ;w=ADRESL
   bcf   STATUS,RP0      ;BANCO 0
   movwf   PORTB         ;PUERTOB
   
   goto   BUCLE
END


Ese es solo una parte. pues la idea es utilizar el conversor con temporizacion de un segundo. así que probé apagar y prender un led en un segundo con el siguiente codigo.. guiandome del libro Microcontroladores PIC 16f84

Este es:

LIST   P=16f877A

RADIX   HEX

INCLUDE   <P16f877A.INC>

ORG    0x00

INICIO
   VARTIME   EQU   0X23      ;ESTE PROGRAMA ENCIENDE LOS LEDS DEL   
               ;PUERTO B, ESPERA UN SEGUNDO Y LOS APAGA
   bsf   STATUS,RP0      ;CAMBIO A BANCO 1
   bcf   STATUS,RP1
   
   movlw   b"10000110"
   movwf   ADCON1         ;CONFIGURO PUERTAS I/O DIGITALES

   clrf   TRISB         ;PUERTA B COMO SALIDA
   movlw   b"10000111"      ;Predivisor de 256 al TMR0
   movwf   OPTION_REG      ;pulsos de reloj 4Tosc
      
        bcf   STATUS,RP0      ;CAMBIO BANCO 0
   
   movlw   b"11111111"
   movwf   PORTB   
   
   CALL   TEMPORIZADOR      

   clrf   PORTB
   
   goto   INICIO

TEMPORIZADOR

   movlw   .20         ;CARGA 20 A VARTIME
   movwf   VARTIME
DELAY_1   movlw   ~.195         ;CARGA COMPLEMETNO 195 A
   movwf   TMR0         ;TMR0
   bcf   INTCON,T0IF         
DELAY_2   clrwdt
   btfss   INTCON,T0IF      ;      
   goto    DELAY_2
   decfsz   VARTIME,1
   goto   DELAY_1

   bcf   STATUS,RP0      ;BANCO 0
   
   RETURN       

END


bueno como pueden ver necesito su extensa y caritativa colaboración.

Su tiempo es valioso para mi ..  GRACIAS POR SUS RESPUESTAS.

Si alguien quiere saber más sobre este proyecto me puede escribir a:

plcarranzag@unal.edu.co  ó   también  pedluis_1@yahoo.com.ar

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #1 en: 06 de Noviembre de 2004, 13:31:00 »
la verdad q parece interesante la idea de contar energia, como lo haras? seria muy bueno q pongas parte del circuito de como mediras o q al menos te explayes en la idea...

con respecto a las rutinas.... la del conversor a primera vista parece buena.... pero si no anda... habra q mirarla mas...

la segunda, diria q siempre veras los leds prendidos, a menos q mires con un osciloscopio, creo q te faltaria una llamada al retardo luego de borrar el portB, pq sino, lo apaga y muy rapidamente, unos pocos microsegundos ( si estas a 4MHz) y lo prende de nuevo por el loop....

prueba eso y avisa como fue.....
y cuentanos algo mas del circuito...

Suerte.

Desconectado tessla_1

  • PIC10
  • *
  • Mensajes: 4
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #2 en: 08 de Noviembre de 2004, 07:58:00 »
Me gustaría que me ayudaran con la etapa de temporización.. no entiendo a que se refieren con el loop... supuestamente este codigo temporiza a un segundo.. y me apaga los leds... no veo el inconveniente que me mencionan...

Muy pronto te  enviare mejor explicado el proyecto y los problemas que tengo.. por lo pronto me gustaría que me ayudaran con el temporizador de un segundo y problemas que creen que hayan en el codigo del conversor..

gracias wqtrp por tu tiempoSonrisa Gigante

Desconectado wqtrp

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 170
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #3 en: 08 de Noviembre de 2004, 08:18:00 »
fijate de intercalar un llamado entre el clrf del portB y el goto inicio

clrf PORTB

         CALL TEMPORIZADOR

goto INICIO

eso te dara el tiempo necesario para q veas cuando el led esta apagado.


Desconectado tessla_1

  • PIC10
  • *
  • Mensajes: 4
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #4 en: 09 de Noviembre de 2004, 08:08:00 »
hey wqtrp  gracias por la ayuda.. ya areglé los inconvenientes... definitivamente no estaba viendo nada .. pero todo solucionado.. de nuevo GRACIAS..

El contador de energía utiliza el 16f877A .. la señal de tensión se adquiere con un tranfromador de cargador de celular (120/5V) la señal de corriente se adquiere con un trafo de corriente de un balasto, colocando al final una resistencia y calculando esta para obtener maximo 5 voltios.

esas señales, cada una, entra a un circuito sencillo de valor RMS.. que nos entregará unal señal DC de 0 - 5 Voltios...

luego entrarán, intercalando los canales, al conversor A/D.
La señal de 10 bits se almacena en registros de proposito general y luego se envía por USART al PC..

Allí el LabView se encarga de la multiplicación de las dos señales ó simplemente de la visualización del resultado...

Es aquí donde necesito otra vez ayuda Idea... la idea es utilizar el PIC.. por eso estoy buscando una rutina de multiplicación de dos registros de 16Bits  en Assembler.. para obtener potencia (V*I) ... la energía la tendré sumando en tiempos de un segundo estas multiplicaciones y luego enviandolas al USART.

GRACIAS POR LA AYUDAMuchas risas

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #5 en: 09 de Noviembre de 2004, 13:53:00 »
Hola amigo:
te adjunto una rutina que multiplica dosnúmeros de 16Bits. Espero que te sirva
Fermin

;Mul16x16: Esta rutina multiplica sin signo dos números de 16 bits (DatoB_HMuchas risasatoB_L *
;DatoA_HMuchas risasatoA_L) el resultado de 32 bits se deposita en (DatoD_HMuchas risasatoD_L y DatoC_HMuchas risasatoC_L)

Mul16x16   movlw   .16
      movwf   Contador   ;Inicia contador
      clrf   DatoD_H
      clrf   DatoD_L      ;Borra parte alta del resultado

Mul_Loop   rrf   DatoB_H,F
      rrf   DatoB_L,F
      btfss   STATUS,C   ;El bit LSB es "1" ?
      goto   No_suma      ;No
      movf   DatoA_L,W
      addwf   DatoD_L,F   ;Suma octeto de menos peso
      btfsc   STATUS,C
      incf   DatoD_H,F
      movf   DatoA_H,W
      addwf   DatoD_H,F   ;Suma octeto de más peso
No_suma      rrf   DatoD_H,F
      rrf   DatoD_L,F
      rrf   DatoC_H,F
      rrf   DatoC_L,F
      decfsz   Contador,F
      goto   Mul_Loop
      return
Todos los días se aprende algo nuevo.

Desconectado JacoPastorius2004

  • PIC10
  • *
  • Mensajes: 42
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #6 en: 12 de Noviembre de 2004, 17:37:00 »
Hola!

No averiguaste, para hacer todo lo que queres hacer y mas, con el ADE7753 de Analog Device?
Para que reinventar la rueda.

Bajate y leete el PDF de este interesante IC y replanteate nuevamente el proyecto.

Desconectado tessla_1

  • PIC10
  • *
  • Mensajes: 4
RE: CONTADOR DE ENERGÍA ELECTRICA
« Respuesta #7 en: 17 de Noviembre de 2004, 12:47:00 »
hey gracias JacoPastorius2004 por la respuesta .. esa idea ya la había pasado por mi cabeza.. el problema creo es el costo.. aquí puedes conseguir uno de estos IC (que te hacen todo) por mas de US$30. la idea es abaratar la cosa con el pic.. y ademas entrenarme en estos micros que de por sí hacen de todo..

GRACIAS!