APLICADO AL CONTROL DE CIRCUITOS ELECTRONEUMÁTICOS CON 2 CILINDROS ARDUINO BASADO EN GRAFCET https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiC -Vmimt
Hola jóvenes, en estos enlaces del BLOGG y DEL CANAL, pueden encontrar recursos sobre fundamentos de ingeniería mecatrónica como : SOLIDWORKS, PROGRAMACIÓN DE ARDUINO, HIDRÁULICA – LENGUAJE LADDER , LENGUAJE GRAFCET ,ELECTROHIDRÁULICA , NEUMÁTICA, ELECTRONEUMÁTICA, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM, FACTORY IO, CONTROL, entre otros https://www.mecatrónica.com.co/ https://mecatronicaitsa.blogspot.com/ http://www.youtube.com/c/JovannyDu que?sub_confirmation=1_ Si te ha sido útil, regálame un Like, comenta y suscríbete :) (っ◕‿◕)
SISTEMAS DE AUTOMATIZACIÓN SECUENCIALES IMPLEMENTADOS EN GRAFCET SOBRE ARDUINO
ARDUINO Acceso a PDF
https://play.google.com/books/s/370286768613/ebooks https://mega.nz/folder/a9thTIjA#bSAwbpbG3Z34DW3jJ_bMQg
ARDUINO Aprende a programar Arduino desde una solucio n LADDER o GRAFCET con metodologí as confiables https://youtube.com/playlist?list=PLHTERkK4EZJr7zDQNKjjEyxhErjllCCUy
GRAFCET CON ARDUINO Programa en Arduino sistemas secuenciales simulados en GRAFCET , con un metodo confiable 100% https://youtube.com/playlist?list=PLHTERkK4EZJpJEcByUotJ5YOIiC-Vmimt
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
DISPOSITIVO PARA REMACHAR ELECTRONEUMÁTICO (A+/B+/TEMP/B-/A-/A+/A-)
DIAGRAMA ESPACIO/FASE
ESPECIFICACIONES DEL CONTROL
1. El sistema de control debe permitir la selección entre Ciclo Único (CU), Ciclo Continuo (CC) o Ciclo X3.
2
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ 2. El CC o CX3 deben quedar interrumpido (termina el ciclo actual y se detiene en posición inicial) por la acción de conmutar a CU (solicitud de parada a fin de Ciclo) o mediante el pulsador de Paro de Emergencia (PE) o cuando no hay más PIEZA (interruptor abierto). 3. El dispositivo se explora a través de un detector de PIEZA (interruptor cerrado), sin la presencia de PIEZA, no puede iniciar ningún ciclo. 4. Cuando se terminan las piezas en el depósito de gravedad y está en modo CC o Cx3, debe terminar el ciclo en el que está y al terminarlo, ha de pararse la instalación en su posición base (inicial). 5. Después de haber realizado los (3) tres ciclos del modo CX3 sólo puede iniciarse el funcionamiento en cualquier otro ciclo después de pulsar RESET. No debe haber ningún movimiento de a máquina al pulsar RESET, para iniciar cualquier ciclo deben usarse cualquiera de los pulsadores CU, CC o CX3. 6. Una vez accionado el pulsador de Paro de Emergencia, deben retornar inmediatamente todos los cilindros a la posición de partida, pero el sistema debe asegurar que el cilindro A regrese solo cuando el cilindro B lo haya hecho completamente. Debiendo quedar al final los dos cilindros retraídos en su posición inicial. Es decir primero verifica el retorno del cilindro B y después el retorno del cilindro A. 7. En el modo CC o en CX3 el sistema debe asegurar una temporización entre ciclos.
3
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
GRAFCET CON FLUIDSIM Usa el software Fluid Sim P para simular GRAFCET aplicados a sistemas electroneuma ticos, desde lo ma s sencillo a lo ma s complejo. https://youtube.com/playlist?list=PLHTERkK4EZJoUmPtqY8kKCboLIrGN8tYc
4
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
SOLUCIÓN GRAFCET MODELADA EN FLUID SIM P
5
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
6
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
Fig. Conexion de entradas y salidas en la simulacion con Fluid simP
7
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ Programación equivalente en IDE de Arduino
//TRATAMIENTO PREVIO // ETAPAS GRAFCET PRINCIPAL int E1; int E2; int E3; int E4; int E5; int E6; int E7; int E8; int E9; int E15; int E16; int E19; int E21; int E24; // ETAPAS GRAFCET CICLO CONTINUO int E11; int E12; int E61; // ETAPAS GRAFCET CICLO X 3 int E13; int E14; int E81; // ETAPAS GRAFCET P EMERGENCIA int E17; int E18; int E120; int E121;
// DECLARACION DE LOS PINES DE ENTRADAS int PIEZA = 12; int PE = 13; int CU = 6; int CC = 7; int A_0 = 14; int A_1 = 15; int B_0 = 16;
8
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ int B_1 = 18; int CX3 = 8; int R_ESET = 9; // DECLARACION DE LOS PINES DE LAS SALIDAS int Y1 = 23; int Y2 = 25; int Y3 = 27; // DECLARACION E INICIALIZACION DE LAS MEMORIAS int MCC = LOW; int MCX3 = LOW; int FIN_CX3 = LOW; int EMERG = LOW; // Variables asociadas a "temp1". int T1; int activado1 = 0; // Al principio no ha sido activado. long inicio1, final1, actual1; // Variables asociadas a "temp2". int T2; int activado2 = 0; // Al principio no ha sido activado. long inicio2, final2, actual2; // Variables asociadas a "temp3". int T3; int activado3 = 0; // Al principio no ha sido activado. long inicio3, final3, actual3;
// Variables asociadas a CONTADOR int CONTADOR = 0; // INICIALIZACIÒN DEL CONTADOR const int PSCONTADOR = 3; // PRESELEC DEL CONTADOR = # DE CICLOS int ESTADOPREVIO_E3 = 0; // Estado previo de la etapa que incrementa void setup() { Serial.begin(9600); //entradas// pinMode(PIEZA, INPUT); pinMode(PE, INPUT); pinMode(CU, INPUT); pinMode(CC, INPUT); pinMode(A_0, INPUT); pinMode(A_1, INPUT); pinMode(B_0, INPUT);
9
el
contador
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ pinMode(B_1, INPUT); pinMode(CX3, INPUT); pinMode(R_ESET, INPUT); //SALIDAS// pinMode(Y1, OUTPUT); pinMode(Y2, OUTPUT); pinMode(Y3, OUTPUT);
//ALGUNOS DISPOSITIVOS TRAEN UNA CONFIGURACION POR ESO ES NECESARIO COLOCAR LOS PUERTOS digitalWrite(Y1, LOW); digitalWrite(Y2, LOW); digitalWrite(Y3, LOW); // ETAPAS DEL GRAFCET PRINCIPAL (ESTADO INICIAL) E1 = HIGH; E2 = LOW; E3 = LOW; E4 = LOW; E5 = LOW; E6 = HIGH; E7 = LOW; E8 = LOW; E9 = LOW; E15 = LOW; E16 = LOW; E19 = LOW; E21 = LOW; E24 = LOW; // ETAPAS DEL GRAFCET C CONTINUO (ESTADO INICIAL) E11 = HIGH; E12 = LOW; E61 = LOW; // ETAPAS DEL GRAFCET CCICLO X3 E13 = HIGH; E14 = LOW; E81 = LOW; // ETAPAS GRAFCET PE E17 = HIGH; E18 = LOW; E120 = LOW; E121 = LOW; }
10
EN 0V
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ //TRATAMIENTO SECUENCIAL void loop ( )
{
CU = digitalRead(6); CC = digitalRead(7); CX3 = digitalRead(8); R_ESET = digitalRead(9); PIEZA = digitalRead(12); PE = digitalRead(13); A_0 = digitalRead(14); A_1 = digitalRead(15); B_0 = digitalRead(16); B_1 = digitalRead(18);
// ECUACIONES GRAFCET PRINCIPAL E1 = ((E1 | (E21 & E21) | (E3 & ~PE) | (E4 & ~PE) | (E5 & ~PE) | (E6 & ~PE) | (E7 & ~PE) | (E8 & ~PE) | (E9 & ((~MCC) & (~MCX3))) | (E15 & ~PE)|(E16 & ~PE) | (E24 & E24) ) & (~E2)); E2 = ((E2 | (E15 & T2) | (E16 & T3) | (E1 & PIEZA & A_0 & B_0 & (CU | CC | CX3) & (~EMERG))) & (~E3) & (~E21)); E21 = (((E21 | (E2 & ~PE))) & (~E1)); E3 = ((E3 | (E2 & A_1)) & (~E4) & (~E1)); E4 = ((E4 | (E3 & B_1)) & (~E5) & (~E1)); E5 = ((E5 | (E4 & T1)) & (~E6) & (~E1) ); E6 = ((E6 | (E5 & B_0)) & (~E7) & (~E1) ); E7 = ((E7 | (E6 & A_0)) & (~E8) & (~E1)); E8 = ((E8 | (E7 & A_1)) & (~E9) & (~E1)); E9 = ((E9 | (E8 & A_0)) & (~E1) & (~E15) & (~E16) & (~E19)); E15 = ((E15 | (E9 & MCC & (~MCX3))) & (~E1) & (~E2)); E16 = ((E16 | (E9 & MCX3 & (~MCC) & (CONTADOR < PSCONTADOR))) & (~E1) & (~E2)); E19 = ((E19 | (E9 & MCX3 & (~MCC) & (CONTADOR >= PSCONTADOR))) & (~E24)); E24 = (((E24 | E19 & (~PE | R_ESET ))) & (~E1) )
;
// ECUACIONES GRAFCET C CONTINUO E11 = ((E11 | (E61 & E61) ) & (~E12)); E12 = ((E12 | (E11 & CC & (~MCX3) & (~FIN_CX3) & (~EMERG))) & (~E61));
11
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ E61 = ((E61 | (E12 & (CU | (~PIEZA) | (~PE)))) & (~E11)); // ECUACIONES E13 = ((E13 | E14 = ((E14 | E81 = ((E81 |
GRAFCET CX3 (E81 & E81)) & (~E14)); (E13 & CX3 & (~MCC) & (~FIN_CX3) & (~EMERG))) & (~E81)); (E14 & (CU | (~PE) | (~PIEZA) | FIN_CX3))) & (~E13));
// ECUACIONES GRAFCET P EMERGENCIA E17 = ((E17 | (E121 & PE)) & (~E18)); E18 = ((E18 | (E17 & (~PE))) & (~E120)); E120 = ((E120 | (E18 & B_0)) & (~E121)); E121 = ((E121 | (E120 & A_0 & B_0)) & (~E17)); //TRATAMIENTO POSTERIOR // ACCIONES GRAFCET PRINCIPAL if (E1 == HIGH) { Serial.println("Etapa 1"); CONTADOR = 0; Serial.print("VALOR DEL CONTADOR : Serial.println(CONTADOR); } if (E2 == HIGH) {digitalWrite(Y1, HIGH);
");
Serial.println("Etapa2");
if (E3 == HIGH) {digitalWrite(Y1, LOW);digitalWrite(Y3, HIGH); Serial.println("Etapa3 "); }
if ((E3 & MCX3) != ESTADOPREVIO_E3) {if (E3 == HIGH) { CONTADOR++; Serial.print("CONTADOR CONTADOR Serial.println(CONTADOR); } ESTADOPREVIO_E3 = E3; }
CONTADOR :
");
if (E4 == HIGH) {Serial.println("Etapa4"); activetemp1(); } else { desactivetemp1(); } if (E5 == HIGH) { digitalWrite(Y3, LOW); Serial.println("Etapa5"); } if (E6 == HIGH) {
12
}
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ Serial.println("Etapa6"); digitalWrite(Y2, HIGH); } if (E7 == HIGH) { digitalWrite(Y2, LOW); digitalWrite(Y1, HIGH); Serial.println("Etapa7"); }
if (E8 == HIGH) { Serial.println("Etapa 8"); digitalWrite(Y1,LOW); digitalWrite(Y2, HIGH); } if (E9 == HIGH) { Serial.println("Etapa 9"); digitalWrite(Y2, LOW); }
if (E15 == HIGH) { Serial.println("Etapa15"); activetemp2(); } else { desactivetemp2(); } if (E16 == HIGH) { Serial.println("Etapa16"); activetemp3(); } else { desactivetemp3(); } if (E19 == HIGH) { Serial.println("Etapa19"); FIN_CX3 = HIGH; } else { FIN_CX3 = LOW; } if (E24 == HIGH) {CONTADOR = 0; Serial.println("Etapa 24 "); }
// ACCIONES GRAFCET CC if (E11 == HIGH) {Serial.println("Etapa 11");} if (E12 == HIGH) {Serial.println("Etapa12 Etapa12 MCC = HIGH; } else { MCC = LOW; }
Etapa12");
if (E61 == HIGH) {Serial.println("Etapa61-61-Etapa61-61");} // ACCIONES GRAFCET CX3
13
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ if (E13 == if (E14 == else {MCX3 if (E81 ==
HIGH) {Serial.println("Etapa 13");} HIGH) {MCX3 = HIGH; Serial.println("Etapa14 MCX3");} = LOW; } HIGH) {Serial.println("Etapa81 Etapa81"); }
// ACCIONES GRAFCET PE if (E17 == HIGH) {Serial.println("Etapa 17"); } if (E18 == HIGH) { Serial.println("Etapa18" );digitalWrite(Y3, LOW); EMERG = HIGH; Serial.println("Etapa18 EMERG");} else {EMERG = LOW;} if (E120 == HIGH) { Serial.println("Etapa120 EMERG Etapa120 EMERG" ); digitalWrite(Y1, LOW); digitalWrite(Y2, HIGH); EMERG = HIGH; else {EMERG = LOW;} if (E121 == HIGH) { Serial.println("Etapa121 digitalWrite(Y2, LOW);EMERG = HIGH; } else {EMERG = LOW;} //
ACTIVACION
DE LUCES
CON LAS
EMERG
BOBINAS DE LAS
"
}
);
ELECTROVÁLVULAS
if ((E2 ==HIGH)|(E7 ==HIGH)) {digitalWrite(29, HIGH);} else {digitalWrite(29, LOW); } if ((E6 ==HIGH)|(E8 ==HIGH) |(E120 ==HIGH)) {digitalWrite(31, HIGH);} else {digitalWrite(31, LOW);} if (E3 ==HIGH ) {digitalWrite(33, HIGH); else {digitalWrite(33, LOW);}
}
} //SUBRUTINA TEMPORIZADOR 1 void activetemp1() { if (E4 == HIGH && activado1 == 0) { activado1 = 1; inicio1 = millis(); final1 = inicio1 + 1000; } actual1 = millis();
// Si ha pulsado HIGH y no ha sido activado=0 antes... // marca activado=1 y guarda el tiempo de inicio. // Tiempo final es inicio más 8 segundos.
// Consulta el tiempo actual.
14
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ if (activado1 == 1 && (actual1 > final1) ) { que el final.... T1 = HIGH; }
// Si fue activado=1 y el tiempo actual es mayor
else {T1 = LOW;} } void desactivetemp1() { T1 = LOW; activado1 = 0;// haz un parpadeo. inicio1 = 0; final1 = 0; actual1 = 0; } //SUBRUTINA TEMPORIZADOR 2 void activetemp2() { if (E15 == HIGH && activado2 == 0) { activado2 = 1; inicio2 = millis(); final2 = inicio2 + 1000; } actual2 = millis();
// Si ha pulsado HIGH y no ha sido activado=0 antes... // marca activado=1 y guarda el tiempo de inicio. // Tiempo final es inicio más 8 segundos.
// Consulta el tiempo actual.
if (activado2 == 1 && (actual2 > final2) ) { que el final.... T2 = HIGH; }
// Si fue activado=1 y el tiempo actual es mayor
else {T2 = LOW;} }
void desactivetemp2() { T2 = LOW; activado2 = 0;// haz un parpadeo. inicio2 = 0; final2 = 0; actual2 = 0; }
15
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ //SUBRUTINA TEMPORIZADOR 3 void activetemp3() { if (E16 == HIGH && activado3 == 0) { activado3 = 1; inicio3 = millis(); final3 = inicio3 + 1000; } actual3 = millis();
// Si ha pulsado HIGH y no ha sido activado=0 antes... // marca activado=1 y guarda el tiempo de inicio. // Tiempo final es inicio más 8 segundos.
// Consulta el tiempo actual.
if (activado3 == 1 && (actual3 > final3) ) { que el final.... T3 = HIGH; }
// Si fue activado=1 y el tiempo actual es mayor
else {T3 = LOW;} } void desactivetemp3() { T3 = LOW; activado3 = 0;// haz un parpadeo. inicio3 = 0; final3 = 0; actual3 = 0; }
16
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/
Jovenes, este material ha sido elaborado con mucho gusto. Si te es util Rega lame un Like, comenta y suscríbete :) (っ◕‿◕) Te invito al CANAL DE YOUTUBE MEKATRONICA para conocer ma s
http://www.youtube.com/c/JovannyDuque?sub _confirmation=1_ Amigos/as en el BLOGG MEKATRONICA J DUKE podras encontrar cantidad de recursos sobre SOLIDWORKS, HIDRAULICA ELECTROHIDRAULICA , NEUMATICA, ELECTRONEUMATICA, CONTROL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTORY IO, entre otros
https://mecatronica-itsa.blogspot.com/ 17