Sensor
de presión
Objetivo
En esta
práctica se pondrá a prueba la forma en la que el sensor de presión funciona,
dando así primeramente un circuito en el que muestre el funcionamiento básico
del sensor, posteriormente mostrando un programa en el que se muestre el peso
que puede medir dicho instrumento.
Material
Primer
circuito.
·
1 Led
·
Tarjeta Arduino UNO
·
1 resistencia de 10 KΩ
·
1 Sensor MF01
·
1 resistencia de 220Ω
Segundo Circuito
·
Tarjeta Arduino UNO
·
1 resistencia de 100 KΩ
·
1 Sensor MF01
·
1 LM 258
Descripción del sensor
MF01
Este sensor de fuerza o presión auto
adherible es ideal para detectar una fuerza aplicada en la membrana. Al
detectar una flexión en la membrana el sensor cambia su resistencia interna.
Está hecha de 2 capas separadas por un espaciador, cuanto más se presiona, más
puntos de elemento activo tocan el semiconductor y eso hace que la resistencia
disminuya. Cuando no es presionado, su resistencia es de aprox. 20MΩ. Su rango
de presión varía de 30 gramos a 1kg. Por lo que basta con ponerlo en un divisor
de tensión, para poder medir la salida en voltaje con algún ADC.
Ventajas del sensor
Estos
sensores son de bajo costo, funciona con cualquier tarjeta de desarrollo o
microcontrolador con etapa de ADC. Es muy sencillo de utilizar y puede tener
multitud de aplicaciones en muchos proyectos electrónicos. Sirve para la
mayoría de las aplicaciones sensibles al tacto. Puede utilizar cualquier fuente
de alimentación ya que utiliza menos de 1 mA de corriente.
Circuitos
Circuito 1
Circuito sencillo en
el que se muestra que si el sensor entre más presión posea, con más potencia
iluminara el led
Circuito 2
En este circuito se utiliza un amplificador
operacional, a diferencia del primero esto lo hace ser más preciso, la
desventaja de este circuito es que solo puede medir hasta 500gr, en comparación
con el kg que puede medir el primero.
Programas
Programa arduino del
primer circuito
int AnalogPin =
0;
int Led = 6;
int ReRe; // La Lectura de la Resistencia por
División de Tensión
int BrilloLED;
void setup()
{
Serial.begin(9600); //
Enviaremos la información de depuración a través del Monitor de Serial
pinMode(Led, OUTPUT);
}
void loop()
{
ReRe =
analogRead(AnalogPin);
Serial.print("Lectura
Analogica = ");
Serial.println(ReRe);
BrilloLED = map(ReRe,
0, 1023, 0, 255);
analogWrite(LEDpin,
BrilloLED);
delay(500);
}
Programa circuito 2
int sec = 0;
int AnalogPin = 0
int valor = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
valor = analogRead(AnalogPin);
while (valor > 600) {
valor = analogRead(AnalogPin);
}
for (sec=0;sec<6;sec++) {
valor = analogRead(AnalogPin);
if (valor > 178 && valor<
188) {
Serial.write(0);
}
else if (valor > 148 && valor<
158) {
Serial.write(1);
}
else if (valor > 130 &&
valor< 140) {
Serial.write(2);
}
else if (valor > 115 &&
valor< 127) {
Serial.write(3);
}
else if (valor > 99 &&
valor< 109) {
Serial.write(4);
}
else if (valor > 86 && valor<
96) {
Serial.write(5);
}
else if (valor > 68 &&
valor< 78) {
Serial.write(6);
}
else if (valor > 55 &&
valor< 65) {
Serial.write(7);
}
else
if (valor > 45 && valor< 55) {
Serial.write(8);
}
else if (valor > 37 &&
valor< 47) {
Serial.write(9);
}
else if (valor > 30 &&
valor< 40) {
Serial.write(10);
}
else if (valor > 24 &&
valor< 34) {
Serial.write(11);
}
else
if (valor > 19 && valor< 29) {
Serial.write(12);
}
else if (valor > 21 &&
valor< 25) {
Serial.write(13);
}
else if (valor > 17 &&
valor< 20) {
Serial.write(14);
}
else if (valor > 12 &&
valor< 16) {
Serial.write(15);
}
else
if (valor > 9 && valor< 13) {
Serial.write(16);
}
else
if (valor > 6 && valor< 10) {
Serial.write(17);
}
else
if (valor > 5 && valor< 7) {
Serial.write(18);
}
else if (valor > 0 && valor<
4) {
Serial.write(19);
}
delay(500);
}
sec=0;
delay(500);
}
Programa de processing
import
processing.serial.*;
Serial myPort;
int val;
PImage img;
void setup()
{
size(640, 500);
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
}
void draw()
{
if ( myPort.available() > 0) {
val = myPort.read();
}
background(255);
if (val == 0) {
img = loadImage("Img0");
}
else if (val == 1) {
img = loadImage("Img1");
}
else if (val == 2) {
img = loadImage("Img2");
}
else if (val == 3) {
img = loadImage("Img3");
}
else if (val == 4) {
img = loadImage("Img4");
}
else if (val == 5) {
img = loadImage("Img5");
}
else if (val == 6) {
img = loadImage("Img6");
}
else if (val == 7) {
img = loadImage("Img7");
}
else if (val == 8) {
img = loadImage("Img8");
}
else if (val == 9) {
img = loadImage("Img9");
}
else if (val == 10) {
img = loadImage("Img10");
}
else if (val == 11) {
img = loadImage("Img11");
}
else if (val == 12) {
img = loadImage("Img12");
}
else if (val == 13) {
img = loadImage("Img13");
}
else if (val == 14) {
img = loadImage("Img14");
}
else if (val == 15) {
img = loadImage("Img15");
}
else if (val == 16) {
img = loadImage("Img16");
}
else if (val == 17) {
img = loadImage("Img17");
}
else if (val == 18) {
img = loadImage("Img18");
}
else if (val == 19) {
img = loadImage("Img19");
}
rect(50, 50, 100, 100);
}
Evidencias
Conclusión
Lo que yo observe es
que es un sensor demasiado impresiso cuando se conecta de la forma tradicional
con el divisor de voltaje, pero una vez tiene un amplificador operacional puede
ser utilizado para medir pesos, más específicos, aunque más pequeños. Este
sensor puede ser utilizado como una balanza para objetos de peso mayor a 30gr
pero menor a 500gr.
Hola, estoy desarrolando un proyecto con estos sensores pero quisiera saber si puedo pegarlos a un guante y si esto afentaria en el funcionamiento del sensor? Estoy diseñando una interface haptica para mano para medir la fuerza que ejercen los dedos de las manos al momento de coger algún objeto...
ResponderBorrarsi me pudieras ayudar te lo agradeceria mucho. SALUDOS!!!