Title | Programación DE Arduino EN Lenguaje Ladder CON 2 Cilindros Completo |
---|---|
Author | Jovanny DuKe Duke |
Course | Ingenieria Mecanica |
Institution | Universidad del Atlántico |
Pages | 14 |
File Size | 665.5 KB |
File Type | |
Total Downloads | 60 |
Total Views | 122 |
Programe Arduino desde a partir de soluciones LADDER o GRAFCET con metodologías confiables
Arduino, programación de arduino, arduino project, arduino uno, arduino tutorial, como programar arduino,
proyectos arduino, arduino como plc, arduino ladder, arduino grafcet, introducción ...
ARDUINO BASADO 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 met odologí as confiables https://youtube.com/playlist?list=PLHTERkK4EZJr7zDQNKjjEyxhErjllCCUy
GRAFCET CON ARDUINO Pro grama en Arduino sistemas secuenciales simulados en GRAFCET , con un me todo 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; } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
________________________________ Jo venes, este material ha sido elaborado con mucho gusto. Si te es u til Rega lame un Like, comenta y susc rí bete :) (っ◕‿◕) Amigos/as en el BLOGG MEKATRONIC A J DUKE podra s encontrar cantidad de recursos sobre SOLIDWORKS, HIDRA ULICA ELECTROHIDRA ULICA , NEUMA TICA, ELECTRONEUMA TICA, CONTROL, PLC M221, PLC SIE MEMS S7 1200, PLC SIEMENS S7 30 0 , 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.mecatro nica.com.co/
13...