Sei sulla pagina 1di 37

Sensor de Presion MPX100

En esta oportunidad les explicare cada parte del proyecto "Sensor de Presin".
Este proyecto es capaz de determinar la Presin(KPa) que se ejerce sobre un
objeto con ayuda del sensor MPX100. Asi mismo, se puede agregar un Set point al
sistema para tener un control sobre la presin aplicada, en caso que la presin
actual sobrepase el valor del Set point una alarma sonora se activara. Los rangos
de presion leida son mostrados en una barra de leds.

Contenido
Materiales

Acondicionamiento de la Seal de Entrada

Microcontrolador y Perifericos del Sistema

Programacion

Materiales

Pic16f877A
Lm329
LCD16x2
Sensor de Presion MPX100
Barra de leds
7805
7905
Resistencias:
10x 220 ohm 1/4W
7x 1k ohm 1/4W
1x 10k ohm 1/4W
3x Trimpot 100k ohm
1x 500 ohm aprox.
Acondicionamiento de la Seal de entrada

Para poder saber el correcto funcionamiento de este sensor MPX100 es necesario


leer el datasheet del fabricante.
http://pdf1.alldatasheet.es/datasheet-pdf/view/146712/MOTOROLA/MPX100.html
Los datos que vamos a necesitar son los siguientes:

En esta tabla podemos observar:


La alimentacin del sensor es de 3VDC a 6VDC.

Presin mxima a Medir 100kPa.

El sensor es lineal y tiene un offset mximo de 35mV.

Una vez que hayamos entendido del funcionamiento de este sensor procederemos
a realizar el acondicionamiento de seal.
Para empezar con esta etapa es necesario reducir la impedancia del sensor para
que la medicin tenga mayor exactitud.

Luego como el Datasheet de este sensor nos dice que es necesario que obtener la
variacin de los voltajes se realiza un arreglo con opamps llamado Restador
Inversor.

Las resistencias en esta etapa deben de ser iguales, R1=R2=R3=R4, para que no
exista amplificacin y solo se resten los voltajes de salida del Sensor.

Ahora eliminaremos el offset y amplificaremos la seal obtenida para que trabaje


de 0 a 5 V eso quiere decir que 0VDC = 0 KPa y 5VDC=100KPa.
Como el datasheet nos dice que cada 0.6mV equivale a 1KPa por tanto 60mV
sera 100KPa.
La amplificacion en esta etapa sera de 84, para poder obtener el resultado de
5VDc cuando se tiene 100KPa.
El offset se regulara con el potenciometro.

Los opamps son alimentados mediante una fuente simetrica de 5VDc.


Microcontrolador y Perifericos del Sistema

El microcontrolador usado fue el pic16f877A de este controlador se usan 2


Entradas analogicas. la primera para la seal antes acondicionada del sensor
de presin, la segunda para el potenciometro que nos dara el set point.
1 entrada digital que nos permite modificar el set Point.
11 salidas digitales 10 de ellas para la barra de leds y 1 para nuestra alarma
sonora.
Programacion
#INCLUDE "16F877A.H"
#DEVICE ADC=8
#FUSES HS,NOWDT,NOLVP
#USE DELAY(CLOCK=20M)
#DEFINE USE_PORTB_LCD TRUE
#INCLUDE "LCD.C"
FLOAT DATO,presion,Ptotal,Pprom;
int
i;
VOID MAIN()
{
LCD_INIT();
DELAY_US(5);

SET_TRIS_C(0x00);
SET_TRIS_D(0X01);
SETUP_ADC(ADC_CLOCK_DIV_32);
SETUP_ADC_PORTS(AN0_AN1_VREF_VREF);
OUTPUT_C(0X00);
OUTPUT_D(0X00);
SET_ADC_CHANNEL(1);
INICIO:
PRINTF(LCD_PUTC,"
Sensor de
");
PRINTF(LCD_PUTC,"\n
Presion ");
delay_ms(1000);
LCD_PUTC("\f");
Setpoint:

Presion:

de

Dato=READ_ADC();
delay_us(100);
Dato=Dato/2.55;
delay_us(100);
goto Muestra;
Ptotal=0;
for (i=1;i==4;i++);
{
presion=READ_ADC();
presion=presion/2.55;
Ptotal=Ptotal+Presion;
Pprom=Ptotal/i;
delay_ms(100);
}

Muestra:

//eliminando error Sistematico


//Se toma 3 datos en con una diferencia
//100 mili seg entre cada 1
//Se Displayara el Promedio

//displayando
PRINTF(LCD_PUTC,"Presion: ");
PRINTF(LCD_PUTC,"%0.0f KPa",Pprom);
LCD_PUTC("\n");
PRINTF(LCD_PUTC,"SePoint: ");
PRINTF(LCD_PUTC,"%0.0f KPa",Dato);

BarraLeds:
{
if (presion<=10)
{
OUTPUT_HIGH(PIN_D2);
OUTPUT_LOW(PIN_D3);
OUTPUT_LOW(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_LOW(PIN_C4);
OUTPUT_LOW(PIN_C5);
OUTPUT_LOW(PIN_C6);
OUTPUT_LOW(PIN_C7);
}
else if (presion<=20)

{
OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_LOW(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_LOW(PIN_C4);
OUTPUT_LOW(PIN_C5);
OUTPUT_LOW(PIN_C6);
OUTPUT_LOW(PIN_C7);
}
else if (presion<=30)
{
OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_LOW(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_LOW(PIN_C5);
OUTPUT_LOW(PIN_C6);
OUTPUT_LOW(PIN_C7);
}
else if (presion<=40)
{
OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_LOW(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_LOW(PIN_C6);
OUTPUT_LOW(PIN_C7);
}
else if (presion<=50)
{
OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_LOW(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_HIGH(PIN_C6);
OUTPUT_LOW(PIN_C7);
}
else if (presion<=60)
{

OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_LOW(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_HIGH(PIN_C6);
OUTPUT_HIGH(PIN_C7);

}
else if (presion<=70)
{

OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_HIGH(PIN_D4);
OUTPUT_LOW(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_HIGH(PIN_C6);
OUTPUT_HIGH(PIN_C7);

}
else if (presion<=80)
{

OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_HIGH(PIN_D4);
OUTPUT_HIGH(PIN_D5);
OUTPUT_LOW(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_HIGH(PIN_C6);
OUTPUT_HIGH(PIN_C7);

}
else if (presion<=90)
{

OUTPUT_HIGH(PIN_D2);
OUTPUT_HIGH(PIN_D3);
OUTPUT_HIGH(PIN_D4);
OUTPUT_HIGH(PIN_D5);
OUTPUT_HIGH(PIN_D6);
OUTPUT_LOW(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_HIGH(PIN_C6);
OUTPUT_HIGH(PIN_C7);

}
else if (presion<=100)
{

OUTPUT_HIGH(PIN_D2);

OUTPUT_HIGH(PIN_D3);
OUTPUT_HIGH(PIN_D4);
OUTPUT_HIGH(PIN_D5);
OUTPUT_HIGH(PIN_D6);
OUTPUT_HIGH(PIN_D7);
OUTPUT_HIGH(PIN_C4);
OUTPUT_HIGH(PIN_C5);
OUTPUT_HIGH(PIN_C6);
OUTPUT_HIGH(PIN_C7);
}
}
Condiciones:
{
if (presion-Dato>=0)
{
OUTPUT_HIGH(PIN_D1);
DELAY_ms(200);
OUTPUT_LOW(PIN_D1);
}
else
{
OUTPUT_LOW(PIN_D1);
}
IF (INPUT(PIN_D0)==1)
{
SET_ADC_CHANNEL(1);
delay_ms(100);
LCD_PUTC("\f");
GOTO Setpoint;
}
else
{
SET_ADC_CHANNEL(0);
delay_ms(100);
LCD_PUTC("\f");
GOTO Presion;
}
}

SENSOR DE PRESION
(NEUMATICO)

Inicio
Ayudas

Analgicos

Digitales

Proyectos

Foro

Contacta

Tienda

INTRODUCCION
Lo primero, una "definicin" (a mi aire, nunca mejor dicho) prctica. Neumtica
hace referencia a sistemas accionados con aire comprimido, a presin. Es por
esto que se hace imprescindible saber la presin del sistema.

Si dispones de un kit de neumtica de LEGO o elementos neumticos de algn


otro set, este sensor casero te ir muy bien. En lugar de usar el manmetro que
viene con el sensor, podrs usar este otro y visualizar los datos en la pantalla del
NXT.
Aunque la mayor ventaja obviamente es poder controlar toda la neumtica con el
NXT. Por ejemplo, puedes abrir y cerrar un brazo neumtico y, cuando la presin
descienda de un valor prefijado, que se active un motor para volver a presurizar
el sistema. Y cuando la presin llegue al punto de consigna prefijado como
mximo, que se pare. Todo automtico y controlado por el NXT.
Dicho de otra forma, puedes almacenar el valor de la presin en una variable del
NXT y procesarla como quieras en tus montajes neumticos. Es decir, vamos a
construir un manmetro digital casero para tu NXT.
Por ltimo, agradecer la colaboracin de "Tranki" con el diseo del circuito
utilizado en este sensor. Este ha sido un diseo compartido.

MATERIAL
Una relacin del material necesario para la construccin de este sensor. Adems
de lo relacionado a continuacin, son necesarios los habituales cables de
conexin al NXT (solo cable blanco y negro), pequeos cables para conexiones y
el board.
Las resistencias (1/4 de vatio) son:
6 de 10k (marrn negro naranja)
1 de 18k (marrn gris naranja)
1 de 390k (naranja blanco amarillo)
1 de 120k (marrn rojo amarillo)
1 integrado LM358
Un sensor MPX2200AP de Motorola
1 caja de bateras que aporten en total 5V (aprox). 4 pilas recargables de 1,2V son
suficientes.
Y por supuesto, el set de neumtica de LEGO. En caso de no tenerlo, no creo que
este sensor te resulte demasiado til.

EL SENSOR
El sensor MPX2200AP es de presin absoluta. Existen otros con 2 tubos de
entrada que son de presin diferencial, es decir, nos dice la diferencia de presin
entre 2 puntos.
El sensor en cuestin tiene un pequeo orificio en la parte superior para conectar
los tubos de neumtica. Por cierto, entran perfectamente. Este sensor tiene alguna
peculiaridad con respecto a otros que hemos construido. Ser necesario
alimentarlo con bateras externas.
En ese sentido (solo en ese) es como el reloj-calendario permanente de digital.
En mi caso con 4 bateras recargables. Es decir, 4 x 1,3 = 5,2V aprox., aunque
admitira ms tensin. En principio podra alimentarse directamente con el NXT,
pero de momento no lo he conseguido.

Otra peculiaridad es que la respuesta del sensor la da en voltaje. Gran parte de los
sensores construidos hasta ahora son resistivos, es decir, medamos la resistencia.
Aqu son voltios, concretamente unos pocos mV (entre 10 y 40 mV aprox),
imposible de digerir por el NXT si no amplificamos la seal.
Esa es precisamente la funcin de toda la electrnica asociada. Si el sensor diera
una respuesta en voltios, con una resistencia lo hubiramos arreglado.
PRECAUCION: El sensor tiene un intervalo (habitualmente se le llama "rango",
aunque eso es lo de los militares entre otros) de trabajo de 0 a 29 psi. No debes
sobrepasar NUNCA los 29 psi de presin, o podras daar el sensor. En ese
sentido es ms limitado que el manmetro.

IDENTIFICACION DE LOS PINES DEL SENSOR


Lo primero en cuanto al sensor es identificar correctamente los 4 pines. La hoja
de datos anterior te dar ms informacin.
Si te fijas, una de las patas del extremo tiene una muesca. Ese es el pin n
1. En la imagen que sigue, el pin 1 est a la derecha. El orificio por el que se
conecta el tubo neumtica est justo al otro lado, sobre el pin 4.

Una vez correctamente identificados, las conexiones que usaremos a


continuacin sern las siguientes. Recuerda esta imagen para cuando montes
el circuito. Podras poner los terminales de un tester en los pines 2 y 4 para medir
la respuesta del sensor. Selecciona mV. Luego tienes ms informacin de cmo
hacerlo si no lo tienes claro. No olvides no superar la presin mxima.

Donde dice +5V, debers conectarlo al polo positivo de las pilas externas. Donde
dice 0V, conectar al polo negativo de las pilas. El pin 4 va directamente al cable
negro del NXT. Y el pin 2 va al circuito para poder amplificar la seal.
Resumiendo:
Pin 1: alimentacin del sensor, polo negativo (-).
Pin 2: seal de salida del sensor positiva.
Pin 3: alimentacin del sensor, polo positivo (+5V).
Pin 4: seal de salida del sensor negativa.
EL AMPLIFICADOR LM358
No es mi intencin dar demasiadas explicaciones sobre el circuito. Como suele
decirse, "queda fuera de las pretensiones de este libro". Lo nico que har es
describir a grandes rasgos qu hace y las conexiones.
Si dispones de un tester, ponlo en la posicin de medir tensin (V) en corriente
continua en su escala ms bajita. Prescinde de todo y conecta solo el sensor a las

pilas (pines 1 y 3) y mides con el tester los pines 2 y 4, que son la seal de salida
del sensor.
En la siguiente imagen, vers el selector en corriente contnua hasta 200 mV. Si
el votaje es mayor, simplemente mueve el selector hacia arriba hasta que de
lectura.

Puedes tambin conectar un tubo de neumtica de LEGO al sensor e


"inflarlo". Recuerda no sobrepasar nunca la presin de 29 psi, as que te
vendr bien conectar una "T" y el manmetro de LEGO para no pasarte de la
raya.
Vers que al medir, con la presin a 0, obtendrs aldededor de los 11 milivoltios
en el tester. Segn aumentes la presin, se incrementarn los mV hasta unos
40mV si no recuerdo mal.
Esas tensiones son demasiado bajas para poderlas medir con el NXT, y de ah la
utilidad del circuito con este amplificador. La hoja de datos del LM358 te dar
ms informacin. Si buscas por la red "amplificadores operacionales", tambin
encontrars abundante informacin, no siempre demasiado clara. Se representan
habitualmente en los circuitos con un tringulo.
Los pines son los siguientes. Recuerda que para identificar correctamente los
pines, tienes que poner la muesca nera que lleva el circuito en la parte superior.

Como puedes ver en el esquema, el circuito integrado (CI) consta en realidad de


2 amplificadores. Tiene la toma de tierra (pin 4), la alimentacin a 5V (pin 8) y
las entradas de las seales a amplificar.
Simplemente decir que segn la combinacin de resistencias que pongamos,
lograremos un factor de amplificacin u otro. Si el factor fuera x100,
convertiramos los 11mV en 1,1V y los 40mV en 4V. Esto ya es suficiente para
que lo detecte el NXT. La gracia de este circuito es que mantiene la
proporcionalidad de la seal pero aumentada.

CIRCUITO

El montaje parece ms complicado de lo que realmente es, no te asustes. As que


lo detallar lo mejor posible para que no te pierdas.
Dado que lleva alimentacin externa, ten cuidado de dnde pinchas los
terminales de las bateras. No te confundas y le metas los 5V a la entrada del
NXT o se te quede un cable suelto y haga algn contacto sin querer.
Como puedes observar, solo se utilizan el cable blanco (a la derecha arriba en la
imagen del circuito) y el cable negro. Es lgico. Los cables azul y amarillo se
usan en los circuitos digitales. Y la alimentacin (cable verde) es externa, por lo
que solo necesitamos esos dos cables para medir la tensin (los voltios).
En la siguiente imagen hay algunos cruces de cables que no he podido evitar.
Solo van conectados aquellos en los que hay un cuadradito negro, indicando la
conexin. En el siguiente apartado tienes una guia visual para construirlo paso a
paso. Recuerda que si tienes problemas con la identificacin de colores de los
componentes, tienes una ayuda deresistencias.

La lnea roja (en vertical a la izquierda) se conecta al polo positivo de la pila


(+5V). La linea negra (horizontal abajo) se conecta al polo negativo de la pila
(0V).
Los valores de las resistencias son los siguientes:
R1, R4, R5, R6 y R7: 10K
R2: 18K
R3: 390K
R8: 15K
R9: 120K

MONTAJE
Para que resulte ms claro, har el montaje sobre un board ms largo.
Empezaremos conectando el CI y el sensor, y luego aadiremos todo el resto de
resistencias numeradas del esquema. Conectaremos la alimentacin y finalmente
comprobaremos con el tester que la respuesta del sensor una vez amplificada es
la correcta. Deberan ser voltios.
Si no dispones de un tester, te saltas este paso. Es simplemente para comprobar el
sensor. El pin 1 del sensor est a la derecha del todo. Ese va a polo negativo de la
pila. El pin 2 al tester. El pin 3 al polo positivo (+5V). Y el pin 4 al tester. En mi
caso (sin presin) puedes ver la medida de 10,7 mV (la coma de la pantalla no se
ve en la imagen).

Quita todo el montaje anterior y empezamos de cero.


Ten en cuenta que toda la lnea superior ir conectado al polo negativo de la pila
y la fila inferior al polo positivo (+5V). Una vez claro esto, pinchamos el LM385.
La muesca del LM385 queda a la izquierda en la imagen y por tanto el pin 1 est
abajo a la izquierda. Conectamos un cable desde la 4 columna al polo negativo.

Ahora conectamos el sensor con el pin 1 segn la imagen. El pin 1 est a la


derecha del todo y debe coincidir con el cable de la imagen anterior.

Ahora la alimentacin del integrado y del sensor (cable blanco en el pin 3). La
parte superior son 0V (cable negro de la pila) y la parte de abajo son los +5V
(cable rojo de la pila). Fijate bien en el cable que seala la flecha. He montado
el crcuito 2 veces para comprobar todo y las dos veces me lo he dejado sin poner.

Las resistencias R2 y R3. Van del pin 1 al 2.

Ahora los cables del NXT. El negro directo al sensor, al pin 4 de la izquierda del
todo. Entre el blanco y el pin 1 del integrado la resistencia R1.

El primer conjunto de resistencias: la R7 y R9. El pin 2 del sensor es el que lleva


la seal al circuito para su amplificacin.

El segundo conjunto de resistencias. R4, R5, R6 y R8.

Por ltimo la alimentacin.

El resultado final debera ser este:

Sugerencia
Si tienes un Tester, quita los cables blanco y negro del NXT y mides en su lugar
los voltios generados por el circuito para comprobar que todo est bien. Recuerda
que tienes que subir la escala del tester al menos una posicin.
"Hincha" el sensor con el set de LEGO neumtica sin sobrepasar los 29 psi y
observa la respuesta del tester para ver si efectivamente van aumentando los
voltios con la presin. En la prueba que he realizado, la medida ha variado desde
los 1308 mV para presin 0 hasta los 1320 mV para 29 psi.

PROGRAMA

El programa bsico es muy sencillo. En realidad, simplemente visualizando


el "raw" del sensor de contacto en el dispay, sera suficiente. Lo nico que
ocurre es que ese valor vara proporcionalmente con la presin, pero no sabemos
qu presin tenemos. Lo que si podemos saber antes de continuar es si lo hemos
montado bien y funciona.

Haciendo esto, y variando la presin hasta los 29 psi, mi NXT ha variado desde
raw igual a 693 hasta 725. Es decir, 33 "marcas". El manmetro en estas mismas
circunstancias tiene 29 "marcas". Dicho de otra forma, nuestro sensor es ms
sensible que el manmetro.

CALIBRACION
La calibracin de este sensor es muy sencilla por la comodidad de modificar la
variable (la presin) y por la forma de medirla: el monmetro de LEGO
Neumtica.
Simplemente escribe en una columna los valores: 0, 5, 10, 15, 20, 25 y 29. Esto
es la presin en psi. Para las pruebas, tendremos que montar el sistema
neumtico. La vlvula es simplemente para poder vaciar el sistema.

Usando el programa anterior, vamos anotando en nuestra tabla los valores de


presin en psi leidos del manmetro y su valor raw correspondiente. En mi caso,
he obtenido la siguiente tabla:

Ahora hacemos una representacin grfica y luego un ajuste por mnimo


cuadrados. Con programas de tipo hoja de clculo es muy sencillo: seleccionas
todos los valores de la tabla y le das a "insertar grfico".
Selecciona el grfico de tipo "dispersin", lneas rectas. Con el ratn, ponte sobre
la recta dibujada y dale a "Agregar lnea de tendencia". Activa la opcin de
"Presentar la ecuacin en el grfico". Si te piedes, tienes una explicacin ms
detallada de estos ajustes en el sensor de temperatura.

De todas formas, si los componentes que has usado, resistencias, etc han sido los
mismos (aunque nunca son idnticos), los resultados no deberan diferir mucho.
Adems el manmetro tambin podra diferir un poco. Yo he obtenido:
Y = 691,32 + 1,1214X
As que siempre podras usar estos valores como alternativa si no te aclaras.

PROGRAMA PARA EL SENSOR DE PRESION


Si dispones de un NXT de la versin 1, no admitir decimales. Tenlo en cuenta
para modificar el programa adecuadamente.
Despejando la X (el valor en psi) de la ecuacin anterior queda: X = (Y 691,32) / 1,1214. Eso es lo que tenemos que programar en el NXT.

Una pequea mejora sera medir el valor 0 y 29 cada vez que lo pones en marcha.
Sera como una pequea calibracin para el sensor antes de cada uso. Te pongo el
ejemplo del cero. Solo habra que modificar algunos iconos del inicio. Todo el
resto sera igual.
Esto es interesante porque en el sistema puede quedar presin residual (aunque el
manmetro marque cero) u otros factores. Desconoco cmo afecta la presin
atmosfrica, pero sospecho que influye. El sensor tiene un pequeo orificio en su
parte delantera. Y esto hace que la recta de calibracin vare un poco cada vez
que lo usas.
El icono de espera inicial sirve simplemente para darte tiempo a vaciar de presin
el sistema. Una vez realizado, se pulsa el botn naranja del NXT para que
empiece a medir.

Potrebbero piacerti anche