uso de hardware y software libre en laboratorios de ... · •ejemplos: –arduino: plataforma...
TRANSCRIPT
Uso de hardware y software libre en laboratorios de Ingeniería Química
G. Luzón González, A. Fernández-Arteaga, D. Altmajer Vaz, A.I. García López, M. Fernández Serrano
Dpto. Ingeniería Química
Universidad de Granada
Proyecto
Proyecto financiado por el Vicerrectorado de Ordenación Académica y Profesorado de la Universidad de Granada: “13-202: Uso de hardware y software libre en la instrumentalización de prácticas de Ingeniería Química”
• Participantes: – G. Luzón González
– D. Altmajer Vaz
– A. Fernández-Arteaga
– M. Fernández Serrano
– A.I. García López
– M. García Román
– A. Burgos Cara
Objetivos del proyecto
• Identificar las prácticas más adecuadas para la instalación de sistemas de monitorización y/o control y seleccionar los equipos adecuados para llevarlos a cabo.
• Diseñar los sistemas de control y monitorización.
• Buscar y acoplar dispositivos de bajo coste adecuados para las prácticas seleccionadas.
• Programar el sistema de monitorización/control.
• Programar un interfaz de visualización/control para sistemas android.
• Elaborar de materiales docentes para compartirlos y que puedan ser aprovechados y mejorados por otros departamentos interesados.
Objetivos del proyecto
De cara al alumnado, el proyecto permitirá alcanzar los siguientes objetivos:
• Identificar las variables a controlar en las prácticas y el rango en el que debe realizar el control.
• Trabajar con sistemas de control y monitorización de sistemas, aplicando los conocimientos teóricos.
• Integrar conocimientos de distintas materias.
• Conocer y utilizar software y hardware libre, participando en las comunidades que lo forman para difundir su filosofía. OSL-UGR
Problemas
• Prácticas antiguas que funcionan bien pero con baja instrumentalización
• Toma manual de datos experimentales
• Bajo presupuesto para renovar prácticas
• Alto coste de equipos de medida y control
• Limitados conocimientos en electrónica y comunicación
Software libre
• Free Software Foundation: el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, y estudiar el mismo, e incluso modificar el software y distribuirlo modificado.
• Paquete ofimático: Open Office
• Cálculo numérico: Octave, Freemat, Scilab
• Paquetes estadísticos: R, PSPP
• Tratamiento de imágenes: Gimp
• …
Software libre
Hardware libre (open source hardware)
• Dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso público.
• Aplicable la filosofía del software libre. • Ambos corresponden a las partes tangibles de un sistema
informático. • Ejemplos:
– Arduino: plataforma libre de computación física basada en una tarjeta de I/O y un entorno de desarrollo
– Cámaras digitales reconfigurables de red: Elphel, Inc. – BUG, plataforma abierta de dispositivos electrónicos de
consumo – SquidBee: basado en Arduino para desarrollar redes de sensores – SHPEGS: generación eléctrica de bomba de calor solar libre
Arduino
• Placa con un microcontrolador y puertos de entrada/salida.
• Software: entorno de desarrollo (lenguaje de programación Processing/Wiring) y cargador de arranque, ejecutado en la placa.
Arduino
• Características:
– 16-84 MHz, según modelo/procesador
– Entradas analógicas 6-12 (según modelo)
– 14-54 entradas/salidas digitales, 6-12 pueden ser salidas de ancho de pulso modulado y usadas como salidas analógicas con circuitería mínima
– Cada placa puede operar independientemente, utilizando solo su compilador incorporado
Arduino: medida de caudal
// Code adapted by C. Gantt from PC Fan code written by Crenn @thebestcasescenario.com // http:/themakersworkbench.com http://thebestcasescenario.com http://seeedstudio.com volatile int NbTopsFan; //medida del pico alto de la señal int Calc; int flowmess = 2; //Pin donde se localiza el sensor void rpm () //Función llamada por la interrupción { NbTopsGiro++; //Mide subida y bajada de la señal del sensor } // El metodo setup() se ejecuta una vez al principio del programa void setup() { pinMode(flowmess, INPUT); //inicializa el pin digital 2 como entrada Serial.begin(9600); //Se inicializa el puerto de transmisión attachInterrupt(0, rpm, RISING); //se adjunta la interrupcion } // El ciclo loop() se ejecuta mientras el Arduino esté encendido void loop () { NbTopsGiro = 0; //Se pone a cero el contador de giros sei(); //Activa la interrupcion delay (1000); //Espera 1 segundo cli(); //Desactiva la interrupcion Calc = (NbTopsGiro * 60 / 7.5); //(Frecuencia x 60) / 7.5Q, = caudal en L/min Serial.print (Calc, DEC); //Muestra el caudal calculado Serial.println (" L/min"); //Muestra las unidades /retorno de linea
Arduino: medida de temperatura (NTC)
//define variables
int ntc=0; // sonda conectada a la entrada 0
int temperatura=0; //asigna a la variable temperatura el valor 0
//comienza la configuración
void setup()
{
Serial.begin(9600); // inica la comunicación con el puerto serie (pantalla de salida)
}
//bloque principal del programa, se repite continuamente
void loop()
{
temperatura=analogRead(ntc); // lee el valor de la entrada analógica entre 0 y 1024
temperatura= 224.55 - 28.9*log(temperatura);
Serial.print(“T/°C = ");
Serial.println(temperatura3);
delay(1000);
}
Arduino: medida de temperatura
//TMP36 Pin Variables int sensorPin = 0; //el pin analogico se conecta al voltaje de salida de la sonda //resolucion 10 mV // grado centigrado con 500 mV de offset para permitir temperaturas negativas // El metodo setup() se ejecuta una vez al principio del programa void setup() { Serial.begin(9600); //Se inicializa el puerto de transmisión } // El ciclo loop() se ejecuta mientras Arduino esta encendido void loop() { //getting the voltage reading from the temperature sensor int reading = analogRead(sensorPin); float voltage = reading * 5.0/1024.0; // muestra el voltaje leido, eliminar para solo lectura temperatura Serial.print(voltage); Serial.println(" V"); // muestra la temperatura float temp = (voltage - 0.5) * 100 ; //convierte de 10mV/°C con 500 mV de offset Serial.print(temp); Serial.println(" °C"); Delay(1000); //espera 1 segundo }
Arduino: medida de la temperatura (infrarrojos)
#include <i2cmaster.h>
void setup()
{
Serial.begin(9600);
i2c_init(); //Initialise the i2c bus
Serial.println("Return from i2c_init");
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
}
void loop()
{
int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;
double temp=0;
int rep=5; //Number of data to read for calculate the average
for (int i=0;i<rep;i++)
{
i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);
i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Read 1 byte and then send ack
data_high = i2c_readAck(); //Read 1 byte and then send ack
pec = i2c_readNak();
i2c_stop();
//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
double tempFactor = 0.02; // 0.02 degrees per LSB
double tempData = 0x0000;
// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
tempData = (double)(((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;
tempData = tempData - 273.15;
temp=temp+tempData;
delay(100/rep);
}
temp=temp/rep;
Serial.println(temp); //Print temp in degrees C to serial
}
Miniautómata PLC Arduino Winkhel
• Basado en un microprocesador ATMega328
• Bootloader de Arduino: se programa desde el IDE Arduino
Miniautómata PLC Arduino Winkhel
• Características: – 2 salidas a relé 16 A – 6 salidas a relé 10 A – 2 salidas 24 V aisladas. Configurables mediante jumper como salidas TTL (5V) – 3 entradas digitales 12..24 V DC – 3 pines GPIO. Configurables como entradas/salidas analógicas/digitales – Puerto RS 485. Conexión de hasta 128 equipos en un mismo bus sin repetidor – Puerto USB – Puerto I2C con conector RJ11 – Alimentación: 24 V DC. – Para programar, admite alimentación mediante USB (no se activan los relés) – Resistencia terminadora en placa mediante jumper – Montaje en carril DIN normalizado – Bornas enchufables. – Conector para expansión I/O
Conectando dispositivos móviles
• Modo de conexión: wifi/bluetooth
• Sistema operativo:
• ¿Dificultad técnica?
• Grandes posibilidades