METODOLOGÍA DE PROGRACIÓN CIRCUITOS ELÉCTRICOS HECHO EN ARDUINO BASADO EN LADDER
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 :) (っ◕‿◕)
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ CONTROL DE CIRCUITOS ELECTRICOS CON ARDUINO Planteamiento de la situación: Al pulsar CX3, la salida del Arduino (H1) solo hara una secuencia de encendido y apagado intermitente por (4) cuatro ciclos de encendido (2s) y apagado (2s). Una vez realizados debera accionarse el pulsador RESET para habilitar una nueva secuencia.
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_
1 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ Circuito de control eléctrico
// CÓDIGÓ ARDUINÓ
/// TRATAMIENTO
CASÓ 4 LED INTERMITENTE X4 ÓK
PREVIO
//DECLARACION DE VARIABLES //Declaración de las variables Ki corresponden a las relés/memorias utilizadas para el circuito/programa //Declaración de las variables Si corresponden a las Entradas de pulsador NO (Normalmente abiertos) utilizadas para el 2 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ circuito/programa , la designación H corresponde al pin de salidas acoplada a un LED
int K1=0; int K2=0; int K3=0; // Las memorias o false.
se
declaran en
estado inicial bajo
int RESET=6; pulsador de
// Pin de entrada, hará la función del RESET- Ver Conexión de Entradas y Salidas
int CX3=7 ; pulsador de
// Pin de entrada, hará la función del CX3 - Ver Conexión de Entradas y Salidas
int H1 = 2; // Pin de salida del LED - Ver Conexión Entradas y Salidas
de
// Variables
asociadas a
"temp1".
int T1 = 0; se establece establecido
// Bit/memoria asociado al temporizador a estado 1 cuando transcurre el tiempo1
int tiempo1 = 1500; // Tiempo asignado a la Temporización caso (1,5 seg = 1500 milisegundos).
1
1
en este
int activado1 = 0; // Al principio no ha sido activado. long inicio1, final1, actual1;
// Variables
asociadas a
"temp2".
3 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ int T2= 0 ; se establece establecido
// Bit/memoria a estado 1 cuando
asociado al temporizador transcurre el tiempo2
int tiempo2 = 1000; // Tiempo asignado a la Temporización seg = 1000 milisegundos).
2
en este caso
1
(1
int activado2 = 0; // Al principio no ha sido activado. long inicio2, final2, actual2;
// Variables
asociadas al Contador 1
int CONTADOR1 = 0; // Variable entera que guarda ciclos transcurridos const int PSCONTADOR1 = 4; // Preselect del de ciclos a realizar
el número de
Contador o
número
int ESTADOPREVIO_T1 = 0; // Estado previo del componente que incrementa el contador, en este caso T1
int CONT1=0; // Es la variable(memoria) que se activa cuando se los ciclos, cuando (CONTADOR1 >=PSCONTADOR1)
cumplen
void setup() { //Apertura del visualizador serial con el fin de visualizar el número de ciclos en el "Monitor serie" Serial.begin(9600);
4 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ //Declaración de puertos (pines) entrada como de salida
digitales tanto de
pinMode(6, INPUT); pinMode(7, INPUT); pinMode(2, OUTPUT);
//Algunos dispositivos traen una configuración "Sinking and Sourcing" //por eso es necesario colocar los puertos de salida en 0v o en estado bajo. //Declaración del estado inicial las salidas en bajo/apagadas
de los pines/puertos de
digitalWrite(H1, 0); }
//TRATAMIENTO
SECUENCIAL
void loop() {
// Inicio
// LECTURA
DE LOS
del
ESTADOS
Void Loop DE LOS
PINES
DE
ENTRADA
//Capturar valores de puertos digitales de entrada con el fin de // asignar el estado variables RESET y CX3
de los
pines
de
entrada
a
las
RESET= digitalRead(6); CX3= digitalRead(7);
//TRATAMIENTO
SECUENCIAL 5
Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ // Declaración de las ecuaciones booleanas equivalentes cada línea eléctrica (relé,temporizador o contador) // Cada línea del circuito eléctrico (lógica cableada) su ecuación booleana equivalente (lógica programada).
de
tiene
if ((CX3 | K1 | T2) & (!CONT1) & (!T1)) {K1=1;} else {K1=0;}
if (K1) {activetemp1(); } // Si
se
activa K1
se ejecuta la Subrutina/Subprograma de temporización activetemp1()" else {desactivetemp1();} // Si K1 esta inactivo se la Subrutina/Subprograma de temporización desactivetemp1()"
if
((T1 | K2) & (!K3)) {K2=1;}
else
{K2=0;}
se
"void ejecuta "void
if (K2) {activetemp2(); } la Subrutina/Subprograma activetemp2()"
// Si de
activa K2 se temporización
ejecuta "void
else {desactivetemp2();} la Subrutina/Subprograma desactivetemp1()"
// Si K2 esta inactivo se de temporización
ejecuta "void
if (T2) {K3=1;} else {K3=0;} 6 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_
if (T1 != ESTADOPREVIO_T1)
{
if(T1==1){ CONTADOR1++; Serial.print("Numero de Ciclos :
");
Serial.println(CONTADOR1);} ESTADOPREVIO_T1 = T1;
}
if ( CONTADOR1 >=PSCONTADOR1) {CONT1=1;} else {CONT1=0;}
if (RESET == 1) {CONTADOR1
= 0; CONT1=0;}
Serial.print("Numero de Ciclos :
");
Serial.println(CONTADOR1); }
// TRATAMIENTO POSTERIOR - ACTIVACIÓN DE LAS ACCIONES
SALIDAS/
if (K1) {digitalWrite(H1, 1);} else {digitalWrite(H1, 0);} }
// Fin
del
Void Loop
//SUBRUTINAS DE TEMPORIZACIÓN asigna un subprograma
(Para cada temporización se
//activetempx y un desactivetempx usando para ello comparaciones con el comando millis
7 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //SUBRUTINA TEMPORIZADOR 1 //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void activetemp1() { if (activado1 == 0) { antes... activado1 = 1; de inicio.
// activa y no ha sido activado=0 // marca activado=1 y guarda el tiempo
inicio1 = millis(); final1 = inicio1 + tiempo1; // Transcurridos ( en este caso 2000 milisegundo=2s)
tiempo1
} actual1 = millis();
// Consulta el tiempo actual.
if (activado1 == 1 & (actual1 >= final1) ) {T1 = 1;
}
else { T1 = 0; } } void desactivetemp1() { T1 = 0; activado1 = 0; inicio1 = 0; final1 = 0; actual1 = 0; } //- - - - - - - - - - - - - - - - - - - - - - - - - - //SUBRUTINA TEMPORIZADOR 2 //- - - - - - - - - - - - - - - - - - - - - - - - - - 8 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_ void activetemp2() { if (activado2 == 0) { activado=0 antes... activado2 = 1; tiempo de inicio.
// Si ha pulsado HIGH y no ha sido // marca activado=1 y guarda el
inicio2 = millis(); final2 = inicio2 + tiempo2; // Transcurridos ( en este caso 1000 milisegundo=1s)
tiempo2
} actual2 = millis(); actual.
// Consulta el tiempo
if (activado2 == 1 & (actual2 >= final2) ) {T2 = 1;} else {T2 = 0;} }
void desactivetemp2() { T2 = 0; activado2 = 0; inicio2 = 0; final2 = 0; actual2 = 0; } //- - - - - - - - - - - - - - - - - - - - - - - - - - -
9 Elaborado por Ing. Jovanny Duque
http://www.youtube.com/c/JovannyDuque?sub_confirmation=1_
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?su b_confirmation=1_ _________________________________ y Amigos/as en el BLÓGG MEKATRÓNICA J DUKE podras encontrar cantidad de recursos sobre SÓLIDWÓRKS, HIDRAULICA ELECTRÓHIDRAULICA , NEUMATICA, ELECTRÓNEUMATICA, CÓNTRÓL, PLC M221, PLC SIEMEMS S7 1200, PLC SIEMENS S7 300 , FLUID SIM FACTÓRY IÓ, entre otros
https://mecatronica-itsa.blogspot.com/
10 Elaborado por Ing. Jovanny Duque