Autor Tema: protector de tension  (Leído 3727 veces)

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

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
protector de tension
« en: 31 de Diciembre de 2011, 15:15:26 »
hola estoy tratando de hacer un protector de tension con el pic12f675 , que cuando este a 220 volt mantenga encendido la pata 1 y cuando varia tanto como para abajo a 170 volt o a 250 la apague y encienda un led de advertencia hasta ahora he echo esto basabdome en algunos ejemplos , alguna idea como seguir o usar el switch , case...


#include <12f675.h>
#device adc = 10
#use delay(clock= 4m)
#fuses NOWDT,CPD,PROTECT,noMCLR,PUT,INTRC_IO,BROWNOUT
#use standard_io(a)
#byte TRISIO      =  0x85 // Dirección Del TRISIO PORT10.
#byte GPIO        =  0x05 // Dirección del GPIO PORT

#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5


Int Val_AN;
Float Sensor;
Const Int escala = 255;
Const Float v_max = 5.0;






void Leer_ADC(int C){                     // Funcion donde se realiza la lectura del ADC
   set_adc_channel(C);                    // Seleccionamos el canal
   delay_us (20);
   Val_AN=read_adc();                     // Conversion AD a la variable Val_AN
   Sensor=(Val_AN*v_max)/escala;          // Ecuacion que permite al ADC trabajar en una escala de 5V

}

void main(){
GPIO = 0;
   setup_port_a( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
 while(TRUE){
     Leer_ADC(0);
     
     
     
 if(sensor>=3.0){
 output_high(pin_a1);
 delay_ms(10);
  if(sensor<=3.0)
  output_low(pin_a1);
  }
}
}

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: protector de tension
« Respuesta #1 en: 31 de Diciembre de 2011, 19:24:01 »
Debes implementar un bucle infinito.
No contesto mensajes privados, las consultas en el foro

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: protector de tension
« Respuesta #2 en: 01 de Enero de 2012, 10:01:57 »
#include <12f675.h>
#device adc = 10
#use delay(clock= 4m)
#fuses NOWDT,CPD,PROTECT,noMCLR,PUT,INTRC_IO,BROWNOUT
#use standard_io(a)
#byte TRISIO      =  0x85 // Dirección Del TRISIO PORT10.
#byte GPIO        =  0x05 // Dirección del GPIO PORT

#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5


long  Val_AN;
Float Sensor;

void main(){
GPIO = 0;
   setup_adc_ports( an0_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
    set_adc_channel(0);
      delay_us (20);
 while(TRUE){
 
 
   Val_AN=read_adc();                     
   Sensor=val_an*0.00487848 ;   
   
   output_high(pin_a5);
     
     if((sensor>3.0)||(sensor<2.0)){
     output_low(pin_a5);
     delay_ms(5000);
   
     }

}
 
 }
ahi cambie el codigo y funciona moviendo el adc cambia el valor de la pata 5 , ahora como hago que para sacar un 1 de la pata 2 cuando sea mayor de 3 y cuando sea menor otra pata , ahi ando trabado , saludos

Desconectado antoniopa

  • PIC12
  • **
  • Mensajes: 72
Re: protector de tension
« Respuesta #3 en: 04 de Enero de 2012, 15:00:30 »
Explicate un poco mejor, es una aplicacion sencilla, tienes que tener claro el funcionamiento del protector , que quieres activar o desactivar , en que momento, y en función de las variavbles a controlar y el estado en que se encuentra en cada momento el fllujo del programa, te puedes hacer un diagrama´, sencillo, de flujo, asi lo veras muy bien , cuando tengas claro eso lo mas facil es llevarlo al lenguaje de programación.

Saludos

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: protector de tension
« Respuesta #4 en: 06 de Enero de 2012, 09:51:19 »
lo que quiero haces es cuando hay 220 volt que este en estado normal , cuando baje la tension a 170 o suba a mas de 250 que corte y me marque con led el estado, un pequeño estabilizador para tener en el taller , ya que estoy aprendiendo!!! es  bueno hacer todo uno para entender como programar , saludos y gracias por las respuestas.... :)

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: protector de tension
« Respuesta #5 en: 06 de Enero de 2012, 16:59:38 »
#include <12f675.h>
#device adc = 10
#use delay(clock= 4m)
#fuses NOWDT,CPD,PROTECT,noMCLR,PUT,INTRC_IO,BROWNOUT
#use standard_io(a)
#byte TRISIO      =  0x85 // Dirección Del TRISIO PORT10.
#byte GPIO        =  0x05 // Dirección del GPIO PORT

#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5


long  Val_AN;
Float Sensor;

void main(){
GPIO = 0;
   setup_adc_ports( an0_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
    set_adc_channel(0);
      delay_us (20);
 do{
 
 
   Val_AN=read_adc();                     
   Sensor=val_an*0.00487848 ;   
   
   output_high(pin_a5);
     
     if((sensor>3.0)||(sensor<2.0)){
     output_low(pin_a5);
     delay_ms(5000);
     }
      if(sensor>3.1)
      output_high(pin_a2);
      if(sensor<3.0)
      output_low(pin_a2);
     
      if(sensor<2.0)
      output_high(pin_a4);
      if(sensor>2.1)
      output_low(pin_a4);
     
     }while(true);

 
 }


creo que ahi estaria les dejo el dns para ver si me dan alguna otra idea para mejorar mi proyecto , saludos

Desconectado JuanEZWon

  • PIC10
  • *
  • Mensajes: 21
Re: protector de tension
« Respuesta #6 en: 07 de Enero de 2012, 14:30:04 »
Veo que vas con buen paso, recuerda que no le puedes meter 220 volts a la entrada analogica del pic. tienes que usar algun divisor de tension, todo eso lo puedes implementar en el proteus, creando un nuevo power suply y simular los 220 volts.

Desconectado callecuatro1976

  • PIC12
  • **
  • Mensajes: 85
Re: protector de tension
« Respuesta #7 en: 08 de Enero de 2012, 09:46:58 »
como hago para simular los 220 en el proteus, es algo que no puedo encontrar , saludos gracias por las respuestas

Desconectado JuanEZWon

  • PIC10
  • *
  • Mensajes: 21
Re: protector de tension
« Respuesta #8 en: 08 de Enero de 2012, 12:42:47 »
Es sensillo. Tienes que ir a Design, Configure Power Rails, hacer click en NEW, ponerle un nombre por ejemplo "220V", y despues de esto, donde dice voltaje ponerle 220. ahora en una parte en blanco debes hacer click derecho, Place, Terminal, Power. una vez lo coloques, haz doble click en el y en donde dice "string" ponle el mismo nombre que le pusiste al Power Rail que creaste anteriormente, en este caso ponle "220V". y listo, puede funcionar con el ground general del circuito.

Mira esto a ver si te sirve:

http://www.forosdeelectronica.com/f24/medir-corriente-alterna-pic-adc-5362/