fbpixel
Etiquetas: ,
5
(1)

Existem sensores de força bastante simples de usar e compatíveis com microcontroladores como o Arduino. Eles consistem numa célula de carga e um módulo de conversão. A célula de carga é um extensômetro (ou strain gauge) que mede a força em uma única direção no espaço. Geralmente é acompanhado por um módulo HX711 capaz de amplificar a medição das forças aplicadas à célula de carga.

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Macho/B Macho
  • Módulo HX711
  • Célula de carga

Princípio de funcionamento

O módulo HX711 é composto de um amplificador e um conversor analógico-digital HX711. Ele amplifica o sinal enviado por uma célula de carga. O sensor de força usa uma ponte de Weahstone para converter a força que lhe é aplicada num sinal analógico.

Esquema

O módulo HX711 comunica com o microcontrolador usando dois pinos digitais (SCK e DOUT) e é alimentado por 5V. Ele é ligado à célula de carga por 4 fios, que têm cores padrão nas pontes de Wheastone:

  • Excitation+ (E+) ou VCC VERMELHO
  • Excitation- (E-) ou GND PRETO ou AMARELO
  • Output+ (O+), Signal+ (S+), ou Amplifier+ (A+) BRANCO
  • O-, S-, ou A- VERDE ou AZUL

Código

Para obter um valor de força do sensor, este deve ser calibrado. Para calibrá-lo, é necessário executar o código com duas massas conhecidas diferentes para calcular o ganho e o offset do sensor.

//Libraries
#include <HX711.h>//https://github.com/bogde/HX711

//Parameters
const long LOADCELL_OFFSET = 340884;
const float LOADCELL_DIVIDER = 262.5F;
const int numberOfReadings = 10;
const int doutPin = 2;
const int sckPin = 4;

//Variables
HX711 scale = ;
float weight = 0;
float initWeight = 0;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  scale.begin(doutPin, sckPin);
  scale.set_scale(); //remove scale divider
  scale.tare();      // reset the scale to 0

  //find
  Serial.println("Put a known wait and send command");
  while (Serial.available() == 0) {}
  Serial.print("Compute average on 10...");
  Serial.println(scale.get_units(10), 1); //repeat with two different weight to find DIVIDER and OFFSET
  //WEIGHT= (val-OFFSET)/DIVIDER
  scale.set_scale(LOADCELL_DIVIDER);
  scale.tare();
  //scale.set_offset(LOADCELL_OFFSET);
  delay(200);
  initWeight = scale.get_units(numberOfReadings * 10), 10;
}

void loop() {
  readScale();
}

void readScale() { /* function readScale */
  //// Read button states from keypad
  if (scale.is_ready()) {
    weight = scale.get_units(numberOfReadings), 10;
    Serial.print("weight : ");
    Serial.println(weight);
  } else {
    Serial.println("HX711 not found.");
  }
}


Resultado

Depois de calibrado, o sensor devolve o valor em g ou kg (ou mesmo em N), dependendo da unidade escolhida ao calcular os seus parâmetros. É possível suavizar a medição sobre vários valores colocando o número de leituras desejado na função get_units(numberOfReadings). Isto permite ter uma medição mais estável e precisa da força.

Aplicações

  • Criar uma balança conectada
  • Ativar um mecanismo de acordo com o peso de um objeto

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 1

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?