Sensor de Peso no Arduino - Célula de Carga com conversor HX711

Sensor de Peso com Arduino - Célula de Carga com conversor HX711

As balanças, equipamentos capazes de medir o peso de um objeto, são importantes em diversas atividades, onde é necessário saber a massa de uma substância ou produto. Nesse tutorial vamos aprender como montar um sensor de peso com Arduino, usando uma célula de carga em conjunto com um conversor de sinal AD. 

Sensores de Peso

O primeiro passo para entender como um sensor funciona é investigar qual a propriedade física que ele mede. No caso de uma balança, é a força exercida sobre uma superfície, que nada mais é do que o peso.

Quando um objeto está sobre uma superfície, ele exerce uma força sobre ela que é igual a sua massa multiplicada pelo aceleração da gravidade. 

kit arduino robótica educacional

Célula de Carga

Quando submetido a uma força ou carga, um corpo se deforma momentaneamente. Essa deformação altera as propriedades físicas do material, e se esse material for um condutor, pode alterar sua resistência elétrica. A imagem abaixo mostra um strain gauge, ou extensômetro, que é a resistência elétrica utilizada como sensor. Essa resistência é colada na superfície do corpo que vai ser submetido a carga para que sofra a mesma deformação do corpo. A direção vertical é a mais sensível às forças, então o sensor é posicionado na direção da carga.

 

strain gauge - Resistencia que irá deformar conforme a força ou peso aplicado sobre eles
Strain Gauge - Resistencia que irá deformar conforme a força ou peso aplicado sobre eles

A resistência de um material é proporcional ao seu comprimento e inversamente proporcional a sua área. Por isso, se houver uma força esticando pelas bordas o strain gauge da figura, seu comprimento aumenta, aumentando sua resistência. Se ao invés de esticado, estiver sendo comprimido, então sua resistência diminui.

A célula de carga é montada em uma ponte de Wheatstone, como a figura, onde uma ou mais resistências são substituídas por um extensômetro. Quando a ponte está balanceada, as relações entre as resistências é tal que R1/R2 = R4/R3, e Vo é igual a zero.

ponte de Wheatstone
ponte de Wheatstone

Se uma das resistências for uma célula de carga, digamos R3, quando houver desbalanceamento da ponte, ou seja, se a resistência for alterada por efeito de uma carga, valores de tensão diferentes de zero passam a ser medidos em Vo.

A célula de carga pode ser construída em ponte completa, meia ponte ou um quarto de ponte. Você pode ver exemplos de montagem aqui. Um sensor de 3 terminais consiste de meia ponte, com um divisor de tensão entre uma resistência fixa e um extensômetro.

 

Meia ponte de Wheatstone
Meia ponte de Wheatstone

 

Os terminais desse sensor são:

  • Vcc - Fio branco, de alimentação da ponte
  • Vss - Fio preto, o GND de alimentação da ponte
  • Sinal - Fio vermelho, o Vo de saída
Célula de Carga - Sensor de Peso
Célula de Carga - Principal componente do sensor de peso

As células de cargas são geralmente feitas de aço ou alumínio, dependendo da capacidade ou precisão necessária. É um sensor muito utilizado por apresentar boa precisão, mesmo em ambientes com variações de umidade e temperatura, além de poderem trabalhar com um grande faixa de operação.

Conversores A/D

A natureza dos sinais mecânicos transformados em elétricos através dos transdutores é analógica e contínua no tempo. Entretanto, para permitir que o sinal possa ser tratado e processado por um microcontrolador é necessário fazer uma conversão do sinal analógico para um sinal digital. 

Essa transformação ocorre através de um conversor A/D (Analógico/Digital). Ele transforma um sinal analógico e contínuo no tempo em um sinal amostrado e discreto no tempo, com precisão determinada pela resolução em bits do conversor utilizado. Quanto mais bits, menor é o erro entre o valor analógico e o valor convertido para digital.

Conversor HX711

O módulo AD HX711 é um conversor analógico/digital de 24 bits, associado a um estágio de amplificação, específico para trabalhar com sensor de carga.

Conversor HX711 - Será usado para converter o sinal analógico da Célula de Carga em um Sinal Digital
Conversor HX711 - Será usado para converter o sinal analógico da Célula de Carga em um Sinal Digital

O diferencial de tensão na célula de carga é muito pequeno, assim como são pequenas as variações na medida. Por isso, o sinal precisa ser amplificado.

A saída do módulo usa comunicação serial para enviar a leitura de tensão para o Arduino, que será interpretada como força / peso. 

Mãos à Obra - Montando um Sensor de Peso com Arduino

Componentes Necessários

Montando o Sensor de Peso

As ligações entre a célula de carga, o conversor e o Arduino para montagem do sensor de peso devem ficar como na imagem.

 


Esquema de montagem do Sensor de Peso com Arduino
Esquema de montagem do Sensor de Peso com Arduino

 

Atenção na ordem dos terminais que ligam o conversor HX711 na ponte de Wheatstone (E+/E-/A+/A-) e a ligação dos terminais DT e SCK no Arduino.

Programando o Arduino

Biblioteca HX711.h

A biblioteca HX711.h foi criada por Bogdan Necule, e está disponível na IDE Arduino. Ela permite a interface e leitura de dados do módulo. Para baixar você pode ir em "Ferramentas/Gerenciar Bibliotecas" e procurar por HX711. Na lista de bibliotecas, procure o nome do autor. Também está disponível para download na página do autor no GitHub.

Código de calibração

O código abaixo é uma etapa intermediária para o uso do sensor. Copie e cole na IDE Arduino.

// Código de calibração da célula de carga.
//
// Arduino - HX711
// Pin 10 - SCK
// Pin 11 - DT

#include "HX711.h"

#define CELULA_DT  11
#define CELULA_SCK  10

HX711 escala;

float fator_calib = -10000; // Se esse valor estiver muito distante ao iniciar, ajustar e fazer o upload novamente

void setup() {
  
  Serial.begin(9600);
  Serial.println("Rotina para calibrar a célula.");
  Serial.println("Inicie sem carga.");
  Serial.println("Após iniciarem as leituras, coloque um peso de massa conhecida");
  Serial.println("Para calibrar o fator de ajuste digite + ou -");   

  escala.begin(CELULA_DT, CELULA_SCK);
  escala.set_scale();
  escala.tare(); // Ajusta o zero da escala no valor de leitura

}

void loop() {

  escala.set_scale(fator_calib); // Ajusta a escala para esse fator de calibração

  Serial.print("Leitura: ");
  Serial.print(escala.get_units(10), 2); // Retorna a média de 10 medidas
  Serial.print(" kg");
  Serial.print(" Fator: ");
  Serial.print(fator_calib);
  Serial.println();

  if(Serial.available())
  {
    char tecla = Serial.read();
    if(tecla == '+')
      fator_calib += 10;
    else if(tecla == '-')
      fator_calib -= 10;
  }
}

Após escrever o código, clique em Carregar (Upload) para transferir o programa para o Arduino. Com esse código você vai conseguir encontrar o valor de calibração do sensor, ou offset. Esse offset vai ser utilizado no código principal, para medida de cargas.

Código principal

Abaixo está o código para realizar medidas com a sua célula de carga. Crie um novo sketch e cole na IDE.

// Código de medida com a célula de carga.
//

#include "HX711.h"

#define CELULA_DT  11
#define CELULA_SCK  10

HX711 escala;

float fator_calib = -10000; // Coloque aqui o valor encontrado na calibração

void setup() {
  
  Serial.begin(9600);
  Serial.println("Rotina de medida com a célula de carga.");

  escala.begin(CELULA_DT, CELULA_SCK);
  escala.set_scale(fator_calib); // Ajusta a escala
  escala.tare(); // Ajusta o zero da escala
}

void loop() {

  Serial.print("Leitura: ");
  Serial.print(escala.get_units(10), 2); // Retorna a média de 10 medidas
  Serial.print(" kg");
  Serial.println();

  delay(1000);
  
}

Colocando o Sensor de Pesos para Funcionar

Ao executar o código de calibração, deixe a célula sem carga. Após a mensagem de inicialização, coloque um peso conhecido sobre a célula e faça o ajuste do fator de calibração para que o valor lido coincida com o valor real. Depois de calibrado, anote o valor.

Substitua esse valor no código principal e carregue o código. Agora sua balança funciona devidamente ajustada.

Entendendo a Fundo

Entendendo o Software

O programa imprime os dados obtidos com a biblioteca HX711.h no monitor serial. O primeiro código e o segundo são semelhantes, com o primeiro código realizando medida e calibração. O segundo programa utiliza o fator de calibração encontrado no primeiro.

- Incluindo a biblioteca

A biblioteca do conversor AD é incluída:

#include "HX711.h";

- Definimos algumas constantes e variáveis

Essas constantes são traduzidas pelo compilador. Onde no código aparecer, por exemplo, CELULA_DT, o compilador entenderá como o inteiro 11. Essas constantes são usadas para armazenar os pinos DT e SCK do conversor.

#define CELULA_DT 11
#define CELULA_SCK 10 

- Criação do objeto

Em seguida é realizada a criação do objeto escala. Também criamos uma variável com o valor inicial do fator de calibração, que vai ser alterado na execução.

HX711 escala;

float fator_calib = -10000; // Se esse valor estiver muito distante ao iniciar, ajustar e fazer o upload novamente

- Inicialização da Comunicação e Configuração do HX711

Iniciamos a comunicação serial com Serial.begin(). Em seguida inicializamos o objeto escala com a função begin, informando os pinos de dados e clock. Depois setamos a constante de escala e ajustamos o zero da balança. Note que no código principal, a escala é setada com o fator encontrado no código de calibração e não é mais ajustada na execução.

void setup() {

  Serial.begin(9600);
  Serial.println("Rotina de medida com a célula de carga.");
  
escala.begin(CELULA_DT, CELULA_SCK);
escala.set_scale(); // Ajusta a escala
escala.tare(); // Ajusta o zero da escala }

- Calibração do Sensor de Peso

Em cada loop da rotina principal, a escala é reajustada. Então é realizada a medida e apresentada no monitor serial. A função get_units(10) retorna 10 leituras da célula. Também é apresentado o fator de calibração atual, que será utilizado no código principal.

void loop() {

escala.set_scale(fator_calib); // Ajusta a escala para esse fator de calibração
Serial.print("Leitura: ");
Serial.print(escala.get_units(10), 2); // Retorna a média de 10 medidas
Serial.print(" kg");
Serial.print(" Fator: ");
Serial.print(fator_calib);
Serial.println();

}

- Ajuste do Fator de Calibração

Se a tecla + for digitada, o fator de calibração é acrescido de 10. Se for digitado -, o fator sofre decréscimo de 10. Esses valores de incremento e decremento podem ser ajustados no código se for necessário.

if(Serial.available()) {
char tecla = Serial.read();
if(tecla == '+')
fator_calib += 10;
else if(tecla == '-')
fator_calib -= 10;
}

Considerações Finais

Nesse tutorial aprendemos o que é uma célula de carga e como montar um sensor de peso com Arduino. Esperamos que tenham gostado, deixe seu comentário com duvidas, sugestões ou com a foto ou vídeo de seu projeto!! Compartilhe à vontade.


Como Instalar uma Biblioteca no Arduino IDE

Como Instalar uma Biblioteca no Arduino IDE

Muitas vezes a interligação de alguns módulos com o Arduino exige a configuração de recursos da placa, como pinagem e parâmetros de comunicação, além da necessidade de funções específicas para uso do módulo. Por isso, é bem comum que algumas bibliotecas sejam criadas para realizar essas tarefas de forma simplificada, facilitando a vida de quem precisa apenas que os módulos funcionem. Neste tutorial vamos aprender como instalar uma biblioteca no Arduino, diretamente pelo gerenciador de bibliotecas ou baixando e instalando.

Caso queira ler mais sobre Arduino, acesse nosso tutorial O que é Arduino e como funciona?

O que é uma Biblioteca

Uma biblioteca é um conjunto de rotinas ou programas, criados para executar uma tarefa específica dentro de um projeto. As bibliotecas permitem que soluções já encontradas previamente para algum problema sejam reutilizadas em novos programas. Essa estratégia de reaproveitar blocos reutilizáveis é chamada de modularização.

Em projetos com Arduino, uma biblioteca é uma coleção de programas para simplificar a configuração de recursos complexos de hardware, ou simplificar a aplicação de técnicas de engenharia e programação em determinadas funções. Sem o uso de bibliotecas, o projetista vai precisar de conhecimentos sólidos de eletrônica e programação para desenvolver projetos simples, como acionar um motor ou utilizar um display de LCD, além de gastar tempo adicional.

De forma resumida, bibliotecas simplificam a criação de novos projetos e poupam bastante tempo de pesquisa e implementação.

Caso ainda não tenha a Arduino IDE em seu computador, acesse nosso tutorial Como Instalar e Configurar o Arduino IDE.

kit arduino robótica educacional

Instalando uma Biblioteca via Gerenciador de Bibliotecas - Arduino IDE 

Quando se vai começar um projeto, ou quando se vai replicar um projeto que viu na internet - como os que você encontra aqui no Portal Vida de Silício - é comum que alguma biblioteca seja necessária. Se você souber o nome da biblioteca, e melhor, se souber também o autor, pode pesquisar por ela no Arduino IDE, em Ferramentas/Gerenciar Bibliotecas.

 

Gerenciar Bibliotecas no Arduino IDE
Gerenciar Bibliotecas no Arduino IDE

 

Depois de encontrar a biblioteca, é só clicar em instalar.

 

Usando a Ferramenta Gerenciar Bibliotecas no Arduino IDE
Usando a Ferramenta Gerenciar Bibliotecas no Arduino IDE

 

O Arduino IDE vai instalar automaticamente, e na lista a biblioteca aparecerá a sinalização INSTALLED, indicando que está pronta para ser utilizada.

Instalando uma Biblioteca de Outras Fontes - Arduino IDE 

Em algumas situações, a biblioteca necessária não estará disponível na lista do IDE. Será necessário fazer o download da biblioteca e instalar, como veremos.

O primeiro passo é fazer o download. Geralmente a biblioteca está disponível na página do autor no GitHub, ou em outro repositório onde autores deixam suas contribuições para a comunidade.

No nosso exemplo, vamos baixar a biblioteca Ultrasonic.h, utilizada para fazer o controle de um sensor ultrassônico HC-SR04. A biblioteca está disponível aqui, em formato .zip.

Depois de fazer o download, você pode ir em Sketch/Incluir Biblioteca/Adicionar biblioteca .ZIP.

 

Adicionando uma biblioteca .zip no Arduino IDE
Adicionando uma biblioteca .zip no Arduino IDE

 

Escolha o local onde você salvou o arquivo .zip da biblioteca, clique no arquivo e no botão Abrir.

 

Selecionando o arquivo da biblioteca
Selecionando o arquivo da biblioteca

 

Você vai receber a mensagem de que a biblioteca está instalada e pode conferir em Sketch/Incluir Biblioteca.

 

Verificando bibliotecas instaladas no Arduino IDE
Verificando bibliotecas instaladas no Arduino IDE

 

Utilizando a Biblioteca no seu Projeto

Toda biblioteca no Arduino é adicionada via código pela diretiva de compilação include. Uma diretiva de compilação é uma instrução do programa que dá instruções ao compilador, que é software que vai traduzir o seu código em uma linguagem que o Arduino entende. Você reconhece rapidamente as diretivas no código porque elas sempre aparecem acompanhadas do símbolo #.

A diretiva include, especificamente, informa ao compilador para adicionar as funções da biblioteca referida no programa que vai para a memória do Arduino.

As diretivas mais comuns, como include e define costumam aparecer nas primeiras linhas de código. No caso da biblioteca Ultrasonic.h, você veria algo como:

#include <Ultrasonic.h>

Consultando as Informações Sobre a Biblioteca

Quando instalamos uma biblioteca, nem sempre sabemos como utilizá-la. Muitas vezes ela foi incluída num código que vimos na internet e queremos saber mais sobre as funções que ela traz. Uma forma de verificar isso é encontrar a biblioteca em Ferramentas/Gerenciar Bibliotecas e clicar no link More Info. Esse link geralmente vai levar até a página do GitHub onde o projeto é mantido. Lá você vai encontrar arquivos de texto listando as funções disponíveis e detalhando o funcionamento.

 

Consultando as Informações Sobre a Biblioteca
Consultando as Informações Sobre a Biblioteca

 

Considerações Finais

Esperamos que esse tutorial ajude a compreender melhor o que são bibliotecas e como fazer a sua instalação e uso nos seus projetos de Arduino.

Para dúvidas e sugestões, pode deixar nos comentários. Um abraço e até a próxima!


Arduino IDE - Como Instalar e Configurar

Como Instalar e Configurar o Arduino IDE

Nesse tutorial vamos aprender como instalar e configurar corretamente o ambiente de desenvolvimento do Arduino, o Arduino IDE. É através da Arduino IDE que iremos programar nossa placa Arduino. Caso queira ler mais sobre Arduino, acesse nosso tutorial O que é Arduino e como funciona?

Este tutorial está disponível para os sistemas operacionais Windows, Linux e Mac OS.

A execução deste tutorial se divide em instalação e configuração. Você deve pular direto para a sessão de instalação específica do seu sistema operacional. Depois de instalado, será feita a configuração para a placa específica em uso e para a comunicação.

Além de um computador, você vai precisar de uma placa Arduino e de um cabo USB.

kit arduino robótica educacional

Instalando o Arduino IDE no Windows

Download Arduino IDE no Windows

Você pode fazer o download na página oficial do Arduino. Escolha a opção para Windows 7 ou mais novo, como na figura abaixo.

Baixando a Arduino IDE para Windows no site da Arduino
Baixando a Arduino IDE para Windows no site da Arduino

Você pode escolher fazer uma doação para o projeto Arduino, ou apenas fazer o download do software.

Clique em just download para baixar a Arduino IDE
Clique em just download para baixar a Arduino IDE

O seu browser deve abrir uma janela para escolher onde salvar o arquivo, ou salvar em uma pasta padrão. Em qualquer um dos casos, após o download, é provável que o browser mantenha o arquivo em uma aba para ser executado.

Clique no arquivo depois de concluído o download
Clique no arquivo depois de concluído o download

Você pode apenas clicar no arquivo depois de concluído o download. Se não for o seu caso, abra a pasta onde o arquivo foi baixado e clique duas vezes nele.

Instalação Arduino IDE no Windows

Na etapa de instalação, você vai ser perguntado sobre algumas opções. Vamos passo a passo.

Inicialmente, aceite o termo da licença do software, clicando em I Agree.

Arduino IDE Setup - Passo 1
Arduino IDE Setup - Passo 1

Depois selecione as opções de instalação. Se você não é um usuário avançado, marque todas as opções. Entre as opções, está a instalação do driver de comunicação com a placa Arduino, que é muito importante, além da criação de atalhos.

Arduino IDE Setup - Passo 2
Arduino IDE Setup - Passo 2

Em seguida, você será perguntado sobre o local de instalação. Deixe como está, se você tiver em dúvida. Clique em Install.

Se tudo correr bem, o programa será instalado e pronto para configurar e utilizar.

Instalando o driver CH341 no Windows

Se o seu Arduino é uma placa clone, a etapa de instalação precisa de um passo adicional. Você vai precisar instalar um driver de comunicação serial. Você pode baixar ele aqui.

Depois do download, abra o instalador. Clique em Uninstall e depois em Install.

Instalando o driver CH341
Instalando o driver CH341

Agora seu computador está pronto para ser conectado ao seu Arduino.

Instalando a Arduino IDE no Linux

Você pode fazer o download na página oficial. Escolha a arquitetura correta do seu sistema - é importante que escolha corretamente.

Baixando a Arduino IDE para Linux no site da Arduino
Baixando a Arduino IDE para Linux no site da Arduino

Em seguida, você será perguntado se deseja fazer uma doação para o projeto Arduino, ou só fazer o download. Para fazer apenas o download clique em Just Download. Assim, o arquivo será baixado no seu computador.

Após o download, extraia o arquivo - que está compactado - para a pasta onde ele vai ser usado para a instalação. Abra a pasta e procure o arquivo install.sh. Esse é o script de instalação. Clique com o botão direito e escolha Run in Terminal. Se essa opção não aparecer, você vai precisar abrir uma janela de Terminal e ir até a pasta de instalação - onde você descompactou o arquivo.

Digite:

./install.sh

Aguarde o processo de instalação e então o Arduino IDE está pronto para uso.

Instalando a Arduino IDE no Mac OS

Faça o download na página oficial.

Baixando a Arduino IDE para Mac OS no site da Arduino
Baixando a Arduino IDE para Mac OS no site da Arduino

O arquivo está compactado. Se você usar Safari, ele deve descompactar automaticamente.

Instalando a Arduino IDE no MAC OS
Instalando a Arduino IDE no MAC OS

Copie o pacote para a pasta de Aplicativos (ou a pasta que você preferir). Seu Arduino IDE está pronto para ser configurado.

Copie o pacote da Arduino IDE para a pasta de Aplicativos
Copie o pacote da Arduino IDE para a pasta de Aplicativos

Configurando o Arduino IDE

Agora que o Arduino IDE está instalado, conecte sua placa Arduino no cabo USB e no computador. Em seguida, abra o aplicativo.

Com o aplicativo aberto, na parte superior você vai ver um menu e alguns botões de ação mais comuns. No meio da tela existe a área do editor de texto, onde o código será mostrado. Abaixo da área de código, um terminal que apresenta informações de compilação e upload do programa para a placa.

No rodapé do programa informações sobre a posição do cursor no editor, além da porta serial escolhida para comunicar com o seu Arduino.

Conhecendo a Arduino IDE
Conhecendo a Arduino IDE

Feito isso, o próximo passo é configurar qual é a placa utilizada. O compilador precisa dessa informação para realizar configurações durante o upload do programa. No menu, clique em Ferramentas/Placa, e escolha a placa compatível com o modelo que você está utilizando.

Selecionando a placa na Arduino IDE
Selecionando a placa na Arduino IDE

Em seguida, vá em Ferramentas/Porta e escolha a porta serial que aponta a presença do seu Arduino. Isso normalmente é feito automaticamente pelo software, e provavelmente, a porta correta já estará selecionada.

Selecionando porta de comunicação na Arduino IDE
Selecionando porta de comunicação na Arduino IDE

Caso o seu Arduino é uma placa clone ou similar você vai precisar descobrir em que porta serial sua placa está conectada. No Windows, digite Win+R e clique em Gerenciador de Dispositivos. Procure em Portas qual onde a placa está conectada.

Carregando um Programa de Teste na placa Arduino

Próximo passo é testarmos o funcionamento da placa Arduino em conjunto com a Arduino IDE. Para isso faremos o carregamento, ou upload, de um código exemplo para a placa.

Desta forma, no menu da Arduino IDE, vá em Arquivo/Exemplos/Basics e escolha o programa Blink. Esse exemplo faz piscar o LED interno da placa Arduino.

selecionando programa exemplo Blink na Arduino IDE
Selecionando exemplo Blink na Arduino IDE

 

 

O código será aberto em uma nova janela. Confira se a placa e a porta serial estão corretamente selecionados. Depois de tudo configurado, clique na seta abaixo do menu ou vá em Sketch/Carregar (você também pode usar a tecla de atalho Ctrl+U).

carregar programa na placa Arduino da Arduino IDE
carregar programa na placa Arduino

Se tudo estiver correto, você verá a informação no terminal da IDE, e a mensagem “Carregado” na barra de status acima do terminal.

mensagem “Carregado” na barra de status acima do terminal
mensagem “Carregado” na barra de status acima do terminal

Depois de carregado o programa na placa Arduino, você deve ver o LED da placa Arduino piscando.

 

Se deu tudo certo até aqui, parabéns! Você configurou a sua placa corretamente e agora está tudo certo para você utilizá-la.

Erro de Comunicação no Linux

Se estiver usando Linux, pode acontecer de você receber a mensagem Error opening serial port. Se isso acontecer, você vai precisar ajustar a permissão da porta serial.

Abra o Terminal e digite:

ls -l /dev/ttyACM*

Você receberá uma resposta como: crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0

O 0 (zero) após ACM pode ser outro número, ou podem haver várias saídas. A informação que precisamos é dialout.

Digite no Terminal:

sudo usermod -a -G dialout <username>

Onde <username> é o seu nome de usuário.

Em seguida, você precisará fazer logout e login novamente para que a ação tenha efeito.

Feito isso, você deve conseguir fazer o upload do programa para a placa Arduino.

Considerações Finais

Para aprender e praticar fique por dentro dos tutoriais do portal Vida de Silício. Existem vários projetos muito bem explicados para você botar as mãos na massa.

Caso tenha alguma dúvida, deixe nos comentários. Críticas e sugestões também são muito bem vindas.

Até o próximo!


Privacy Preference Center