Transcript
Introducción Gra Grafce fcett a Arr d u i n o A
Ard Ar d u i n o Es una compañía de hardware libre y una comunidad tecnológica que diseña y manufactura placas de desarrollo de hardware y software, compuesta respectivame men nte por circuitos imp mprresos que integran ran un mi micr cro ocontrolador y un en enttorno de desarro rrollo llo (IDE) DE), en donde se programa ca cadda placa. Arduino se enfoca en ace cerrcar y facilitar el uso de la elec lectrónica y programa macción de sistema mass embeb emb ebid idos os en proye proyecto ctoss mult multidi idiscip sciplin linari arios os.. Toda la plataforma, tanto para sus comp co mpoonentes de hardwa rdware re co como mo de so soft ftw ware, re, son liberados bajo licencia de código abierto que permi rmite libertad de acc cceeso a los mi mism smoos.
Ard Ar d u i n o Es una compañía de hardware libre y una comunidad tecnológica que diseña y manufactura placas de desarrollo de hardware y software, compuesta respectivame men nte por circuitos imp mprresos que integran ran un mi micr cro ocontrolador y un en enttorno de desarro rrollo llo (IDE) DE), en donde se programa ca cadda placa. Arduino se enfoca en ace cerrcar y facilitar el uso de la elec lectrónica y programa macción de sistema mass embeb emb ebid idos os en proye proyecto ctoss mult multidi idiscip sciplin linari arios os.. Toda la plataforma, tanto para sus comp co mpoonentes de hardwa rdware re co como mo de so soft ftw ware, re, son liberados bajo licencia de código abierto que permi rmite libertad de acc cceeso a los mi mism smoos.
Desc scri ripc pció ión n del hardwa hardw are Arduino Ardui no UNO
Entradas y salidas digitales
Entradas y salidas digitales
Entradas analógicas
Entradas Análogas
Elementos
Elementos
Entradas digitales
Entradas digitales
Salidas digitales
IDE
IDE
Ejercicio 1
Entradas digitales
Entradas digitales
int led = 13; // asigna a LED el valor 13 int boton = 2; // asigna a botón el valor 2 int valor = 0; // define el valor y le asigna el valor 0 void setup() { pinMode(led, OUTPUT); // configura el led (pin13) como salida pinMode(boton, INPUT); // configura botón (pin7) como entrada } void loop() { valor = digitalRead(boton); //lee el estado de la entrada botón digitalWrite(led, valor); // envía a la salida ´led´el valor leído }
Ejercicio 2
Salidas digitales
int ledPin = 13; // pin 13 asignado para el LED de salida int inPin = 2; // pin 2 asignado para el pulsador void setup() // Configura entradas y salidas { pinMode(ledPin, OUTPUT); // declara LED como salida pinMode(inPin, INPUT); // declara pulsador como entrada } void loop() { if (digitalRead(inPin) == HIGH) // testea si la entrada esta activa HIGH { digitalWrite(ledPin, HIGH); // enciende el LED delay(1000); // espera 1 segundo digitalWrite(ledPin, LOW); // apaga el LED } }
LENGUAJE GRAFCET
GRAFCET
Es una metodología de expresión gráfica como solución al desarrollo de programas de control para sistemas secuenciales complejos
¿De donde viene el nombre? GRAfico Funcional de Control de Etapas y Transiciones
SIMBOLOGÍA DEL GRAFCET APLICADA A UN PROCESO SIMPLE
SECUENCIAS DIRECCIONADAS O ALTERNATIVAS En este caso el ciclo puede variar en función de la condición que se cumpla. En la estructura mostrada, dada la etapa 0 se pueden seguir dos ciclos diferentes dependiendo de cual de las dos condiciones (X1 ó X2) se cumpla, sólo una de ellas debe cumplirse mientras la etapa 0 este activa.
SECUENCIAS SIMULTÁMEAS O CONCURRENTES. En las secuencias simultáneas varios ciclos pueden estar funcionando a la vez por activación simultánea de las etapas.
GRAFCET Y SU SINTAXIS GRÁFICA
GRAFCET Y SU SINTAXIS GRÁFICA
GRAFCET Y SU SINTAXIS GRÁFICA
GRAFCET Y SU SINTAXIS GRÁFICA
GRAFCET Y SU SINTAXIS GRÁFICA
Ejercicio 2
PLANTEAMIENTO DE LA SITUACIÓN Se requiere un sistema de control de nivel y temperatura en un tanque. Para ello se ha dispuesto de una válvula de entrada VL1, una válvula de salida VL2, dos sensores de nivel NL0 y NL1, un sensor de temperatura TMP y un calefactor RST.
DESCRIPCIÓN FUNCIONAL EN LENGUAJE NATURAL El funcionamiento del controlador lógico aplicado al funcionamiento de un sistema de nivel y temperatura, mostrando claramente las condiciones de interrelación de las variables involucradas en la operación. La condición inicial es el tanque vacío, con la activación del mando START se da la orden de arranque, lo cual desencadena la apertura de la válvula VL1, como primera acción, iniciándose el llenado. Cuando el nivel en el tanque alcanza el nivel mínimo, determinado por NL0, se inicia la calefacción simultáneamente con el llenado. El llenado y el calentamiento se dan en forma paralela. Cuando el nivel en el tanque llega a NL1 el llenado se detiene y cuando la temperatura llega a TMP la calefacción también cesa. Cuando ambos, tanto el nivel como la temperatura requerida, se alcanzan el tanque se vacía. Esto se hace mediante la apertura de la válvula de salida VL2. Cuando el nivel en el tanque está por debajo de NL0, la secuencia puede ser reiniciada de nuevo. Todas las acciones son permanentes no hay acciones impulso, por ejemplo, la válvula VL2 está abierta, variable booleana VL2=1.
const int final_1=21, final_2=22, final_3=23, final_4=24, boton_1=2, boton_2=3, boton_3=4, boton_4=5, boton_5=6; // pines de entrada************* const int led_1=12,led_2=11,led_3=10,led_4=9,led_5=8; // pines salida**************** int estado_final_1=0, estado_final_2=0, estado_final_3=0, estado_final_4=0, estado_final_5=0; int estado_boton_1=0, estado_boton_2=0, estado_boton_3=0, estado_boton_4=0, estado_boton_5=0; boolean etapa_0=true, etapa_1=false, etapa_2=false, etapa_3=false, etapa_4=false, etapa_5=false, etapa_6=false, etapa_7=false, etapa_8=false, etapa_9=false, etapa_10=false; void setup() { pinMode(led_1, OUTPUT), (led_2, OUTPUT), (led_3, OUTPUT), (led_4, OUTPUT), (led_5, OUTPUT); pinMode(final_1,INPUT), (final_2,INPUT), (final_3,INPUT), (final_4,INPUT), (boton_1,INPUT), (boton_2,INPUT), (boton_3,INPUT), (boton_4,INPUT), (boton_5,INPUT); }
void loop(){ estado_final_1= digitalRead(final_1); estado_final_2= digitalRead(final_2); estado_final_3= digitalRead(final_3); estado_final_4= digitalRead(final_4); estado_boton_1= digitalRead(boton_1); estado_boton_2= digitalRead(boton_2); estado_boton_3= digitalRead(boton_1); estado_boton_4= digitalRead(boton_4); estado_boton_5= digitalRead(boton_5); //******************* // etapa 1 if (etapa_0 == true && estado_boton_1==HIGH ) { etapa_1=true; etapa_0=false; } // etapa 2 if (etapa_1 == true && final_1==HIGH ) { etapa_2=true; etapa_1=false; } // etapa 3 if (etapa_2 == true && estado_boton_2==HIGH ) { etapa_3=true; etapa_2=false; } // etapa 4 if (etapa_3 == true && final_2==HIGH ) { etapa_4=true; etapa_3=false; }
void loop(){ estado_final_1= digitalRead(final_1); estado_final_2= digitalRead(final_2); estado_final_3= digitalRead(final_3); estado_final_4= digitalRead(final_4); estado_boton_1= digitalRead(boton_1); estado_boton_2= digitalRead(boton_2); estado_boton_3= digitalRead(boton_1); estado_boton_4= digitalRead(boton_4); estado_boton_5= digitalRead(boton_5); //******************* // etapa 1 if (etapa_0 == true && estado_boton_1==HIGH ) { etapa_1=true; etapa_0=false; } // etapa 2 if (etapa_1 == true && estado_final_1==HIGH ) { etapa_2=true; etapa_1=false; } // etapa 3 if (etapa_2 == true && estado_boton_2==HIGH ) { etapa_3=true; etapa_2=false; } // etapa 4 if (etapa_3 == true && estado_final_2==HIGH ) { etapa_4=true; etapa_3=false; }
// etapa 5 if (etapa_4 == true && estado_boton_3==HIGH ) { etapa_5=true; etapa_4=false; } // etapa 0 if (etapa_5 == true && estado_final_3==HIGH ) { etapa_0=true; etapa_5=false; } //************************ if (etapa_1== true) digitalWrite(led_1,HIGH); else digitalWrite(led_1,LOW); if (etapa_2== true) digitalWrite(led_2,HIGH); else digitalWrite(led_2,LOW);