Beruflich Dokumente
Kultur Dokumente
PROYECTO INTEGRADOR
TEMA:
DOCENTE:
ALUMNO:
HUGO ORTEGA
ANDRE VASQUEZ
CIUDAD Y FECHA:
OBJETIVOS
2.1 GENERAL
Diseñar y construir un Sistema de Medición de pH, mediante el uso del sensor
SEN0161 conectado a través de comunicación WiFi al software Matlab, para el
monitoreo de descarga de agua residual en sistemas de alcantarillado y cuerpos
de agua dulce.
2.2 ESPECÍFICOS
Investigar toda la información relacionada a sistemas o sensores de
medición de pH.
Determinar el modulo más eficiente de comunicación inalámbrica
WiFi, tomando en cuenta accesibilidad, costos, etc.
Buscar los materiales más adecuados para el diseño y la
implementación del sistema.
Diseñar el sistema de monitoreo y comunicación en la plataforma de
programación Arduino.
Diseñar una interfaz gráfica en Matlab para almacenar datos,
analizarlos y visualizarlos.
Implementar un prototipo del sistema en una maqueta.
Realizar pruebas de funcionamiento del sistema.
Analizar los resultados de las pruebas realizadas al sistema.
Redactar conclusiones y Recomendaciones.
1
CONTENIDO
TEMA:................................................................................................................ 1
OBJETIVOS ....................................................................................................... 1
2.1 GENERAL ......................................................................................................... 1
2.2 ESPECÍFICOS ................................................................................................... 1
DESARROLLO.................................................................................................. 3
3.1. Informe semana 1 ............................................................................................... 3
3.2. Informe semana 2 ............................................................................................... 8
3.3. Informe semana 3 ............................................................................................. 11
3.4. Informe semana 4 ............................................................................................. 25
ANÁLISIS DE RESULTADOS ...................................................................... 30
CONCLUSIONES............................................................................................ 30
RECOMENDACIONES .................................................................................. 30
REFERENCIAS ............................................................................................... 31
2
DESARROLLO
3.1. Informe semana 1
Investigación de la información de sistemas e instrumentos de medición de pH y
determinar el módulo de comunicación adecuado.
3
analítica con Materiales de Referencia, por lo tanto, es indispensable disponer de
Materiales de Referencia confiables y con una cadena de trazabilidad clara y valida.
Las redes wifi poseen una serie de ventajas, entre las cuales podemos destacar:
Pero como red inalámbrica, la tecnología wifi presenta los problemas intrínsecos de
cualquier tecnología inalámbrica. Algunos de ellos son:
4
Una de las desventajas que tiene el sistema wifi es una menor velocidad en
comparación a una conexión cableada, debido a las interferencias y pérdidas de
señal que el ambiente puede acarrear.
La desventaja fundamental de estas redes reside en el campo de la seguridad.
Esta tecnología no es compatible con otros tipos de conexiones sin cables como
Bluetooth, GPRS, UMTS, etc.
La potencia de la conexión del wifi se verá afectada por los agentes físicos que
se encuentran a nuestro alrededor.
Los dispositivos que con mayor frecuencia utilizan esta tecnología pertenecen a sectores
de las telecomunicaciones y la informática personal, como PDA, teléfonos móviles,
computadoras portátiles, ordenadores personales, impresoras o cámaras digitales.
Opera en la frecuencia de radio de 2,4 a 2,48 GHz con amplio espectro y saltos de
frecuencia con posibilidad de transmitir en Full Duplex con un máximo de 1600 saltos
por segundo. Los saltos de frecuencia se dan entre un total de 79 frecuencias con
intervalos de 1 MHz; esto permite dar seguridad y robustez.
5
Permite que otro escudo pueda ser apilado en la parte superior.
Hay una ranura para tarjeta micro-SD, que puede ser usado para almacenar archivos y
para servir a través de la red. Es compatible con el Arduino Uno y Mega. El CODEC de
lector de tarjetas microSD se puede acceder a través de la librería SD. Cuando se trabaja
con esta librería, SS es el pin 4
Tenga en cuenta que debido a que el HDG104 y la tarjeta SD comparten el bus SPI,
sólo uno puede estar activo a la vez. Si está utilizando ambos periféricos en su
programa, esto debe ser realizado con las librerías correspondientes. Si usted no está
utilizando uno de los periféricos de su programa, sin embargo, tendrá que
explícitamente anular su selección. Para hacer esto con la tarjeta SD, ajuste el pin 4
como salida y escriba un nivel alto a la misma. Para el HDG104, establezca el pin
digital 10 como una salida alta.
Este módulo Bluetooth integra un módulo Bluetooth de serie. Puede ser utilizado
fácilmente con Arduino y es transparente para la comunicación serie inalámbrica. Puede
optar por dos pines de Arduino D0 a D7 como puertos de serie del software para
comunicarse con Bluetooth Shield (D0 y D1 es el puerto de serie del hardware).
También dispone de dos conectores conectar y listo (una es digital, el otro es analógico)
para la instalación de módulos conectar y listo.
6
El escudo puede no ser compatible con algunos dispositivos Bluetooth capaz, como
algunos teléfonos móviles HTC (G-7 con Android 2,33) y los dispositivos de Apple con
perfil especial sobre la función Bluetooth.
Anexos
Paper 1
Paper 2
7
Figura Nº 2 Estudio del arte 2
8
ESPECIFICACIONES
Dimensión SEN0161
Potencia del módulo: 5.00V
Tamaño de la tarjeta de circuitos: 43mm × 32mm
PH Rango de medición: 0-14
Medición de la temperatura: 0-60 ℃
Precisión: ± 0.1pH (25 ℃)
Tiempo de respuesta: ≤ 1min
Sensor de pH con conector BNC
Interfaz PH2.0 (parche de 3 pies)
Potenciómetro de ajuste de ganancia
Indicador de encendido LED
PRECAUCIONES
Antes y después del uso del electrodo de pH cada vez, es necesario utilizar agua
(pura) para limpiarla.
El enchufe del electrodo debe mantenerse limpio y seco en caso de cortocircuito.
Preservación: La solución de preservación de referencia de electrodos es la
solución 3N KCL.
La medición debe evitar la contaminación escalonada entre las soluciones, para
no afectar la exactitud de la medición.
El núcleo de la arena se contamina, lo que ocasiona la declinación de PTS, esto
quiere decir respuesta lenta. Por lo tanto, debe basarse en las características del
contaminante, adaptado a la solución de limpieza, la recuperación del
rendimiento del electrodo.
Cuando se utiliza el electrodo, el núcleo de arena de cerámica y el anillo de
caucho de salida de líquido deben ser removidos, para hacer solución de puente
salino para mantener una cierta velocidad.
9
Tabla 1. Características del sensor sen0161
10
3.3. Informe semana 3
Investigación de los distintos métodos de calibración para el sensor
Diagrama de conexión
Utiliza un método matemático para dibujar una línea usando dos puntos, es decir,
usando la solución estándar Ácido, pH = 4,00 y pH alcalino = 10,00 ó 9,18 para dibujar
la relación lineal entre el voltaje y el valor del pH.
Durante la calibración (del paso 4 al paso 7), se debe evitar el corte de corriente, o
deberá comenzar de nuevo desde el paso 4.
11
La calibración del software no tiene nada que ver con el potenciómetro del adaptador.
Especialmente después de terminar la calibración, nunca debe ajustar el potenciómetro,
o debe comenzar de nuevo. Por otra parte, teniendo en cuenta la vibración mecánica
podría interferir el valor del potenciómetro, usted podría sellarlo por adhesivo de fusión
en caliente.
5. Calibración ácida
1. Lave su sonda de pH con agua pura (el agua destilada es la mejor) y séquela
en caso de diluir la solución de pH estándar. Insértelo en una solución ácida
estándar de pH = 4,0. Espere unos segundos hasta que las lecturas se vuelvan
relativamente estables.
2. Introduzca "acid: 4.00" (sin espacio blando, en minúsculas), y obtendrá
"Acid Calibration Successful" aviso. Luego continúe con Calibración
Alcalina.
6. Calibración de álcalis
7. Saque la sonda de pH de la solución
12
8. ácida, LIMPIÉNGALO de nuevo como lo hizo en el último paso. Después de
esto, insertarlo en la solución alcalina estándar con pH = 10 ó 9.18. Esperando
las lecturas estables
9. Introduzca "álcali: 10.00", y verá "Calibración alcalina exitosa".
10. Introduzca "exit" para terminar la calibración. Verá "Calibración exitosa, Salga
del modo de calibración".
13
Ejemplo código: Calibración del Software
***************************************************
This example uses software solution to calibration the ph
meter, not the potentiometer. So it is more easy to use and
calibrate.
This is for SEN0161 and SEN0169.
Created 2016-8-11
By youyou from DFrobot <youyou.yu@dfrobot.com>
14
/***********Notice and Troubleshooting***************
1.Connection and Diagram can be found here http://www.dfr
obot.com/wiki/index.php/PH_meter%28SKU:_SEN0161%29
2.This code is tested on Arduino Uno.
****************************************************/
#include <EEPROM.h>
#define EEPROM_write(address, p) {int i = 0; byte *pp = (by
te*)&(p);for(; i < sizeof(p); i++) EEPROM.write(address+i,
pp[i]);}
#define EEPROM_read(address, p) {int i = 0; byte *pp = (by
te*)&(p);for(; i < sizeof(p); i++) pp[i]=EEPROM.read(addres
s+i);}
#define ReceivedBufferLength 20
char receivedBuffer[ReceivedBufferLength+1]; // store the
serial command
byte receivedBufferIndex = 0;
#define SensorPin A0
15
#define VREF 5000 //for arduino uno, the ADC reference is
the power(AVCC), that is 5000mV
void setup()
{
Serial.begin(115200);
readCharacteristicValues(); //read the slope and intercep
t of the ph probe
}
void loop()
{
if(serialDataAvailable() > 0)
{
byte modeIndex = uartParse();
phCalibration(modeIndex); // If the correct calibr
ation command is received, the calibration function should
be called.
EEPROM_read(SlopeValueAddress, slopeValue); // Af
ter calibration, the new slope and intercept should be read
,to update current value.
EEPROM_read(InterceptValueAddress, interceptValue);
}
16
if(analogBufferIndex == SCOUNT)
analogBufferIndex = 0;
averageVoltage = getMedianNum(analogBuffer,SCOUNT);
// read the stable value by the median filtering algorithm
}
boolean serialDataAvailable(void)
{
char receivedChar;
static unsigned long receivedTimeOut = millis();
while (Serial.available()>0)
17
{
if (millis() - receivedTimeOut > 1000U)
{
receivedBufferIndex = 0;
memset(receivedBuffer,0,(ReceivedBufferLength+1));
}
receivedTimeOut = millis();
receivedChar = Serial.read();
if (receivedChar == '\n' || receivedBufferIndex==Receiv
edBufferLength){
receivedBufferIndex = 0;
strupr(receivedBuffer);
return true;
}
else{
receivedBuffer[receivedBufferIndex] = receivedChar;
receivedBufferIndex++;
}
}
return false;
}
byte uartParse()
{
byte modeIndex = 0;
if(strstr(receivedBuffer, "CALIBRATION") != NULL)
modeIndex = 1;
else if(strstr(receivedBuffer, "EXIT") != NULL)
modeIndex = 4;
else if(strstr(receivedBuffer, "ACID:") != NULL)
18
modeIndex = 2;
else if(strstr(receivedBuffer, "ALKALI:") != NULL)
modeIndex = 3;
return modeIndex;
}
case 1:
receivedBufferPtr=strstr(receivedBuffer, "CALIBRATION
");
enterCalibrationFlag = 1;
acidCalibrationFinish = 0;
alkaliCalibrationFinish = 0;
Serial.println(F("Enter Calibration Mode"));
break;
19
case 2:
if(enterCalibrationFlag)
{
receivedBufferPtr=strstr(receivedBuffer, "ACID:")
;
receivedBufferPtr+=strlen("ACID:");
acidValueTemp = strtod(receivedBufferPtr,NULL);
if((acidValueTemp>3)&&(acidValueTemp<5)) /
/typical ph value of acid standand buffer solution should b
e 4.00
{
acidValue = acidValueTemp;
acidVoltage = averageVoltage/1000.0; //
mV -> V
acidCalibrationFinish = 1;
Serial.println(F("Acid Calibration Successful"
));
}else {
acidCalibrationFinish = 0;
Serial.println(F("Acid Value Error"));
}
}
break;
case 3:
if(enterCalibrationFlag)
{
receivedBufferPtr=strstr(receivedBuffer, "ALKALI
:");
receivedBufferPtr+=strlen("ALKALI:");
20
alkaliValueTemp = strtod(receivedBufferPtr,NULL)
;
if((alkaliValueTemp>8)&&(alkaliValueTemp<11))
//typical ph value of alkali standand buffer solution shoul
d be 9.18 or 10.01
{
alkaliValue = alkaliValueTemp;
alkaliVoltage = averageVoltage/1000.0;
alkaliCalibrationFinish = 1;
Serial.println(F("Alkali Calibration Succe
ssful"));
}else{
alkaliCalibrationFinish = 0;
Serial.println(F("Alkali Value Error"));
}
}
break;
case 4:
if(enterCalibrationFlag)
{
if(acidCalibrationFinish && alkaliCalibrationFi
nish)
{
newSlopeValue = (acidValue-alkaliValue)/(acid
Voltage - alkaliVoltage);
EEPROM_write(SlopeValueAddress, newSlopeValue
);
newInterceptValue = acidValue - (slopeValue*a
cidVoltage);
EEPROM_write(InterceptValueAddress, newInterc
eptValue);
21
Serial.print(F("Calibration Successful"));
}
else Serial.print(F("Calibration Failed"));
Serial.println(F(",Exit Calibration Mode"));
acidCalibrationFinish = 0;
alkaliCalibrationFinish = 0;
enterCalibrationFlag = 0;
}
break;
}
}
22
}
}
}
if ((iFilterLen & 1) > 0)
bTemp = bTab[(iFilterLen - 1) / 2];
else
bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2
- 1]) / 2;
return bTemp;
}
void readCharacteristicValues()
{
EEPROM_read(SlopeValueAddress, slopeValue);
EEPROM_read(InterceptValueAddress, interceptValue);
if(EEPROM.read(SlopeValueAddress)==0xFF && EEPROM.read(
SlopeValueAddress+1)==0xFF && EEPROM.read(SlopeValueAddress
+2)==0xFF && EEPROM.read(SlopeValueAddress+3)==0xFF)
{
slopeValue = 3.5; // If the EEPROM is new, the reco
mmendatory slope is 3.5.
EEPROM_write(SlopeValueAddress, slopeValue);
}
if(EEPROM.read(InterceptValueAddress)==0xFF && EEPROM.r
ead(InterceptValueAddress+1)==0xFF && EEPROM.read(Intercept
ValueAddress+2)==0xFF && EEPROM.read(InterceptValueAddress+
3)==0xFF)
{
interceptValue = 0; // If the EEPROM is new, the rec
ommendatory intercept is 0.
EEPROM_write(InterceptValueAddress, interceptValue);
}
23
}
24
3.4. Informe semana 4
Investigación de los distintos métodos de calibración para el sensor
/*
# This sample code is used to test the pH meter V1.0.
25
# Editor : YouYou
# Ver : 1.0
# Product: analog pH meter
# SKU : SEN0161
*/
#define SensorPin A0 //pH meter Analog output to
Arduino Analog Input 0
#define Offset 0.00 //deviation compensate
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth 40 //times of collection
int pHArray[ArrayLenth]; //Store the average value of the
sensor feedback
int pHArrayIndex=0;
void setup(void)
{
pinMode(LED,OUTPUT);
Serial.begin(9600);
Serial.println("pH meter experiment!"); //Test the ser
ial monitor
}
void loop(void)
{
static unsigned long samplingTime = millis();
static unsigned long printTime = millis();
static float pHValue,voltage;
if(millis()-samplingTime > samplingInterval)
{
pHArray[pHArrayIndex++]=analogRead(SensorPin);
26
if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
pHValue = 3.5*voltage+Offset;
samplingTime=millis();
}
if(millis() - printTime > printInterval) //Every 800 mi
lliseconds, print a numerical, convert the state of the LED
indicator
{
Serial.print("Voltage:");
Serial.print(voltage,2);
Serial.print(" pH value: ");
Serial.println(pHValue,2);
digitalWrite(LED,digitalRead(LED)^1);
printTime=millis();
}
}
double avergearray(int* arr, int number){
int i;
int max,min;
double avg;
long amount=0;
if(number<=0){
Serial.println("Error number for the array to avraging!
/n");
return 0;
}
if(number<5){ //less than 5, calculated directly statis
tics
for(i=0;i<number;i++){
amount+=arr[i];
27
}
avg = amount/number;
return avg;
}else{
if(arr[0]<arr[1]){
min = arr[0];max=arr[1];
}
else{
min=arr[1];max=arr[0];
}
for(i=2;i<number;i++){
if(arr[i]<min){
amount+=min; //arr<min
min=arr[i];
}else {
if(arr[i]>max){
amount+=max; //arr>max
max=arr[i];
}else{
amount+=arr[i]; //min<=arr<=max
}
}//if
}//for
avg = (double)amount/(number-2);
}//if
return avg;
}
28
Determinamos que el mejor método de calibración es el que sea realiza mediante
software.
29
ANÁLISIS DE RESULTADOS
De acuerdo a las procesos que se fue realizando respecto al trabajo, fue muy fructífera
que gracias a ello se pudo obtener experiencias a través de fallas y accidentes que se
tuvo, principalmente en la forma de calibración del sensor lo cual era una nueva forma
de recalibrarlo pero fue logrado realizado con eficacia, en fin muchos aspectos
constructivos nos ayudó a desarrollarlo.
CONCLUSIONES
El sensor q se usará es el SN106 ya que brinda características y un costo
confiable y accesibles.
La comunicación que tendrá el sistema será Wifi ya que presenta un mayor
rango de alcance en comparación del Bluetooth.
La calibración del sensor de realizó mediante el programa de Arduino ya que
mantiene los datos de calibración guardados en la EEPROM , evitando que los
valores cambien al calibrar mediante el potenciómetro manualmente
RECOMENDACIONES
Es necesario conocer las características de cada elemento, especialmente del
sensor que estamos utilizando, para no dañarle, que es complicado conseguir
este señor y muy costoso.
Tener en cuenta como es el comportamiento del nivel de PH para poder obtener
los datos de una manera correcta, caso contrario no se obtendrá resultados
favorables.
30
REFERENCIAS
[4]. «MATLAB - El lenguaje del cálculo técnico - MATLAB & Simulink». [En
línea]. Disponible en: https://es.mathworks.com/products/matlab.html.
[Accedido: 05-dic-2016].
https://www.dfrobot.com/wiki/index.php/PH_meter(SKU:_SEN0161)
31
[12]. PH meter(SKU: SEN0161) - Robot Wiki. (s. f.). Recuperado 18 de
https://www.dfrobot.com/wiki/index.php/PH_meter(SKU:_SEN0161)
32
ANEXOS
33
Evidencia del trabajo
34