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/

terça-feira, 19 de junho de 2018

Repetidor de sinal Multilaser RE051 é bom? Veja especificações e preço


Por Isabela Giantomaso, para o TechTudo

18/06/2018 06h01 Atualizado há 23 horas

O RE05 é um repetidor de sinal da Multilaser à venda no Brasil pelo preço de R$ 80. O aparelho pode ajudar a aumentar o alcance do sinal de Internet dentro de casa ou no escritório. Com 300 Mb/s, o modelo promete alta velocidade na transferência de dados e conta com instalação simples, precisando apenas acionar um botão no roteador principal do ambiente.


Antes de investir no repetidor, veja a seguir a análise completa das especificações do Multilaser RE05. Descubra se o equipamento vale a pena para o tipo de uso que você deseja.




Repetidores: saiba como ampliar o sinal Wi-Fi da sua casa

Ficha técnica

Preço oficial: R$ 80
Preço no varejo: R$ 68
Cor: branco
Peso: 200 g
Dimensões: 11 x 6 x 8,6 cm
Velocidade: 300 Mbps
Frequência: 2.4 GHz
Protocolo wireless: b/g/n
Função WPS: sim
Garantia: 12 meses



Repetidor RE051 tem 300 Mbps e pode ser encontrado por preço médio de R$ 74 (Foto: Divulgação/Multilaser)

Potência e alcance

A principal função do repetidor é aumentar o alcance da Internet em pontos da casa ou do escritório em que o sinal está fraco. Para isso, o RE051 oferece 300 Mb/s de velocidade com largura de banda de 2.4 GHz para rápida transferência de dados.


O aparelho da Multilaser conta com antena interna e é compatível com os protocolos wireless b/g/n, padrões encontrados em grande parte dos roteadores domésticos. Além disso, o modelo tem tecnologia MIMOpara auxiliar na transmissão de sinal sem fio.


RE051 trabalha com 2.4 GHz para ajudar a repetir o sinal de internet (Foto: Divulgação/Multilaser)


Para definir prioridades de acesso, o repetidor também oferece tecnologia QoS (Quality of Service, ou Qualidade de Serviço), por meio do qual o usuário pode direcionar a rede para um ou mais aparelhos específicos. É uma ferramenta útil, por exemplo, para um local com muitos usuários em que alguns precisam de uma velocidade superior por conta do serviço realizado.

Segurança

A proteção de dados com o RE051 fica por conta da função WPS (Wi-Fi Protected Setup, ou Configuração de Wi-Fi Protegido). O recurso é útil para liberar acessos na rede de forma rápida sem precisar de senhas. No entanto, deve ficar sempre desativado para evitar invasões de hackers no aparelho.


Botão WPS pode ajudar na segurança, além de participar da instalação do aparelho (Foto: Divulgação/Multilaser)

Instalação

O aparelho, disponível apenas na cor branca, tem instalação fácil e prática. Segundo a Multilaser, basta pressionar o botão WPS no roteador principal por três segundos e depois pressionar o botão WPS do RE051 por até dez. O aparelho que vai "esticar" o sinal deve ser colocado em uma tomada próxima a um ponto com conexão fraca no ambiente.


Para fazer outras configurações e conferir se o aparelho está funcionando, o modelo traz também um cabo e uma porta RJ-45, botão para resetar e indicadores Power, Wireless, WPS e LAN.


Preço e garantia



Repetidor RE051 tem indicadores de funções e pode ser conectado com cabo RJ-45 (Foto: Divulgação/Multilaser)

Na loja da Multilaser, o repetidor RE051 está disponível para comprar por R$ 80. Já no varejo nacional, o modelo está à venda por R$ 68. A fabricante promete garantia de até 12 meses. Na caixa do produto, além do aparelho, o usuário recebe um cabo RJ-45 e um guia rápido para instalação.

Concorrentes

O RE051 trabalha de forma semelhante ao concorrente da TP-Link, o TL-WA850RE. O repetidor também promete velocidade de 300 Mb/s e custa cerca de R$ 75. Para quem quer uma opção um pouco mais avançada que o modelo da Multilaser, o D-Link DAP-1325, à venda por R$ 109, tem antena externa e protocolo 802.11 ac.

Qual é o repetidor mais barato? Saiba no Fórum do TechTudo.

https://www.techtudo.com.br/noticias/2018/06/repetidor-de-sinal-multilaser-re051-e-bom-veja-especificacoes-e-preco.ghtml

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