Sensor de presión

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.

1 comentario:

  1. 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...
    si me pudieras ayudar te lo agradeceria mucho. SALUDOS!!!

    ResponderBorrar