Connectar un sensor de distància d'ultrasons a l'Arduino
Malgrat el nom que té, un detector de distància d'ultrasons es un dels components més clàssics d'Arduino, sobretot si estem interessats en la robòtica. Com el sou propi nom indica, aquest sensor detecta distàncies mitjançant ultrasons i permet, per exemple, detectar la distancia d'un mur o d'una mà. Com veurem, és un sensor força senzill d'usar i fàcil d'aconseguir.
Com és connecta
El sensor té 4 pins:- VCC: entrada de voltatge. Va directe a 5V de l'arduino
- Trig: abreviació de "Trigger" (disparador en català), és el pin que es fa servir per indicar al sensor que emeti ultrasons. En aquest cas el connectarem al 7.
- Echo: pin per rebre l'eco de l'ultrasò i calcular la distancia. En aquest cas el connectarem al 8.
- GND: ground. Va directe a l'arduino
Esquema de la connexió (imatge feta amb Fritzing)
Com funciona
La principal dificultat d'aquest sensor es saber com funciona. Per sort hi ha gent mola eixerida que ho ha fet abans i ho documenta millor que aquest bloc (concretament el bloc de Arduino Basics). L'algorisme a grans trets és el següent:- Posem el LOW el pin Trigger per garantis que no estiguéssim emeten
- Esperem una estona prudencial per evitar ultrasons residuals (2 microsegons)
- Posem el trigger a HIGH per emetre ultrasons
- Esperem una estona per permetre el rebot (10 microsegons)
- Posem de nou el trigger a LOW per deixar d'emetre
- agafem el resultat del pin Echo amb la funció pulseIn
- Calculem la distància dividint per la velocitat del so (en serio). Això sona molt difícil però realment es dividir el resultat del pas anterior per 58.2
El següent exemple està directament agafat de la web de Arduino Basics. Concretament, llegeix la distància cada 50 milisegons i escriu el resultat al port serie.
/* HC-SR04 Ping distance sensor: VCC to arduino 5v GND to arduino GND Echo to Arduino pin 7 Trig to Arduino pin 8 This sketch originates from Virtualmix: http://goo.gl/kJ8Gl Has been modified by Winkle ink here: http://winkleink.blogspot.com.au/2012/05/arduino-hc-sr04-ultrasonic-distance.html And modified further by ScottChere: http://arduinobasics.blogspot.com.au/2012/11/arduinobasics-hc-sr04-ultrasonic-sensor.html on 10 Nov 2012. */ #define echoPin 7 // Echo Pin #define trigPin 8 // Trigger Pin #define LEDPin 13 // Onboard LED int maximumRange = 200; // Maximum range needed int minimumRange = 0; // Minimum range needed long duration, distance; // Duration used to calculate distance void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LEDPin, OUTPUT); // Use LED indicator (if required) } void loop() { /* The following trigPin/echoPin cycle is used to determine the distance of the nearest object by bouncing soundwaves off of it. */ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); //Calculate the distance (in cm) based on the speed of sound. distance = duration/58.2; if (distance >= maximumRange || distance <= minimumRange){ /* Send a negative number to computer and Turn LED ON to indicate "out of range" */ Serial.println("-1"); digitalWrite(LEDPin, HIGH); } else { /* Send the distance to the computer using Serial protocol, and turn LED OFF to indicate successful reading. */ Serial.println(distance); digitalWrite(LEDPin, LOW); } //Delay 50ms before next reading. delay(50); }
NOTA: el codi font ha sigut formatejat amb hilite.me
Cap comentari:
Publica un comentari a l'entrada