Neste post será apresentado um sensor de distância no Tinkercad com Arduino, será mostrado o diagrama esquemático e código que foi utilizado.
A ideia é mostrar um projetos simples e barato, mas também mostrar ferramentas como o Tinkercad, que permite que sejam feito simulação e criação de muitas coisas de forma online, permitindo validar o código de um projeto, ou uma ideia, sem a necessidade de investimento em componentes eletrônicos e placas de desenvolvimento.
Na figura a seguir é apresentado o esquemático do nosso projeto:
Código do Arduino
Abaixo é apresentado o código que pode ser baixado e gravado no Arduino após a montagem do circuito, ou utilizado em outro projeto no Tinkercad.
/*********************************************************************
* Projeto Medindo distância com Arduino *
*********************************************************************/
#include <LiquidCrystal.h>
// Configuração dos pinos LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // rs = 7, en = 6, D4 = 5, D5 = 4, D6 = 3, D7 = 2
// Se for utilizado o sensor HC_SR04 mudar a configuração abaixo
#define echoPin 8 // attach pin D2 Arduino to pin Echo of HC-SR04
#define trigPin 8 //attach pin D3 Arduino to pin Trig of HC-SR04
// Variáveis globais
long duracao; // Varível utilizada para armazenar o tempo de percurso do som
float distancia; // Varível utilizada para armazenar o valor da distância
void setup()
{
// Inicialização LCD
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Distancia");
pinMode(trigPin, OUTPUT); // Configura o pino de trigger como saída
pinMode(echoPin, INPUT); // Configura o pino de echo como entrada
}
void loop()
{
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Aciona o pino de trigger por 10 micro segundos e depois desliga
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Configura o pino de entrada
pinMode(echoPin, INPUT);
// Armazena o valor do tempo na variável duracao, depois que muda o estado do pino de echo
duracao = pulseIn(echoPin, HIGH);
// Calculating the distance
distancia = duracao * 0.034 * 0.5 * 1.01365;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Distancia:");
lcd.setCursor(0,2);
lcd.print(distancia);
lcd.setCursor(5,2);
lcd.print (" cm");
delay (100);
}
No Tinkercad foi utilizado um sensor de ultrassom de três terminais, ou seja, o sensor utilizado tem dois terminais para alimentação do sensor, e um terminal que funcionar como trigger e como echo do sensor. O sensor de ultrassom mais comum encontrado no mercado é o sensor HC-SR04, como o mostrado na figura abaixo:
Para utilizar o sensor HC-SR04, basta mudar a configuração dos define nas linhas 8 e 9 do código, e fazer a ligação nos terminais correspondentes no Arduino.
Para encontrar o valor da distância, precisamos saber a velocidade do som, que é de 340 m/s, convertemos metro por segundo, para centímetro por microssegundo e obtemos:
A conversão acima se faz necessário, pois como o microcontrolador trabalha em uma frequência de 16 MHz, sua base de tempo é da ordem de microssegundos.
Na linha 40 do código podemo verificar a parte onde é feito o cálculo da distância que um objeto se encontra na frente do sensor, e temos dois fatores multiplicados, o valor de 0.5 e valor de 1.01365, que serão explicados a seguir.
A multiplicação pode 0.5 se deve pelo fato som fazer um percurso de ida e volta quando colide com o objeto no qual se deseja medir a distância então fazemos a multiplicação por 0.5. Mas por que não dividimos o valor por 2, não obteríamos o mesmo resultado? A resposta é sim, o resultado seria o mesmo do ponto de vista matemático, mas para o microcontrolador é mais fácil executar operações de multiplicação, então sempre que possível quando estiver escrevendo um código para microcontrolador prefira utilizar uma multiplicação no lugar de uma divisão.
O outro fator só foi utilizado para corrigir um pequeno erro em relação ao valor apresentado no display, e valor da distância do objeto em relação ao sensor.
Sensor de distância no Tinkercad com Arduino
Para concluir, quem quiser brincar com o projeto apresentado no post, copiar e implementar melhorias, basta criar uma conta no Tinkercad, abaixo deixo os links de referência para esse post, e o link para quem quiser testar o projeto.
https://www.instructables.com/Ultrasonic-Distance-Sensor-Arduino-Tinkercad/