TORRES INGENIERIA DE OBRA Y SERVICIOS ESPECIALES
ARTICULO PRACTICO DE
DISEÑO DE INVERSORES Y VFD
MICROCONTROLADOS
1era Edición
Título original:
Introducción al diseño de INVERSORES de corriente y VARIADORES de FRECUENCIA con PICBASIC PRO
DERECHOS RESERVADOS © ETI – Educación Técnica Informal / TORRES IO&Se
e-mail: [email protected]
Web: https://sites.google.com/a/educ.ar/eti/
Comodoro Rivadavia – Provincia del Chubut – Patagonia Argentina
DERECHOS DE COPIA
Esta documentación tiene derechos del autor y copia.
Al adquirir este libro en formato digital o impreso, usted acepta los derechos de copia y se compromete a usar este
material solamente con fines educativos y no comerciales… Cualquier otro uso no es permitido y representa una violación
de los derechos de copia y propiedad intelectual.
Prohibida la reproducción parcial o total de este libro por cualquier medio sea electrónico, mecánico, fotocopiado o
cualquier otro método, ni con fines comerciales, salvo con autorización previa y por escrita del autor. – Denuncie a las
personas que le venden este ejemplar y recupere su inversión. Recuerde que su contribución nos permite seguir
impartiendo en forma gratuita, artículos y tutoriales en nuestra web.
Todas las marcas que aparecen o se mencionan en este libro son registradas y pertenecen a sus propietarios.
“Copyright ©2019-2020. “Alejandro Martin Torres - TORRES IO&Se”: El autor delega a la Organización ETI (Educación Técnica Informal – ex
Escuela Virtual Técnica) la licencia para reproducir y comercializar este documento para los fines de promoción e incentivo de voluntades a la
formación técnica autodidacta. Prohibida su venta y o reproducción con fines comerciales sin previa autorización del Autor.
SOBRE LA PRECISIÓN DE ESTE TEXTO
Se realizó un gran esfuerzo para asegurar la precisión de este texto y los experimentos, pero puede haber errores de
tipografía.
Si usted encuentra errores o algún tema que requiera información adicional, por favor infórmelo a
[email protected], así podemos continuar mejorando la calidad de nuestra documentación.
Diseño del control de FASE y POTENCIA para un VFD INVERTER
El control de velocidad de motores, desde hace
tiempo dejo de ser exclusivo de motores de
corriente directa y como ya sabemos, hoy en día
ya contamos con técnicas de control y equipos
electrónicos que nos permiten aplicar un control
de la velocidad en motores de corriente alterna.
La aparición de rectificadores controlados,
muestra que es mucho más eficiente que el
empleo de reductores u otras técnicas de control
de velocidad en máquinas electromecánicas, y
ha hecho que adquiera una mayor importancia
en motores de corriente alterna. En el presente
artículo, veremos una breve introducción al
diseño de un inversor de corriente, para luego
adentrarnos al mundo de los variadores de
frecuencia.
¿Cuál es la ventaja que del uso de un variador de
frecuencia en lugar de un reductor?
Un reductor industrial bajará la velocidad de giro
del motor y así acondicionar su salida, pero
también aumentará el par hasta el nivel necesario
para que la máquina funcione correctamente. Es
decir, las revoluciones por minuto del motor son
menores al usar el reductor, pero el par aumenta en
la misma proporción que se redujeron las
revoluciones por minuto.
Ésta es la misma conducta que presenta un
transformador. Éste reduce la tensión y aumenta la
corriente, así como el reductor de velocidad reduce
las revoluciones por minuto y aumenta el par. Lo
que es posible por medio de un variador de
frecuencia, es que las revoluciones por minuto del
motor se reducen, sin afectar el par, lo que no se
puede lograr utilizando un reductor.
En otras palabras, un variador de velocidad o drive
regula y modifica la velocidad de los motores
industriales para que sólo empleen la energía que
demanda el proceso.
Es muy probable que en este momento estés
buscando información sobre cómo controlar los
motores de tu proyecto y estén funcionando a
velocidades variables. Una manera de resolver
nuestra necesidad, es controlando de forma precisa
la velocidad de los motores sin que esto genere un
impacto en el rendimiento, pero ¿cómo?
El método más eficiente para regular la velocidad
de un motor eléctrico es por medio de un
controlador especial que recibe el nombre variador
de frecuencia (VFD, por sus siglas en inglés:
Variable Frecuency Drive).
El variador de frecuencia, igualmente conocido
como convertidor de velocidad variable o variador
de velocidad electrónico, es un dispositivo que
controla la velocidad rotacional de un motor de
corriente alterna regulando la frecuencia del voltaje
aplicado al motor. A su vez modifica el voltaje
aplicado al motor para evitar la saturación del flujo
magnético con una elevación de la corriente que
dañaría el motor. De tal manera que varía la
velocidad y la acopla de los motores asíncronos,
convirtiendo las magnitudes fijas de frecuencia y
tensión de red en magnitudes variables.
Originalmente los Drives, fueron desarrollados para
mejorar los procesos industriales. Sin embargo, con
el paso del tiempo han destacado por otras
capacidades como proporcionar par y la velocidad;
operar sin golpes mecánicos; realizar movimientos
complejos y ajustar la tasa de producción.
Actualmente su ventaja principal es la disminución
del consumo de energía en la operación.
El uso de un variador de frecuencia tiene la
finalidad de controlar la velocidad de motores
eléctricos. Estos dispositivos modifican la tensión
alterna, lo que hace que frecuencia y amplitud
cambien y, así, los procesos se optimicen y las
cargas mecánicas de las máquinas se reduzcan. Las
aplicaciones industriales de un variador de
frecuencia son múltiples. Algunas de ellas
pueden ser: bombas, compresores, ventiladores,
cintas transportadoras y, por supuesto, el uso cada
vez más frecuente en el proceso de climatización.
Como ya mencioné al inicio del presente artículo practico, pretendo bridarles un breve pantallazo de
que es y cómo funcionan los variadores de frecuencia con tecnología inverter, y en paralelo, mostrarle
un diseño del control de FASE y DISPARO de un equipo microcontrolado, específico para empleo en
procesos de climatización.
Un variador de frecuencia está compuesto por los siguientes elementos:
Circuito rectificador
Recibe la tensión alterna y la convierte en continua por medio de un puente rectificador de diodos de
potencia.
Circuito filtro
Consiste en un circuito LC que suaviza el rizado de la tensión rectificada y reduce la emisión de armónicos
hacia la red.
Inversor
Convierte el voltaje continuo del circuito intermedio en uno de tensión y frecuencia variable mediante la
generación de pulsos. Se emplea el sistema IGBT (Isolated Gate Bipolar Transistor) para generar los pulsos de
voltaje de manera controlada.
Circuito de control
El circuito de control enciende y apaga los IGBT para generar los pulsos de tensión y frecuencia variables.
Además, realiza las funciones de supervisión de funcionamiento monitoreando la corriente, voltaje,
temperatura, etc. con interfaces amigables de fácil empleo.
El controlador de dispositivo de variación de frecuencia está formado por dispositivos de conversión
electrónicos de estado sólido. El diseño habitual primero convierte la energía de entrada CA en CC usando un
puente rectificador. La energía intermedia CC es convertida en una señal cuasi-senoidal de CA usando un
circuito inversor conmutado. El rectificador es usualmente un puente trifásico de diodos, pero también se usan
rectificadores controlados. Debido a que la energía es convertida en continua, muchas unidades aceptan
entradas tanto monofásicas como trifásicas (actuando como un convertidor de fase, un variador de velocidad).
Tan pronto como aparecieron los interruptores semiconductores, fueron introducidos en los Variadores de
Frecuencia, siendo aplicados en inversores de todas las tensiones disponibles. Actualmente, los transistores
bipolares de puerta aislada (IGBTs)son usados en la mayoría de circuitos inversores.
Las características del motor CA requieren una variación proporcional del voltaje cada vez que la frecuencia es
variada. Por ejemplo, si un motor está diseñado para trabajar a 460 voltios a 60 Hz, el voltaje aplicado debe
reducirse a 230 volts cuando la frecuencia es reducida a 30 Hz. Así la relación voltios/hertzios deben ser
regulados en un valor constante (460/60 = 7.67 V/Hz en este caso). Para un funcionamiento óptimo, otros
ajustes de voltaje son necesarios, pero nominalmente la constante es V/Hz es la regla general. El método más
novedoso y extendido en nuevas aplicaciones es el control de voltaje por Modulación de la Anchura de Pulso
(PWM).
Como dato curioso, algunos fabricantes también llaman a los variadores de frecuencia como Inversores
(Inverters) debido a que, como explica el diagrama anterior, éste es el componente principal del dispositivo.
Ahora bien, hablemos un poco de aquellos motores eléctricos que se diferencian según su velocidad de giro...
Nos encontramos con dos grandes grupos:
Por un lado, los motores asíncronos y los motores síncronos.
Los motores asíncronos son motores eléctricos donde el denominado rotor nunca llega a girar en la misma
frecuencia con la que lo hace el mismo campo magnético del estator. O lo que es lo mismo, la corriente
eléctrica del rotor necesaria para producir torsión es creada por inducción electromagnética del campo
magnético de la bobina del estator y por tanto, desfasado cierto ángulo respecto la onda senoidal de la
corriente alterna que alimenta el motor. En este sentido, destaca el motor asíncrono trifásico, formado por un
rotor y un estator donde se encuentran las bobinas inductoras.
Por otro lado, los motores síncronos son motores eléctricos, que igual que los asíncronos, convierten la
potencia eléctrica en potencia mecánica de rotación. Una de sus principales cualidades es que trabajan a
velocidad constante dependiendo de este modo de la frecuencia de la red y de otros aspectos propios de la
máquina. A diferencia de los otros motores asincrónicos, su funcionamiento hace precisa drives de
alimentación especiales. Dentro de la familia de los motores síncronos se distinguen a su vez otros como los
motores asíncronos sincronizados y los motores de imán permanente. Y reciben ese nombre de motores
síncronos porque la propia velocidad del rotor y la velocidad del campo magnético del estator son idénticas.
Éstos se usan en máquinas grandes con
carga variable y velocidad constante.
Los dispositivos variadores de frecuencia operan bajo el principio de que la velocidad síncrona de un motor de
corriente alterna está determinada por la frecuencia de AC suministrada y el número de polos en el estator, de
acuerdo con la relación:
RPM= (120.f) / p
Donde:
RPM = Revoluciones por minuto
f = frecuencia de suministro AC (Hercio)
p = Número de polos
Las cantidades de polos más frecuentemente utilizadas en motores síncronos o en Motor asíncrono son 2, 4, 6
y 8 polos que, siguiendo la ecuación citada, resultarían en 3600RPM, 1800RPM, 1200RPM y 900RPM
respectivamente para motores sincrónicos únicamente y a la frecuencia de 60Hz, y 3000RPM, 1500RPM
1000RPM y 750RPM para 50Hz. Dependiendo de la ubicación geográfica funciona en 50Hz o 60Hz.
En los motores asíncronos las revoluciones por minuto son ligeramente menores por el propio asincronismo
que indica su nombre. En estos se produce un desfase mínimo entre la velocidad de rotación (RPM) del rotor
(velocidad "real" o "de salida") comparativamente con la cantidad de RPM del campo magnético (las cuales si
deberían cumplir la ecuación arriba mencionada tanto en Motores
síncronos como en motores asíncronos) debido a que sólo es atraído por el campo magnético exterior que lo
aventaja siempre en velocidad (de lo contrario el motor dejaría de tener par en los momentos en los que
alcanzase al campo magnético).
Esa variación en el ciclo de trabajo hace subir o bajar el valor medio de la señal.
La forma de variar la frecuencia básicamente consta de cambiar el ciclo de trabajo (tiempo ON y tiempo OFF
en un período) de una onda cuadrada periódica, de tal forma que el valor medio de la tensión (el promedio) a
lo largo del tiempo varíe entre V máximo y V mínimo.
La velocidad con que variamos el ciclo de trabajo, o sea su valor medio, será la frecuencia de variación del
valor medio.
Esto físicamente se logra a través de "llaves electrónicas" de conmutación que son MOSFET o en algunos otros
diseños, IGBT. Ambos dispositivos semiconductores cumplen la función de actuar como interruptores que al
cerrarse y abrirse por medio de un software específico que veremos a continuación, conforman la onda
cuadrada, que permite obtener la señal sinusoidal.
Como primer ejemplo práctico para comprender como funciona el software (programa) del VFD,
veremos un simple y practico diseño de un variador de frecuencia monofásico, con un
microcontrolador 16F876A de microchip.
A la hora de diseñar el hardware, pensamos el alcance que queríamos a futuro, y por ende, si bien se
puede implementar 12F675 ya que este tiene ADC, entendí que este no era el adecuado ya que
preferí sumarle un display LCD para tener más funcionalidades a futuro.
Para el lenguaje de programación, se implementó PICBASIC Pro (PBP) y ASM, dado que algunas
funcionalidades y control total del dispositivo a nivel hardware, el mejor lenguaje a implementar es el
lenguaje de maquina (ASM).
La señal de salida PWM del microcontrolador, es controlada en frecuencia (30-120Hz) y duty (0100%), y esta señal la tenemos en el pin 0 del puerto C.
En esta salida le sumamos un filtro para obtener una señal con forma senoidal y es introducida en el
amplificador operacional, configurado como inversor. Esta configuración nos dará como resultado
una señal invertida en polaridad con respecto a la señal de entrada (puntos A y B), aunque puede ser
mayor, igual o menor, dependiendo esto de la ganancia que le demos al amplificador en lazo
cerrado.
El filtro y los dos inversores, se implementan para tener el control de fase y disparo del driver (IR21XX);
Hay que tener en cuenta que, si no tenemos un tiempo muerto dado entre disparo y disparo de
ambos MOSFET, corremos el riesgo de poner en corto nuestra salida de potencia, si los disparos en
un momento dado, ponen en conducción a los dos MOSFET en el mismo tiempo.
Hasta este punto, podríamos decir que tenemos básicamente un simple inversor monofásico si
apostamos a un simple programa donde la frecuencia del PWM de salida del microcontrolador sean
50Hz fijos; Pero realmente este no es nuestro propósito principal.
Partiendo de la base de que la generación de un PWM de 50Hz no podemos realizarlo con los
comandos que nos brinda el compilador del lenguaje e intérprete de programación, podríamos llegar
a decir que se podría hacer por programación, más comúnmente llamado PWM por software, pero el
problema está en que nuestro microcontrolador trabajara atendiendo cada línea de instrucción y no
nos permitirá atender otras funcionalidades (leer el puerto analógico, imprimir en el display LCD,
atender las ordenes de nuestro pulsadores del menú, etc), ya que estas ralentizan nuestro proceso y
resultado final. Para sacarlos de toda duda, observemos el siguiente ejemplo práctico de cómo
podríamos hacer nuestro oscilador de 50Hz por software:
'****************************************************************
'* Proyecto:
INVERSOR DC/AC.
'* Autor:
TORRES IO&Se
'* Noticia:
Copyright ©2020 ETI - [email protected]
'*
® All Rights Reserved ETI (Educación Tecnica Informal)
'* Fecha: 10/01/2020
'* Version: 1.0
'* Notas: Inversor 12Vcc-220Vac 600w – 50/60Hz
'****************************************************************
define OSC 4
Defino el oscilador en 4Mhz
TRISA = %11111111
; config todo el portA como entrada
TRISB = %00011111
; config portB0 hasta portB5 como entrada, portB6y7 como salida
TRISC = %00000000
; config todo el portC como salidas
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
DEFINE LCD_DREG
PORTC
DEFINE LCD_DBIT
4
DEFINE LCD_RSREG PORTC
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG
PORTC
DEFINE LCD_EBIT 3
DEFINE LCD_BITS
4
DEFINE LCD_LINES 4
REF VAR byte
bat var byte
JV var word
cen var word
DUTY VAR WORD
p var byte
ev var byte
LampFAULT var portB.5
G1 VAR PORTB.6
G2 VAR PORTB.7
LampON var portC.0
LampOFF var portC.1
swON var PORTB.0
swOFF var portb.1
p=0
; Fija número de bits del resultado (5,8,10)
; Fije EL CLOCK (rc = 3)
; Se fija el número de microsegundos que el programa
; espera entre fijar el canal y comenzar la conversión
análoga/digital.
; Defino que el bus del display LCD es por portB y arranca
; en portC.4 (portC.4-D4/portC.5-D5/portC.6-D6/portC.7-D7)
; Defino la salida del bit de control RS del LCD
; es en portC.2
; Defino la salida del bit de control E del LCD
; es en portC.3
; Defino que el bus de control es en 4 bit
; Defino que el display 16x2 es de 2 líneas
; variable A/D medir voltaje de salida
; variable A/D medir batería
; variable carga tiempo de low del ciclo
; variable carga tiempo de alto del ciclo
; Puerto salida para lámpara indicadora de FALLA
; Puerto salida para disparar GATE del MOSFET1
; Puerto salida para disparar GATE del MOSFET2
; Puerto de salida para lámpara indicadora ENCENDIDO
; Puerto de salida para lámpara indicadora APAGADO
; Puerto de entrada para pulsador ENCENDIDO
; Puerto de entrada para pulsador APAGADO
ev=0
'******************************************************
INICIO:
LCDOUT $fe,1
LCDOUT $fe,$80,"--TORRES IO&Se--"
LCDOUT $FE,$C0,"INVERTER V.5"
;LCDOUT $fe,$90,""
;LCDOUT $fe,$D0,""
pause 1000
LCDOUT $fe,1
STB:
adcin 0,bat
if bat>100 then
p=0
Low LampFAULT
endif
if bat<100 then
LCDOUT $fe,1
LCDOUT $fe,$80," ESTADO CRITICO "
LCDOUT $FE,$C0," BATERIA BAJA!! "
high LampFAULT
pause 1000
LCDOUT $fe,1
goto STB
endif
LCDOUT $fe,$80,"Inverter en Modo"
LCDOUT $FE,$C0,"STB"
high lampOFF : low lampon
cen=4200
DUTY=830
if swON=0 and p=0 then
LCDOUT $fe,1
LCDOUT $fe,$80,"Inverter en Modo"
LCDOUT $FE,$C0,"On"
high lampon : low lampoff
goto inversor
endif
ev=0
pause 200
goto stb
INVERSOR:
P=0
pauseus cen
adcin 1,REF
jv=bat*ref
if jv<2500 or jv>2600 then gosub REGULAR
HIGH G1
.
pauseus 200
adcin 0,bat
pauseus duty
low G1
pauseus cen
if swoff=0 then
LCDOUT $fe,1
******************************************************
; En modo STAND BY, chequea el valor de la batería y si esta baja
; imprime mensaje. Si esta en tensión optima, prosigue…
; rutina de espera.
; valor de inicio 50/60hz
; valor de inicio 50/60hz
; apaga o enciende el inversor
; SUB RUTINA ESTADO COMO INVERSOR.
; mide muestra tensión de salida.
; parámetros de tensión
; activa gate1 .
; fija tiempo del ciclo alto.
; tiempo de ciclo bajo
LCDOUT $fe,$80,"Inverter en Modo"
LCDOUT $FE,$C0,"Off"
pause 1500
goto stb
endif
if ref>200 and duty>3000 then gosub evento
if bat<100 then p=1
if p=1 then
LCDOUT $fe,1
LCDOUT $fe,$80,"Inverter en Modo"
LCDOUT $FE,$C0,"Off(Proteccion)"
low lampon
high lampoff
high lampfault
pause 1500
goto stb
endif
if p=2 then
ev=0
p=0
endif
PAUSEUS cen
adcin 1,REF
jv=bat*ref
if jv<2500 or jv>2600 then gosub regular
HIGH G2
pauseus 200
adcin 0,bat
PAUSEUS duty
low G2
pauseus cen
pauseus 100
GOTO INVERSOR
REGULAR:
if jv<2500 and DUTY<5030 then
DUTY=DUTY+30
cen=cen-15
endif
if jv>2600 and DUTY>30 then
DUTY=DUTY-30
cen=cen+15
endif
return
EVENTO:
p=2
ev=ev+1
if ev>4 then p=1
return
end
; si sw=0 regresa a stb así apaga el osc
; para controlar sobrecargas y falta de ref.=1
; resetea p y ev si se normaliza las codiciones de sobre excitación.
; centraliza el pulso en
; mide muestra tensión de salida.
; parámetros de tensión
; activa gate 2
; fija tiempo del ciclo alto.
; regular valor de tensión de salida.
; disminuye el ciclo de trabajo
; centraliza el pulso
; aumenta el ciclo de trabajo
EVENTO:
; cuenta ciclos de sobrecarga.
; si dura mucho la sobrecarga se protege.
; FIN DEL PROGRAMA
A continuación, tenemos el correspondiente diagrama de circuito del INVERSOR para confeccionar y probar nuestro
programa del microcontrolador… Prueben el programa, así como esta, y luego, para no dañar componentes de su
hardware, dibujen esquema en ISIS Proteus e intenten sumar más funciones, para corroborar lo dicho anteriormente…
Como podrán observar en el ejemplo anterior del inversor, el empleo del display es mínimo y no
ralentiza el proceso, pero si queremos modificar el programa para poder tener una visualización real
de la tensión de nuestra batería, más el control en tiempo real de algunas variables del proceso,
notaremos que nuestra ondulación, nuestra señal de salida se deformara y nos acarrea un sinfín de
problemas.
Anteriormente, en el artículo que compartí en mi página escuela (ETI – Educación Técnica Informal)
sobre PWM, les comenté que podíamos generar un PWM en segundo plano sin afectar el resto del
programa del microcontrolador. Esto se logra configurando algunos TIMER e INTERRUPCIONES del
microcontrolador, que vienen asociados al puerto CCP (Comparador – Captura - PWM). La limitación
que nos impide implementar este puerto de función especial, es que según como juguemos con la
configuración del prescaler y el valor del cristal asociado a nuestro micro (4-48Mhz), solo podremos
obtener señales que oscilan entre 244Hz y 5Khz.
La estructura del PROGRAMA básico para un VFD
Para diseñar un VFD, requerimos tener control del hardware en tiempo real en todo momento; Es por
ello que el programa anterior es obsoleto, ya que cuando queramos trabajar sobre los tiempos de
disparo del ambos mosfet, se ralentizara o dejara de cumplir determinadas ejecuciones para atender
la nueva orden impartida
Para solucionar este problema, se opta por trabajar con una librería que nos permite generar una
técnica de control SPWM (5Hz-200Hz), sin tener problemas de atender otras funciones de nuestro
cuerpo del programa, ya que ésta prácticamente pareciera trabajar en segundo plano, pero la
realidad es que trabaja con un PWM por software que asocia TIMER e INTERRUPCIONES lo cual lo
tornan más eficiente y práctico para nuestro propósito.
• preSETEO de variables
• Limpieza de registros
• Carga Valores iniciales
INICIO
LOOP
• Lectura pulsadores
• Imprimir LCD
• Carga valores y
genera SPWM
• Vuelve a LOOP
SPWM
El manejo de la librería SPWM que adjuntamos al final del artículo y que deberemos adjuntar con
nuestro programa al momento de compilar es simple; Como podemos observar en el grafico
superior, nuestro programa debe de iniciar con una mínima configuración de los puertos. Luego, se
debe generar una limpieza y puesta a cero de los valores por defecto en el arranque del
microcontrolador, seguido de un pre-seteo de las variables y puertos donde tendremos la acción de
salida (Solo configuración de puerto de salida y valores iniciales para las variables “Frecuencia” y
“Duty”). Siempre este pre-seteo debe de estar seguido a las configuraciones principales de nuestro
microcontrolador. El control de la frecuencia de salida, solo lo veremos cuando actualicemos los
valores de determinadas variables. O sea, esto quiere decir que para cada acción de pulsador, se
incrementa o decrementa la variable FREQ, pero esta no se verá reflejada en la salida asignada, hasta
no tanto saltemos a la librería SPWM para actualizar las variables. Para este propósito,
implementaremos “GOSUB StartSPWM”, y las modificaciones que realizamos en las variables, se
refrescaran y veremos un cambio de comportamiento en nuestra salida.
Así como podemos modificar la frecuencia de nuestra señal de salida, también podemos modificar
nuestro ciclo de trabajo. Para ello, deberemos modificar los valores de la variable “DUTY”, y al igual
que la variable de FRECUENCIA, para que este tenga efecto a la salida de nuestra señal, deberemos
refrescar los valores de los registros implementando un salto a la librería como indicamos
anteriormente…
Veamos un sencillo ejemplo de cómo controlar un PWM de frecuencia variable con salida 30-100Hz
'****************************************************************
'* Proyecto:
EJEMPLO IMPLEMENTACION DE LIBRERÍA SPWM
'* Autor:
TORRES IO&Se
'* Noticia:
Copyright ©2020 ETI - [email protected]
'*
® All Rights Reserved ETI (Educación Tecnica Informal)
'****************************************************************
define OSC 4
TRISA = %11111111
; config todo el portA como entrada
TRISB = %11111111
; config portB como entrada
TRISC = %00000000
; config todo el portC como salidas
MAS_button VAR PORTB.0
; botón mas
MENOS_button VAR PORTB.1 ; botón menos
CLEAR
' ---- SPWM Slow Software Pulse Width Modulation -------------SPWMpin
var PORTC.0
' Output Pin for SSPWM
Include "SSPWM.INC"
' Output Pin must be Defined before Include file
' Include file must be after the Clear statement
Freq = 30
DutyCycle = 50
gosub StartSPWM
' Set Frequency of SSPWM (word)
' Set Duty Cycle of SSPWM (byte) 0-100
' Start SSPWM @ Freq/DutyCycle
Loop:
if MAS_button = 0 then
Freq = freq + 10
if Freq > 100 then Freq=100
gosub StartSPWM
endif
if MENOS_button = 0 then
Freq = freq - 10
if Freq < 30 then Freq=30
gosub StartSPWM
endif
pause 100
goto Loop
END
El Motor del VFD
El motor usado en un sistema VFD es normalmente un motor de inducción trifásico. Algunos tipos de
motores monofásicos pueden ser igualmente usados, pero los motores de tres fases son
normalmente preferidos. Varios tipos de motores síncronos ofrecen ventajas en algunas situaciones,
pero los motores de inducción son más apropiados para la mayoría de propósitos y son
generalmente la elección más económica. Motores diseñados para trabajar a velocidad fija son
usados habitualmente, pero la mejora de los diseños de motores estándar aumenta la fiabilidad y
consigue mejor rendimiento del VFD.
Los Variadores de Frecuencia en los procesos de Climatización:
Los variadores de frecuencia cuentan con características que se pueden aprovechar en los sistemas de
refrigeración y aire acondicionado para el ahorro de energía, así como en el control de procesos y la
optimización de trabajos.
Al utilizar un variador de frecuencia se tiene prácticamente un arrancador suave, lo que indica que se
arranca desde una velocidad mínima hasta llegar a la velocidad máxima, sin hacer picos de corriente,
con lo que se logra un ahorro adicional.
Los beneficios de utilizar un variador de frecuencia en un sistema de refrigeración, la importancia del
control de capacidad, sus beneficios en comparación con un sistema convencional, el uso de
compresores para refrigeración y aire acondicionado, el uso en bombas de agua y el uso en ventiladores
de evaporador y en ventiladores de condensación.
Todas estas aplicaciones necesitan una variación de frecuencia en los motores para reducir el consumo
de energía. La puesta en marcha de un variador de velocidad, el cual se acompaña del arrancador suave,
es fundamental la correcta definición de su aplicación. “Cuando se arranca un motor a plena carga, se
logra ocho veces más el amperaje nominal que éste tiene”, por ejemplo. También podemos observar
que hay otro método para el arranque, el estrella delta, donde se puede arrancar una parte del
bobinado y después se arranca la segunda parte, por lo que se reduce el consumo de energía.
Ventajas de los variadores de frecuencia:
_Corrección del factor de potencia del motor
_Control mejorado de caudal y presión
_Arranque suave de los motores
_Eliminación de ruidos por vibraciones
La única Desventaja que tenemos con los VFD, es que, en cuanto a su uso en compresores, si un sistema
tiene tres compresores, no se le puede colocar un variador de frecuencia a cada compresor: “Es
impráctico, costoso y no es necesario. Lo que se debe hacer es colocar el variador a un sólo compresor.
Al encender el compresor con variador de frecuencia a su capacidad mínima, ya sea 25 o 30 Hz,
dependiendo de qué compresor se tenga, vamos a acelerarlo hasta llegar a su capacidad máxima. Si el
sistema requiere más capacidad térmica, en ese momento, se parte al mínimo la frecuencia y velocidad
del compresor con variador y se enciende el compresor de velocidad fija; de esta manera, se logra esta
capacidad con la mínima del compresor con variador”.
Ahora, si todavía se necesita más capacidad térmica se va a acelerar el compresor hasta su capacidad
máxima otra vez a 100 Hz, y si se requiere más capacidad, se enciende el tercer compresor. “Ya se tiene
la carga del primer y segundo fijo, y la mínima del compresor con variador de frecuencia. Si se sigue
requiriendo más calor vamos a llegar al cien por ciento de la velocidad y la capacidad del primer
compresor, el variable, más la capacidad del segundo, más la capacidad del tercero”.
Variaciones de carga de enfriamiento:
La velocidad variable para los compresores se utiliza de manera más efectiva cuando tiene condiciones
de carga razonablemente consistentes. Si en un minuto el compresor está avanzando y luego, el
siguiente, está luchando para cumplir con el punto de ajuste de la temperatura seteada para un espacio,
es probable que no sea una aplicación ideal para un VFD. Cuando el compresor ve variaciones menos
dramáticas en la temperatura del espacio durante un período de tiempo más prolongado, el VFD se
puede utilizar de manera más efectiva y lograr un ahorro de energía mucho mejor.
El compresor es una máquina volumétrica y la demanda de refrigeración se cubre mediante la
evaporación de una masa determinada.
El rendimiento del compresor será siempre superior a cargas parciales y el consumo finalmente será
siempre menor, trabajando con un variador de frecuencia. En general al trabajar a menos revoluciones
todas las pérdidas por rozamientos serán menores en todos los elementos mecánicos (rodamientos,
pérdidas de presión en tubería, etc.), las pérdidas en estos elementos no son lineales, sino cuadráticas
y por ello finalmente el compresor consumirá menos.
En pocas palabras, si desea aplicar soluciones de velocidad variable sobre el compresor de su equipo
de refrigeración o aire acondicionado, solo hay que tener en cuenta que no puedes bajar muy abajo la
velocidad porque necesitas una velocidad periférica mínima en el tornillo para garantizar sellado,
porque si no recircula por el borde y el compresor no comprime... En el caso de los compresores a
Pistón, requerimos una revolución mínima para que el sistema de refrigeración pueda cumplir su
rol/función en el cilindro y partes mecánicas. En principio de 100hz hasta 30 Hz, tendremos un
funcionamiento óptimo de nuestro compresor.
Nuestro Diseño propuesto de un VFD INVERTER:
Anteriormente citamos ejemplos de cómo confeccionar un simple VFD y un INVERSOR de corriente,
ambos monofásicos. Si tu idea era modificar tu sistema de climatización y el compresor es trifásico, el
siguiente ejemplo práctico, mostramos como construir nuestro propio Variador de Frecuencia Trifásico
para procesos de control en Climatización.
En el siguiente diagrama de circuito, contamos con varias etapas, a continuación, describiré cada una
de ellas para una mayor comprensión del diseño.
A_ Etapa RECTIFICADORA:
Esta etapa consta de dos fuentes de alimentación de las cuales una de ellas es la que se encarga de proveer
de energía a los sistemas de control microcontrolado del variador. Aplicara +5Volts para alimentar la etapa
de control de frecuencia y la etapa de control de desfase y disparo, también se provee de +15volts a la
etapa de acoplamiento, la otra es una fuente trifásica de onda completa no controlada, la cual rectifica las
líneas trifásicas convirtiéndolas de AC a CC para posteriormente pasar por un filtro. La sumatoria de los
filtros da como resultado un filtro total de 2100 microfaradios – 500Volts.
La corriente máxima está determinada por los diodos de la fuente de poder. Para este caso particular, estaría
entregando una corriente máxima de 12Amp, se debe de tener en consideración que el formato del diodo
rectificador de 12 Amperes, puede ser del tipo rápido o ultra rápido. Después de esto, la energía
proporcionada por la fuente trifásica es entregada a la etapa de los MOSFET.
Una posible variación en este circuito es aplicando IGBT y un desacoplamiento de estos u los mosfet actuales
del diseño, sumando opto acopladores NPN a la salida de nuestras compuertas NOR y atacando los drivers
IR21XX, los cuales, tendrán la alimentación de una tercera fuente de 12Vcc que saldrá de del rectificador
trifásico y que compartirá GND con los semiconductores de potencia. Con esta acción, vamos a prevenirnos
de posibles interferencias ocasionados por ruidos u otras distorsiones que pueden afectar el normal
comportamiento y funcionamiento de nuestro microcontrolador.
B_ Etapa CONTROL DE FRECUENCIA:
Para la etapa control de frecuencia, se seleccionó un microcontrolador 16F876A de microchip, el cual nos
provee un puerto analógico para el sensor de temperatura (LM35), un puerto completo dedicado al control
del display LCD y la salida de la señal SPWM, y un puerto dedicado al control del teclado de funciones.
El firmware de este diseño, cuenta con el control de la frecuencia y duty de salida en dos modos:
_MODO MANUAL: La salida de la señal SPWM, se controla desde las teclas de incremento y decremento de
Frecuencia, y las teclas de incremento y decremento e incremento de Duty.
_MODO AUTOMATICO: La salida de la señal SPWM, se controla en base a los parámetros configurados de
trabajo por temperatura. O sea, se setea la Temperatura deseada del ambiente, y en base al sensado del sensor
de temperatura, nos generara una salida que varía entre los 30-100Hz, según lo requiera el compresor para
llevar el proceso al punto que deseamos.
El firmware mencionado, es aplicable tanto para el diseño monofásico, como para el trifásico, ya que este
solo trabaja como base de tiempo para las etapas de CONTROL DE DESFASE Y DISPARO
C_ Etapa CONTROL DE DESFASE Y DISPARO:
Esta etapa consta de un desplazador de registro (circuito integrado 74198) de 8 bits y seis compuertas NOR
(circuito integrado 74LS27). El registro de desplazamiento genera un barrido en este caso de 6 bits. Cuando
haya un pulso positivo enviado por la etapa de control de frecuencia, desplazara 1 bits en la salida desde
QA hasta QF luego reiniciándose automáticamente para posteriormente volver a generar un nuevo barrido,
para posteriormente ser desplazado como se describió anteriormente.
Mientras que las 6 compuertas, generar el desfase y a la vez proporcionan los voltajes para poder excitar
las entradas de la etapa de acoplamiento.
D_ Etapa CONTROL DE DISPARO:
El IR2101 tiene dos controles de salidas (el IR2130 tiene 6 y es ideal para este propósito) para el disparo de
los semiconductores de potencia. En nuestro diseño, emplearemos 3 driver IR2101, de los cuales tres salidas
van referenciadas a VS0, y tres manejadores flotantes capaces de trabajar con voltajes offset de hasta
600Volts positivos con respecto a VS0. Todas las salidas tienen lógica invertida, o sea, todas ellas van a
positivo con su correspondiente 0.5Volts de entrada, LIN o HIN van a nivel bajo. La corriente de salida típica
es de 250mA en el flanco de subida u 500mA en el flanco de bajada.
El IR21XX cuenta cada integrado con una protección de UV y un offset que les permite un buen disparo de
los dispositivos de potencia del lado alto.
Una de las diferencias más notables que tendremos en cuanto a la selección de nuestro driver, es que
el IR2130 respecto al IR2101, es que cuenta con una función extra (PIN FAULT) en uno de sus pines, y
es la de marcarnos problemas de sobre corriente entre otras anomalías, poniendo en estado bajo sus
salidas sin importar las señales de disparo HIN-LIN. Este pin de salida podemos implementar un LED y
una resistencia para obtener una señal lumínica de fallo en la etapa de potencia, o bien, sumar un
puerto de entrada de nuestro microcontrolador para que este detecte cuando tenemos problemas y lo
indique en nuestro display LCD.
Notas sobre el diseño:
Para calcular y o verificar la frecuencia mínima y máxima que tenemos a la salida, se debe de
tener en consideración que este variador de frecuencia trifásico, es de seis pasos, por
consiguiente, la frecuencia mínima y máxima obtenida en cualquiera de las tres fases de
salida del variador, se debe multiplicar por 6 para poder determinar el valor de la frecuencia
real que tenemos en el compresor, que básicamente, es similar al que tenemos en la salida
“OUT_SPWM” del microcontrolador PIC.
Imagen de los desfase de las salidas
LIBRERÍA SSPWM (Archivo .INC):
'****************************************************************
'* Name : SSPWM.INC
Slow Software PWM
*
'* Author : Darrel Taylor
*
'* Date : 5/1/2003
*
'* Version : 1.0
*
'* Notes :
*
'*
:
*
'****************************************************************
DEFINE INTHAND INT_CODE
' Tell PBP Where the code starts on an interrupt
wsave
VAR BYTE $20 SYSTEM
'$20 Save location for the W register if in bank0
wsave1
VAR BYTE $A0 SYSTEM
' Save location for the W register if in bank1
wsave2
VAR BYTE $120 SYSTEM
' Save location for the W register if in bank2
wsave3
VAR BYTE $1A0 SYSTEM
' Save location for the W register if in bank3
ssave
VAR BYTE Bank0 SYSTEM
' Save location for the STATUS register
psave
VAR BYTE Bank0 SYSTEM
' Save location for the PCLATH register
Freq
var word
' SPWM Frequency
W1
var word
' Temporary variable
W2
var word
' Temporary variable
TP
var word
' Temporary variable
y
var TP.lowbyte
' Temporary variable shared
uS
var word
' Time for 1 cycle in MicroSeconds
uSdec
var byte
' .1us digit
ActuS
var word
' Actual cycle time after integer math
ActuSdec
var byte
' Actual cycle time .1us digit
Ticks
var word
' # of Timer Ticks to = us
PicOSC
var byte Bank0
' OSC value, Usable in PBP
Prescaler
var byte
' Timer1 Prescale value
DutyCycle
var byte ' As %, 0 - 100 0 = Always Off 100 = Always On
TMR1_ON_TICKS var word Bank0 ' # of Tmr ticks for On Time
TMR1_OFF_TICKS var word Bank0 ' # of Tmr ticks for Off Time
TMR1_ON_VAL
var word Bank0 ' # to load TMR1 for On Time
TMR1_OFF_VAL
var word Bank0 ' # to load TMR1 for Off Time
DataFlags
var byte Bank0
Valid
var DataFlags.0 ' 1 if Freq is valid - Set by CalcSPWM:
SPWMenabled
var DataFlags.1 ' shows if SPWM is running or not
SPWMstate
var DataFlags.2 ' Current state of SPWM output high or low
GIE
var INTCON.7
PEIE
var INTCON.6
TMR1IE
var PIE1.0
TMR1ON
var T1CON.0
goto GetOsc
' -----------------------------------------------------------------------asm
INT_CODE
if (CODE_SIZE <= 2)
movwf wsave
; copy W to wsave register
swapf STATUS,W
; swap status reg to be saved into W
clrf STATUS
; change to bank 0 regardless of current bank
movwf ssave
; save status reg to a bank 0 register
movf PCLATH,w
; move PCLATH reg to be saved into W reg
movwf psave
;6 ; save PCLATH reg to a bank 0 register
endif
btfss PIR1, TMR1IF
; is TMR1IF set? Timer1 Interrupt Flag
GOTO NoTimerInt
; No. Bypass timer load
btfss _Valid
; Is Freq valid?
GOTO NoSPWM
; No. Halt SPWM
btfss _SPWMenabled
; is Software PWM enabled?
GOTO NoSPWM
; No. Halt SPWM
; Yes, then Set output and reload Timer1
btfss _SPWMstate
; Is Output High?
GOTO TurnON
;9/15 ; No
TurnOFF
bcf _SPWMpin
; Set SPWMpin Low
bcf _SPWMstate
;
BCF T1CON,TMR1ON
; Turn off timer
MOVF _TMR1_OFF_VAL,W ; 1
ADDWF TMR1L,F
; 1 ; reload timer with correct value
BTFSC STATUS,C
; 1/2
INCF TMR1H,F
; 1
MOVF _TMR1_OFF_VAL+1,W ; 1
ADDWF TMR1H,F
; 1
BSF T1CON,TMR1ON
; 1 ; Turn it back on
GOTO TimerDone ;12/27
TurnON
bsf _SPWMpin
; Set on SPWMpin High
bsf _SPWMstate
;
bcf T1CON,TMR1ON
; Turn off timer
MOVF _TMR1_ON_VAL,W
; 1
ADDWF TMR1L,F
; 1 ; reload timer with correct value
BTFSC STATUS,C
; 1/2
INCF TMR1H,F
; 1
MOVF _TMR1_ON_VAL+1,W ; 1
ADDWF TMR1H,F
; 1
bsf T1CON,TMR1ON
; 1 ; Turn it back on
GOTO TimerDone
NoSPWM
bcf T1CON,TMR1ON
; Turn off timer
bcf _SPWMpin
; Idle SPWMpin Low
TimerDone
bcf PIR1, TMR1IF ; 1/28
; Clear Timer1 Interrupt Flag
NoTimerInt
Movf psave,w
; Restore the PCLATH reg
Movwf PCLATH
swapf ssave,w
; Restore the STATUS reg
movwf STATUS
swapf wsave,f
swapf wsave,w ; 6/34 ; Restore W reg
Retfie
; Exit the interrupt routine
endasm
' -----------------------------------------------------------------------StartSPWM: ' Set Freq and DutyCycle before calling
low SPWMpin ' Set SPWMpin to Output and idle Low
GIE = 1
PEIE = 1
TMR1H = 255 ' Load TMR1 with 65535, First tick will cause
TMR1L = 255 ' an interrupt that will load TMR1_???_VAL
SetSPWM: ' Set Freq and DutyCycle before calling
if DutyCycle = 0 then StopSPWM
if DutyCycle >= 100 then IdleHigh
gosub CalcSPWM
if Valid = 1 then
SPWMenabled = 1
lookdown Prescaler,[1,2,4,8],y
lookup y,[0,1,2,3],y
y = (y << 4) + 1
TMR1_ON_VAL = 65535 - TMR1_ON_TICKS + 8
TMR1_OFF_VAL = 65535 - TMR1_OFF_TICKS + 8
TMR1IE = 1
T1CON = y ; Set Timer1 prescaler and turn Timer1 on
else
goto StopSPWM
endif
return
StopSPWM
TMR1IE = 0
TMR1ON = 0
low SPWMpin
' Idle output Low
SPWMstate = 0
SPWMenabled = 0
return
IdleHigh:
' Idle output High
gosub StopSPWM
' First, stop the timer
high SPWMpin
' Set output High
return
CalcSPWM:
Prescaler = 1
Valid = 1
TMR1_ON_TICKS = 0
TMR1_OFF_TICKS = 0
W2 = 1000
W1 = W2 * W2
' Load internal registers with 1,000,000
uS = Div32 Freq
' solves (1/Freq)*1000000 Full Cycle time in uS
if uS = 65535 then
Valid = 0
goto CalcDone
endif
uSdec = 0
if uS < 6550 then
' get .1uS value
W1 = 10000
W1 = W1 * W2
' 10,000,000
W1 = Div32 Freq
uSdec = W1 dig 0
endif
TryPrescaler:
if uS < 6550 then
W1 = uS * 10 + uSdec
TP = Prescaler * 100
else
W1 = uS
TP = Prescaler * 10
endif
if (PicOsc = 4) and (uSdec > 5) then W1 = W1 + 10
W2 = PicOSC * 10 / 4
Ticks = W1 * W2
Ticks = div32 TP
TP = TP * 100
W1 = W1 * W2
W1 = div32 TP
if Ticks /100 <> W1 then
Prescaler = Prescaler * 2
if Prescaler > 8 then
Valid = 0
goto CalcDone
endif
goto TryPrescaler
endif
W1 = Ticks * DutyCycle
' Calc # of Ticks for ON and OFF periods
TMR1_ON_TICKS = div32 100
TMR1_OFF_TICKS = Ticks - TMR1_ON_TICKS
CalcDone:
return
GetOsc:
' Retreive defined OSC value on Reset
asm
ifdef OSC
MOVE?CB OSC, _PicOSC
else
MOVE?CB 4, _PicOSC
endif
endasm
'****************************************************************
'****************************************************************
CONEXIONADO TIPICO
BIBLIOGRAFIA:
Variadores de Frecuencia
– Jorge Fernando Lagos Núñez – INACAP
Slow Software PWM (SSPWM)
- Darrel Taylor
Métodos para llevar a cabo la variación voltaje/frecuencia – apuntes Electrónica de potencia – UTN
Design of a single-phase SPWM inverter application with PIC microcontroller
-Yas ar Birbir (Department of Electric & Electronic Engineering, Technology Faculty, Marmara University, Turkey)
-Kaner Yurtbasi (Marmara University, Institute for Graduate Studies in Pure and Applied Sciences Istanbul, Turkey)
-Volkan Kanburoglu (Marmara University, Ataturk Faculty of Education, Istanbul, Turkey)
Introducción al control de procesos con Picbasic PRO (PBP)
– Curso de programación ETI (Educacion Tecnica Informal)
Diseño de Inversor de corriente
– Sergio Uasd
Variadores de Frecuencia para compresores
– www.danfoss.com
Curso de Aire acondicionado Inverter
– www.frionline.net
Tecnología Inverter en sistemas de Climatización
– ingemecanica.com
Generación de ondas SPWM con Arduino para la excitación de Inversores
– JP Andriach – UTN FRBB
Maquinas Eléctricas
– UTN FRM
Como diseñar un variador de frecuencia
– www.forosdeelectronica.com
Generador de Pulsos variables (Frec y Duty)
– Articulo Teórico y práctico ETI (Educacion Tecnica Informal)
Automatización Temperatura Invernadero con LM35
– Articulo Teórico y práctico ETI (Educacion Tecnica Informal)
Termómetro – Termostato con DS18B20
– Articulo Teórico y práctico ETI (Educacion Tecnica Informal)