Skip to Content

Como usar um sensor de distância IR SHARP GP2Y0A710K0F com Arduino

Como usar um sensor de distância IR SHARP GP2Y0A710K0F com Arduino

SHARP GP2Y0A710K0F é um sensor de distância IR fácil de usar com um alcance extra longo de 100 – 500 cm. Este alcance extra longo torna-o uma boa alternativa aos sensores de distância ultrassónicos.

Neste tutorial, vais aprender como o sensor funciona e como usá-lo com Arduino. Incluí um diagrama de ligação e código de exemplo para que possas começar a experimentar com o teu sensor.

Se procuras um sensor de distância mais acessível ou à prova de água, dá uma vista de olhos no HC-SR04 ou JSN-SR04T. Nos artigos abaixo explico como estes sensores de distância/proximidade funcionam e como podes usá-los com Arduino.

Outros sensores de distância/proximidade:

Peças Necessárias

Sensor de Distância GP2Y0A710K0F

Arduino

Arduino Uno

USB Data Sync cable Arduino

Cabo USB para Arduino UNO

Dupont wire set

Conjunto de Fios Dupont

Half_breadboard56a

Breadboard

Condensador( 10 µF)

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Como funciona um sensor de distância IR?

Um sensor de distância IR usa um feixe de luz infravermelha que reflete num objeto para medir a sua distância. A distância é calculada usando triangulação do feixe de luz. O sensor é composto por um LED IR e um detector de luz ou PSD (Dispositivo de Sensibilidade Posicional).

Quando o feixe de luz é refletido por um objeto, o feixe refletido alcança o detector de luz e forma-se um ‘ponto óptico’ no PSD.

How an IR distance sensor works light emitter and detector PSD 710
Sensor IR

Quando a posição do objeto muda, o ângulo do feixe refletido e a posição do ponto no PSD também mudam. Vê o ponto A e o ponto B na imagem abaixo.

How an IR distance sensor works
Repara na mudança do ângulo do feixe refletido e na posição do ‘ponto óptico’ no PSD.

O sensor tem um circuito de processamento de sinal incorporado. Este circuito processa a posição do ponto óptico no PSD para determinar a posição (distância) do objeto refletor. Ele produz um sinal analógico que depende da posição do objeto em frente ao sensor.

Como ler um sensor de distância IR?

Sensores de distância IR produzem um sinal analógico, que varia conforme a distância entre o sensor e um objeto. Pelo datasheet, podes ver que a tensão de saída do SHARP GP2Y0A710K0F varia de 2,5 V quando um objeto está a 100 cm até 1,4 V quando um objeto está a 500 cm. O gráfico também mostra porque o intervalo útil de deteção começa nos 100 cm.

Repara que a tensão de saída para um objeto a 30 cm é igual à tensão para um objeto a 160 cm. Portanto, o intervalo útil de deteção começa após o pico, aproximadamente aos 100 cm ou 2,5 V.

GP2Y0A710K0F Output Characteristics
Características de medição de distância (saída)

O gráfico também mostra a desvantagem destes sensores: a resposta é não linear. Ou seja, uma grande mudança na tensão de saída nem sempre corresponde a uma grande mudança na distância. Para determinar a distância entre o sensor e um objeto, precisas de encontrar uma função que converta a tensão de saída num valor de distância.

Se traçares a tensão de saída contra o inverso da distância, obténs uma relação maioritariamente linear. Para distâncias > 100 cm obténs a seguinte curva.

GP2Y0A710K0F Output Characteristics Linear
Tensão de saída vs Número inverso da distância 1/L (1/cm)

Cálculo da Distância

Com base nos dados do datasheet da SHARP, podes calcular a função linear:

y = 137500x + 1125

Com y igual à tensão de saída em mV e x igual a 1/distância em cm.

Isto resulta na seguinte fórmula para a distância entre o sensor e um objeto:

distância (cm) = 1 / ((output_voltage_mV – 1125) / 137500)

Esta é a função usada na  biblioteca SharpIR , que usaremos mais tarde. Nota que esta função é baseada apenas nos dados do datasheet da SHARP. As características de saída do sensor podem variar ligeiramente de sensor para sensor, pelo que podes obter leituras imprecisas.

Especificações do GP2Y0A710K0F

Tensão de funcionamento 4,5 a 5,5 V
Corrente de funcionamento 30 mA
Intervalo de medição 100 a 550 cm
Tipo de saída Analógica
Dimensões 58 x 17,6 x 22,5 mm
Orifício de montagem 4,2 mm
Custo Check price

Para mais informações podes consultar o datasheet aqui.

Ligação do sensor IR GP2Y0A710K0F ao Arduino

O diagrama de ligação abaixo mostra como ligar o sensor de distância IR GP2Y0A710K0F a um Arduino.  Nota: as cores dos fios não são intuitivas!

GP2Y0A710K0F-IR-Distance-Sensor-Arduino-Wiring-Diagram-Schematic
Diagrama de ligação do sensor de distância IR GP2Y0A710K0F com Arduino

Este tipo de sensores de distância tende a ser um pouco ruidoso, por isso recomenda-se adicionar um condensador entre Vcc e GND. O datasheet sugere um condensador de 10 µF ou mais. Liga o terminal positivo do condensador ao fio Vcc e o terminal negativo ao fio GND (ver imagem). Os condensadores costumam ter uma faixa que indica o terminal negativo. O terminal positivo é geralmente mais longo que o negativo.

Ligações do GP2Y0A710K0F

GP2Y0A710K0F Arduino
1 (Vermelho) GND
2 (Preto) 5V
3 (Amarelo) 5V
4 (Verde) A0
5 (Azul) GND

Se o teu sensor tiver fios de cores diferentes, certifica-te de verificar o pinout abaixo. O pino Vo está ligado à entrada analógica do Arduino (A0).

GP2Y0A710K0F Pinout
Pinout do sensor de distância IR GP2Y0A710K0F

O conector do sensor não está marcado, a ordem dos pinos corresponde ao sensor com o logo virado para cima.

Agora que ligaste o sensor, é hora de ver algum código de exemplo.

Instalar a biblioteca SharpIR para Arduino

A biblioteca SharpIR, escrita por Guillaume Rico e Thibaut Mauon, facilita muito o trabalho com sensores IR SHARP. Inclui as fórmulas necessárias para converter a tensão de saída medida numa distância em centímetros. Atualmente, a biblioteca suporta os seguintes sensores: GP2Y0A02YK0F, GP2Y0A21YK0F, GP2Y0A710K0F e GP2YA41SK0F. A versão mais recente da biblioteca pode ser descarregada aqui em GitHub ou clica no botão abaixo.

Podes instalar a biblioteca indo a Sketch > Include Library > Add .ZIP Library no IDE do Arduino.

Installing an Arduino library ZIP
Instalar uma biblioteca Arduino em .ZIP.

O autor da biblioteca notou que as leituras do sensor podem oscilar bastante. A biblioteca resolve este problema fazendo várias leituras seguidas, descartando valores fora do padrão e calculando a média para obter uma leitura de distância mais estável. Atualmente, a biblioteca calcula a média de 25 leituras, o que demora cerca de 53 ms.

Código de exemplo para o sensor de distância IR SHARP GP2Y0A710K0F com Arduino

O código de exemplo abaixo pode ser usado com o sensor GP2Y0A710K0F e mostra a distância medida em centímetros no monitor serial.

Podes copiar o código clicando no botão no canto superior direito do campo de código.

/*SHARP GP2Y0A710K0F IR distance sensor with 
  Arduino and SharpIR library example code. 
  More info: https://www.makerguides.com */

// Include the library:
#include "SharpIR.h"

// Define model and input pin:
#define IRPin A0
#define model 100500

// Variable to store the distance
int distance_cm;

/* Model :
  GP2Y0A02YK0F --> 20150
  GP2Y0A21YK0F --> 1080
  GP2Y0A710K0F --> 100500
  GP2YA41SK0F  --> 430
*/

// Create a new instance of the SharpIR class
SharpIR mySensor = SharpIR(IRPin, model);

void setup() {
  // Serial communication at a baud rate of 9600
  Serial.begin(9600);
}

void loop() {
  // Get a distance measurement and store it as distance_cm
  distance_cm = mySensor.distance();

  // Print the measured distance to the serial monitor
  Serial.print("Mean distance: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(1000);
}

Nota que neste exemplo chamámos o sensor de mySensor. Se quiseres usar vários sensores de distância IR, podes criar outro objeto sensor com um nome diferente:  SharpIR mySensor2 = SharpIR(IRPin2, model);  Nota que nesse caso também usas um pino de entrada diferente para o segundo sensor.

Quando a tensão de saída estiver abaixo de 1,4 V ou acima de 3,3 V, verás “Mean distance: 0 cm” no monitor serial.

Conclusão

Neste artigo, mostrei como funciona o sensor de distância IR SHARP GP2Y0A710K0F e como podes usá-lo com Arduino. Espero que tenhas achado útil e informativo. Se sim, partilha com um amigo que também goste de eletrónica!

Sente-te à vontade para deixar qualquer pergunta na secção de comentários.