Sensor de distância no Tinkercad com Arduino

Arduino - Sensor de distância no Tinkercad

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:

Sensor de distância HC-SR004

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:

Conversão de m/s para cm/us
Conversão de m/s para cm/us

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.tinkercad.com/

https://create.arduino.cc/projecthub/abdularbi17/ultrasonic-sensor-hc-sr04-with-arduino-tutorial-327ff6

https://www.instructables.com/Ultrasonic-Distance-Sensor-Arduino-Tinkercad/