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.
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 |
#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
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!
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!