lunes, 24 de mayo de 2021

ARDUINO - SENSORES - BMP180- XFW-HX711.

ARDUINO - SENSORES

BMP180
XFW-HX711


El otro día me llego dos módulos que había pedido, el BMP180 (un viejo conocido con el cual había realizado 3 proyectos, y el XFW-HX711, un sensor  de peso.
Quería añadir los dos módulos al ESP32, pero quería antes probarlos en un arduino nano.

En primer lugar he realizado el montaje del sensor de presión, que muestra los datos en un OLED y en el terminal serie.
Para este montaje he utilizado el antiguo montaje :
Barómetro - Termómetro. GY-68 -  BMP-180. Parte 2 (librería propia). ArduBer , pero adaptándolo al OLED.
Como se puede observar lo he alimentado con 3V3 , para probar si funcionaría con el ESP32, aunque funciona también a 5V.
Lo bueno de este proyecto es que utilizan los dos módulos el protocolo I2C, lo que facilita mucho el diseño.




PROGRAMA


Como ya tenía montado el circuito de sensor de presión, he añadido el sensor de peso.
Como tutorial he seguido los pasos de:https://naylampmechatronics.com/blog/25_tutorial-trasmisor-de-celda-de-carga-hx711-balanza-digital.html
He añadido una línea donde figura el peso en gramos.
Empezamos explicando un poco el funcionamiento del módulo de pesaje.

Cuando un conductor se estira, su resistencia aumenta. Cuando está comprimido, su resistencia disminuye.
A estas piezas de metal la llamaremos Celdas De Carga.
Esta resistencia se mide con un convertidor A/D de 24bits , HX711, que transmite los dados mediante protocolo serie propio al arduino.

 



Una vez que tenemos montado el circuito, debemos calibrarlo.
El método es utilizar un objeto que sepamos su peso, yo he utilizado uno que antes había pesado en una báscula.
En mi caso había utilizado dos POWER_BANK que en total pesaban 133 grs.
Lo ideal es utilizar un peso que se ajuste al máximo de peso de la celda de carga, no es mi caso.
Ahora con el siguiente programa mido el valor que nos devuelve el módulo.

#include "HX711.h"
const int DOUT=2;
const int CLK=3;

HX711 balanza;
void setup() {
  Serial.begin(9600);
  balanza.begin(DOUT, CLK);
  Serial.print("Lectura del valor del ADC:t");
  Serial.println(balanza.read());
  Serial.println("No ponga ningún objeto sobre la balanza");
  Serial.println("Destarando...");
  balanza.set_scale(); //La escala por defecto es 1
  balanza.tare(20);  //El peso actual es considerado Tara.
  Serial.println("Coloque un peso conocido:");
}

void loop() {

  Serial.print("Valor de lectura: t");
  Serial.println(balanza.get_value(10),0);
  delay(100);
}


Con un peso de 133 grs nos proporciona una medida de 261425 .
Con el dato obtenido  hacemos un cálculo:
    261425:0.133 grs =1965601
El valor obtenido de la operación lo colocamos en:

    #define AJUSTE 1965601
    balanza.set_scale(AJUSTE);

Con esto ya podemos medir el peso de un objeto.
Debemos saber que cuando se reinicia el programa toma un primer peso que coloca como tara, para luego restarlo del peso total.



Peso de una POWER-BANK de 65grs, que corresponde al peso real.




Detalle de la celda de carga.



Peso de dos monedas de 50 CENT, que corresponde al valor real.
El circuito funciona muy bien, con una precisión alta.

Espero que les guste este proyecto.

PROGRAMA Y LIBRERÍA

Saludos.
Juan Galaz

Bibliografía:
https://naylampmechatronics.com/blog/25_tutorial-trasmisor-de-celda-de-carga-hx711-balanza-digital.html
28/02/2016 - Arduino - Predicción del tiempo. GY-68 - BMP-180.  Predicción
21/02/2016 - Arduino power low - Termómetro máximos y mínimos con gráfica - DS18B20 LCD Nokia PCD8544. Tempe
09/02/2016 - Arduino -Barómetro - Termómetro. GY-68 -  BMP-180. Parte 2 (librería propia). ArduBer
03/02/2016 - Arduino -Barómetro - Termómetro. GY-68 -  BMP-180. Parte 1.  ArduBar



No hay comentarios:

Publicar un comentario