{"id":543,"date":"2018-01-12T10:48:20","date_gmt":"2018-01-12T12:48:20","guid":{"rendered":"https:\/\/fedablio.com.br\/blog\/?p=543"},"modified":"2022-01-19T10:50:49","modified_gmt":"2022-01-19T13:50:49","slug":"balanca-com-celula-de-carga-modulo-conversor-hx711-e-arduino","status":"publish","type":"post","link":"https:\/\/fedablio.com.br\/blog\/arquivos\/543","title":{"rendered":"Balan\u00e7a com c\u00e9lula de carga, m\u00f3dulo conversor HX711 e arduino"},"content":{"rendered":"\n<div style=\"text-align:justify;\">\n\n<p>\nDireto ao ponto e sem rodeios vou mostrar como constru\u00ed minha balan\u00e7a que al\u00e9m de ler o peso (claro), tamb\u00e9m l\u00ea a altura atrav\u00e9s de um teclado USB e mostra como resultado o \u00edndice de massa corporal do indiv\u00edduo.\n<\/p>\n\n<h4>\nMaterial utilizado\n<\/h4>\n\n<code>\n1 protoboard 730 furos<br>\n1 microcontrolador ATMEGA 328P<br>\n1 capacitor cer\u00e2mico 100nF x 50V<br>\n2 capacitor cer\u00e2mico 22pF x 50V<br>\n1 resistor 10K x 1\/4W<br>\n1 cristal ressonante 16 MHz<br>\n1 bot\u00e3o de contato NA<br>\n1 fonte de alimenta\u00e7\u00e3o de 5V e 100mA ou mais<br>\n1 display LCD 16x02<br>\n1 trimpot 10K<br>\n1 jack USB A f\u00eamea<br>\n1 teclado n\u00famerico USB<br>\n2 MDF 300x300x15 mm<br>\n1 m\u00f3dulo conversor HX711<br>\n4 c\u00e9lula de carga 50 Kg (cada)<br>\nv\u00e1rios jumper macho - macho<br>\nv\u00e1rios jumper macho - f\u00eamea<br>\nfio colorido\n<\/code>\n\n<p>\nEu preferi montar um <a href=\"https:\/\/fedablio.com.br\/blog\/arquivos\/425\" target=\"_blank\" rel=\"noopener\">Arduino na Protoboard<\/a>, mas recomendo a utilizarem a sua pr\u00f3pria placa Arduino. Para isso deve substituir as portas digitais do ATMEGA 328P pelas portas digitais de seu Arduino. Vejam as imagens abaixo.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino01.png\"><br>\n\n<p>\nPara que o teclado USB funcione no Arduino, deve ser utilizada a biblioteca PS2Keyboard. Baixe-a neste link, extraia e a copie pasta PS2Keyboard para a pasta librarie da IDE Arduino. A vers\u00e3o utilizada da IDE Arduino foi a 1.6.7. Para evitar quaisquer tipos de enroscos, recomendo a utilizar a mesma vers\u00e3o.\n<\/p>\n\n<p>\nPara saber como instalar a IDE Arduino, acesse <a href=\"https:\/\/www.arduino.cc\/en\/Guide\" target=\"_blank\" rel=\"noopener\">esta URL<\/a>.\n<\/p>\n\n<h4>\nC\u00f3digo fonte\n<\/h4>\n\n<p>\nEm primeiro momento pensei em manter o c\u00f3digo fonte privado para quando algu\u00e9m quisesse, entrar em contato via e-mail e assim posteriormente recebe-lo. Acabei mudando de ideia.\n<\/p>\n\n<pre>\/*\nFedablio\nwww.fedablio.com.br\n*\/\n\n#include &lt;LiquidCrystal.h&gt;\n#include &lt;PS2Keyboard.h&gt;\n\n\/\/Teclado D-\nconst int DataPin = 2;\n\/\/Teclado D+\nconst int IRQpin = 3;\nPS2Keyboard keyboard;\nchar c;\nString acumulado = \"\";\n\/\/LCD\nLiquidCrystal lcd(12, 11, 7, 6, 5, 4);\n\/\/SCK do conversor\n#define SCK 8\n\/\/DAT do conversor\n#define DAT 9\nunsigned long banana = 8706637;\nunsigned long pera;\nunsigned long uva;\nfloat melao;\nint valor = 0;\nunsigned long Leitura();\n\nvoid setup() {\n  Serial.begin(9600);\n  lcd.begin(16, 2);\n  keyboard.begin(DataPin, IRQpin);\n  pinMode(DAT, INPUT_PULLUP);\n  pinMode(SCK, OUTPUT);\n}\n\nvoid loop() {\n  Serial.println(Leitura());\n  pera = Leitura();\n  uva = banana - pera;\n  melao = uva \/ 26680.00;\n  lcd.clear();\n  lcd.setCursor(0, 0);\n  lcd.print(\"Peso: \");\n  if (melao &lt;= 5) {\n    melao = 0.00;\n  }\n  lcd.print(melao);\n  lcd.setCursor(0, 1);\n  lcd.print(\"Altu: \");\n  lcd.print(acumulado);\n  if (keyboard.available()) {\n    c = keyboard.read();\n    if (c == PS2_ENTER) {\n      String semi_altura = acumulado;\n      float altura = semi_altura.toFloat();\n      float imc = melao \/ pow(altura, 2);\n      lcd.clear();\n      lcd.setCursor(0, 0);\n      lcd.print(\"IMC: \");\n      lcd.print(imc);\n      lcd.setCursor(0, 1);\n      if (imc &lt;= 18.5) {\n        lcd.print(\"Abaixo do peso\");\n      }\n      if (imc &gt;= 18.5 &amp;&amp; imc &lt; 24.9) {\n        lcd.print(\"Peso adequado\");\n      }\n      if (imc &gt;= 25 &amp;&amp; imc &lt; 29.9) {\n        lcd.print(\"Sobrepeso\");\n      }\n      if (imc &gt;= 30 &amp;&amp; imc &lt; 34.9) {\n        lcd.print(\"Obes. grau I\");\n      }\n      if (imc &gt;= 35 &amp;&amp; imc &lt; 39.9) {\n        lcd.print(\"Obes. grau II\");\n      }\n      if (imc &gt;= 40) {\n        lcd.print(\"Obes. grau III\");\n      }\n      delay(10000);\n      acumulado = \"\";\n    } else if (c == PS2_ESC) {\n      acumulado = \"\";\n    } else {\n      acumulado.concat(c);\n      lcd.setCursor(0, 0);\n      lcd.print(\"Peso: \");\n      if (melao &lt;= 5) {\n        melao = 0.00;\n      }\n      lcd.print(melao);\n      lcd.setCursor(0, 1);\n      lcd.print(\"Altu: \");\n      lcd.print(acumulado);\n    }\n  }\n}\n\nunsigned long Leitura() {\n  unsigned long Var = 0;\n  unsigned char i;\n  digitalWrite(SCK, LOW);\n  while (digitalRead(DAT));\n  for (i = 0; i &lt; 24; i++) {\n    digitalWrite(SCK, HIGH);\n    Var = Var &lt;&lt; 1;\n    digitalWrite(SCK, LOW);\n    if (digitalRead(DAT)) Var++;\n  }\n  digitalWrite(SCK, HIGH);\n  Var = Var ^ 0x800000;\n  digitalWrite(SCK, LOW);\n  return (Var);\n}\n<\/pre>\n\n<p>\nEm posse do c\u00f3digo, o carregue em seu Arduino propriamente dito ou no microcontrolador ATMEGA 328P (atrav\u00e9s de seu Arduino). Algo que ajuda bastante \u00e9 gerar uma \u201ccola\u201d das portas utilizadas, conforme abaixo.\n<\/p>\n\n<code>\nDIGITAL 02........D- (jack USB)<br>\nDIGITAL 03........D+ (jack USB)<br>\nDIGITAL 04........LCD 14<br>\nDIGITAL 05........LCD 13<br>\nDIGITAL 06........LCD 12<br>\nDIGITAL 07........LCD 11<br>\nDIGITAL 08........SCK (HX711)<br>\nDIGITAL 09........DAT (HX711)<br>\nDIGITAL 10........VAZIO<br>\nDIGITAL 11........LCD 06<br>\nDIGITAL 12........LCD 04<br>\nDIGITAL 13........VAZIO\n<\/code>\n\n<p>\nContinuando com a montagem. Para n\u00e3o precisar gerar um \u201cbolo\u201d de fios em uma \u00fanica imagem do Fritzing, resolvi dividir por partes. A imagem a seguir mostra a montagem do display de LCD.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino02.png\"><br>\n\n<p>\nEsqueci de mencionar. Deve ser soldados fios ou jumpers no jack USB.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino03.png\"><br>\n\n<p>\nFeito isso, montem conforme a pr\u00f3xima imagem.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino04.png\"><br>\n\n<p>\nBom. Aqui a montagem \u00e9 um pouco mais complicada e exige um pouco mais de aten\u00e7\u00e3o. Aqui temos o <code>m\u00f3dulo conversor HX711<\/code> sendo montado j\u00e1 com as <code>c\u00e9lulas de carga<\/code>.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino05.png\"><br>\n\n<p>\nTamb\u00e9m gerei uma imagem \u201cmais grosseira\u201d da montagem. Vejam abaixo.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino06.png\"><br>\n\n<p>\nPara facilitar e fazer que subam apenas 4 fios para a &#8220;central&#8221;, instalei uma placa para soldar (emendar) os fios.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino07.jpg\"><br>\n\n<p>\nEsse foi o teclado USB utilizado.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino08.jpg\"><br>\n\n<h4>Calibrando a balan\u00e7a<\/h4>\n\n<p>\nCom tudo conectado ao Arduino e com ele ligado, vamos calibrar a balan\u00e7a. Abra o monitor da Serial da IDE Arduino e note que O valor a ser mostrado na Serial, deve ser algo pr\u00f3ximo a <code>8707550<\/code>. Sem peso algum e apenas com a tampa (base). Os 3 \u00faltimos n\u00famero podem variar bastante.\n<\/p>\n\n<p>\nAgora \u00e9 que come\u00e7a de fato esta calibragem. Coloquei como peso duas garrafas de \u00e1gua mineral contendo 1,5L cada. Logo, temos 3 Kg de carga na balan\u00e7a. O valor mostrado na Serial IDE Arduino ser\u00e1 algo pr\u00f3ximo a <code>8626550<\/code>.\n<\/p>\n\n<img decoding=\"async\" src=\"https:\/\/fedablio.com.br\/blog\/wp-content\/uploads\/2022\/01\/balanca-arduino09.jpg\"><br>\n\n<p>\nPara continuar precisamos saber o valor da diferen\u00e7a de ambos. Vejam abaixo a brilhante f\u00f3rmula (rsrs).\n<\/p>\n\n<code>\ndiferen\u00e7a = valor da Serial sem peso - valor da Serial com peso<br>\ndiferen\u00e7a = 8707550 - 8626550<br>\ndiferen\u00e7a = 81000\n<\/code>\n\n<p>\nLogo, sei que algo na casa de 81 mil equivale a um peso aproximado de 3 Kg. Agora vamos dividir os 81000 por 3, pois quero saber que valor representa 1 kg. Segue: <code>81000 \/ 3 = 27000<\/code>.\n<\/p>\n\n<p>\nPronto. Agora sei que um valor de <code>27000<\/code> equivale a 1 Kg aproximado.\n<\/p>\n\n<p>\nSe chegaram at\u00e9 aqui e fez tudo conforme o &#8220;script&#8221; \u00e9 para estar funcionando.\n<\/p>\n\n<p>\nJesus vai estar vendo quando voc\u00ea usar meu c\u00f3digo e projeto e falar que desenvolveu sozinho(a) &#8220;rsrsrs&#8221;.\n<\/p>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Direto ao ponto e sem rodeios vou mostrar como constru\u00ed minha balan\u00e7a que al\u00e9m de ler o peso (claro), tamb\u00e9m l\u00ea a altura atrav\u00e9s de um teclado USB e mostra como resultado o \u00edndice de massa corporal do indiv\u00edduo. Material utilizado 1 protoboard 730 furos 1 microcontrolador ATMEGA 328P 1 capacitor cer\u00e2mico 100nF x 50V [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,28],"tags":[125,126,127,128,129,130],"class_list":["post-543","post","type-post","status-publish","format-standard","hentry","category-android","category-robotica","tag-balanca-com-arduino","tag-celula-de-carga-arduino","tag-conversor-hx711","tag-converter-hx711","tag-load-cell-arduino","tag-weight-with-arduino"],"_links":{"self":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/comments?post=543"}],"version-history":[{"count":2,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/543\/revisions"}],"predecessor-version":[{"id":545,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/posts\/543\/revisions\/545"}],"wp:attachment":[{"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fedablio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}