A célula de carga é o produto base para o funcionamento da nossa Balança Arduino, existem diversos modelos deste equipamento que se diferenciam principalmente pelo seu modo de desenvolvimento e seu pelo limite.
De modo geral, o Sensor de Peso como também é chamado possui um sinal de comunicação muito baixo, o que torna necessária a utilização de um amplificador como o HX711, um módulo conversor de 24 bits.
Podendo ser aplicado nos mais diversificados casos de automação ou desenvolvimento de projetos industriais, a balança Arduino com célula de carga é um produto complexo, porém de fácil compreensão quando utilizado de maneira correta.
Vídeo do Projeto
Célula de Carga 5kg / Sensor de Peso
Ela é um transdutor resistivo capaz de converter a força aplicada sobre si mesma em um sinal elétrico, um trabalho realizado pela ponte de Wheatstone localizada junto ao seu corpo e que verifica a deformação do metal ao qual está fixada.
Existem diversos modelos disponíveis no momento em circulação no mercado, cada quais com suas diferentes especificações e finalidades, para o nosso projeto iremos utilizar um modelo de célula de carga de 5kg, valor máximo possível de verificação.
Como podemos observar, este equipamento possui em seu corpo diversos furos com rosca que possibilitam a fixação de parafusos e facilitam ainda mais a sua instalação em diversos projetos assim como na base MDF que desenvolvemos para o desenvolvimento deste projeto.
Módulo Conversor Amplificador HX711
Como já citado anteriormente, o sinal gerado pela ponte de Wheatstone é bastante baixo e faz-se necessária a utilização de um amplificador capaz de realizar a leitura e a conversão dos dados obtidos. Neste contexto a melhor opção para este projeto é o Módulo HX711.
Trabalhando como interface entre a célula de carga e o Arduino, o Módulo Conversor permite fazer uma leitura de peso facilmente, convertendo também leituras analógicas em digitais com sua função de conversão analógico/digital de 24 bits. Abaixo podemos observar sua estrutura física, lembrando eu os pinos precisam ser soldados para sua utilização.
Com um esquema de ligação simplificado quanto alimentação e leitura, o Amplificador HX711 possui apenas quatro terminais, dos quais dois alimentam o módulo e dois realizam a transmissão dos dados.
Produtos Utilizados no Teste
– Display 16×2 com adaptador I2C;
– Módulo Conversor Amplificador HX711;
– Base em MDF para Balança + Célula de Carga 0 a 5kg;
– Jumpers.
Projeto Balança Arduino com Célula de Carga
O projeto da balança possui algumas propriedades isoladas que devem ser levadas em consideração, principalmente quanto a sua instalação e os métodos de pesagem. Lembrando que a má instalação do equipamento pode ocasionar em erro na leitura.
A célula de peso deve ser instalada de maneira que seu centro fique livre, o ideal é a utilização de espaçadores, proporcionando uma certa distância do sensor entre a base de instalação e a base de coleta de dados.
É importante lembrar que no corpo do produto existe um indicador de direção de carga que mostra a direção normal de deformação do sensor de peso, ou seja, a seta que existe em uma de suas extremidades precisa estar indicando para baixo.
O desenvolvimento do projeto é extremamente simples, porém a sua parte mecânica é fundamental para o total desempenho do projeto, através do exclusivo produto da Usinainfo temos uma balança extremamente simples que acompanha todos os equipamentos mecânicos necessários.
Esquema de Ligação com Sensor de Peso
O esquema de ligação da balança Arduino é bastante simples, porém constituído fundamentalmente de duas fases, uma delas envolvendo a ligação da célula de carga no módulo HX711 e outra entre o Módulo HX711 para o Arduino.
Um fator que vale ressalva neste momento é quanto a ligação da célula, uma vez que a mesma não possui conectores jumpers, recomenda-se a soldagem dos fios no Módulo HX711.
O esquema de ligação da célula de peso para o módulo ficaria assim:
Célula de Carga Módulo HX711
Fio Vermelho -> Pino E+
Fio Preto -> Pino E-
Fio Verde -> Pino A-
Fio Branco -> Pino A+
Já o esquema de ligação do módulo HX711 para o Arduino ficaria assim:
Módulo HX711 Arduino
Pino GND -> Pino GND
Pino DT -> Pino A1
Pino SCK -> Pino A0
Pino VCC -> Pino 5V
Teoricamente o esquema de ligação é elaborado como nas demonstrações anteriores, para melhor observação da ligação e seus respectivos locais de fixação. Segue abaixo o desenho do esquema de ligação completo entre todos os itens:
Como podemos observar, o esquema de ligação dos equipamentos é bastante simples, precisamos ter cuidado apenas com a conexão dos fios da célula de carga no módulo HX711, que deve ser exatamente igual a imagem acima.
Código de Calibração
A primeira etapa que precisamos concluir para dar continuidade à nossa balança é a calibração, ou seja, encontrar o valor da escala que iremos utilizar para realizar as devidas pesagens. A leitura do sensor em um primeiro momento será fora de padrão algum de pesagem, a leitura representa a deformação da célula de peso.
Vale lembrar que cada balança e cada célula são diferentes uma das outras e seus padrões de pesagem mudam de acordo com seus métodos de instalação e utilização, sendo que a principal diferença entre os modelos de células está no limite de pesagem.
Com funções bastante específicas, o código utiliza-se de uma exclusiva biblioteca para evitar códigos base extensos, fator que diminui a sua complexidade, antes de dar início às gravações é necessária a sua instalação.
Biblioteca HX711: Download Aqui!
Para darmos início ao processo de calibração precisamos ter um peso conhecido como base, ou seja, precisamos saber o peso real do objeto que iremos utilizar. O peso do objeto pode ser tanto próximo ao máximo permitido, neste caso 5kg como um peso menor, para o artigo utilizamos um objeto de 189g.
Com o objeto já escolhido e pesado, agora só nos resta carregarmos o código e iniciarmos a verificação, segue o código para calibração da balança:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include "HX711.h" #define DT A1 #define SCK A0 HX711 escala; // Relaciona a variável escala void setup() { escala.begin (DT, SCK); Serial.begin(9600); Serial.print("Leitura da Tara: "); Serial.println(escala.read()); // Aguada o termino de verificação do peso Serial.println("Aguarde!"); Serial.println("Iniciando ..."); escala.set_scale(); // Utiliza uma escala padrão de verificação escala.tare(20); // Fixa o peso como tara Serial.println("Insira o item para Pesar"); } void loop() { Serial.print("Valor da Leitura: "); Serial.println(escala.get_value(10),0); // Retorna peso descontada a tara delay(100); } |
Após carregarmos o código, ele irá verificar automaticamente a leitura da tara, inicializando a leitura, depois de finalizada esta etapa basta posicionar o peso que será utilizado para a calibração.
A leitura dos dados obtidos através da célula de peso terá um sequencial de números parcialmente estranho em um primeiro instante, o valor é obtido através da deformação do alumínio ao qual o sensor é constituído, porém são estes os valores que irão nos auxiliar para desenvolvermos a balança.
Inicialmente sem carga, os valores obtidos serão aleatórios, porém extremamente baixos. Veremos em breve os valores utilizados como base para os cálculos são significativamente importantes.
Após inserirmos na balança o objeto utilizado como elemento de calibração obteremos valores semelhantes ao descritos abaixo. Todos são de uma maneira linear variando entre 75000 e 75300, porém não extrapolando esta margem, veja:
Com os valores obtidos realizamos uma análise prévia dos mesmos e de forma empírica escolhemos oito dos valores mais propícios a uma média abrangente, preferencialmente valores consecutivos como os elencados abaixo:
Após somarmos os valores escolhidos encontraremos um total de 601.671, iremos dividir este valor pelo total de números somados, ou seja, obteremos a média que será de 75208,875. Caso ainda tenha ficado dúvidas observe:
No nosso caso escolhemos oito valores para somar, então dividiremos a soma destes por 8. Com este valor já calculado iremos diretamente para o calculo da escala, valor que será utilizado como base para a determinação de todos os valores que iremos posicionar sobre a balança. Para isto utilizaremos a seguinte fórmula:
O valor do peso utilizado para calibragem deve ser na mesma unidade à qual iremos desenvolver as pesagens da balança, ou seja, 0,189kg ou 180g. Como pretendemos observar nossos pesos em quilogramas, a formula ficará assim:
Agora com este cálculo pronto, iremos acrescentá-lo ao código para finalmente termos a balança finalizada com a célula de peso e o Arduino, um projeto parcialmente difícil, mas extremamente prazeroso.
Esquema de Ligação da Balança Arduino com Display
De maneira geral, o método de ligação será o mesmo, o que irá alterar é a inclusão de um display I2C ao projeto, optando novamente pelo I2C devido a sua facilidade de conexão, já que necessita de apenas quatro pinos de ligação.
Display Arduino
Pino SDA -> Pino A4
Pino SCL -> Pino A5
Pino VCC -> Pino VCC
Pino GND -> Pino GND
Como o Arduino não possui duas saídas de 5V para alimentar os equipamentos, desenvolvemos um exclusivo Jumper Y que possibilita através de um fio macho a saída de duas fêmeas. Assim, excluímos a necessidade de protoboards e de ficarmos adicionando variáveis de declaração HIGH para pinos digitais.
O projeto com todos os produtos incluídos irá ficar da seguinte maneira:
Este recurso irá nos possibilitar utilizar a balança sem a necessidade de um computador por perto para a exibição dos valores obtidos, elemento que faltava para completar a Balança Arduino.
Código para Pesagem em KG com a Balança Arduino
Ao término de todos os outros passos citados anteriores, chegou a hora de finalmente construirmos a Balança Arduino com Célula de Carga definitiva. Após incluirmos o display com adaptador I2C ao projeto, chegou a hora de carregarmos o código completo.
Além da biblioteca HX711, este novo código necessita também da utilização de uma biblioteca para a utilização do display I2C, para isto é necessário incluir ao código a biblioteca LiquidCrystal_I2C.h.
Biblioteca LiquidCrystal_I2C.h: Download Aqui!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include "HX711.h" #include "LiquidCrystal_I2C.h"; #define DT A1 #define SCK A0 HX711 escala; LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { escala.begin (DT, SCK); lcd.init(); lcd.backlight(); Serial.begin(9600); Serial.print("Leitura do Valor ADC: "); Serial.println(escala.read()); // Aguada até o dispositivo estar pronto Serial.println("Nao coloque nada na balanca!"); Serial.println("Iniciando..."); escala.set_scale(397930.55); // Substituir o valor encontrado para escala escala.tare(20); // O peso é chamado de Tare. Serial.println("Insira o item para Pesar"); } void loop() { lcd.setCursor(4, 0); lcd.print("USINAINFO"); lcd.setCursor(0, 1); lcd.print("Peso: "); lcd.print(escala.get_units(20), 3); lcd.println(" kg "); delay(1000); } |
Como vimos, o código é extremamente simples e resumido, sem muita dificuldade e variáveis. A inclusão do display alterou em pouco a programação e trouxe grande flexibilidade ao projeto, possibilitando a visualização dos dados sem a necessidade de estar conectado ao computador.
A única variável que precisamos destacar neste código é a que segue:
1 |
escala.set_scale(Escala); // Substituir o valor encontrado para escala |
Esse comando deve ser trocado pela escala encontrada em cada projeto, de acordo com o sensor e as devidos equipamentos utilizados. Vale lembrar que os valores inteiros devem ser separados dos decimais por um ponto (.) e não por uma vírgula (,) como comumente utilizamos no cotidiano.
Conclusão Balança Arduino
O projeto é facilmente desenvolvido com o auxilio dos equipamentos corretos, a facilidade de desenvolvê-lo através da base MDF desenvolvida pela Usinainfo é incontestável, porém é possível montá-lo em qualquer superfície que suporte o espaço de deformação do metal em cada projeto, através dos referidos espaçadores.
Para desenvolvermos a exibição dos valores obtidos pela balança com célula de peso utilizamos um display LCD 16×2, porém é possível substituí-lo por um display 7 segmentos, por exemplo. Além disto, outros modelos de célula de carga com diferentes especificações podem ser utilizados, basta seguir os devidos passos de calibração.
As possibilidades de uso deste produto são extremamente grandes, vai de adaptá-lo à sua necessidade em projetos domésticos ou universitários, usando e abusando de suas funcionalidades. Ao desenvolver o seu projeto não deixe de comentar as suas experiências, deixar seu comentário.
Boa tarde, são otimos os seus projetos!! estou aprendendo muito. Uma duvida, estou desenvolvendo uma balança , nela utilizarei 4 celulas de carga iguais a esta que voce utilizou, minha duvida é : como faço as ligaçoes das quatro celulas, as celulas possuem 4 fios, vermelho, preto , branco e verde.Sei que terei que fazer a ponte de wheatstone. Vou usar o hx711.
Só preciso saber qual fio ligo com qual para fazer a ponte. Muito obrigado.
Bom Dia Carlos! Muito obrigado, fico feliz em saber que estão ajudando, porém segundo o fabricante esta célula de carga em questão já possui uma ponte de wheatstone entre dois strain gauge internamente, ou seja, ao invés de 4 é possível utilizar apenas duas células de carga através do Módulo Amplificador HX711. A ligação destes dois sensores por sua vez, podem ser executadas utilizando o mesmo princípio do seguinte artigo: https://www.usinainfo.com.br/blog/celula-de-carga-arduino-com-hx711-na-variacao-de-um-strain-gauge/
Gostei muito do projeto, estou desenvolvendo um projeto liga desliga quando atinge peso de 500 gr. E possível fazer sem o arduíno?
Boa tarde!
Até é possível porém será necessário bastante estudo e um sensor preciso de tensão, sendo bastante trabalhoso até encontrar a configuração.
Boa tarde, preciso de uma ajuda urgente, fiz todo o processo está batendo tudo certo porem estou utilizando um display 16×2 big, e não consigo faze-lo funcionar, por favor me ajude……..
Boa Tarde Iuri! Infelizmente não tenho disponível nenhum modelo de Display 16×2 Big e nem trabalhei com displays deste modelo, porém acredito que pode ser necessário algum tipo de alteração no código para o seu funcionamento, inclusive, pode ser necessário o uso de uma outra biblioteca.
Matheus boa noite… e como é feita a Tara?
Desculpe não fui claro. Balanças possuem um botão de tara, esse projeto a tara é feita ao ligar, correto?
Boa Tarde Marco! Correto, neste projeto a tara é calculada automaticamente quando ligado o Arduino.
Boa noite!
Excelente trabalho.
Porém, acabo de instalar tudo como você ensinou, mas entre minhas medidas aparecem muitos ZEROS.
As medidas zeram ao invés de ficarem num valor constante.
Estou usando ESP32 ao invés do Arduino.
Consegue me ajudar?
Bom Dia Leticia! Como o Módulo HX711 trabalha com 5V e o ESP32 com apenas 3.3V, é necessária a inclusão de um conversor de nível lógico junto ao projeto. O modelo mais utilizado é o que segue: https://www.usinainfo.com.br/conversores-de-sinal/conversor-de-nivel-logico-33-5v-bidirecional-cnl35-3741.html
Caso prefira, também é possível utilizar divisores resistivos de 1k e 2k, por exemplo.
Boa tarde, Matheus.
Reparei que a balança imprime a medida de peso a cada um segundo, aproximadamente. Gostaria que este tempo entre uma leitura e outra fosse o menor possível. Já retirei o delay do loop, porém o problema permanece.
como posso proceder?
Boa Tarde Guilherme! Ao invés de remover o dalay, tente diminuir o tempo para por exemplo: “delay(100);”, menos que isto infelizmente acredito não ser viável uma vez que o peso obtido precisa de uma fração de tempo para a conversão também.
Bom dia Matheus
È possível contatá-lo por telefone ? ou email ?
Att
Luiz Antonio
Boa Tarde! São opções viáveis, caso queira enviar via SMS seria necessário a inclusão de um GSM, ou se desejar enviar por e-mail, adicionar um Shield W5100, por exemplo, ou se ainda preferir pode fazer a captação de dados diretamente em um arquivo Excel assim como no seguinte projeto: https://www.usinainfo.com.br/blog/balanca-com-arduino-leonardo-imprimindo-valores-direto-no-excel/
boa tarde. tudo bom? qual simulador vocês usou para desenhar os esquemáticos elétricos
Boa Tarde! Devido a falta de muitos componentes nos dispositivos prontos, normalmente utilizo a imagem dos produtos ou vetores e os monto através de um software de edição de imagem.
Matheus Bom dia,
vejo que mesmo passando o tempo você responde. Parabéns pela dedicação e pelos projetos.
Gostaria de saber como colocar um modulo rele para fechar um fluxo. explico
colocaria num projeto com a balança uma envasadora de liquido, quando atingir determinado peso
pré programado o arduino enviaria um sinal ao modulo relê que fecharia uma valvula solenoide.
existe esta possibilidade?
Boa Tarde Cristiano! Muito obrigado pelas palavras, infelizmente não consigo estar continuamente respondendo as perguntas, mas acredito que a partir de agora irei normalizar esta atividade. Sobre a aplicação que deseja desenvolver, pelo que pude entender ela pode ser feita sim, tem apenas os detalhes de instalação e configuração do código para verificar.
Bom dia, teria como comunicar esta balança com algum sistema supervisório com elipse e3?
Bom Dia Gustavo! Infelizmente nunca trabalhei com este sistema, não tenho como garantir a comunicação entre ambos.
Boa Tarde!
Por gentileza, me tirem essa dúvida: O que significa esse número 20 na linha -> escala.tare(20); ?
Boa Tarde Rafael! O valor solicitado representa a faixa de trabalho da tare, normalmente um valor fixo utilizado em todos os projetos.
Ola matheus, bom dia. Eu consigo usar esse módulo HX711 com uma célula de carga com maior capacidade? de 1000 kg por exemplo…
Olá Renê! Normalmente células de cargas utilizam o Strain Gauge como base de funcionamento e estes dispositivos geram um sinal muito baixo que consequentemente necessita de amplificadores para funcionar, este é o trabalho do HX711. Normalmente o HX711 é indicado para a grande maioria destes modelos de célula de carga, porém nunca trabalhei com um modelo de peso tão elevado, recomendo verificar as especificações antes de desenvolver o projeto.
boa tarde!
como faço para mapear os valores que são gerados neste local ” Serial.println(escala.get_value(10),0); // Retorna peso descontada a tara ” preciso mapear este valor para 0~255 no pino 3 PWM.
Olá Silvanio! O valor convertido e que oferece o peso para impressão é obtido através do comando entre parênteses, é possível utilizar este recurso para realizar uma regra de três, por exemplo, e associar o mesmo a valores de 0 a 255.
Boa tarde, Matheus! Quanto ao módulo HX711, vi que você ligou nos pinos analógicos do Arduino. Isso, por acaso, não acarreta em nenhum problema, certo? Estou trabalhando no desenvolvimento de um projeto e só me sobraram esses pinos para fazer a ligação do HX711, os digitais já estão todos ocupados.
Obrigada.
Olá Paula! Do modo que está apresentado no esquema de ligação, o projeto funcionará normalmente e sem perigo de oferecer danos ao Arduino.
Olá Matheus, desde já quero parabenizar pelo o ótimo projeto, se caso eu quisesse fazer uma balança para uma pesagem on-line o que eu iria precisar? você teria com me orientar?
Olá Sandro! Caso você opte por permanecer utilizando o Arduino, é necessário incluir um Shield ou um Módulo Ethernet para realizar o envio de dados para a rede, caso esteja sujeito a maiores adaptações, outra opção é realizar este mesmo projeto utilizando um ESP32, porém este necessitaria de maiores alterações, porém poderá realizar o envio direto para aplicativos como o Telegram, por exemplo.
olá, queria tirar uma duvida, a minha leitura está vareando muito, está parecendo que quando eu encosto na célula de carga , a minha leitura vare-a muito , como posso resolver?
Olá Gabriel! Você já realizou o procedimento de calibração e conversão de dados para obter o peso da balança? A variação do valor de leitura é normal, tanto que recomendo o cálculo da média dos valores para realizar o procedimento, o bom seria realizar todo o processo e ao final ter um peso conhecido para testar o projeto.
Como fazer o mesmo experimento sem o display?
Olá Ana! Você pode utilizar o próprio monitor serial do IDE Arduino, assim como feito para a leitura dos valores brutos. Existem outros métodos e um deles o qual explorei aqui no blog é através da utilização do Arduino Leonardo e Excel, veja: https://www.usinainfo.com.br/blog/balanca-com-arduino-leonardo-imprimindo-valores-direto-no-excel/
boa tarde sempre acompanho seus trabalho e gostaria de uma ideia…. tenho um veiculo de trabalho e todo dia antes de inicia meus afazeres preciso carregar deslocar até a balança mais próxima pesar ele carregado, deslocar até aonde o serviço será feito descarregar e voltar pra tirar um tara e ter um valor de matéria prima usada lembrando que o peso pode chegar a 8 mil kg…. queria saber se a a possibilidade de criar uma balança com arduino dessa mesma forma que explico acima para automatiza e facilita o meu dia a dia?
Olá Jhonatan! Fico feliz em saber. Quanto ao seu projeto, infelizmente até o momento não me deparei com nenhum sensor Arduino que suportasse tais especificações, talvez nem tenha nenhum modelo de célula de carga compatível. Uma opção seria a análise de outros sistemas com comunicação RS232 ou RS485 para adaptar ao que deseja, mas é só uma possibilidade, até o momento também não vi nada assim em minhas pesquisas.
Opa Matheus Straub, boa tarde amigo!
Parabéns pelo Projeto !
Tenho uma dúvida sobre o projeto: Qual plataforma devo usar para inserir e alterar o código da biblioteca HX711 ?
Seria no programa/software C## ? Já pra programar o Arduino Uno, posso usar o site https://www.arduino.cc/en/software ?
Muito Obrigado!
Olá tudo bem?
Alguns softwares para edição de código seriam o “Visual Studio Code” ,”Sublime text”, “Notepad++” entre outros.
Já para programar o Arduino seria este aplicativo que você me mandou link disponível no próprio site do Arduino em https://www.arduino.cc/en/software
e possível ligar o HX711 em um modulo bluetooth e receber dados no celular ? ( digamos um modulo bluetooth autônomo, sem estar ligado no Arduino
Boa tarde Andreson, vai precisar utilizar um microcontrolador para isso.
Tentei usar uma célula de carga de 5 toneladas modelo Mc da marca líder balanças porém o hx711 parece não ler nada
Boa tarde, no meu caso , preciso criar algumas regras pois irei utilizar para controle de peso de produtos químicos por exemplo:
Quando o peso do galão atingir 2kg , através do modulo relé acenda uma lampada e também ative um som através do módulo buzzer.
Vocês teriam algum outro projeto semelhante?
Tudo bem Lucas?
Infelizmente não temos nada do tipo, sugiro utilizar o chat GPT para ajudar você a elaborar este código verificando o peso e ativando um módulo relé, garanto que ele vai dar conta.
Bom dia!
Tendo o peso conhecido, por exemplo 5kg (peso padrão). Poderia auxiliar quanto ao código para que eu conseguisse ao clicar em pushbotton, a balança entre no modo ajuste, solicitando que eu coloque o peso padrão (5kg) sobre a plataforma de pesagem e assim, ela se ajustaria de acordo com o peso conhecido. Isso tudo substituiria o cálculo de média etc. Como uma balança convencional faz.
Bom dia Raphael!
Muito boa sua ideia para melhoria da balança, ficando muito mais prático a calibração.
Sugerimos utilizar IA’s para ajudar na criação do seu código como o ChatGPT, facilitando o desenvolvimento.