ARDUINO EN LADDER CIRCUITO ELECTRONEUMÁTICO UN CILINDRO LADDER

Page 1

ARDUINO EN LADDER PROGRAMACIÓN DE ARDUINO EN LENGUAJE LADDER CIRCUITO ELECTRONEUMÁTICO COMPLETO CON UN CILINDRO CON MULTIPLES CONDICIONES DE OPERACIÓN

https://youtu.be/8UsNg5HAqt0

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 LADDER SOBRE ARDUINO

ARDUINO ARDUINO BASADO EN LADDER Aprende a programar Arduino desde una solucio n LADDER con una metodología confiable https://youtube.com/playlist?list=PLHTERkK4EZJq9hjTGCDQmaLvi7CAyk_q_

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/ PROGRAMACIÓN DE ARDUINO EN LENGUAJE LADDER Ciclo de trabajo Con posibilidad de elegir entre Cu – CC o Cx3 con Temporización entre ciclos. REALIZADO EN LA ESTACIÓN CLASIFICADORA DE PIEZAS

CIRCUITO ELECTRONEUMÁTICO/HIDRÁULICO

Ó

Condiciones de evaluación Elabore Circuito de control eléctrico para gobernar el cilindro A según el diagrama Espacio- Fase, de tal manera que cumpla con las siguientes especificaciones 1. Debe permitir la operación en Ciclo Único (CU) o Ciclo Continuo (CC) o Ciclo X3 (CX3). 2. El CC o CX3 deben quedar interrumpido (termina el ciclo actual y se detiene) por la acción de conmutar a CU, es decir el pasador de CU hará as veces de Stop.

2


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ 3. El dispositivo se explora a través de un detector de pieza, cuando no hay piezas en el depósito, no ha de iniciar un ciclo o ha de pararse la instalación en su posición base, debiendo quedar interrumpido el Ciclo Continuo (CC) o el CX3. 4. En el modo CC o CX3 debe tener una temporización entre cada ciclo 5. Una vez accionado el pulsador de Paro de Emergencia (PE), debe retornar inmediatamente el cilindro a la posición de partida, ninguna otra acción puede darse mientras esté en la situación de emergencia, y al reestablecer el botón de emergencia tampoco debe presentarse ninguna activación en el circuito. 6. En CC o en CX3 el sistema debe asegurar una temporización entre ciclos. 7. Una vez terminado los 3 ciclos del modo CX3, el cilindro debe quedara en su posición de reposo (retraído) y solo se podrá reiniciar, reseteando el contador de circuito y pulsando nuevamente cualquiera de los pulsadores CU,CC o CX3. Calificación %

CONDICIÓN

Si realiza el CU al pulsar

Si realiza el CC al pulsar Si realiza el Cx3 al pulsar Si después de CX3 no se puede ejecutar CU - CC o CX3 hasta que previamente de pulse

.

Si CC queda anulado por la acción de CU

Si CC queda anulado por la acción de Si CC o CX3 queda interrumpido al no haber pieza en el deposito (abierto = No hay pieza) Si entre Ciclo y Ciclo hay una temporización de 5 s Si al pulsar en cualquier momento PE el sistema el cilindro regresa inmediatamente y se suspenden los ciclos.

3

NOTA (1-5)


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/

4


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/

5


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ PROGRAMACIÓN DE ARDUINO /// TRATAMIENTO ///

A+ T

PREVIO

A- COMPLETO

IMPLEMENTADO EN ESTACI0N MECATRÓNICA CLASIFICADORA

//DECLARACION DE VARIABLES //Declaración de las circuito/programa

variables Ki corresponden

a las reles/memorias

utilizadas para el

//Declaración de las variables de las entradas corresponden a las Entradas de pulsador NO (Normalmente abiertos) utilizadas para el circuito/programa //La designación Y1 y Y2 corresponde a los la electroválvula 5/2 biestable

pine de salidas

acoplada a las

bobinas de

int K1 = 0; int K2 = 0; int K3 = 0; int K4 = 0; int K5 = 0; int K6 = 0; int K_CC = 0; int K_PE = 0; int K_CX3 = 0;// Las memorias o false.

asociadas

a cada relé se

int CU ; //

Harà la función de pulsador de Ciclo Unico

int CC; //

Harà la función de pulsador de Ciclo Continuo

int CX3; //

declaran en

estado inicial bajo

Harà la función de pulsador de Ciclo Continuo

int R_ESET; // Harà la función de pulsador de RESET int PIEZA;

//

Harà la función de indicar si hay o no pieza

int A_0 ; //

Harà la función de sensor de entrada final de carrera

int A_1;

Harà la función de sensor de entrada final de carrera

int PE;

// //

Harà la función de BOTON DE PARO DE EMERGENCIA (N CERRADO)

int Y1 = 23; //

Pin de salida acoplada a las

6

bobinas de la electroválvula 5/2


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ int Y2 = 25; //

// Variables

Pin de salida acoplada a las

asociadas a

"temp1".

// Bit

asociado

int T1 = LOW;

al

bobinas de la electroválvula 5/2

temporizador

1

int activado1 = 0; // Al principio no ha sido activado. long inicio1, final1, actual1;

// Variables

asociadas a

"temp2".

// Bit

asociado

int T2 = LOW;

al

temporizador

2

int activado2 = 0; // Al principio no ha sido activado. long inicio2, final2, actual2;

// Variables

asociadas al Contador 1

int CONTADOR1 = 0;

const int PSCONTADOR1 = 3; // Preselect del

int ESTADOPREVIO_K6 = 0;

// Estado previo del componente que incrementa el

void setup() { // put your setup code here, to run once:

//Apertura del

visualizador

serial

Serial.begin(9600);

//Declaración de puertos digitales de Entradas y pinMode(6, INPUT);

// CU

pinMode(14, INPUT);

// A_0

pinMode(15, INPUT);

// A_1

pinMode(12, INPUT); // PIEZA pinMode(7, INPUT);

//

Contador o # de ciclos

CC

7

Salidas

contador


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ pinMode(8, INPUT);

// CXN

pinMode(9, INPUT); // RESET pinMode(13, INPUT);

//

PE

pinMode(23, OUTPUT);

// Y1

pinMode(25, OUTPUT);

// Y2

//Algunos dispositivos traen una configuración "Sinking and Sourcing" //por eso es necesario colocar los puertos de salida en 0v.

//Declaración del estado inicial

de los pines de las salidas en bajo/apagadas

digitalWrite(Y1, LOW); digitalWrite(Y2, LOW); }

//TRATAMIENTO

SECUENCIAL

void loop() { // put your main code here, to run repeatedly: //Capturar valores de puertos digitales de entrada CU = digitalRead(6);

CC = digitalRead(7);

CX3 = digitalRead(8);

PIEZA = digitalRead(12);

A_0 = digitalRead(14);

R_ESET = digitalRead(9);

PE = digitalRead(13);

A_1 = digitalRead(15);

if ((((CU | CC | CX3 | T2) && A_0 && PIEZA) | K1) && (!K2) && (CONTADOR1< PSCONTADOR1) && PE ) {K1 = 1;} else { K1 = 0;}

8


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ if (((K1 && A_1) | K2) && (!K3)) {K2 = 1;} else {K2 = 0;}

if (K2) {activetemp1();} else {desactivetemp1();}

if ((T1 | K3) && (!K4) ) {K3 = 1;} else { K3 = 0;}

if (K3 && A_0)

{K4 = 1;}

else {K4 = 0;}

if ((K4 | K5) && (!T2) && (CONTADOR1< PSCONTADOR1) else {K5 = 0;}

if (K5) {activetemp2();} else {desactivetemp2();}

if (K_CX3 && K5)

{K6 = 1;}

else {K6 = 0;} if (K6 != ESTADOPREVIO_K6) { if (K6 == HIGH) { CONTADOR1++; Serial.print("Numero de Ciclos : Serial.println(CONTADOR1);

");

}

ESTADOPREVIO_K6 = K6; } if (R_ESET |!PE) { Serial.print("Numero de Ciclos :

");

Serial.println(CONTADOR1);

9

&& (K_CC | K_CX3))

{K5 = 1;}


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ CONTADOR1

= 0;

} if ( (CC | K_CC)&& PE && PIEZA && (!CU) && (CONTADOR1< PSCONTADOR1) && {K_CC = 1;}

(!K_CX3)

)

&& PIEZA && (!CU) && (CONTADOR1< PSCONTADOR1)&& (!K_CC)

)

else {K_CC = 0;}

if ( (PE| K_PE)&& (!A_0)) {K_PE = 1;} else {K_PE = 0;} if ( (CX3 | K_CX3)&& PE {K_CX3 = 1;} else {K_CX3 = 0;}

// TRATAMIENTO POSTERIOR - ACTIVACIÓN DE LAS

SALIDAS/ ACCIONES

if (K1) {digitalWrite(Y1, HIGH);} else { digitalWrite(Y1, LOW); }

if (K3) {digitalWrite(Y2, HIGH); } else { digitalWrite(Y2, LOW);}

if (K_CX3) {digitalWrite(33, HIGH); } else { digitalWrite(33, LOW);} // borrraRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRARRRRR

if (K_CC) {digitalWrite(31, HIGH); } else { digitalWrite(31, LOW);} // borraRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRARRRRR } //

Fin del void loop

//SUBRUTINAS DE TEMPORIZACIÓN //activetempx

y un

(Par cada temporización se asigna un subprograma

desactivetempx usando para ello comparaciones con el comando millis

//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

10


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ //SUBRUTINA TEMPORIZADOR 1 //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void activetemp1() { if (K2 && activado1 == 0) { activado1 = 1;

// Si K2 esta

activa y no ha sido activado=0 antes...

// marca activado=1 y guarda el tiempo de inicio.

inicio1 = millis(); final1 = inicio1 + 2000; } actual1 = millis();

// Consulta el tiempo actual.

if (activado1 == 1 && (actual1 > final1) ) { T1 = HIGH; } else { T1 = LOW; } } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void desactivetemp1() { T1 = LOW; activado1 = 0; inicio1 = 0; final1 = 0; actual1 = 0; } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //SUBRUTINA TEMPORIZADOR 2 //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void activetemp2() { if (K5 && activado2 == 0) { activado2 = 1;

// Si K5

y no ha sido activado=0 antes...

// marca activado=1 y guarda el tiempo de inicio.

inicio2 = millis(); final2 = inicio2 + 2000;

11


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/ } actual2 = millis();

// Consulta el tiempo actual.

if (activado2 == 1 && (actual2 > final2) ) { T2 = HIGH; } else { T2 = LOW; } } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void desactivetemp2() { T2 = LOW; activado2 = 0; inicio2 = 0; final2 = 0; actual2 = 0; } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

________________________________ Jovenes, este material ha sido elaborado con mucho gusto. Si te es util Rega lame un Like, comenta y suscríbete :) (っ◕‿◕) 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/ 12


http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ https://mecatronica-itsa.blogspot.com/

https://www.mecatronica.com.co/

13


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.