Project 5 Ultrasone Sensor
1.Beschrijving

De HC-SR04 ultrasone sensor gebruikt sonar om de afstand tot een object te bepalen, zoals vleermuizen dat doen. Het biedt uitstekende contactloze afstandsdetectie met hoge nauwkeurigheid en stabiele metingen in een gebruiksvriendelijk pakket. Het wordt geleverd met een ultrasone zender- en ontvangermodules.

De HC-SR04 of ultrasone sensor wordt gebruikt in een breed scala aan elektronica projecten voor het creëren van obstakeldetectie en afstandsmeettoepassingen, evenals diverse andere toepassingen. Hier hebben we een eenvoudige methode gebracht om de afstand te meten met Arduino en een ultrasone sensor en hoe je de ultrasone sensor met Arduino gebruikt.
2.Specificatie
Werkspanning :+5V DC
Ruststroom : <2mA
Werkstroom: 15mA
Effectieve hoek: <15°
Afstandsbereik : 2cm – 300 cm
Nauwkeurigheid : 0.3 cm
Meethoek: 30 graden
Trigger ingang pulsbreedte: 10uS

3.Componenten
Development Board *1 |
8833 Motor Driver *1 |
Rode LED Module*1 |
Ultrasone Sensor*1 |
|---|---|---|---|
|
|
|
|
4P Dupont Draad*1 |
USB Kabel*1 |
3P Dupont Draad*1 |
|
|
|
|
4.Werkingprincipe
Zoals op de bovenstaande afbeelding te zien is, lijkt het op twee ogen. Eén is de zendkant, de ander is de ontvangkant.
De ultrasone module zal ultrasone golven uitzenden na het triggeren van een signaal. Wanneer de ultrasone golven het object tegenkomen en worden teruggekaatst, geeft de module een echo signaal af, zodat het de afstand tot het object kan bepalen aan de hand van het tijdsverschil tussen het trigger signaal en het echo signaal.
De t is de tijd dat het uitgezonden signaal het obstakel ontmoet en terugkeert. En de voortplantingssnelheid van geluid in de lucht is ongeveer 343m/s, en afstand = snelheid * tijd. Echter, de ultrasone golf wordt uitgezonden en komt terug, wat 2 keer de afstand is. Daarom moet het gedeeld worden door 2, de afstand gemeten door ultrasone golf = (snelheid * tijd)/2.
Gebruiksmethode en schema van ultrasone module:
Gebruik de GPIO pin om een hoog signaal van minstens 10μs te geven aan de Trig pin van SR04, waarmee het getriggerd kan worden om afstand te detecteren.
Na het triggeren zal de module automatisch acht 40KHz ultrasone pulsen uitzenden en detecteren of er een signaal terugkomt. Deze stap wordt automatisch door de module uitgevoerd.
Als het signaal terugkomt, zal de Echo pin een hoog niveau afgeven, en de duur van het hoge niveau is de tijd vanaf het uitzenden van de ultrasone golf tot de terugkeer.

Schema van ultrasone sensor:

5.Aansluitschema

VCC, Trig, Echo en Gnd van de ultrasone sensor zijn verbonden met 5V(V), D12, D13 en Gnd(G)
6.Testcode
//***************************************************************************
/*
keyestudio 4wd BT Car
lesson 5.1
Ultrasonic Sensor
http://www.keyestudio.com
*/
int trigPin = 12; // Trigger
int echoPin = 13; // Echo
long duration, cm, inches;
void setup() {
//Seriële poort starten
Serial.begin (9600);
//Definieer ingangen en uitgangen
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// De sensor wordt geactiveerd door een HIGH-puls van 10 microseconden of langer.
// Geef vooraf een korte LOW-puls om een schone HIGH-puls te garanderen:
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lees het signaal van de sensor: een HIGH-puls waarvan de
// duur de tijd is (in microseconden) vanaf het verzenden
// van de ping tot de ontvangst van de echo van een object.
duration = pulseIn(echoPin, HIGH);
// Zet de tijd om in een afstand
cm = (duration/2) / 29.1; // Delen door 29.1 of vermenigvuldigen met 0.0343
inches = (duration/2) / 74; // Delen door 74 of vermenigvuldigen met 0.0135
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}
//***************************************************************************
7.Testresultaat
Na het succesvol uploaden van de code naar de V4.0 board, verbind de bedrading volgens het bedradingsschema, en sluit vervolgens de computer via een USB-kabel aan om de board van stroom te voorzien. Na het inschakelen, open de seriële monitor en stel de baudrate in op 9600.
De gedetecteerde afstand wordt weergegeven, en de eenheden zijn cm en inch. Houd de ultrasonic sensor met de hand tegen, dan wordt de weergegeven afstand kleiner.

8.Codeuitleg
int trigPin- deze pin is gedefinieerd om ultrasone golven te verzenden, meestal output.
int echoPin - deze is gedefinieerd als de pin voor ontvangst, meestal input.
cm = (duration/2) / 29.1-
inches = (duration/2) / 74-
We kunnen de afstand berekenen met de volgende formule:
afstand = (reistijd/2) x geluidssnelheid
De geluidssnelheid is: 343m/s = 0.0343 cm/us = 1/29.1 cm/us
Of in inches: 13503.9in/s = 0.0135in/us = 1/74in/us
We moeten de reistijd delen door 2 omdat we rekening moeten houden met het feit dat de golf werd verzonden, het object raakte en vervolgens terugkeerde naar de sensor.
9.Uitbreidingspraktijk
We hebben zojuist de afstand gemeten die door de ultrasonic wordt weergegeven. Wat dacht je ervan om de LED te besturen met de gemeten afstand? Laten we het proberen en een LED-lichtmodule aansluiten op pin D9.

//*****************************************************************
/*
keyestudio 4wd BT Car
les 5.2
Ultrasonic LED
http://www.keyestudio.com
*/
int trigPin = 12; // Trigger
int echoPin = 13; // Echo
long duration, cm, inches;
void setup() {
Serial.begin (9600); // Seriële poort starten
pinMode(trigPin, OUTPUT); // Definieer inputs en outputs
pinMode(echoPin, INPUT);
}
void loop()
{
// De sensor wordt geactiveerd door een HIGH-puls van 10 microseconden of langer.
// Geef vooraf een korte LOW-puls om een schone HIGH-puls te garanderen:
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lees het signaal van de sensor: een HIGH-puls waarvan de
// duur de tijd is (in microseconden) vanaf het verzenden
// van de ping tot de ontvangst van de echo van een object.
duration = pulseIn(echoPin, HIGH);
// Zet de tijd om in een afstand
cm = (duration/2) / 29.1; // Delen door 29.1 of vermenigvuldigen met 0.0343
inches = (duration/2) / 74; // Delen door 74 of vermenigvuldigen met 0.0135
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
if (cm>=2 && cm<=10)
{
Serial.println("HIGH");
digitalWrite(9, HIGH);
}
else
{
Serial.println("LOW");
digitalWrite(9, LOW);
}
}
//*****************************************************************
Na het succesvol uploaden van de code naar de V4.0 board, verbind de bedrading volgens het bedradingsschema, en sluit vervolgens de computer via een USB-kabel aan om de board van stroom te voorzien. Na het inschakelen, blokkeer de ultrasonic sensor met de hand (de afstand is tussen 2-10cm), en controleer of de LED aan gaat.





