Академический Документы
Профессиональный Документы
Культура Документы
Strack
GUIA DE EJERCICIOS
Nº 13
INSTRUMENTACIÓN AVANZADA
1
Instrumentación Avanzada. G. Murcia – J. Strack
Luego de reconocer los elementos realizar el cableado del conjunto variador de velocidad –
motor basado en la siguiente figura:
Una vez realizadas todas las conexiones, procederemos a configurar el variador de velocidad
ATV 11 siguiendo las instrucciones del Anexo I y probaremos su correcto funcionamiento.
2
Instrumentación Avanzada. G. Murcia – J. Strack
Circuito 1: Mando para los relés de Arduino (marcha / parada)
3
Instrumentación Avanzada. G. Murcia – J. Strack
///////////////////////////////////////////////////////////////////
// Cátedra Instrumentación Avanzada //
// Driver de comunicación TCP/IP para Arduino UNO y MEGA 2560 //
// Versión: 1.0.10 //
// Fecha: 26/11/2015 //
///////////////////////////////////////////////////////////////////
//DECLARACIONES_________________________________
// LIBRERÍAS
#include<SPI.h>//comunicación SPI (ethernetshield, pines 10,11,12,13)
#include<Ethernet.h>//funciones para comunicación ethernet
// SALIDAS DIGITALES:
constint D0=4;
constint D1=5;
constint D2=7;
constint D3=9;
// ENTRADAS DIGITALES:
constint D4=2;
constint D5=3;
constint D6=6;
constint D7=8;
// VARIABLES
Char caracterEntrada;
Int entradaDigital, b0, b1, b2, b3, dato;
byte vector1[2], vector2[10];
char canal;
int valor_analog;
//SETUP_________________________________________
Void setup() {
4
Instrumentación Avanzada. G. Murcia – J. Strack
//CICLO PRINCIPAL________________________________
Void loop() {
EthernetClient client=server.available(); // Se crea el objeto cliente
if (client) { // Si se recibe una petición de un cliente
while (client.connected()) { // Mientras el cliente esté conectado
if (client.available()) { // Si el cliente está disponible
caracterEntrada=client.read(); // toma un nuevo byte
El driver anterior nos servirá para este y otros proyectos, ya que podremos crear cualquier
programa en LabVIEW que envíe comandos a través de TCP/IP a nuestra placa, de forma tal de
escribir o leer pines digitales, leer entradas analógicas o escribir una salida pseudoanalógica
(PWM).
5
Instrumentación Avanzada. G. Murcia – J. Strack
Finalmente desarrollaremos un programa en LabVIEW que nos permita comandar el variador de
velocidad ATV11 a través de TCP/IP.
Diagrama de Bloques:
6
Instrumentación Avanzada. G. Murcia – J. Strack
Ejercicio 13.2
Conectar el shield Ethernet a la placa Arduino UNO o MEGA y realizar un programa en el IDE
de ARDUINO que permita generar una página web en formato HTML. En dicha página se debe
poder ver una entrada analógica y una entrada digital, a la vez que se debe poder accionar una
salida digital de la placa.
Algunos comandos y funciones específicas disponibles útiles para resolver este ejercicio:
// LIBRERIAS
#include <Ethernet.h> // Librería para la comunicación Ethernet
// VARIABLES ESPECIALES
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Escribe una dirección
MAC para el controlador.
IPAddress ip(10,2,0,100); // Escribe una IP para el controlador.
EthernetServer server(80); // Puerto 80 es el valor predeterminado para HTTP
// FUNCIONES
Ethernet.begin(mac, ip); // Inicialización del servidor
server.begin();// comienza a recibir conexiones
EthernetClient client = server.available(); // Obtiene un cliente que esté
conectado al servidor y posea datos disponibles para lectura.
client.connected(); //Vale 1 si el cliente está conectado
client.available(); //Vale 1 si el cliente está disponible
client.read(); // Lee un caracter del cliente
client.println(); // Envía una línea al cliente
client.println("<meta http-equiv=\"refresh\" content=\"5\">"); // Añade una
etiqueta para conseguir que el navegador se actualice cada 5 segundos por
ejemplo.
client.println("<input type=submit value=ON style=width:200px;height:75px
onClick=location.href='./?LED=T\'>"); // arma un botón y retorna lo escrito
detras del signo ? (LED=T en este caso)
client.stop(); // cierra la conexión:
7
Instrumentación Avanzada. G. Murcia – J. Strack
Ejercicio 13.3
Crear una página web en Arduino para comandar y monitorear un conjunto variador de
velocidad ATV-11 y motor asincrónico trifásico. El objetivo es controlar el variador de
velocidad desde LabVIEW utilizando Ethernet, pero a su vez queremos que también se pueda
controlar desde una página web HTML, de forma tal que se pueda acceder a ella desde cualquier
dispositivo (smartphone, tablet) conectado a internet simplemente utilizando un navegador web.
///////////////////////////////////////////////////////////////////
// Cátedra Instrumentación Avanzada //
// Ejercicio 13.2 //
// Fecha: 26/11/2015 //
///////////////////////////////////////////////////////////////////
//DECLARACIONES_________________________________
// LIBRERÍAS
#include<SPI.h>//comunicación SPI utilizada por Ethernet shield (pines
10,11,12,13)
#include<Ethernet.h>//funciones para comunicación ethernet
// CONSTANTES Y VARIABLES
const int marcha=5; // pin de salida marcha
const int parada=4; // pin de salida parada
const int vel=9;
String estado="PARADA"; // estado del motor inicialmente "PARADA"
String velocidad="0000";
int v=0;
//SETUP_________________________________________
void setup(){
// INICIALIZACIÓN DE SALIDAS
digitalWrite(marcha,0);
digitalWrite(parada,1);
analogWrite(vel,v);
Void loop(){
8
Instrumentación Avanzada. G. Murcia – J. Strack
EthernetClient client=server.available(); // se crea el objeto cliente
if (client) { // si se detecta un cliente a través de una petición HTTP
boolean linea_blanca= true; //Una petición HTTP acaba con una línea en
blanco
String cadena=""; // se crea una cadena de caracteres vacía
while (client.connected()) { // mientras el cliente esté conectado
analogWrite(vel,v);
if (client.available()) { // si el cliente está disponible
char c =client.read();// se lee la petición HTTP carácter por
carácter
cadena.concat(c);// se convierte la petición HTTP en un String
int posicion=cadena.indexOf("M="); // se guarda la posición de la
cadena "M="
if(cadena.substring(posicion)=="M=1") { // si en esa posición dice
"M=1"
digitalWrite(marcha,1);
digitalWrite(parada,0);
client.write('1');
estado="MARCHA"; // se guarda el estado MARCHA
} // fin del if
if(cadena.substring(posicion)=="M=0") { // si en esa posición dice
"M=0"
digitalWrite(marcha,0);
digitalWrite(parada,1);
client.write('0');
estado="PARADA"; // se guarda el estado PARADA
} // fin del if
int pos=cadena.indexOf("V="); // se guarda la posición de la cadena
"V="
if(cadena.substring(pos,pos+2)=="V="){
velocidad =cadena.substring(pos+2,pos+6);
v =floor(velocidad.toInt()*255/1350);
}
if (v>0){
analogWrite(vel,v);
}
Serial.write(c);// se visualiza la petición por el monitor serie
// Cuando reciba una línea en blanco, la petición HTTP habrá acabado
// y el servidor web estará listo para enviar una respuesta
if (c =='\n'&&linea_blanca) {
// Se envía al cliente una respuesta HTTP
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//Página web en formato HTML
client.println("<html>");
client.println("<head>");
client.println("</head>");
client.println("<body>");
client.println("<h1 align='center'>INSTRUMENTACION
AVANZADA</h1><h3 align='center'>MOTOR controlado por Servidor Web con
Arduino</h3>");
//Se crean los botones. Para enviar parametros a través de HTML
se utiliza el metodo URL encode. Los parámetros se envian a través del
símbolo '?'
client.println("<div style='text-align:center;'>");
client.println("<button onClick=location.href='./?M=1\'
style='margin:auto;background-color: #3ADF00;color: snow;padding:
10px;border: 1px solid #3ADF00;width:100px;'>");
client.println("MARCHA");
client.println("</button>");
client.println("<button onClick=location.href='./?M=0\'
style='margin:auto;background-color: #FF0000;color: snow;padding:
10px;border: 1px solid #FF0000;width:100px;'>");
client.println("PARADA");
9
Instrumentación Avanzada. G. Murcia – J. Strack
client.println("</button>");
client.println("<br /><br />");
client.println("<b>ESTADO DEL ACCIONAMIENTO = ");
client.print(estado);
client.println("<br /><br />");
client.println("<button onClick=location.href='./?V=0000\'
style='margin:auto;background-color: #81BEF7;color: snow;padding:
10px;border: 1px solid #81BEF7;width:100px;'>");
client.println("0 RPM");
client.println("</button>");
client.println("<button onClick=location.href='./?V=0500\'
style='margin:auto;background-color: #2E9AFE;color: snow;padding:
10px;border: 1px solid #2E9AFE;width:100px;'>");
client.println("500 RPM");
client.println("</button>");
client.println("<button onClick=location.href='./?V=1000\'
style='margin:auto;background-color: #0174DF;color: snow;padding:
10px;border: 1px solid #0174DF;width:100px;'>");
client.println("1000 RPM");
client.println("</button>");
client.println("<button onClick=location.href='./?V=1350\'
style='margin:auto;background-color: #084B8A;color: snow;padding:
10px;border: 1px solid #084B8A;width:100px;'>");
client.println("1350 RPM");
client.println("</button>");
client.println("<br /><br />");
client.println("<b>VELOCIDAD DEL MOTOR: ");
client.print(velocidad);
client.println(" RPM");
client.println("</b><br />");
client.println("</b></body>");
client.println("</html>");
break;
} // fin del if
if (c =='\n') { // si hay nueva linea
linea_blanca= true;
} // fin del if
else if (c !='\r') {
linea_blanca= false; // si hay retorno de carro
} // fin del if
} // fin del if (client.available)
} // fin del while
delay(1); // se le da tiempo al navegador para recibir los datos
client.stop();// se cierra la conexión
} // fin del if (client)
} // fin del loop
Ya estamos en condiciones de visualizar la página web creada en Arduino. Sólo debemos abrir el
navegador y acceder a la IP 10.2.0.100 que configuramos en el código anterior.
10
Instrumentación Avanzada. G. Murcia – J. Strack
Si también queremos realizar el control desdeLabVIEW, ya que disponemos de más
herramientas gráficas, construimos el siguiente programa:
Panel Frontal
Diagrama de Bloques
11
Instrumentación Avanzada. G. Murcia – J. Strack
12