Uso de hardware y software libre en laboratorios de Ingeniería

Anuncio
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
Descargar