Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Inversor Monofásico para Variar Velocidad en Un Motor Utilizando La Técnica SPWM
Inversor Monofásico para Variar Velocidad en Un Motor Utilizando La Técnica SPWM
SONORA
ID: 00000215164
Cabe resaltar que el sistema está diseñado para obtener una salida de tensión a
127 𝑉𝑟𝑚𝑠 .
𝐷𝑟𝑖𝑣𝑒𝑟𝑠
𝑀𝑖𝑐𝑟𝑜𝑐𝑜𝑛𝑡𝑟𝑜𝑙𝑎𝑑𝑜𝑟
1 𝑘𝛺
𝐹𝑖𝑔𝑢𝑟𝑎 1.0. 𝐷𝑖𝑎𝑔𝑟𝑎𝑚𝑎 𝑑𝑒 𝑏𝑙𝑜𝑞𝑢𝑒𝑠 𝑑𝑒𝑙 𝑝𝑟𝑜𝑦𝑒𝑐𝑡𝑜 𝑣𝑎𝑟𝑖𝑎𝑑𝑜𝑟 𝑑𝑒 𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑 𝑝𝑎𝑟𝑎 𝑢𝑛 𝑚𝑜𝑡𝑜𝑟 𝑚𝑜𝑛𝑜𝑓á𝑠𝑖𝑐𝑜.
El sistema está diseñado para ingresar un voltaje directo de la red que será
rectificado y filtrado para obtener una señal más fina que será la amplitud que
ingresará al inversor que será el encargado de entregar un voltaje alterno controlado
desde el microcontrolador con la amplitud mencionada anteriormente.
de la que es necesario utilizar dos señales diferentes que serán comparadas, una
1
𝑔1 𝑓𝑐
0 𝜔𝑡
𝜋 2𝜋
𝑔2
0 𝜔𝑡
𝜋 2𝜋
𝛿𝑚
𝑉𝑠
0 𝜔𝑡
𝛼𝑚 𝜋 2𝜋
−𝑉𝑠
evaluada en el centro del mismo pulso. De esta manera logramos reducir los
armónicos significativamente.
el semiciclo negativo 𝑔2 .
Esta etapa es la encargada de generar dos señales SPWM con un desfase entre
optó por utilizar un Nano Arduino que garantiza gran funcionamiento, menor espacio
y menor cableado.
𝑉𝐶𝐶
𝑉𝐶𝐶
𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝐴
𝐸𝑛𝑡𝑟𝑎𝑑𝑎 𝐵
𝑉𝐶𝐶
𝑆𝑎𝑙𝑖𝑑𝑎 𝐴
𝑆𝑎𝑙𝑖𝑑𝑎 𝐵
𝐹𝑖𝑔𝑢𝑟𝑎 2.1.1. 𝐷𝑖𝑎𝑔𝑟𝑎𝑚𝑎 𝑑𝑒 𝑐𝑜𝑛𝑒𝑥𝑖𝑜𝑛𝑒𝑠 𝑝𝑎𝑟𝑎 𝑜𝑏𝑡𝑒𝑛𝑒𝑟 𝑑𝑜𝑠 𝑠𝑒ñ𝑎𝑙𝑒𝑠 𝑐𝑜𝑛 𝑑𝑒𝑠𝑓𝑎𝑠𝑒 𝑑𝑒 180ᵒ
De la 𝐹𝑖𝑔𝑢𝑟𝑎 2.1.0 se aprecian las dos entradas de señal declaradas como entradas
de voltaje analógicas en los pines 𝐴0 𝑦 𝐴1 controladas mediante un potenciómetro.
La entrada 1 controla la frecuencia moduladora deseada, es decir, la frecuencia de
la señal sinusoidal.
Para el uso de los drivers se escogió el controlador de 𝑀𝑂𝑆𝐹𝐸𝑇 𝐼𝑅2111 que posee
dos salidas a una sola entrada. El 𝐼𝑅2111 es una fuente de alimentación de alta
velocidad a un manejo de alto voltaje. Este controlador requiere de un voltaje de
operación mínimo de 10 𝑉 a un máximo de 20 𝑉, por lo que el voltaje 𝑉𝐼𝑁 debe ser
del mismo valor que el de alimentación y de ser lo contrario se tomará como un 0
lógico.
15 𝑉 15 𝑉
1 𝑘𝛺 1 𝑘𝛺
𝑆𝑎𝑙𝑖𝑑𝑎 𝐴̅ 𝑆𝑎𝑙𝑖𝑑𝑎 𝐵̅
22 𝑘𝛺 22 𝑘𝛺
𝑆𝑎𝑙𝑖𝑑𝑎 𝐴 2𝑛2222𝑎 𝑆𝑎𝑙𝑖𝑑𝑎 𝐵 2𝑛2222𝑎
𝑁𝑜𝑡𝑎: 𝑝𝑎𝑟𝑎 𝑓𝑖𝑛𝑒𝑠 𝑝𝑟á𝑐𝑡𝑖𝑐𝑜𝑠 𝑠𝑒 𝑡𝑜𝑚𝑎𝑟á𝑛 𝑙𝑎𝑠 𝑠𝑎𝑙𝑖𝑑𝑎𝑠 𝑛𝑒𝑔𝑎𝑑𝑎𝑠 𝑐𝑜𝑚𝑜 𝑠𝑎𝑙𝑖𝑑𝑎𝑠 𝑛𝑜 𝑛𝑒𝑔𝑎𝑑𝑎𝑠.
Una vez con las salidas amplificadas se ingresan al driver siguiendo la hoja de datos
dadas por el fabricante:
MUR860
VCC VB
0.1 µF 10 µF 10 Ω
IR2111
VIN (𝐴 𝑜 𝐵) VIN VHIGH +
Vgs1
−
GND VS
VLOW
10 Ω
+
Vgs4
−
Una vez obtenidas las cuatro salidas para el inversor monofásico de puente
completo se concluye el apartado de control.
Para esto se deben utilizar cuatro diodos que resistan la corriente máxima
espectada y el voltaje pico inverso que la red doméstica proveerá, en este caso se
escogen diodos 1N5406.
Para conocer el valor PIC (Voltaje pico inverso) que tendrá que soportar el diodo se
puede seguir la siguiente fórmula (2), (1):
2
𝑉𝑚2 𝑇
𝑣𝑠 = ∫ 𝑠𝑒𝑛2 (𝜔𝑡)𝑑(𝜔𝑡)
𝑇 0
𝑉𝑚2 𝑇 1 𝑉𝑚2 𝑇 𝑇
= ∫ (1 − cos(2 𝜔𝑡))𝑑(𝜔𝑡) = [∫ 𝑑(𝜔𝑡) − ∫ cos(2 𝜔𝑡)𝑑(𝜔𝑡)]
𝑇 0 2 2𝑇 0 0
𝑉𝑚2 1 4𝜋 1 4𝜋 𝑉𝑚2
= [𝑇 − 0 − 𝑠𝑒𝑛 ( (𝑇)) + 𝑠𝑒𝑛 ( (0))] = (𝑇)
2𝑇 2𝜔 𝑇 2𝜔 𝑇 2𝑇
𝑉𝑚2
𝑣𝑠 2 = → 𝑉𝑚 = 𝑣𝑠 √2 (3) → 𝑉𝑚 = (127 𝑉𝑟𝑚𝑠 )(√2) = 179.605122 V
2
De este cálculo se conoce con más precisión las características del diodo a escoger.
+
𝑣𝑠 = 𝑉𝑚 𝑠𝑒𝑛(𝜔𝑡)
1N5406 1N5406
0 𝜔𝑡
𝜋 2𝜋
+
𝑅𝑒𝑑 𝑎𝑙𝑡𝑒𝑟𝑛𝑎 𝑣𝑠 𝑣𝑜 −𝑉𝑚
−
𝑣𝑜
𝑉𝑚
1N5406 1N5406
−
0
𝜋 2𝜋
2.2.1. Filtrado
1 1
𝐶= ( + 1) (3)
4𝑓𝑅𝐿 𝐹𝑅√2
+
1N5406 1N5406
𝑣𝑜 𝑉𝑜(𝑚á𝑥) 𝑉𝑜(𝑚í𝑛)
+
𝑅𝑒𝑑 𝑎𝑙𝑡𝑒𝑟𝑛𝑎 𝑣𝑠 Ce 𝑣𝑜 𝛽
−
0
𝜋 2𝜋 3𝜋 𝜔𝑡
1N5406 1N5406
−
𝐷𝑖𝑎𝑔𝑟𝑎𝑚𝑎 2.2.1. 𝑃𝑢𝑒𝑛𝑡𝑒 𝑟𝑒𝑐𝑡𝑖𝑓𝑖𝑐𝑎𝑑𝑜𝑟 𝑑𝑒 𝑜𝑛𝑑𝑎 𝑐𝑜𝑚𝑝𝑙𝑒𝑡𝑎 𝑐𝑜𝑛 𝑓𝑖𝑙𝑡𝑟𝑜 𝐶, 𝑓𝑜𝑟𝑚𝑎 𝑑𝑒 𝑜𝑛𝑑𝑎 𝑣𝑜 .
+
+ 𝑄1 + 𝑄3
Vgs3
Vgs1 + 𝑣𝑜(∼) −
− 𝑖𝑜 −
𝑣𝑜 𝑀𝑜𝑡𝑜𝑟
+ 𝑄4 + 𝑄2
Vgs4 Vgs2
− − −
𝐹𝑖𝑔𝑢𝑟𝑎 2.2.2. 𝐷𝑖𝑎𝑔𝑟𝑎𝑚𝑎 𝑑𝑒𝑙 𝑐𝑖𝑟𝑐𝑢𝑖𝑡𝑜 𝑑𝑒 𝑝𝑜𝑡𝑒𝑛𝑐𝑖𝑎 𝑑𝑒𝑙 𝑖𝑛𝑣𝑒𝑟𝑠𝑜𝑟 𝑝𝑢𝑒𝑛𝑡𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑡𝑜.
𝐹𝑖𝑔𝑢𝑟𝑎 3.1. 𝐹𝑜𝑟𝑚𝑎𝑠 𝑑𝑒 𝑜𝑛𝑑𝑎 𝑆𝑃𝑊𝑀 𝑝𝑟𝑜𝑣𝑒𝑛𝑖𝑒𝑛𝑡𝑒𝑠 𝑑𝑒𝑙 𝑙𝑜𝑠 𝑡𝑟𝑎𝑛𝑠𝑖𝑠𝑡𝑜𝑟𝑒𝑠 2𝑛2222𝑎.
Los tiempos muertos obtenidos fueron de 690 𝑛𝑠, tiempo suficiente para conmutar
los transistores de potencia para el inversor.
𝐹𝑖𝑔𝑢𝑟𝑎 3.3. 𝑉𝑜𝑙𝑡𝑎𝑗𝑒 𝑑𝑒 𝑠𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝐼𝑛𝑣𝑒𝑟𝑠𝑜𝑟 𝑑𝑒 𝑃𝑢𝑒𝑛𝑡𝑒 𝐶𝑜𝑚𝑝𝑙𝑒𝑡𝑜 𝑐𝑜𝑛 15 V 𝑑𝑒 𝑎𝑙𝑖𝑚𝑒𝑛𝑡𝑎𝑐𝑖ó𝑛.
𝐹𝑖𝑔𝑢𝑟𝑎 3.6. 𝑉𝑜𝑙𝑡𝑎𝑗𝑒 𝑑𝑒 𝑠𝑎𝑙𝑖𝑑𝑎 𝑑𝑒𝑙 𝑟𝑒𝑐𝑡𝑖𝑓𝑖𝑐𝑎𝑑𝑜𝑟 𝑑𝑒 𝑝𝑢𝑒𝑛𝑡𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑡𝑜 𝑐𝑜𝑛 𝑓𝑖𝑙𝑡𝑟𝑜 𝑐𝑎𝑝𝑎𝑐𝑖𝑡𝑖𝑣𝑜.
Una vez observado el voltaje invertido como se muestra en la 𝐹𝑖𝑔𝑢𝑟𝑎 3.3 con un
voltaje Pico-Pico de 359 V aproximadamente se conecta el motor y se observa su
comportamiento adecuado.
El uso del puente completo en el inversor monofásico permite obtener una señal de
salida con polaridad alterna, lo que garantiza una distribución equilibrada de la
potencia en la carga y minimiza los efectos de distorsión armónica en la forma de
onda de la corriente generada. Esto es especialmente importante en aplicaciones
sensibles a la calidad de la energía eléctrica, como sistemas de energías
renovables, equipos electrónicos sensibles, etc.
• S&Amp;P. (2020, January 8). ¿Qué es y para qué sirve un variador de frecuencia? |
es/blog/variador-de-frecuencia/
https://www.plena-energia.com/post/inversor-monofasico-trifasico
https://circuitdigest.com/microcontroller-projects/pure-sine-wave-generator-using-
arduino
#include <avr/io.h>
#include <avr/interrupt.h>
void setup(){
Serial.begin(9600);
makeLookUp();
setSwitchFreq(20000);
setFreq(50);
setAmp(100);
registerInit();
}
void loop(){
/*
El código en el bucle lee valores analógicos de los pines A1 y A2 para
que se puedan conectar potenciómetros.
Estos valores se utilizan para variar la amplitud y la frecuencia de la
onda sinusoidal.
La frecuencia de conmutación también alterna entre 5 y 15 KHz.
*/
static int ampVal, freqVal, anologVal;
//anologVal = 196.416;
anologVal = analogRead(A0);
if(anologVal > freqVal*1.01 || anologVal < freqVal*0.99){
freqVal = anologVal;
setFreq(map(freqVal, 0, 1023, 20, 60));
Serial.println("phaseinc");
delay(20);
static char cnt = 0;
cnt++;
if(cnt == 100){
setSwitchFreq(20000);
cnt = 0;
} else if(cnt == 50){
setSwitchFreq(5000);
}
}
ISR(TIMER1_OVF_vect){
static unsigned long int phase, lastphase;
static char delay1, trig = LOW;
phase += phaseinc;
if(delay1 == 1){
theTCCR1A ^= 0b10100000; // Alternar la conexión y desconexión de la
salida de comparación A y B.
TCCR1A = theTCCR1A;
delay1 = 0;
}
else if((phase>>31 != lastphase>>31) && !(phase>>31)){
delay1++;
trig = !trig;
digitalWrite(13,trig);
}
lastphase = phase;
OCR1A = OCR1B = ((lookUp[phase >> 23]*period) >> 12)*amp >> 10;
}
void makeLookUp(void){
double temp;
void registerInit(void){
// Inicialización de registros, consultar la hoja de datos para más
detalles.
TCCR1A = theTCCR1A; // 0b10000010;
/*10 limpiar en la coincidencia, establecer en BOTTOM para compA.
00 compB desconectado inicialmente, se cambia después para limpiar en
la coincidencia, establecer en BOTTOM.
00
10 WGM1 1:0 para la forma de onda 15.
*/
TCCR1B = 0b00011001;
/*000
https://drive.google.com/drive/folders/1bizhOtnu435a2FMiFwrwX1hkg-
8HMrCw?usp=share_link
https://github.com/Irev-Dev/Arduino-Atmel-
sPWM/blob/master/sPWM_variable_freq1/sPWM_variable_freq1.ino