- Sensor Range Finder VL6180X Time-of-Flight (ToF)
- Diagrama de circuito
- Adicionando bibliotecas necessárias para o sensor VL6180 ToF
- Explicação de programação e trabalho
TOF ou tempo de vôo é um método comumente usado para medir a distância de objetos distantes por vários sensores de medição de distância, como o sensor ultrassônico. A medição do tempo que uma partícula, onda ou objeto leva para percorrer uma distância através de um meio é chamada de tempo de vôo (TOF). Essa medição pode então ser usada para calcular a velocidade ou o comprimento do caminho. Também pode ser usado para aprender sobre a partícula ou propriedades do meio, como composição ou taxa de fluxo. O objeto viajante pode ser detectado direta ou indiretamente.
Dispositivos ultrassônicos de medição de distância são um dos primeiros dispositivos a usar o princípio do tempo de vôo. Esses dispositivos emitem um pulso ultrassônico e medem a distância até um material sólido com base no tempo que a onda leva para retornar ao emissor. Usamos sensor ultrassônico em muitas de nossas aplicações para medir a distância:
- Medição de distância baseada em sensor ultrassônico e Arduino
- Meça a distância usando Raspberry Pi e Sensor Ultrassônico HCSR04
- Como medir a distância entre dois sensores ultrassônicos
O método de tempo de vôo também pode ser usado para estimar a mobilidade do elétron. Na verdade, ele foi projetado para a medição de filmes finos de baixa condutividade, posteriormente foi ajustado para semicondutores comuns. Esta técnica é usada para transistores de efeito de campo orgânico, bem como estruturas metal-dielétrico-metal. Pela aplicação do laser ou pulso de tensão, as cargas em excesso são geradas.
O princípio TOF é usado para medir a distância entre um sensor e um objeto. O tempo que o sinal leva para chegar de volta ao sensor após refletir de um objeto é medido e usado para calcular a distância. Vários tipos de sinais (portadores) como som e luz podem ser usados com o princípio TOF. Quando o TOF é usado para determinar o alcance, ele é muito poderoso ao emitir luz em vez de som. Comparado ao ultrassom, ele fornece leitura mais rápida, maior precisão e maior alcance, ainda mantendo suas características de baixo peso, tamanho pequeno e baixo consumo de energia.
Aqui neste tutorial, usaremos um Sensor Range Finder TOF VL6180X com Arduino para calcular a distância entre o sensor e o objeto. Este sensor também informa o valor da intensidade da luz em LUX.
Sensor Range Finder VL6180X Time-of-Flight (ToF)
O VL6180 difere de outros sensores de distância porque usa um relógio preciso para medir o tempo que a luz leva para refletir de volta de qualquer superfície. Isso dá ao VL6180 uma vantagem em relação a outros sensores porque é mais preciso e imune a ruídos.
O VL6180 é um pacote 3 em 1 que inclui um emissor de IV, um sensor de luz ambiente e um sensor de alcance. Ele se comunica por meio de uma interface I 2 C. Ele tem um regulador 2.8V integrado. Portanto, mesmo se conectarmos uma tensão superior a 2,8 V, ela será reduzida automaticamente sem danificar a placa. Ele mede um alcance de até 25 cm. Dois GPIOs programáveis são fornecidos nele.
Diagrama de circuito
Aqui, o LCD Nokia 5110 é usado para exibir o nível de luz e a distância. O LCD Nokia 5110 opera a 3,3 V, portanto, não pode ser conectado diretamente aos pinos digitais do Arduino Nano. Portanto, adicione 10k resistores em série com os sinais de dados para proteger as linhas de 3,3 V de pinos digitais de 5 V. Saiba mais sobre como usar o Nokia 5110 LCD com Arduino.
O sensor VL6180 pode ser conectado diretamente ao Arduino. A comunicação entre o VL6180 e o Arduino é I2C. Na verdade, o protocolo de comunicação I2C combina os melhores recursos de SPI e UART. Aqui podemos conectar vários escravos a um único mestre e podemos ter vários mestres controlando um ou vários escravos. Como a comunicação UART, o I2C usa dois fios para comunicação SDA (Serial Data) e SCL (Serial Clock), uma linha de dados e uma linha de clock.
O diagrama de circuito para conectar o Sensor Range Finder VL6180 ToF com Arduino é mostrado abaixo:
- Conecte o pino RST do LCD ao pino 6 do Arduino por meio do resistor de 10K.
- Conecte o pino CE do LCD ao pino 7 do Arduino através do resistor de 10K.
- Conecte o pino DC do LCD ao pino 5 do Arduino através do resistor de 10K.
- Conecte o pino DIN do LCD ao pino 4 do Arduino através do resistor de 10K.
- Conecte o pino CLK do LCD ao pino 3 do Arduino por meio do resistor de 10K.
- Conecte o pino VCC do LCD ao pino de 3,3 V do Arduino.
- Conecte o pino GND do LCD ao GND do Arduino.
- Conecte o pino SCL do VL6180 ao pino A5 do Arduino
- Conecte o pino SDA do VL6180 ao pino A4 do Arduino
- Conecte o pino VCC do VL6180 ao pino 5V do Arduino
- Conecte o pino GND do VL6180 ao pino GND do Arduino
Adicionando bibliotecas necessárias para o sensor VL6180 ToF
Três bibliotecas serão usadas na interface do sensor VL6180 com o Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 é uma biblioteca para monitores LCD Nokia 5110 monocromáticos. Esses monitores usam SPI para comunicação. Quatro ou cinco pinos são necessários para fazer a interface com este LCD. O link para baixar esta biblioteca é fornecido abaixo:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
A biblioteca Adafruit_GFX para Arduino é a biblioteca gráfica central para monitores LCD, fornecendo uma sintaxe comum e um conjunto de primitivos gráficos (pontos, linhas, círculos, etc). Ele precisa ser emparelhado com uma biblioteca específica de hardware para cada dispositivo de exibição que usamos (para lidar com as funções de nível inferior). O link para baixar esta biblioteca é fornecido abaixo:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 é a biblioteca Arduino com funcionalidade básica do sensor VL6180. O VL6180 consiste em um emissor de infravermelho, um sensor de alcance e um sensor de luz ambiente que se comunicam por meio de uma interface I2C. Esta biblioteca permite que você leia a distância e as saídas de luz do sensor, e envia os dados através de uma conexão serial. O link para baixar esta biblioteca é fornecido abaixo:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Adicione todas as bibliotecas uma por uma acessando Sketch >> Incluir biblioteca >> Adicionar biblioteca.ZIP no IDE do Arduino. Em seguida, carregue a biblioteca que você baixou dos links acima.
Às vezes, você não precisará adicionar bibliotecas wire e SPI, mas se ocorrer um erro, faça o download e adicione-as ao seu IDE do Arduino.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Explicação de programação e trabalho
O código completo com um vídeo de trabalho é fornecido no final deste tutorial, aqui estamos explicando o programa completo para entender o funcionamento do projeto.
Neste programa, a maioria das partes são gerenciadas pelas bibliotecas que adicionamos, então você não precisa se preocupar com isso.
Nas partes de configuração, defina a taxa de transmissão como 115200 e inicialize a biblioteca Wire para I2C. Em seguida, verifique se o sensor VL6180 está funcionando corretamente ou não; caso não esteja, mostre uma mensagem de erro.
Na parte seguinte, estamos configurando a exibição, você pode alterar o contraste para o valor desejado aqui, estou configurando-o como 50
configuração vazia () { Serial.begin (115200); // Iniciar Serial em 115200bps Wire.begin (); // Iniciar a biblioteca I2C delay (100); // atraso. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FALHA AO INITALIZAR"); // Inicialize o dispositivo e verifique se há erros }; sensor.VL6180xDefautSettings (); // Carrega as configurações padrão para começar. atraso (1000); // atrasar 1s display.begin (); // init done // você pode alterar o contraste para adaptar a tela // para a melhor visualização! display.setContrast (50); display.display (); // mostra splashscreen display.clearDisplay (); }
Na configuração da parte void loop, as instruções para exibir os valores na tela LCD. Aqui estamos exibindo dois valores, um é o “Nível de luz ambiente em Lux” (Um lux é na verdade um lúmen por metro quadrado de área) e o segundo é “Distância medida em mm”. Para exibir valores diferentes em uma tela LCD, defina a posição de cada texto que deve ser exibido na tela LCD usando “display.setCursor (0,0);”.
loop void () { display.clearDisplay (); // Obter nível de luz ambiente e relatar em LUX Serial.print ("Nível de luz ambiente (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (BLACK); display.setCursor (0,0); display.println ("Nível de luz"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Obter distância e relatar em mm Serial.print ("Distância medida (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (BLACK); display.setCursor (0, 24); display.println ("Distância (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); atraso (500); }
Após fazer o upload do programa, abra o monitor serial e ele deverá mostrar a saída conforme mostrado abaixo.
Os telêmetros VL6180 TOF são usados em smartphones, dispositivos portáteis com tela de toque, tablets, laptops, dispositivos de jogos e aparelhos domésticos / dispositivos industriais.
Aqui estamos exibindo o nível de luz ambiente em Lux e a distância em mm.
Encontre o programa completo e o vídeo de demonstração abaixo. Verifique também como medir a distância usando o sensor ultrassônico e o nível de luz usando o sensor de luz ambiente BH1750.