Pular para o conteúdo principal

Grove - ADC for Load Cell (HX711)

O Grove - ADC for Load Cell (HX711) é um conversor A/D de 24 bits projetado especificamente para a célula de carga. Ele contém um amplificador programável de baixo ruído on-chip com ganho opcional de 32, 64 e 128. O chip HX711 integra uma fonte de alimentação regulada, um oscilador de clock on-chip e outros circuitos periféricos, que apresentam as vantagens de alta integração, resposta rápida e forte imunidade a interferências.

nota

Com o conector Grove e o terminal de parafuso de 4 pinos, torna-se bastante fácil conectar a célula de carga e o microcontrolador, sem necessidade de solda. Você pode construir seu próprio sistema de sensor de peso com Arduino em apenas algumas etapas simples.

Especificações

ItemValor
BateriaExcluída
Tensão de trabalho2.6V--5.5V
Corrente de trabalhoMenor que 1,5A
Precisão de detecção24 bits
Taxa de dados de saída 10SPS ou 80SPS
Ganho opcional32 para o Canal B / 64 e 128 para o Canal A

Aplicações

  • Balanças eletrônicas
  • Balanças com cálculo de preço
  • Balanças de plataforma eletrônicas
  • Balanças digitais
  • Balanças para encomendas postais

Visão geral de hardware

Plataformas suportadas

ArduinoRaspberry Pi
cuidado

As plataformas mencionadas acima como suportadas são uma indicação da compatibilidade de software ou teórica do módulo. Na maioria dos casos, fornecemos apenas biblioteca de software ou exemplos de código para a plataforma Arduino. Não é possível fornecer biblioteca de software / código de demonstração para todas as possíveis plataformas de MCU. Portanto, os usuários precisam escrever sua própria biblioteca de software.

Primeiros passos

Nesta parte, usaremos um Arduino UNO R4 WiFi como controlador, mostraremos como usar um Grove - ADC for Load Cell (HX711) e um Weight Sensor (Load Cell) 0-500g para fazer um módulo de medição de peso.

Preparação de hardware

Passo 1. Preparação de materiais

Arduino UNO R4 WIFiGrove - ADC for Load Cell (HX711)Weight Sensor (Load Cell) 0-500g
nota
  • O sensor de peso gera 0V quando a carga é menor que 150g, ele não mede diretamente a carga. Portanto, recomenda-se usar uma carga local de 200g para evitar o ponto cego de medição. Leia os dados analógicos de um peso de 200g como carga zero (0g) e leia os dados analógicos de um peso de 700g como carga total (500g).
  • O ADC for Load Cell (HX711) usa o canal A por padrão, se você quiser usar outros canais, será necessário soldá-los você mesmo.

E o Grove - ADC for Load Cell (HX711) também é adequado para nossa placa de desenvolvimento XIAO.

Seeed Studio XIAO SAMD21Seeed Studio XIAO RP2040Seeed Studio XIAO nRF52840 (Sense)Seeed Studio XIAO ESP32C3Seeed Studio XIAO ESP32S3 (Sense)

Passo 2. Conexão de hardware

Conecte o Grove Gesture Sensor à porta IIC do Arduino UNO R4 WiFi, conecte o Arduino ao PC por meio de um cabo USB, e a conexão entre o Grove - ADC for Load Cell (HX711) e o Weight Sensor (Load Cell) 0-500g é mostrada abaixo:

Grove - ADC for Load Cell (HX711)Weight Sensor (Load Cell) 0-500
E+Red
E-Black
INA-White
INA+Green/Blue
dica

Usando o Grove Base Shield, você pode conectar diretamente o módulo HX711 ao Arduino UNO R4 WiFi como abaixo.

Preparação de software

A ferramenta de programação recomendada é o Arduino IDE, e você precisa configurar o ambiente Arduino para o XIAO e adicionar o pacote da placa.

dica

Se esta é sua primeira vez usando Arduino, recomendamos fortemente que você consulte Getting Started with Arduino.

Passo 1. Inicie o aplicativo Arduino.

Passo 2. Selecione o modelo da sua placa de desenvolvimento e adicione-o ao Arduino IDE.

  • Se você quiser usar o Seeed Studio XIAO SAMD21 para as rotinas posteriores, consulte este tutorial para concluir a adição.

  • Se você quiser usar o Seeed Studio XIAO RP2040 para as rotinas posteriores, consulte este tutorial para concluir a adição.

  • Se você quiser usar o Seeed Studio XIAO nRF52840 para as rotinas posteriores, consulte este tutorial para concluir a adição.

  • Se você quiser usar o Seeed Studio XIAO ESP32C3 para as rotinas posteriores, consulte este tutorial para concluir a adição.

  • Se você quiser usar o Seeed Studio XIAO ESP32S3 para as rotinas posteriores, consulte este tutorial para concluir a adição.

  • Se você quiser usar o Seeeduino V4.3 para as rotinas posteriores, consulte este tutorial para concluir a adição.

  • Se você quiser usar o Arduino UNO R4 WiFi para as rotinas posteriores, clique em Tools-> Board-> Boards Manager..., digite a palavra‑chave "UNO R4 WiFi" no campo de busca e instale a versão mais recente (ou a versão que você deseja usar).

Visão geral da biblioteca HX711 para Arduino

Função

Antes de começarmos a desenvolver um sketch, vamos analisar as funções disponíveis.

  • void begin(byte dout, byte pd_sck, byte gain ) —— Inicializa a biblioteca com o pino de saída de dados, pino de entrada de clock e fator de ganho. A seleção do canal é feita passando o ganho apropriado, o padrão da biblioteca é "128" (Canal A).

    • Parâmetros de entrada:
      • byte dout: Passado como dout (convertido para byte) fiação do circuito HX711.
      • byte pd_sck: Passado como pd_sck (convertido para byte) fiação do circuito HX711.
      • byte gain = 128:
        • Com um fator de ganho de 64 ou 128, o canal A é selecionado.
        • Com um fator de ganho de 32, o canal B é selecionado.
  • bool is_ready() —— Verifique se o HX711 está pronto. De acordo com o datasheet: quando os dados de saída não estão prontos para leitura, o pino de saída digital DOUT fica em nível alto. A entrada de clock serial PD_SCK deve estar em nível baixo. Quando DOUT vai para nível baixo, isso indica que os dados estão prontos para leitura.

  • void wait_ready(unsigned long delay_ms = 0); —— Aguarda o chip ficar pronto.

  • bool wait_ready_retry(int retries = 3, unsigned long delay_ms = 0) —— Aguarda o chip ficar pronto tentando novamente por um número específico de tentativas.

  • bool wait_ready_timeout(unsigned long timeout = 1000, unsigned long delay_ms = 0) —— Aguarda o chip ficar pronto até atingir o tempo limite.

  • void set_gain(byte gain = 128) —— define o fator de ganho; entra em vigor apenas após uma chamada para read().

    • Parâmetros de entrada:
      • byte gain = 128: O canal A pode ser configurado com ganho 128 ou 64; o canal B tem ganho fixo de 32.
  • long read() —— aguarda o chip ficar pronto e retorna uma leitura

  • long read_average(byte times = 10) —— retorna uma leitura média.

    • Parâmetros de entrada:
      • byte times = 10: times = quantas vezes ler.
  • double get_value(byte times = 1) —— retorna (read_average() - OFFSET), ou seja, o valor atual sem o peso de tara.

    • Parâmetros de entrada:
      • byte times = 1: times = quantas leituras realizar.
  • float get_units(byte times = 1) —— retorna get_value() dividido por SCALE, ou seja, o valor bruto dividido por um valor obtido por meio de calibração.

    • Parâmetros de entrada:
      • byte times = 1: times = quantas leituras realizar.
  • void tare(byte times = 10) —— define o valor de OFFSET para o peso de tara.

    • Parâmetros de entrada:
      • byte times = 10: times = quantas vezes ler o valor de tara.
  • void set_scale(float scale = 1.f) —— define o valor de SCALE; esse valor é usado para converter os dados brutos em dados "legíveis por humanos" (unidades de medida)

  • float get_scale() —— obtém o SCALE atual

  • void set_offset(long offset = 0) —— define OFFSET, o valor que é subtraído da leitura real (peso de tara)

  • long get_offset() —— obtém o OFFSET atual

  • void power_down() —— coloca o chip em modo de desligamento

  • void power_up() —— desperta o chip após o modo de desligamento

Instalação


Como você baixou a biblioteca em formato zip, abra o Arduino IDE, clique em Sketch > Include Library > Add .ZIP Library. Escolha o arquivo zip que você acabou de baixar e, se a biblioteca for instalada corretamente, você verá Library added to your libraries na janela de aviso. Isso significa que a biblioteca foi instalada com sucesso.

Demo de exemplo

Passo 1. Antes da medição com o Grove - ADC para célula de carga (HX711), o PD_SCK deve ser puxado para baixo para deixá‑lo pronto para funcionar e a célula de carga deve ser calibrada. O código de exemplo Grove_ADC_for_Load_Cell_(HX711) é o seguinte:

#include "HX711.h"

// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 3; //Set your I2C pin
const int LOADCELL_SCK_PIN = 2;


HX711 scale;

void setup() {
Serial.begin(9600);
Serial.println("HX711 Demo");

Serial.println("Initializing the scale");

// Initialize library with data output pin, clock input pin and gain factor.
// Channel selection is made by passing the appropriate gain:
// - With a gain factor of 64 or 128, channel A is selected
// - With a gain factor of 32, channel B is selected
// By omitting the gain factor parameter, the library
// default "128" (Channel A) is used here.

scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

Serial.println("Before setting up the scale:");
if (scale.wait_ready_timeout(1000)) {
long reading = scale.read();
Serial.print("HX711 reading: ");
Serial.println(reading);
} else {
Serial.println("HX711 not found.");
} // print a raw reading from the ADC

Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC

Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)

Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
// by the SCALE parameter (not set yet)

scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare(); // reset the scale to 0

Serial.println("After setting up the scale:");

Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC

Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC

Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()

Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale

Serial.println("Readings:");
}

void loop() {
Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 1);

scale.power_down(); // put the ADC in sleep mode
delay(5000);
scale.power_up();
}

Passo 2. Clique no menu suspenso de seleção de placa e, em seguida, clique em "Select other board and port...".

Passo 3. Em seguida, pesquise e selecione "Arduino UNO R4 WiFi".

Passo 4. Clique em "upload" para gravar o firmware no Arduino.

Passo 5. Abra o Monitor Serial da Arduino IDE clicando em Tool-> Serial Monitor. Quando você vir a impressão serial "After setting up the scale:", aguarde alguns segundos e aplique força ao Weight Sensor (Load Cell) 0-500g.

Passo 6. O resultado deve ser semelhante ao mostrado abaixo.

Recurso

[PDF]INA125 datasheet

[PDF]HX711-datacheet

[ZIP]Grove - ADC for load cell (HX711)-Schematic File

Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes formas de suporte para garantir que a sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...