1.
OBJETIVO:
1. Realizar el programa e implementar un sistema de control para la inversión de giro de un motor de corriente
continua, mediante un sistema micro procesado.
2. FUNDAMENTO TEORICO:
En muchas aplicaciones industriales se requiere de un tanque homogeneizador en donde se dispone de un tanque
propiamente dicho y dos motores en este caso trifásico que requiere arranque estrella delta.
Se dispone de dos motores trifásicos una de ellas acciona la bomba y la otra el agitador, un sensor de nivel analógico y
una electroválvula, dos pulsadores para arranque y parada.
1. El tanque debe garantizarse que este vacío al inicio del ciclo.
2. La electroválvula se abre hasta que el nivel del líquido este por debajo de 10% del nivel total.
3. Se cierra la electroválvula y se arranca el motor 1 para accionar a la bomba.
4. Cuando el líquido llegue al 60% se activa el motor 2 que acciona al agitador, sin que se apague el motor 1.
5. Cuando el nivel llega al 90% del total se apagan los dos motores, y se activa la electroválvula que da inicio al
vaciador del líquido.
6. Se tiene un botón de emergencia para apagar a ambos motores.
3. MATERIALES Y COMPONENTES
1.- Arduino uno.
2.- Resistencia de ½ Watts. 330 ohm. Para limitar la corriente en los diodos.
3.- 6 Relay electromecánico con 5v. en su bobina y 250/1amp en sus terminales
4.- Fuente alimentación DC.
5.- 6 contactores electromecánicos.
6.- 2 motor trifásico.
7.- Multímetro digital.
8.- Chicotillos.
4 PROCEDIMIENTO
4.1. Implementar el circuito en el simulador (WOKWI)
4.2. Código en Arduino
int C1 = 2; // Contactor principal (Motor)
int C2 = 3; // Contactor Delta
int C3 = 4; // Contactor Estrella
int C4 = 5; // Contactor Motor 2 (Agitador)
int C5 = 6; // Contactor Delta Motor 2
int C6 = 7; // Contactor Estrella Motor 2
int E1 = 8; // Electroválvula
int ON1 = 9; // Pulsador de ARRANQUE (usando resistencia PULLUP)
int OFF1 = 10; // Pulsador de PARADA (usando resistencia PULLUP)
int Nivel = A0; // Potenciómetro
// Variables de control
int Level = 0; // Lectura del nivel (0-1023)
int Activo = 0; // Estado del sistema (0: Apagado, 1: Encendido)
int Control1 = 0; // Control Motor 1 (Bomba)
int Control2 = 0; // Control Motor 2 (Agitador)
int Vacio = 0; // Estado de vaciado (0: Llenando, 1: Vaciando)
int prende = 0; // Lectura pulsador ON
int apaga = 0; // Lectura pulsador OFF
void setup() {
Serial.begin(115200); // Inicia comunicación serial (monitoreo)
// Configuración de pines de salida (contactores y electroválvula)
pinMode(C1, OUTPUT);
pinMode(C2, OUTPUT);
pinMode(C3, OUTPUT);
pinMode(C4, OUTPUT);
pinMode(C5, OUTPUT);
pinMode(C6, OUTPUT);
pinMode(E1, OUTPUT);
// Configuración de pines de entrada (pulsadores)
pinMode(ON1, INPUT);
pinMode(OFF1, INPUT);
// Apagar todos los contactores al inicio (HIGH = relé abierto)
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(E1, LOW); // Electroválvula cerrada
}
void loop() {
Level = analogRead(Nivel); // Lee el valor analógico (0-1023)
int porcentaje = map(Level, 0, 1023, 0, 100); // Mapea a 0-100%
porcentaje = constrain(porcentaje, 0, 100); // Asegura que no exceda el rango
Serial.print("Nivel: ");
Serial.print(porcentaje);
Serial.println("%");
prende = digitalRead(ON1);
if (prende == HIGH) { // Si se presiona "ARRANQUE"
Activo = 1; // Sistema activado
Vacio = 1 ; // Inicia vaciado (garantizar tanque vacío)
Control1 = 0; // Reinicia control Motor 1
Control2 = 0;
}
apaga = digitalRead(OFF1);
if (apaga == HIGH) {
Activo = 0; // Desactiva el sistema
// Apaga todos los motores y cierra electroválvula
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(E1, LOW);
}
if ((porcentaje >= 5) && (Vacio == 1)) { // Mientras el nivel > 10%
digitalWrite(E1, HIGH); // Abre electroválvula (vaciado)
}
if (porcentaje < 5) { // Si nivel <= 10%
Vacio = 0; // Termina vaciado
digitalWrite(E1, LOW); // Reinicia control Motor 2
}
if (Activo==1){
if (porcentaje < 60 && Control1 == 0 && Vacio == 0) {
// Arranque estrella-delta Motor 1
digitalWrite(C1, HIGH); // Energizar contactor principal
digitalWrite(C3, HIGH); // Conexión estrella
delay(2000); // Tiempo estrella
digitalWrite(C3, LOW); // Desconectar estrella
digitalWrite(C2, HIGH); // Conexión delta
Control1 = 1; // Marcar motor 1 en marcha
}
if (porcentaje >= 60 && porcentaje < 90 && Control2 == 0 && Vacio == 0) {
// Arranque estrella-delta Motor 2
digitalWrite(C4, HIGH); // Energizar contactor principal
digitalWrite(C6, HIGH); // Conexión estrella
delay(3000); // Tiempo estrella
digitalWrite(C6, LOW); // Desconectar estrella
digitalWrite(C5, HIGH); // Conexión delta
Control2 = 1; // Marcar motor 2 en marcha
}
if (porcentaje >= 90) {
// Apagar ambos motores
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
// Abrir válvula para vaciar
digitalWrite(E1, HIGH);
Vacio = 1; // Volver a fase de vaciado
Control1 = 0;
Control2 = 0;
}
}
}
4.3. Lectura del Nivel del Tanque
Lee cuánto líquido hay (de 0% a 100%).
Si está vacío (menos del 5%): no hace nada o cierra la válvula.
Si está lleno (90% o más): apaga los motores y abre la válvula para vaciarlo.
4.4. Botón de Encendido (ON1):
Si lo presionas:
Enciende el sistema (Activo = 1).
Primero vacía el tanque (por seguridad, abre la válvula E1 hasta que baje del 5%).
4.5. Botón de Apagado (OFF1):
Si lo presionas:
Apaga todo (motores y válvula).
Reinicia el sistema (Activo = 0).
4.6. Control de Motores (Cuando el Sistema está Activo):
Motor 1 (Bomba):
Si el tanque tiene entre 5% y 60%:
Arranca en modo estrella (suave, por 2 segundos).
Cambia a modo delta (máxima potencia).
Motor 2 (Agitador):
Si el tanque tiene entre 60% y 90%:
Arranca en modo estrella (suave, por 3 segundos).
Cambia a modo delta.
4.7. Si el Tanque se Llena Demasiado (≥90%):
Apaga ambos motores.
Abre la válvula para vaciarlo automáticamente.
4.8. Implementación en Protoboard
4.8.1. Preparación del Hardware
1. Colocar el Arduino UNO en la protoboard.
2. Potenciómetro (Sensor de Nivel):
Pin izquierdo → GND (negro).
Pin derecho → 5V (rojo).
Pin central → A0 (amarillo/verde).
3. Pulsadores (Arranque/Parada):
Pulsador ON (START) → Pin 9 (conexión a GND, usando pull-up interno).
Pulsador OFF (STOP) → Pin 10 (conexión a GND, usando pull-up interno).
4. LEDs (Indicadores de Estado):
Motor 1 (Bomba):
o LED Verde (C1 - Contactor principal) → Pin 2 + resistencia 220Ω → GND.
o LED Azul (C2 - Delta) → Pin 3 + resistencia 220Ω → GND.
o LED Rojo (C3 - Estrella) → Pin 4 + resistencia 220Ω → GND.
Motor 2 (Agitador):
o LED Verde (C4 - Contactor principal) → Pin 5 + resistencia 220Ω → GND.
o LED Azul (C5 - Delta) → Pin 6 + resistencia 220Ω → GND.
o LED Rojo (C6 - Estrella) → Pin 7 + resistencia 220Ω → GND.
o Electroválvula (E1) → LED Morado en Pin 8 + resistencia 220Ω → GND.
4.8.2. Carga y Pruebas del Código
1. Conectar el Arduino a la computadora mediante cable USB.
2. Abrir el Arduino IDE y pegar el código proporcionado.
3. Subir el código al Arduino.
4. Abrir el Monitor Serial (Herramientas → Monitor Serial) para ver:
El porcentaje de nivel del tanque (ajustado con el potenciómetro).
4.8.3. Pruebas Funcionales
4.8.3.1. Secuencia Normal de Operación:
1. Presionar START (ON1):
Si hay líquido (≥5%), el LED morado (E1) se enciende (vaciado).
Al bajar a <5%, se apaga E1 y comienza el llenado.
2. Nivel 5%-60%:
Motor 1 (Bomba):
o LED Verde (C1) + LED Rojo (C3) → 2 segundos (arranque estrella).
o Luego, LED Verde (C1) + LED Azul (C2) → delta (funcionamiento normal).
3. Nivel 60%-90%:
Motor 2 (Agitador):
o LED Verde (C4) + LED Rojo (C6) → 3 segundos (arranque estrella).
o Luego, LED Verde (C4) + LED Azul (C5) → delta.
4. Nivel ≥90%:
Todos los LEDs de motores se apagan.
LED morado (E1) se enciende (vaciado automático).
4.8.3.2. Pruebas Adicionales:
1. Presionar STOP (OFF1): Todos los LEDs deben apagarse.
2. Ajustar potenciómetro rápidamente: Verificar que no haya parpadeos inesperados en los LEDs.
3. Cortocircuitos: Revisar que no haya cables mal conectados o LEDs invertidos.
4.9. Teniendo al circuito implementaremos:
Estos relays tienen 4 canales, como son motores trifásicos, usaremos 3 canales juntamente con su contactor cada canal y
estos al motor trifásico (en la práctica no se usó el motor).
3 canales del Relay + 3 Contactres (Motor de la Bomba)
3 canales del Relay + 3 Contactores (Motor del Agitador)
5. CONCLUCIONES
5.1. Confusión en Configuración de Contactores y Relés
El error en el funcionamiento se debió a no definir claramente el estado inicial (Normalmente Abierto - NO o
Normalmente Cerrado - NC) de los contactores y relés.
Solución aprendida:
Contactores: Deben estar Normalmente Cerrados (NC) para seguridad (evitar activación no deseada).
Relés/LEDs: Deben configurarse como Normalmente Abiertos (NO) para simular correctamente la lógica de
control.
Recomendación: Verificar datasheets o marcar físicamente los componentes antes de conectarlos.
5.2. Limitación en Longitud de Jumpers
Los jumpers eran demasiado cortos para conectar los relés con los contactores en la protoboard.
Solución improvisada: Se usaron cables sólidos extra para extender las conexiones.
Lección clave:
Tener cables de diferentes longitudes antes de iniciar el montaje.
Usar protoboards más grandes o módulos de relés con terminales accesibles.