14 - Aplicação : sensor de distância HC-SR04

O sensor HC-SR04 permite detectar objetos que lhe estão distantes entre 2 cm e 500 cm com uma resolução de 0,3 cm. Estes sensores emitem um sinal ultrasônico que reflete num objeto e retorna ao sensor. O sinal de retorno é captado, permitindo-se deduzir a distância do objeto ao sensor tomando o tempo de trânsito do sinal.

O velocidade do sinal ultrasônico é de aproximadamente 340 m/s no ar, assim, se o sensor estiver a uma distância d do objeto, o sinal percorrerá uma distância equivalente a 2d para sair e retornar ao sensor, conforme figura abaixo:



Dessa forma, o tempo que o sinal leva para sair e retornar ao sensor permite calcular a distância d pela equação:  



Na figura abaixo é visualizado o sensor HC-SR04. Nele são encontrados 4 pinos de conexão que da direita para a esquerda são respectivamente :
  • VCC : alimentação de 5V
  • TRIG : pino de gatilho
  • ECHO : pino de eco
  • GND : terra


O pino TRIG normalmente deve estar em nível baixo. Para iniciar uma leitura de distância, o mesmo deve ser colocado em nível alto por 10us e retornar para nível baixo em seguida. Neste momento, 8 pulsos de 40kHz são emitidos e no pino ECHO será gerado um sinal em nível alto proporcional à distância do sensor ao objeto. Em seguida, basta verificar o tempo em que o pino ECHO permaneceu em nível alto e utilizar a fórmula abaixo para obter a distância:


A biblioteca Ultrasonic para o arduino facilita o cálculo da distância. Basta descompactá-la e copiar a pasta "Ultrasonic" para o diretório "libraries" do ambiente arduino. Um exemplo de utilização da biblioteca segue abaixo, onde o pino digital 12 foi conectado ao TRIG e o pino 13 ao ECHO.

#include "Ultrasonic.h"

Ultrasonic ultrasonic(12,13); // TRIG = pino 12     ECHO = pino 13

void setup() {
   Serial.begin(9600);
}

void loop()
{
   Serial.print("distancia em centimetros : ");
   Serial.println(ultrasonic.Ranging(CM));
   delay(1000);
}


Para monitorar as distâncias amostradas, basta pressionar o botão "Serial Monitor" no ambiente arduino para obter uma tela similar a:


13 - Aplicação : sensor de temperatura DS18B20

O sensor DS18B20 utiliza o protocolo de comunicação 1-Wire. Este protocolo permite a conexão de inúmeros dispositivos numa mesma rede, utilizando apenas 1 fio para a troca de dados.

O sensor DS18B20 fornece temperaturas entre -55°C e 125°C com uma precisão de ±0.5°C no intervalo de -10°C to +85°C. Vide datasheet. Ele é identificado na rede 1-Wire a partir de um código único de 64 bits.

Na figura abaixo são observados os seus pinos no encapsulamento TO92. Nota-se que o pino GND corresponde ao terra, VDD a 5V e no pino DQ é fornecida a informação de temperatura.


Um microcontrolador pode ler informações deste sensor utilizando um único fio e resistor de pull-up, sendo normalmente utilizado um resistor de 4k7 ohms.

No circuito abaixo observa-se a conexão do sensor com uma placa arduino, sendo que foi escolhida a porta digital 2 do arduino para a leitura do sensor.


Para este circuito, é possível monitorar as temperaturas amostradas pelo sensor utilizando o código arduino abaixo. As bibliotecas OneWire e DallasTemperature podem ser obtidas aqui. Basta descompactar as bibliotecas no diretório "libraries" do ambiente arduino.


#include "OneWire.h"
#include "DallasTemperature.h"


#define ONE_WIRE_BUS 2       // sensor conectado na porta digital 2


OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();

  Serial.print("Temperatura no sensor 1 : "); // pode haver mais
  Serial.println(sensors.getTempCByIndex(0)); // do que um sensor
}


Para verificar as temperaturas amostradas, basta pressionar a tecla "Serial Monitor" no ambiente de programação arduino e visualizar uma tela similar à figura abaixo: