Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCION
Nuestro interés en este proyecto se basa en la gran cantidad de aplicaciones que tiene la
medición precisa de pH. Esta es útil en industrias; lácteas, bebidas, alimenticias, alimentos
procesados, control de calidad, acuarios, criaderos de peces, agua, tratamiento de agua,
laboratorio, fotografía, papel, galvanoplastia, agricultura, como también en Escuelas,
Universidades, etc.
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 2
INTRODUCCION TEORICA
TEORIA DEL pH
La medición de pH juega un rol importante para identificar los niveles de acidez o alcalinidad
en procesos industriales y de investigación.
El pH es la medición de la acidez o alcalinidad de una solución y puede ser representada por
esta ecuación:
pH = -log [H+]
Otro factor que influye en la respuesta del electrodo es la temperatura. Esta variación esta
descrita por la ecuación de Nernst, en donde la pendiente de la curva esta idealmente
determinada por la siguiente expresión:
2,3.R.Tk
m=
n.F
En donde:
J
R = 8,314472
K .mol
“n” es la carga del ión (incluyendo el signo) que para el ión [H+] vale 1;
C
F = 9,64853399.104
mol
m = 59,1[ mv / pH ]
En donde la pendiente de la recta crecerá para mayores valores y disminuirá para menores
valores de temperatura como se observa en el siguiente ejemplo:
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 5
5° .30 .24 .18 .12 .06 0 .06 .12 .18 .24 .30
15° .15 .12 .09 .06 .03 0 .03 .06 .09 .12 .15
25° 0 0 0 0 0 0 0 0 0 0 0
35° .15 .12 .09 .06 .03 0 .03 .06 .09 .12 .15
45° .30 .24 .18 .12 .06 0 .06 .12 .18 .24 .30
55° .45 .36 .27 .18 .09 0 .09 .18 .27 .36 .45
65° .60 .48 .36 .24 .12 0 .12 .24 .36 .48 .60
75° .75 .60 .45 .30 .15 0 .15 .30 .45 .60 .75
85° .90 .72 .54 .36 .18 0 .18 .36 .54 .72 .90
COMPENSACION
Por ende:
Vr − Vm = 0,003 ⋅ ∆T ⋅ ∆pH
Despejando:
Vm − Vr = 0,003⋅ (T − 25) ⋅ (7 − Vr )
Despejando obtenemos:
Donde Tr = 50-T
Aplicando estas dos ecuaciones se puede obtener un valor compensado mediante software.
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 8
SOLUCIONES BUFFER
Las soluciones buffer son soluciones acuosas de niveles conocidos de pH (pH 4,7,10 etc.)
que tienen la propiedad de mantener valores bastante estables de pH. Sin embargo, como
en cualquier otra sustancia, su valor también varía con la temperatura.
Estas soluciones son utilizadas en una amplia gama de procesos, siendo uno de ellos la
calibración de instrumentos medidores de pH.
Dado que la respuesta de un electrodo de vidrio a variaciones de pH es lineal, conociendo la
tensión entregada por el electrodo en dos puntos precisos de pH nos permite conocer la
curva completa. Es por esto que en la calibración de instrumentos de medición de pH se
utilizan dos soluciones buffer de valores diferentes.
MEDICIONES
DIAGRAMA EN BLOQUES
Desplazador
Lectura
Electrodo
Amplificación
Conversión
Compensació
Amplificador
Sensor
pH
Temperatur
LCD
deA/D
nivel
n
a
El sensor de pH es un tipo de electrodo de vidrio con una salida de alta impedancia que
brinda una tensión en milivolts directamente proporcional al pH de la solución en cuestión.
Es por esto que idealmente se puede medir el pH de una solución con bastante precisión
aplicando los factores de conversión apropiados.
El electrodo de pH brinda una salida de tensión negativa para soluciones bases y una
tensión positiva para soluciones ácidas, dando una tensión de cero para una solución neutra
(pH 7).
El instrumento cuenta de una precisión de dos dígitos decimales con lo que se requiere una
señal limpia para obtener una medida estable.
La etapa de conformación de señal fue desarrollada completamente con amplificadores
operacionales. Consta de un amplificador en configuración no inversora que eleva las
tensiones proporcionadas a un rango de tensiones aceptables para un conversor A/D,
seguido de un desplazador de nivel (configuración restadora) encargado de llevar dichas
tensiones a valores únicamente positivos. Una etapa de filtrado simple se encarga de limpiar
la señal para obtener valores lo mas estables posible.
ACONDICIONAMIENTO DE LA SEÑAL
Para tener una idea aproximada de los valores de tensiones que debe manejar el circuito, se
debe primero conectar el electrodo a un circuito seguidor de tensión simple con un
amplificador operacional y medir el valor de salida para dos soluciones de calibración, para
poder así determinar la pendiente de la recta de respuesta del electrodo, y conocer así sus
valores máximos y mínimos.
De esta manera determinamos los máximos de tensión que entregará el electrodo para
proceder a diseñar la etapa de acondicionamiento.
El primer paso consiste en llevar estos valores a un rango de tensión manejable por la
entrada analógico digital del microcontrolador. En este caso, vamos a elegir un rango de
tensiones de 0 a 4V, donde 0 representa un pH de 0 y 4V un pH de 10. Los valores de pH
mayores a 10 no serán tomados en cuenta. Dado que el conversor A/D del microcontrolador
es de 10 bits, si queremos elaborar un instrumento con dos dígitos de precisión,
necesitaremos un conversor más grande, y dado que el rango de pH de 0 a 10 es común en
los peachímetros comerciales, tomaremos el mismo para nuestro proyecto.
Ahora bien, para obtener la señal deseada debemos efectuar una transformación lineal en la
recta de respuesta del electrodo, la cual consiste en una amplificación, una inversión y un
desplazamiento de nivel como se muestra en el gráfico siguiente. Más adelante se cubrirá
cada etapa por separado.
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 11
Amplificador de entrada
5 V 5 K
R 5
B N C
R 1 U 71
3 V + 5 R 6
+ O S 2 4 K 7
3 9 K
C 1 6
O U T
2 . 2 n 2 1 V o u t
- 4 O S 1
C A 3 1V 4 -0
- 5 V
R 3 R 4
5 0 K 2 K 2
R 2
1 K
La señal ingresa por un filtro simple pasa bajos de frecuencia de corte de alrededor de 2KHz
formado por C1 y R1, que mejora y limpia la señal de ruidos de alta frecuencia. Se puede
utilizar una frecuencia de corte inferior, pero esto afectará considerablemente el tiempo de
respuesta del electrodo lo cual es indeseable.
RA + RB
A=
RA
RA = R2 + R3α
RB = R4 + R3β
El valor máximo de RA se dará cuando R3α sea igual a R3. En este caso RB tendrá su valor
mínimo:
RA tendrá su valor mínimo cuando R3α sea igual a cero, y en este caso RB será máximo:
RA min + RB max
G max = = 8,7
RA min
RA max+ RB min
G min = = 1,37
RA max
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 13
Dado que la alimentación de los AO es de +5V y -5V, no es necesario preocuparse por una
ganancia que lleve la tensión a niveles mayores que los máximos admisibles por las
entradas del microcontrolador, dado que esta nunca sobrepasará los 5V.
Desplazador de nivel
Una vez amplificada la señal, es necesario invertirla y desplazarla de manera de obtener una
la tensión de salida expresada anteriormente.
− 5V VAmp
Vout = − R9. +
R8 + R12 R7
V A m p - 5 V
R 7
1 0 K R 9
- 5 V T L 01 81 4
1 8 K 1 0 K 2 V -1 0 K
R 8 R 1 2 -
V o u t
1
O U T
3
+ 4
U 2 AV +
- 5 V
R9
Vout = − ⋅ (−5V ) + VAmp
R8 + R12
Para llevar la curva de respuesta del electrodo a su posición final, debemos invertirla y
desplazarla 2,8V hacia arriba. De esta manera un pH de 0 coincidirá con 0 Volts mientras
que un pH de 10 lo hará con 4 Volts. El resto de la curva se descarta.
Este efecto se logra restando un voltaje de 2,8V a la tensión a la salida del primer
amplificador, y luego invirtiendo el resultado.
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 15
Filtrado final
El siguiente paso, es un filtro paso-bajo de dos etapas, con una frecuencia de corte de 7Hz,
para eliminar el ruido acumulado en los pasos anteriores.
- 5 V - 5 V
T L 01 81 4 T L 0 81 41
9 V - 6 V -
- -
S a lid a a A / D
8 7
R 1 0 O U T R 1 1 O U T
V in 1 0 5
+ 4 + 4
1 M U 3 CV + 1 M U 3 BV +
C 2 C 3
2 2 n - 5 V 2 2 n - 5 V
Frecuencia de corte:
1
fc = ≈ 7 Hz
2 ⋅ π .R ⋅ C
Sensado de temperatura
- 5 V
U 3 D
4
L M 3 5
1 2
+
V+
V o u t
1 4
O U T
1 3
11
-
T L 0 8 4
V-
- 5 V
1 K 5 1 K 3 K 9
R 1 3 R 1 5 R 1 4
UNIVERSIDAD TECNOLÓGICA NACIONAL - - F.R.C.
5 V - 5 V
TRABAJO FINAL INTEGRADOR
5 V 5 K
NOMBRE/LEGAJOR 5 CURSO HOJA
B N C
R 1 U 1 T L 0 8 T4 L 0 4R2
8 4 16
11
11
7
3 R 6 5 9 6
+ O S 4 2K 7 - 5 V - -
CIRCUITO COMPLETO
V-
V-
V+
3 9 K P H
C 1 6 R 7 8 7
O U T 1 0 K R 9R 1 O0 UR T1 1O U T
2 .2 2 n 1 1 0 5
- O S 1 + +
V+
V+
V-
C A 3 - 51 U 3 1C U 3 B
V4 0 T L 0 81 4M M
11
1 81 K0 2 K 1 0 K
4
R R8 1 - 2 C 2 C 3
V-
- 5 V 1 -2 5 n V 2- 5 n V
O U T2 2
R R 3 4 3
5 20 K 2 +
V+
U 2 A
R 2
4
1 K
- 5 V - 5 V
3 U 5 3 D
4
L M
1 2
+
V+
T E M P E R A T U R A
1 4
O U T
1 3
-
V-
T 11 L 0 8 4
- 5 V
1 K 1 5 K 3 K 9
R 1 R 3 1R 5 1 4
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 17
SECCION DIGITAL
ESQUEMA CIRCUITAL:
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 18
Para este proyecto se utilizó un microcontrolador PIC16F873 que cuenta con las siguientes
características:
Item Valor
Memoria de programa 7.2 KBytes (8192 instrucciones)
Memoria SRAM 192 KBytes
Memoria EEPROM 128 KBytes
Número de E/S 22
Número de ADC 5 (10 Bits)
Número de PWM 2
SPI Si
I2C Si (Master)
USART Si
Timers 8 Bits 2
Timers16 Bits 1
Comparadores 2
Clock 0-20 MHz
Número de pines 28
Cápsula PDIP, SOIC, SSOP, QFN
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 19
Por otro lado el cristal utilizado tiene dos capacitores que van a masa, el valor de los mismos
se obtienen de una tabla de la hoja de datos del pic, que según la frecuencia a la que oscile
el cristal será el valor de los capacitores que se deben colocar.
Lo fundamental en la polarización del PIC es que debe tener una alimentación bien
estabilizada, tanto para la tensión de referencia como para la alimentación del PIC, esto nos
garantiza una conversión correcta de los valores de pH y temperatura.
Con respecto a la alimentación del LCD debemos fijar dos niveles de corriente, el nivel de
corriente del LED de iluminación de la pantalla y el nivel de contraste de los caracteres,
además se debe colocar una resistencia de pull up 10K en la línea enable del mismo.
Las señales de pH y temperatura ya acondicionadas ingresan por las entradas del ADC
donde serán tratadas por el microcontrolador para su adecuación y presentación en el
display como se explica a continuación.
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 20
PROGRAMA:
Conversión digital:
Para la conversión digital de las mediciones, en primera instancia debemos saber que rango
de ph necesitamos medir y con que resolución, lo mismo para la temperatura. En este caso,
ya que contábamos con un pic16f873 y queríamos medir ph con dos cifras decimales,
elegimos el rango de 0 a 10.23 grados de ph logrando una resolución de 10.23/1023=0.01.
Por otro lado, para la medición de la temperatura elegimos el rango de 0ºc a 100ºC, la
resolución es por ende 100/1023=0.097752, en el programa mostramos solo una cifra
decimal.
# INT_AD //interrupción del ADC ,se activa cuando esta lista la conversión.
AD_isr()
{
Set_ADC_Channel(0); //especifico el canal para la conversión.
delay_us(1);
i=Read_ADC(ADC_READ_ONLY); //lee el ultimo resultado
i=10.23*i/1023;
delay_ms(1);
Read_ADC(ADC_START_ONLY); //inicia nueva conversion.
Set_ADC_Channel(1);
delay_us(1);
j=Read_ADC(ADC_READ_ONLY);
j=100*j/1023;
Read_ADC(ADC_START_ONLY); //inicia nueva conversion.
}
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 21
Condición de compensación:
if(i>7)
{
i=(i+0.021*j-0.525)/(1+0.003*j-0.075);
}
if(i<7)
{
i=(i-0.021*(50-j)+0.525)/(1-0.003*(50-j)+0.075);
}
Luego en el “main” del programa hay una sección importante del código en la que se
configura el resto parámetros necesarios para el manejo del ADC:
Setup_ADC(ADC_CLOCK_DIV_32);
enable_interrupts(INT_AD); // habilito interrupción del ADC.
enable_interrupts(GLOBAL); //habilito la interrupción para ser usada de manera globa.l
delay_us(1);
Read_ADC(ADC_START_ONLY); //inicializo la conversion.
LCD:
lcd_init();
//Debe ser llamada antes que las otras funciones.
lcd_putc(c);
//Visualiza c en la siguiente posición del display.
\f Borrar display
\n Saltar a la segunda línea
\b Retroceder una posición.
lcd_enviar(LCD_COMANDO, LCD_HOME);
//lleva el cursor al inicio.
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
//limpia la pantalla.
En el programa se pueden ver una serie de condicionales “if” y “while” que sirven para
verificar el estado de los pulsadores actuando como una especie de interrupción, vale
aclarar que unos de los problemas que trae aparejado este procedimiento es que se debe
mantener presionado el pulsador hasta que la ejecución del programa llegue hasta el punto
en el que se verifica el estado de dicho pulsador, momento en el cual si el pin esta en nivel
alto la pantalla se pondrá en blanco para indicarle al usuario que fue tomada la acción
seleccionada, luego hay un delay de 20 ms para evitar el rebote del pulsador y un while
infinito para que no salga de ahí hasta que no sea soltado el pulsador, lo mismo para cada
uno de los pulsadores.
Para grabar cualquier medición de PH que se este mostrando en pantalla se debe presionar
en cualquier momento el interruptor conectado al pin declarado como mem (PIN_c3).
En esa sección del programa se realiza un “casteo” de la parte entera y la parte decimal de
la medición para poder guardarla en memoria ya que esta es 8bits, de esta manera
separamos al numero en dos partes y las guardamos en posiciones consecutivas de
memoria.
Para leer las mediciones guardadas en memoria se debe presionar en cualquier momento el
interruptor conectado al pin declarado como read (PIN_c4) , con lo cual se muestra en
pantalla el dato guardado en la memoria 0 y luego a través de el pulsador conectado al pin
declarado como mas (PIN_C5) se puede ir ascendiendo en la lectura de la memoria hasta
llegar a la memoria 4 y si volvemos a pulsar volveremos a la memoria 0.
Hemos usado solo 10 byte de los 128 byte que posee la memoria eeprom (5 mediciones de
pH en total) por comodidad a la hora de buscar una determinada medición y para facilitar la
presentación del proyecto.
Por otro lado al comienzo del programa hay una serie de directivas para el compilador: la
resolución del PIC, la frecuencia a la que va a trabajar para la función delay, el PIC que se
va a utilizar, se declaran los fusibles, el tipo de cristal, se elimina el watchdog, se declaran
las librerías a utilizar y se declaran los pines que van conectados a los pulsadores como
variable globales.
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 23
Programa completo:
#include <16f873.h>
#DEVICE ADC=10 //ADC usa 10 bit
#FUSES NOWDT, HS, NOPROTECT,NOLVP,NODEBUG, BROWNOUT,NOCPD,
NOWRT,NOPUT
#USE DELAY(clock=20000000)
#include <lcd.c>
#define mem PIN_C3 //pulsador para grabar en eeprom
#define read PIN_C4 //pulsador para leer memoria eeprom
#define mas PIN_C5 //pulsador para subir posiciones en la lectura de memoria
int memoria=0;
int lectura=0;
float i;
float j;
int m1=0;
int m2=0;
int r1=0;
int r2=0;
int numero=0;
int cm=0;
int cr=0;
int contador=0;
int hola=0;
int a=0;
AD_isr()
{
Set_ADC_Channel(0); //especifico el canal para la conversión.
delay_us(1);
i=Read_ADC(ADC_READ_ONLY); //lee el ultimo resultado.
i=10.23*i/1023;
delay_ms(1);
Read_ADC(ADC_START_ONLY); //inicia nueva conversion.
Set_ADC_Channel(1);
delay_us(1);
j=Read_ADC(ADC_READ_ONLY);
j=100*j/1023;
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 24
if(i>7)
{
i=(i+0.021*j-0.525)/(1+0.003*j-0.075);
}
if(i<7)
{
i=(i-0.021*(50-j)+0.525)/(1-0.003*(50-j)+0.075);
}
void main()
{
lcd_init();
Setup_ADC_Ports(RA0_RA1_ANALOG_RA3_REF); //configuro como analogica la ra0, la
ra1 y la ra3 como referencia
Setup_ADC(ADC_CLOCK_DIV_32);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
delay_us(1);
Read_ADC(ADC_START_ONLY);
while(1)
{
if(input(mem))
{
delay_ms(20);
if(input(mem))
{
m1=i; //casteo la parte entera de la medición de ph para guardarlo en memoria ya que
la eeprom es de 8 bit
m2=(i - m1)*100; //tomo la parte decimal de la medición de ph y lo grabo en la siguiente
posición de memoria
m2=m2+1;
write_eeprom(cm,m1); //grabo parte entera
memoria++;
cm++;
write_eeprom(cm,m2); //grabo parte decimal
cm++; //contador para grabar datos en la eeprom
memoria++; //contador para mostrar el numero de la medición en pantalla
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
while(input(read))
{
if(input(mas))
{
delay_ms(20);
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
contador+=2;
cr++; //contador de lectura de memoria
}
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 26
if(contador==0)
{
if(a==0) //para que se borre la pantalla solo una ves en el comienzo del
modo lectura de eeprom
{
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
a=1;
}
}
hola=contador;
hola++;
r1 = read_eeprom(contador);
r2 = read_eeprom(hola);
if (cr==5)
{
contador=0;
cr=0;
}
lcd_enviar(LCD_COMANDO, LCD_HOME);
printf(lcd_putc,"memoria %i %i.%i",cr,r1,r2);
cr=0;
if(a==1) //para que borre solo una ves la pantalla al salir del modo lectura o escritura
{
lcd_enviar(LCD_COMANDO, LCD_CLEAR);
}
a=0;
contador=0;
lcd_enviar(LCD_COMANDO, LCD_HOME);
printf(lcd_putc,"PH:%.2f ",i);
lcd_gotoxy(9,1);
printf(lcd_putc,"T:%.1f",j);
}
}
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 27
Rangos/escalas empleadas:
Voltaje DC:
0-200mV
0-2000mV
0-20V
Mediciones de parámetros:
Solución pH 7,00
pH solución a 25ºC 7,00 ± 0,02
T (ºC) ΔpH
0 +0.13
10 +0.05
20 +0.02
25 0.00
30 -0.02
40 -0.04
50 -0.05
Solución pH 4,00
pH solución a 25ºC 4,00 ± 0,02
T (ºC) ΔpH
0 +0.05
10 +0.02
20 +0.01
25 0.00
30 +0.01
40 +0.01
50 +0.01
UNIVERSIDAD TECNOLÓGICA NACIONAL - F.R.C.
TRABAJO FINAL INTEGRADOR
NOMBRE/LEGAJO CURSO HOJA
4R2 29
BIBLIOGRAFIA
Conceptos de pH
http://www.investigacion.frc.utn.edu.ar/sensores/PH/pH.htm
Fundamentals of pH
http://www.milanco.com/training/fundamen.htm
http://www.denverinstrumentusa.com/downloads/technical_notes.php
Electrodos Ion-selectivos
http://en.wikipedia.org/wiki/Ion-selective_electrode
Ecuación de Nernst
http://en.wikipedia.org/wiki/Nernst_equation
http://www.sensorex.com/support/education/pH_education.html
http://www.infoagro.com/abonos/pH_informacion.htm
PROGRAMAS UTILIZADOS
OrCAD 10.5
Proteus 7
WinPic800
CSS
wxMaxima
Gnuplot