Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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.
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:
//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.
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.
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.
CIRCUITO
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).
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.
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.
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
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.
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.
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.