fbpixel
Etiquetas:, , ,
0
(0)

O sensor de distância GP2Y0A21 é um sensor infravermelho da Sharp que pode detectar obstáculos localizados a distâncias entre 10 e 80cm.
Este sensor infravermelho existe em várias versões com características e desempenhos diferentes. O tutorial a seguir é válido para a maioria delas, desde que se modifique a regra de conversão (Exemplo de versão: GP2Y0A02, GP2Y0A710).

Material

  • Computador
  • Arduino UNO
  • Cabo USB A/B
  • GP2Y0A21

Princípio de funcionamento

Os sensores de distância por infravermelho utilizam luz infravermelha para calcular a distância de um objeto por triangulação. Um LED infravermelho envia um sinal luminoso invisível a olho nu, que é refletido na presença de um objeto. Uma faixa fotorresistente capta a luz refletida e deduz a partir dela o ângulo de reflexão e, por consequência, a distância. O sensor devolve um valor analógico entre 0 e 5V.

Esquema

O sensor de distância GP2Y0A21 é alimentado por 5V. O pino Vcc do sensor pode ser ligado ao pino 5V do microcontrolador; o pino GND, à terra do microcontrolador; e o sinal é ligado a uma entrada analógica do microcontrolador.
O GP2Y0A21 pode ser ligado conforme o diagrama a seguir.

schéma de cablâge arduino uno capteur de distance GP2Y0A21

Código

Para exibir o valor físico do sensor, é preciso conhecer a regra de conversão. A fim de ter um código limpo e legível, é preferível inseri-lo numa subfunção. Assim, criamos uma função que se encarrega de ler o valor do sensor e convertê-lo num valor físico.
Em seguida, lemos o valor bruto do sensor usando a função analogRead(), e depois convertemos este valor em centímetros para informação. Para determinar a presença de um obstáculo, definimos um limite de 200 abaixo do qual um objeto é considerado detectado.

Para utilizar o objeto GP2Y0A21, utilizamos o seguinte código:

//Parameters
const int gp2y0a21Pin  = A0;

//Variables
int gp2y0a21Val  = 0;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init ditance ir
  pinMode(gp2y0a21Pin, INPUT);
}

void loop() {
  testGP2Y0A21();
}

void testGP2Y0A21( ) { /* function testGP2Y0A21 */
  ////Read distance sensor
  gp2y0a21Val = analogRead(gp2y0a21Pin);
  Serial.print(gp2y0a21Val); Serial.print(F(" - ")); Serial.println(distRawToPhys(gp2y0a21Val));
  if (gp2y0a21Val < 200) {
    Serial.println(F("Obstacle detected"));
  } else {
    Serial.println(F("No obstacle"));
  }
}

int distRawToPhys(int raw) { /* function distRawToPhys */
  ////IR Distance sensor conversion rule
  float Vout = float(raw) * 0.0048828125; // Conversion analog to voltage
  int phys = 13 * pow(Vout, -1); // Conversion volt to distance

  return phys;
}


Aplicações

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?