Mini proiect (8) - Evitarea de obstacole folosind senzorul FC-51 IR infrarosu

Descriere proiect: Evitarea de obstacole folosind senzorul FC-51 IR infraroșu
Senzorul IR FC-51 este capabil să distingă obiecte obstacol la o distanta de minim 2 cm si maxim 30 cm, deci este perfect pentru roboti. Dacă de exemplu acest robot ar trebui să ajungă din punctul A in punctul B, pentru orientarea la distante foarte mici pentru evitarea obiectelor de pana la 30 cm, atunci acest senzor seteaza semnalul obiect detectat si aprinde LED-ul (vezi imaginea de mai jos). Este foarte ușor de folosit, pentru ca are nevoie doar de VCC (+5v), GND si un port digital de la Arduino. Mai mult pentru o finețe și mai bună această placă are încorporat un potentiometru care poate regla distanta maxim la care se seteaza semnalul.
In imaginea de mai jos se observa emițătorul IR activ. Această fotografie a fost realizată cu telefonul mobil a cărei cameră nu dispune de filtru infrared, din această cauză se observa o lumina slaba violeta. In mod normal ochiul uman nu distinge nimic din spectrul infraroșu, dar cu ajutorul camerei de luat vederi se pot vizualiza pulsurile infraroșii.


Documentație proiect:
senzorul IR FC-51

Componente:
Senzor infrarosu IR FC-51:
-Operation Voltage - 3.3V - 5V
-Detection Angle -35 degrees
-Active Output level - Outputs Low logic level when obstacle is detected
-Detection range: 2cm – 30cm (Adjustable using potentiometer)
-Atmega2560-Mega2560-Board


Schema electronica/sistem:
- VCC - 3.3V-5V DC power input
- GND -0V Power pin
- OUT - Digital Output Pin


Cod de test pentru semnalizarea obstacolului:
int irSenRead =8;
int isObstacle = HIGH;
int LED=6;

void setup() {

  pinMode(irSenRead ,INPUT);
  pinMode(LED ,OUTPUT);
  Serial.begin(9600);
}

void loop() {

  isObstacle = digitalRead(irSenRead); // // Read IR sensor output
   Serial.println(digitalRead(irSenRead)); // // print the output

  // // isObstacle ==low there is obstacle infront of sensor
  // // using serial monitor we can see this output
  if (isObstacle == LOW) {
    Serial.println("OBSTACLE");
    digitalWrite(LED ,HIGH);
  }
  else
  {
    Serial.println("NO");
    digitalWrite(LED ,LOW);
  }

  delay(500);
}
Citirea receptorului IR folosind biblioteca IRemote:
/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include "IRremote.h"

int RECV_PIN = 8;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}
Weekend plăcut tuturor !

Etichete

Afișați mai multe

Arhiva

Afișați mai multe