Em suas aventuras no mundo da eletrônica, já deve ter se deparado com um desafio onde era necessário medir a distância de algum objeto para a realização de alguma tarefa.
O conceito do Time-of-Fligth(ToF) consiste em medir o tempo que um sinal gasta transitando entre dois pontos, a fim de estimar a distância entre eles.
Por exemplo, quando avistamos um raio, é possível estimar a distância dele até nós porque o som possui velocidade menor que a luz. Como a velocidade do som no ar é de aproximadamente 340 m/s, cada 1 segundo que se passa entre o raio e o som do trovão equivale a 340 metros de distância. Ou seja, se o som do trovão é ouvido 5 segundos após avistarmos o raio quer dizer que ele estava a 1,7 quilômetros de distância.
Este princípio é utilizado nos sensores ultrassônicos onde o sinal é emitido por um alto-falante e ao atingir um objeto é refletido de volta ao sensor e captado por um microfone. Utilizando a fórmula abaixo estimamos a distância do objeto com base no tempo gasto para o som retornar ao sensor.
D = V*T/2 (Distância = Velocidade do som no ar * tempo / 2)
Outra forma de medir distância utilizando a técnica ToF é emitir um feixe de raio laser e medir o tempo que a luz gasta para atingir o objeto e retornar ao sensor.
Parece complexo devido à alta velocidade que a luz se desloca, mas é exatamente a proposta do sensor VL53L1X que é o foco deste artigo.
Sensor VL53L1X
A ST Microelectronics possui uma família de sensores de proximidade que utiliza a tecnologia FlightSense™. Esta tecnologia consiste em um emissor de raio laser infravermelho, invisível aos olhos humanos, e uma matriz de recepção denominada SPAD (Single Photon Avalanche Diode) que detecta o primeiro fóton proveniente da reflexão no objeto, garantindo um bom alcance e confiabilidade.
Com alcance configurável que pode chegar a até 4 metros de distância, é possível realizar 50 medidas por segundo. Ideal para aplicações onde os objetos estejam em movimento.
Uma facilidade deste sensor é que o microcontrolador não precisa ser ocupado para medir o tempo de retorno do feixe de laser, que é uma das fontes de erro na medida dos sensores ultrassónicos. Nesse caso, o próprio sensor faz o registro do tempo e envia para o microcontrolador a distância medida através da comunicação i2c.
Outra característica interessante é que o sensor não possui apenas um receptor, e sim uma matriz de 16×16 diodos receptores. Que possibilita escolher uma região de interesse (ROI – region of interest) a fim de reduzir o campo de visão (FoV – Field of View) de 27 para 15 graus e fazer uma medida mais pontual.
Mão na massa
Hora de utilizar o sensor na prática. Utilizaremos a plataforma Arduino para este exemplo. Inicialmente utilizaremos apenas os pinos de alimentação e comunicação, mas quando você estudar mais a fundo o sensor poderá utilizar os pinos XSHUT para desligar o sensor e economizar energia em aplicações que utilizem bateria, e GPIO1 que pode ser configurado com diversas interrupções.
Importante: Observe que este sensor é alimentado com 3,3 volt.
No software do Arduino (IDE) baixe a biblioteca para o sensor através do menu Sketch, Incluir Bibliotecas, Gerenciar Bibliotecas. No campo de pesquisa procure por VL53L1X e instale a biblioteca disponibilizada pela Pololu conforme a figura 6.
O código abaixo configura o sensor para medir a uma distância de até 4 metros e escrever no terminal serial a cada 100 milissegundos.
#include <Wire.h>
#include <VL53L1X.h>
VL53L1X sensor;
void setup()
{
//Inicializa comunicação i2c com clock de 400KHz
Wire.begin();
Wire.setClock(400000);
//Inicializa a comunicação serial para podermos visualizar os dados no terminal serial
Serial.begin(115200);
//Inicializa o sensor VL53L1X
if (!sensor.init())
{
Serial.println("Erro: Sensor não encontrado.");
while(1);
}
//COnfigura tempo maximo de resposta do sensor
sensor.setTimeout(500);
//Configurar o sensor de distancia para o modo de longa distancia para detecção até 4 metros
sensor.setDistanceMode(VL53L1X::Long);
//Configura o tempo de amostragem do sinal, no caso 50mS (50000uS)
sensor.setMeasurementTimingBudget(50000);
//Inicializa o modo de operação continua realizando uma medição a cada 100mS
sensor.startContinuous(100);
}
void loop()
{
int distancia;
//Realiza a leitura do sensor e exibe a distancia no terminal serial
distancia = sensor.read();
Serial.print("Distancia: ");
Serial.print(distancia);
Serial.println("mm");
}
Conclusão
O sensor VL53L1X é uma alternativa a ser considerada aos famosos sensores ultrassônicos de distância, oferecendo alta precisão com grande range de medição. Outras vantagens são seu tamanho reduzido e região de interesse configurável, possibilitando restringir o ponto focal e desenvolver outras aplicações além da medida de distância.
Referências
https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html







Boa noite. Existe algum modelo pra arduino capaz de medir 30 metros de distancia?
Boa noite!!! Como consigo configurar o campo de visão preciso diminuir o campo de visão.
Bos Noite estou desenvolvendo um programa com sensor laser de 4m porem
preciso limitar o angulo de visão como consigo alterar o valor pré-definido não onde e como fazer. Estou precisando que este sensor trabalhe dentro de um tubo de 10cm de diametro. Desde já obrigado.
Boa noite Wagner! A funcionalidade que determina o angulo de visão do sensor chama ROI (region of interest ou região de interesse) e você pode reduzi-la de 16×16 para 4×4 (o minimo aceito pelo chip) afim de obter uma medida mais pontual.
Manuel Boa Noite…
Mas como eu consigo fazer isso eu não sei onde alterar esta matriz para 4×4, vc pode me ajudar desde já obrigado fico no aguardo.
Boa tarde, é possível fazer medições em ambiente outdoor com este sensor? vou precisar medir alturas de plantas em locais com a presença de luz solar.
Grato.
Olá Cleuson! É possivel sim, até 4 metros de distancia que é o limite máximo do sensor.
Bom dia, meu caro!
você poderia elaborar um artigo no qual usássemos esse sensor para fazermos o escaneamento de um objeto que girasse e obtivéssemos suas coordenadas 3D num software como o Blender que é gratuito e muito bom por sinal, tal qual ocorreu em filmes de ficção científica. Fica a dica!
Boa ideia Reginaldo!
Parabéns, pela matéria!
Montei medidor ultrassônico, que já é legal, imagine com esse módulo utilizando o Laser!
Obrigado Reginaldo!
Foi bem legal trabalhar com esse sensor. Farei mais artigos sobre ele.
O esquema da figura 5 não estaria errado, uma vez que o sensor está ligado nos pinos de analog in do Arduino Uno (A4 e A5), quando deveria ser conectado aos pinos SCL e SDA da placa?
Isso mesmo Djan. Os pinos A4 e A5 compartilham a função SDA e SCL do I2C, respectivamente.
Parabéns pelo texto! Ele seria apropriado para medir distâncias dentro de ambientes fechados (potes, tanques, etc) ?
Obrigado Lahis!
É possível medir em ambientes fechados sim, inclusive suas dimensões o favorecem nestas aplicações.
Caso vá medir o nível de algum líquido, verifique se o laser é refletido corretamente.
Vale observar também que, por ser ótico, contaminantes como óleo e pó podem obstruir a lente do sensor.
Artigo muito legal!
Obrigado Pedro!