viernes, 22 de enero de 2016

Variador de velocidad AC con Triac y PIC - Parte II : Programacion, simulacion y pruebas reales


 Programacion, simulacion y pruebas reales


Programación en el  PIC 16f876a


  •   El microcontrolador PIC se  encargara de recibir las señales del circuito de cruce por cero, para esto se hara uso del módulo  de “interrupción por el pin  RB0”  ya que  cada vez que reciba la señal del fototransistor, automáticamente saltara de todo lo que esté haciendo el PIC en ese momento para atender a esa señal y sincronizar el disparo hacia el triac.
  •   Para controlar la velocidad, se hará uso de la “lectura analógica por el pin A0” de un potenciómetro. Ya que la lectura analógica toma algún tiempo para la conversión a digital, no sería viable usarlo en el bucle del programa principal, pues esto retrasaría las demás funciones que realizara el pic . Se optó por hacer una lectura del potenciómetro  usando un temporizado de cada  200 ms, configurando el “Timer 1” del Pic a ese periodo.
  •  El pin que dispara al moc 3020 sera el “Pin Rb7” cuya duración del ancho de pulso será de 200 uS.
  •   Existen 2 leds indicadores: señal del cruce por 0 “Pin Rb1”, Señal de de cruce por 0 dividida entre 60 (0.5 seg) “Pin RB2” 
e
Entradas al pic :
#define   potenciometro        pin_a0  //entrada analogica para control 
#define   cruze_x_cero         pin_b0  //entrada digital para el sincronismo del disparo

Salidas del Pic:
#define   disparo                  pin_b7    //disparo hacia la etapa de potencia
#define   frec_1                    pin_b1    //indicador de cruce por cero 60 hz
#define   frec_2                    pin_b2    //indicador cruce por cero 1 hz

Variables del Pic:
long  delay=7000;
short  bandera1=0;
int      contador=0;

long    adc=0;
Programa en Pic C (CCS C compiler):

#include <16f876a.h>
#device adc = 10
#fuses hs,nowdt,put,nobrownout,nolvp,
#use delay(clock=20M)
#use standard_io(a)
#use standard_io(b)
#use standard_io(c)
#priority  INT_RB   //prioridad interrupcion por rb0

#define potenciometro pin_a0
#define cruze_x_cero  pin_b0
#define frec_1        pin_b1
#define frec_2        pin_b2
#define disparo       pin_b7

long delay=7000;
short bandera1=0;
int contador=0;
long adc=0;

#INT_timer1
void timer1()
{
      adc=read_adc(); //lectura de potenciometro externo para temporizar disparo
      delay_us(20);   //tiempo de conversion adc
      delay=adc*7.7;        //escalamiento hasta maximo periodo  adc 0 a 1024
      //                  //120Hz -> T:8mS = 8333uS max
     set_timer1 (65526);
}
#int_ext
void ext_isr()
{
   bandera1=1;     //si entro pulso, poner en 1 bandera de sincronizacion
   output_toggle(frec_1); //indicador de interrupcion
   //si todo esta correcto frec de interrupcion = 60Hz
   //=>120hz/60=1hz ==>T=0.5seg
   contador++;
   if(contador==60)
   {
       output_toggle(frec_2);
       contador=0;
   }
}

void main()
{
   delay_ms(100);
   output_high(frec_1);
   output_high(frec_2);
   delay_ms(500);
   output_low(frec_1);
   output_low(frec_2);
   delay_ms(500);
 
   enable_interrupts(int_ext);
   ext_int_edge(L_TO_H);

   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);//Setup timer: Reloj interno, preescaler= 8
   enable_interrupts(INT_TIMER1);//Habilito interrupción particular del TIMER1
   set_timer1(65526);//Carga del TMR1 para 20 mhz q 200 ms

   setup_adc_ports(an0);
   setup_adc(adc_clock_internal);
   set_adc_channel(0);
 
   enable_interrupts(GLOBAL);//Habilito interrupciones globales


   while (true)
   {
      if(bandera1==1) //espera bandera de sincronizacion
      {
         delay_us(delay+440);
         output_high(disparo);
         delay_us(200);
         output_low(disparo);
         bandera1=0;
      }
   }  
}


Simulación


Pruebas en físico:


Link de descarga: https://mega.nz/#F!CxVHlLbZ!7-ff8bQFLlMAXJCPWJ0adA
clave de cifrado: !7-ff8bQFLlMAXJCPWJ0adA



Mejoras:
-Es Ovbio que  este proyecto realiza el mismo trabajo que un simple  Dimer analogico. Pero la gran potencialidad que este proyecto presenta no esta en solo controlar velocidad por medio de un potenciometro, si no que al ser diseñado para ser controlado por medio de un   microcontrolador, este es mucho mas inteligente y se pueden programar mas cosas. Puede añadirse sensores  de velocidad, temperatura, etc. Para hacer un control con un algoritmo PID de velocidad, temperatura pero en AC. Este es solo la parte básica,lo demás dependerá de  la imaginacion e ingenio para aplicarlo en algo util.

<< Primera parte del proyecto


Variador de velocidad AC con Triac y PIC - Parte I : Funcionamiento

Funcionamiento






     Resumen
En la electrónica una de las más importantes e interesantes áreas con una amplia difusión hoy día es la automatización y el control no sólo porque en el presente tiene una aplicación en casi todos los campos sino porque permite crear una cantidad ilimitada de modelos al igual que una inmensa variedad de aplicaciones prácticas.
Este Proyecto consiste el diseño de un sistema de control  de velocidad de motores monofásicos para utilizarlos en pequeñas maquinas y motores electricos monofasicos de hasta 2 Hp. Constara  de un micro controlador PIC 16f876a para el  control y sincronismo,  también  de un Triac y optotriac para la parte de potencia.

Descripción de la solución
La solución que plantea este Proyecto es el de diseñar un sistema  electrónico eficaz y a la vez económica que sea capaz de  controlar cargas que funciones con corriente alterna como motores, haciendo uso de uno triacs, que son dispositivos electrónicos semiconductores, que pueden conducir corrientes alternas y además soportar cargas de gran corriente (10A a 20 A) suficientes para controlar un motor AC, El Encargado de controlar al triac será el PIC que sincronizara los pulsos de disparo hacia el triac para asi lograr  controlar el valor  eficaz del voltaje AC que ira hacia la carga (motor), logrando variar la velocidad.  

Materiales del Proyecto
-Pic 16f876a
-Triac bt136-6Amps, bt138-12 Amps, bt139-16Amps. (Puede elegirse cualquiera de ellas)
-Moc 3020
-Opto acoplador 4n25                     
-Módulo Bluetooth hc-05
-Resistencia de 100k 1watt
-Resistencias de 180 Ohms 330 Ohms, 2.2k Ohms, 1K Ohms, 47K Ohms
-Puente diodos
-Potenciómetro 10k Ohms
-Condensador de 0.1 uF 400V (poliester)
-Cristal oscilador de 20Mhz, capacitor de 22pf, 0.1uf y 470 uF
-Pulsadores Switch

Marco Teórico

1.    Triac
El Triac es un dispositivo semiconductor que pertenece a la familia de los dispositivos de control: los tiristores. El triac es en esencia la conexión de dos tiristores en paralelo pero conectados en sentido opuesto y compartiendo la misma compuerta.


 

A1: Anodo 1, A2: Anodo 2, G: Compuerta

El triac  se utiliza en corriente alterna y al igual que el tiristor, se dispara por la compuerta. Como el triac funciona en corriente alterna, habrá una parte de la onda que será positiva y otra negativa.
Al disparar al triac  este conducirá y autosotendra esa conducción hasta que el voltaje caiga hasta cero. Y lo mismo ocurrirá para el semiciclo negativo, hasta que nuevamente caiga el voltaje a cero.

Funcionamiento: 

La parte positiva de la onda (semiciclo positivo) pasará por el triac siempre y cuando haya habido una señal de disparo en la compuerta, de esta manera la corriente circulará de arriba hacia abajo (pasará por el tiristor que apunta hacia abajo), de igual manera:



La parte negativa de la onda (semiciclo negativo) pasará por el triac siempre y cuando haya habido una señal de disparo en la compuerta, de esta manera la corriente circulará de abajo hacia arriba (pasará por el tiristor que apunta hacia arriba)

Para ambos semiciclos la señal de disparo se obtiene de la misma patilla (la puerta o compuerta). Lo interesante es, que se puede controlar el momento de disparo de esta patilla y así, controlar el tiempo que cada tiristor estará en conducción. Recordar que un tiristor sólo conduce cuando ha sido disparada (activada) la compuerta y entre sus terminales hay un voltaje positivo de un valor mínimo para cada tiristor)
Entonces, si se controla el tiempo que cada tiristor está en conducción, se puede controlar la corriente que se entrega a una carga y por consiguiente la potencia que consume.

Video Explicativo 1:


Video Explicativo 2:


           
     Detector Cruce por Cero
Para este proyecto se hará un control totalmente digital de triac haciendo uso de un microcontrolador pic, para lograr esto  debemos tener un circuito de sincronismo para asi poder disparar al triac adecuadamente.
El detector de cruce por cero 'sensa' cuando se produce el cambio de polaridad . el la red eléctrica, como se sabe es una señal senoidal que que cambia de polaridad a razón de 60 ciclos por segundo
El Gran inconveniente que se presenta, es que el pic solo puede funcionar con voltajes de una sola polaridad. Es por esta razón que el circuito detector de cruce por cero contendrá un rectificador de onda completa, por lo que de esta menera podrá obtenerse solamente ciclso positivos, pero para proteger al  pic de la red eléctrica , se hara uso de un optoacoplador






Etapa de Potencia
La  etapa de Potencia esta conformada por un optotriac moc 3020 y el Triac
Además consta  de un circuito RC para proteger los auto disparos hacia el triac que pueden generar las cargas inductivas
El bt13x puede autosostenerse con un pulso que se envía desde el  pic, que tendrá la duración de 200us, la corriente necesaria para el auto sostenimiento del triac es de aproximadamente 100mA, la cual la suministra el moc.



Para manejar Cargas de mas Potencia, solamente se tendrá que cambiar por un triac de mas  corriente, y un moc  que pueda disparar al gate con la adecuada corriente.


       Circuito Completo



Segunda Parte del Proyecto:
Variador de velocidad AC con Triac y PIC (Parte II) : Programacion, simulacion y pruebas en fisico
s