Mostrando postagens com marcador Arduino. Mostrar todas as postagens
Mostrando postagens com marcador Arduino. Mostrar todas as postagens

sábado, 13 de outubro de 2018

Conversor HX711: Balança Digital com Sensor de Peso e Arduino Uno



As balanças Digitais eletrônicas são utilizadas para diversas finalidades em diversas áreas como:
Indústria alimentícia;
Pesagem de caminhões;
Pesagem de aeronaves;
Contagem de peças;
Indústria química;
Metalúrgica;
Construção civil.

Uma balança digital é basicamente formada por célula de carga, amplificador e conversor AD (Conversor HX711).
A Célula de Carga

A Célula de carga nada mais é que um sensor de força. São capazes de medir deformações mecânicas, ou seja, à medida que o corpo sofre uma deformação a resistência fixada no corpo dessa célula é alterada.
Célula de Carga

Com a alteração da resistência é possível determinar a deformação causada pela força aplicada, essa resistência é um circuito ponte de Wheatstone. Veja a ponte na figura abaixo:
Ponte de Wheatstone

Quando R1=R2=R3=R4 a ponte estará em equilíbrio, assim o valor medido pelo voltímetro (Vm) será de 0V, mas quando variamos o potenciômetro R4 a ponte entra em desequilíbrio assim o voltímetro acusará um valor de tensão. Obviamente que na célula de carga não teremos esse potenciômetro e sim como já citado uma resistência que será variada de acordo com a deformação do corpo da célula. A célula de carga dispõe de meia ponte, e para completar uma ponte foram utilizadas duas células de carga.
Módulo Conversor HX711

O módulo conversor HX711 é um conversor analógico digital de 24 bits que também funciona como um amplificador, assim mantendo o nível de sinal dentro da faixa de operação do conversor.
Módulo conversor HX711

Pinagem do módulo conversor HX711:

E+: pino que alimentará a célula (+);
E-: pino que alimentará a célula (-);
A+: sinal da célula de carga;
A-: sinal da célula de carga;

VCC: alimentação positiva;
GND: alimentação negativa;
DOUT: conectada ao pino digital do Arduino;
SCK: conectada ao pino digital do Arduino.
Tela Osciloscópio Com Canal 1 e Canal 2

No canal 1 (amarelo) do osciloscópio temos conectado o pino DOUT e no canal 2 (azul) temos conectado o pino SCK do módulo conversor HX711. O pino SCK envia 25 pulsos sendo que o 24º pulso indica o fim da conversão e o 25º pulso indica que a próxima conversão tem que ser no canal A com ganho de 128. No pino DOUT temos a informação já convertida em digital e quando o pino SCK envia o 24º indicando que a conversão terminou o pino DOUT vai para nível lógico alto.
Quando o pino DOUT vai para nível lógico baixo, significa que o mesmo está pronto para a conversão aguardando o primeiro pulso do SCK para que esta conversão seja iniciada.
Montando o Circuito da Balança com o Arduino

Abaixo, segue o esquema elétrico da ligação das células de carga, a ligação do Arduino com o Módulo Conversor HX711 e as células de carga e a fixação das células: Ligação de Duas Células de Carga
Ligação do Arduino, Módulo Conversor HX711 e Células de Carga
Células de Carga Sob a Plataforma Circuito Montado com Módulo Conversor HX711, Sensor de Carga e Arduino

Materiais Utilizados
2 Unidades – Sensores de Peso 50Kg Célula de Carga
1 Unidade –Módulo Conversor HX711
1 Unidade – Plataforma 9 cm x 16 cm
1 Unidade – Arduino Uno
1 Unidade – Jumpers (Macho – Fêmea)

É importante que a parte inferior fique suspensa para que o efeito de deformação obtenha efeito, neste caso foi utilizada fita dupla face.

Programação

Será necessário desenvolver duas programações, uma para calibrar a balança e outra para mostrar o peso.

Para calibrar a balança é necessário seguir os passos abaixo:
Colocar um peso conhecido sobre a plataforma;
Através das teclas, ajustar o valor deste peso (você verá o valor do peso pelo monitor serial);
Retirar o peso da plataforma e zerar o peso da balança pela tecla t ( tara);
Repetir os 3 primeiros passos até obter o peso correto

Quando sua balança estiver pesando corretamente, guarde o valor de fator de calibração e utilize – o no programa seguinte para mostrar o peso correto no monitor serial.

Calibração
#include "HX711.h" #define DOUT 2 #define CLK 3 HX711 peso(DOUT, CLK); // instancia Balança HX711 float calibration_factor = 34730; // fator de calibração para teste inicial void setup() { Serial.begin(9600); Serial.println(); Serial.println("Calibracao da Balança"); peso.set_scale(); // configura a escala da Balança zerapeso (); // zera a Balança }


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "HX711.h"

#define DOUT 2
#define CLK 3

HX711 peso(DOUT, CLK); // instancia Balança HX711

float calibration_factor = 34730; // fator de calibração para teste inicial

void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println("Calibracao da Balança");

peso.set_scale(); // configura a escala da Balança
zerapeso (); // zera a Balança
}

Explicando o Código de Calibração
#include "HX711.h" #define DOUT 2 #define CLK 3 HX711 peso(DOUT, CLK); // instancia Balança HX711 float calibration_factor = 34730; // fator de calibração para teste inicial


1
2
3
4
5
6
7
8
#include "HX711.h"

#define DOUT 2
#define CLK 3

HX711 peso(DOUT, CLK); // instancia Balança HX711

float calibration_factor = 34730; // fator de calibração para teste inicial


No trecho acima foi incluída a biblioteca do módulo Conversor HX711 através deste link.
Foram definidos quais pinos do Arduino serão ligados os pinos do HX711 DOUT e CLK. Em seguida foi criado o objeto peso HX711 peso(DOUT, CLK) para os pinos DOUT e CLK, ou seja, este objeto poderá estar dentro de funções e enviar ou guardar dados.
Temos também o valor do fator de calibração para testes iniciais float calibration_factor = 34730.
void setup() { Serial.begin(9600); Serial.println(); Serial.println("Calibracao da Balança"); peso.set_scale(); // configura a escala da Balança zerapeso (); // zera a Balança }


1
2
3
4
5
6
7
8
9
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.println("Calibracao da Balança");

peso.set_scale(); // configura a escala da Balança
zerapeso (); // zera a Balança
}


No trecho acima configuramos a porta serial do Arduino e “printamos “ no monitor serial da IDE uma mensagem inicial de calibração. A escala da balança é configurada peso.set_scale() e a rotina de zerar o peso é chamada.
void zerapeso () { Serial.println(); peso.tare(); // zera a Balança Serial.println("Zerando a Balança "); }


1
2
3
4
5
6
void zerapeso ()
{
Serial.println();
peso.tare(); // zera a Balança
Serial.println("Zerando a Balança ");
}


Temos a rotina de zerar o peso com a função peso.tare()e em seguida é enviada para o monitor serial uma mensagem de que a balança foi zerada.
void loop() { peso.set_scale(calibration_factor); // ajusta fator de calibração Serial.print("Peso: "); Serial.print(peso.get_units(), 2); // imprime peso da balança com 3 casas decimais Serial.print(" kg"); Serial.print(" Fator de Calibração: "); // imprime no monitor serial Serial.println(calibration_factor); // imprime fator de calibração delay(500) ;


1
2
3
4
5
6
7
8
9
void loop()
{
peso.set_scale(calibration_factor); // ajusta fator de calibração
Serial.print("Peso: ");
Serial.print(peso.get_units(), 2); // imprime peso da balança com 3 casas decimais
Serial.print(" kg");
Serial.print(" Fator de Calibração: "); // imprime no monitor serial
Serial.println(calibration_factor); // imprime fator de calibração
delay(500) ;


Logo a seguir se inicia o programa principal onde o fator de calibração é ajustado de acordo com a sua seleção, depois o peso é impresso no monitor serial com duas casas decimais Serial.print(peso.get_units(), 2), o valor do fator de calibração também é enviado para o monitor serial Serial.println(calibration_factor)
if (Serial.available()) // reconhece letra para ajuste do fator de calibração { char temp = Serial.read(); if (temp == '+' || temp == 'a') // a = aumenta 10 calibration_factor += 10; else if (temp == '-' || temp == 'z') // z = diminui 10 calibration_factor -= 10; else if (temp == 's') // s = aumenta 100 calibration_factor += 100; else if (temp == 'x') // x = diminui 100 calibration_factor -= 100; else if (temp == 'd') // d = aumenta 1000 calibration_factor += 1000; else if (temp == 'c') // c = diminui 1000 calibration_factor -= 1000; else if (temp == 'f') // f = aumenta 10000 calibration_factor += 10000; else if (temp == 'v') // v = dimuni 10000 calibration_factor -= 10000; else if (temp == 't') zerapeso (); // t = zera a Balança } }


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (Serial.available()) // reconhece letra para ajuste do fator de calibração
{
char temp = Serial.read();
if (temp == '+' || temp == 'a') // a = aumenta 10
calibration_factor += 10;
else if (temp == '-' || temp == 'z') // z = diminui 10
calibration_factor -= 10;
else if (temp == 's') // s = aumenta 100
calibration_factor += 100;
else if (temp == 'x') // x = diminui 100
calibration_factor -= 100;
else if (temp == 'd') // d = aumenta 1000
calibration_factor += 1000;
else if (temp == 'c') // c = diminui 1000
calibration_factor -= 1000;
else if (temp == 'f') // f = aumenta 10000
calibration_factor += 10000;
else if (temp == 'v') // v = dimuni 10000
calibration_factor -= 10000;
else if (temp == 't') zerapeso (); // t = zera a Balança
}
}


No trecho acima se tivermos algum dado na serial if (Serial.available() as funções abaixo serão executadas. Essas funções se referem ás teclas do computador que irão aumentar ou diminuir o valor do fator de calibração, onde:
a,s,d,f irão aumentar respectivamente o fator de calibração em : 10,100,1000 e 10000.
z,x,c,v irão diminuir respectivamente o fator de calibração em: 10,100,1000 e 10000.
A letra t irá zerar o peso da balança.
Explicando o Código: Valor do Peso no Monitor Serial
#include "HX711.h" #define DOUT 2 #define CLK 3 HX711 bau(DOUT, CLK); // instancia Balança HX711 float calibration_factor = 34730; // fator de calibração aferido na Calibração void setup() { Serial.begin(9600); bau.set_scale(calibration_factor); // ajusta fator de calibração bau.tare(); // zera a Balança } void loop() { Serial.print("Peso: "); Serial.print(bau.get_units(), 2); // imprime peso na balança com duas casas decimais Serial.println(" kg"); // imprime no monitor serial delay(500) ; if (Serial.available()) // se a serial estiver disponivel { char temp = Serial.read(); // le carcter da serial if (temp == 't' || temp == 'T') // se pressionar t ou T { bau.tare(); // zera a balança Serial.println(" Balança zerada"); // imprime no monitor serial } } }


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
#include "HX711.h"

#define DOUT 2
#define CLK 3

HX711 bau(DOUT, CLK); // instancia Balança HX711

float calibration_factor = 34730; // fator de calibração aferido na Calibração

void setup()
{
Serial.begin(9600);
bau.set_scale(calibration_factor); // ajusta fator de calibração
bau.tare(); // zera a Balança
}

void loop()
{
Serial.print("Peso: ");
Serial.print(bau.get_units(), 2); // imprime peso na balança com duas casas decimais
Serial.println(" kg"); // imprime no monitor serial
delay(500) ;
if (Serial.available()) // se a serial estiver disponivel
{
char temp = Serial.read(); // le carcter da serial
if (temp == 't' || temp == 'T') // se pressionar t ou T
{
bau.tare(); // zera a balança
Serial.println(" Balança zerada"); // imprime no monitor serial
}
}
}


A diferença desta programação para a anterior é que não teremos a rotina de zerar a balança e nem das teclas de ajuste de fator de calibração para calibrar a balança. Agora teremos somente a tecla tara para zerar o valor do peso.

Imagem do Circuito Montado Com Peso Valores no monitor serial com um peso de 500g sobre a balança
Valores no monitor serial sem a balança sem peso

Que tal adicionar um display LCD nesta balança ou até implementá-la em uma aplicação industrial?
Monte uma balança com 4 células de carga (uma em cada ponta da plataforma) para aumentar a precisão da sua balança.
Envie seu projeto para nós usando a hashtag #ProjetoComBau e visite nossa loja.

http://blog.baudaeletronica.com.br/conversor-hx711-para-balanca-eletronica/

sexta-feira, 15 de junho de 2018

Como fazer um Alarme com Arduino e sensor de movimentos PIR.

Olá! hoje vou ensinar como montar um alarme usando o Arduino e um sensor de movimento PIR. O sensor PIR (Passive InfraRed sensor) é um sensor eletrônico que mede a luz infravermelha irradiada de objetos. O sensor PIR também é conhecido como sensor de presença ou sensor de movimentos, e ao conectá-lo ao Arduino você terá como controlar este sensor e disparar diversas ações ao detectar movimentos.
Este projeto de alarme é capaz de detectar movimentos em um ambiente disparando um sinal sonoro e acendendo um led. Pode ser usado por exemplo na porta de entrada da sua casa ou em algum cômodo e quando alguém passar por lá o alarme será disparado. Então se você necessita ser avisado da presença de alguém em um determinado lugar este projeto é uma opção interessante e fácil de fazer.
O sensor PIR é fácil de se encontrar, a maioria das lojas virtuais e físicas que vendem Arduinos e/ou componentes eletrônicos normalmente possuem este sensor. Só verifique se o sensor PIR que você pretende adquirir possui controle de sensibilidade da detecção de movimentos. Este que usei no projeto do alarme possui três pinos, controle de sensibilidade e controle de tempo que o sensor fica "ligado" quando detecta algum movimento.
Para desenvolver o projeto Alarme com Arduino e sensor de movimentos PIR você vai precisar de:
  • Arduino;
  • sensor de movimentos/presença PIR;
  • led;
  • buzzer de 5 volts;
  • resistores de 220 ohms;
  • protoboard;
  • bateria de 9 volts;
  • suporte para bateria com plug para ligar no Arduino;
  • fios para interligar os componentes.
Alarme Arduino e Sensor de Movimentos PIR
O Arduino que usei neste projeto foi um xing ling, que mostrei no polêmico post diferenças entre um Arduino verdadeiro e falso. Olha o cristal de quartzo dele, tá torto!
Alarme Arduino e Sensor de Movimentos PIR
Segue abaixo o esquema detalhado do projeto do Alarme com Arduino e sensor de movimento PIR. Através deste esquema fica mais fácil de se ter uma visão geral, e de como montar corretamente o projeto. Este esquema foi montado no software Fritzing.
Alarme Arduino e Sensor de Movimentos PIR
Abaixo segue o código fonte do projeto, prontinho e testado, é só copiar, colar, compilar e fazer o upload para o Arduino.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
Projeto Arduino - Alarme com Arduino e sensor de movimento PIR
Por Jota
----------------------------------------
--=<| www.ComoFazerAsCoisas.com.br |>=--
----------------------------------------
*/
 
//Declaração das variáveis referentes aos pinos digitais.
int pinBuzzer = 7;
int pinSensorPIR = 8;
int pinLed = 9;
int valorSensorPIR = 0;
 
void setup() {
  Serial.begin(9600); //Inicializando o serial monitor
 
  //Definido pinos como de entrada ou de saída
  pinMode(pinBuzzer,OUTPUT);
  pinMode(pinSensorPIR,INPUT);
  pinMode(pinLed,OUTPUT);
}
 
void loop() { 
  //Lendo o valor do sensor PIR. Este sensor pode assumir 2 valores
  //1 quando detecta algum movimento e 0 quando não detecta.
  valorSensorPIR = digitalRead(pinSensorPIR);
   
  Serial.print("Valor do Sensor PIR: "); 
  Serial.println(valorSensorPIR);
   
  //Verificando se ocorreu detecção de movimentos
  if (valorSensorPIR == 1) {
    ligarAlarme();
  } else {
    desligarAlarme();
  }   
}
 
void ligarAlarme() {
  //Ligando o led
  digitalWrite(pinLed, HIGH);
   
  //Ligando o buzzer com uma frequencia de 1500 hz.
  tone(pinBuzzer,1500);
   
  delay(4000); //tempo que o led fica acesso e o buzzer toca
   
  desligarAlarme();
}
 
void desligarAlarme() {
  //Desligando o led
  digitalWrite(pinLed, LOW);
   
  //Desligando o buzzer
  noTone(pinBuzzer);
}
E para concluir segue abaixo o vídeo do Alarme com Arduino e sensor de movimentos PIR em funcionamento e disparando sempre que detecta algum movimento. Veja!
E se você gostou, curta, compartilhe, dê um joinha no vídeo e inscreva-se no nosso canal do YouTube para sempre estar por dentro e acompanhar os novos projetos e nos dar aquela força. Um grande abraço e valeu!

Retirado de:
http://www.comofazerascoisas.com.br/como-fazer-um-alarme-com-arduino-sensor-de-movimentos-pir.html