Soms is het nodig Meet afstanden en daarvoor heb je verschillende sensoren tot je beschikking. We hebben al een artikel gewijd om over een te praten zeer nauwkeurige afstandssensor zoals de VL52L0X. Deze sensor was van het ToF-type en was dankzij zijn laser gebaseerd op zeer nauwkeurige metingen. Maar als precisie niet zo belangrijk voor je is en je iets wilt waarmee je tegen een lage prijs afstanden kunt meten, dan is dat nog een mogelijkheid je hebt binnen handbereik is de HC-SR04.
Bij HC-SR04 afstandssensor, afstand wordt gemeten door middel van echografie. Het systeem is vergelijkbaar met de optische methode van de VL52L0X. Dat wil zeggen, het wordt uitgezonden, er is een stuitering en het wordt ontvangen, maar in dit geval is het in plaats van een laser of IR te zijn, echografie. Als je een passie hebt voor elektronica, robotica of amateurmakers, kun je het gebruiken voor een groot aantal doe-het-zelfprojecten, zoals obstakeldetectiesystemen voor robots, aanwezigheidssensoren, enz.
Wat is de HC-SR04?
Nou, het is duidelijk, zoals ik al heb opgemerkt in de vorige paragrafen, De HC-SR04 is een afstandssensor met lage precisie op basis van echografie. Hiermee kunt u gemakkelijk en snel afstanden meten, hoewel het daar in principe niet voor wordt gebruikt. Meestal wordt het gebruikt als een transducer om obstakels te detecteren en deze te vermijden via andere mechanismen die verband houden met de reactie van de sensor.
Het uiterlijk van de HC-SR04 is zeer onderscheidend en gemakkelijk herkenbaar. Bovendien is het een vrij populair item in Arduino-starterkits en nodig voor een groot aantal projecten. Het is gemakkelijk te herkennen omdat het twee "ogen" heeft die in feite de ultrasone apparaten zijn die deze module integreert. Een daarvan is een ultrasone zender en de andere een ontvanger. Het werkt met een frequentie van 40 Khz, daarom is het onhoorbaar voor mensen.
Principes van ultrasone sensoren
Het principe waarin Het is gebaseerd op het simuleren van degene die wordt gebruikt wanneer u een steen in een put gooit om de diepte ervan te meten. Je gooit de steen en tijd hoe lang het duurt voordat hij op de bodem valt. Vervolgens doe je berekeningen van de snelheid voor de verstreken tijd en krijg je de afstand die de steen heeft afgelegd. Maar in dat geval ben jij de sensor.
In de HC-SR04 zal de zender ultrasoon geluid uitzenden en wanneer ze op een object of obstakel weerkaatsen op de manier waarop ze worden opgevangen door de ontvanger. De circuit zal de nodige berekeningen doen van die echo om de afstand te bepalen. Dit kan u ook bekend voorkomen als u het systeem kent dat sommige dieren, zoals dolfijnen, walvissen of vleermuizen, gebruiken om obstakels, prooien enz. Te lokaliseren.
Door de tijd te tellen sinds de puls is verzonden totdat het antwoord is ontvangen, kan de tijd en dus de afstand nauwkeurig worden bepaald. Onthoud dat [Ruimte = snelheidstijd] maar in het geval van de HC-SR04 moet u deze hoeveelheid delen door / 2, aangezien de tijd is gemeten vanaf het moment waarop de echografie naar buiten komt en door de ruimte reist totdat deze het obstakel raakt en de weg terug, dus het zal ongeveer de helft hiervan ...
Pinout en datasheets
Je weet al dat het het beste is om de volledige gegevens van het model dat je hebt verkregen te zien vind de datasheet beton van de fabrikant. Hier is bijvoorbeeld een Sparkfun-gegevensblad, maar er zijn er nog veel meer beschikbaar in pdf. Hier zijn echter de belangrijkste technische gegevens van de HC-SR04:
- Pinout: 4 pinnen voor stroom (Vcc), trigger (Trigger), ontvanger (Echo) en aarde (GND). De trigger geeft aan wanneer de sensor moet worden geactiveerd (wanneer de echografie wordt gelanceerd), en dus is het mogelijk om de verstreken tijd te kennen wanneer de ontvanger het signaal ontvangt.
- voeden: 5v
- Ultrasone frequentie: 40 Khz, het menselijk oor kan alleen horen van 20Hz tot 20 Khz. Alles onder de 20 Hz (infrageluid) en boven de 20 kHz (echografie) zal niet waarneembaar zijn.
- Verbruik (stand-by): <2mA
- Verbruik werkend: 15 mA
- Effectieve hoek: <15º, afhankelijk van de hoeken van de objecten krijgt u mogelijk betere of slechtere resultaten.
- Gemeten afstand: van 2 cm tot 400 cm, hoewel vanaf 250 cm de resolutie niet erg goed zal zijn.
- Middelgrote resolutie: 0.3 cm variatie tussen de werkelijke afstand en de meting, dus ondanks dat ze niet als zeer nauwkeurig worden beschouwd zoals laser, zijn de metingen redelijk acceptabel voor de meeste toepassingen.
- Prijs: vanaf ongeveer € 0,65
Integratie met Arduino
naar het aansluiten op Arduino kan niet eenvoudiger. U hoeft alleen de GND aan te sluiten op de overeenkomstige uitgang van uw Arduino die als zodanig is gemarkeerd, Vcc met de Arduino 5v-voeding en de andere twee pinnen van de HC-SR04 met de ingangen / uitgangen die voor uw project zijn gekozen. Je kunt zien dat het eenvoudig is in het bovenste Fritzing-schema ...
Je hoeft maar één overweging te hebben, dat de tigger een elektrische puls van minstens 10 microseconden moet ontvangen om goed te kunnen activeren. Voorheen moest u ervoor zorgen dat het een LAGE waarde heeft.
Wat betreft code voor Arduino IDE, hoeft u geen enkele bibliotheek of iets dergelijks te gebruiken met andere componenten. Maak gewoon de formule om de afstand te berekenen en weinig anders ... Als u wilt dat uw project iets doet als reactie op de meting van de HC-SR04-sensor, moet u natuurlijk de code toevoegen die u nodig hebt. In plaats van simpelweg de metingen op de console weer te geven, kunt u servomotoren bijvoorbeeld over bepaalde afstanden in de ene of de andere richting laten bewegen om het obstakel te vermijden, of om een motor te laten stoppen, een alarm te laten afgaan wanneer deze nadert, enz. .
Meer informatie over programmeren: Arduino-handleiding (gratis pdf)
U kunt dit bijvoorbeeld zien basiscode om als basis te gebruiken:
//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger const int EchoPin = 8; const int TriggerPin = 9; void setup() { Serial.begin(9600); pinMode(TriggerPin, OUTPUT); pinMode(EchoPin, INPUT); } //Aquí la muestra de las mediciones void loop() { int cm = ping(TriggerPin, EchoPin); Serial.print("Distancia medida: "); Serial.println(cm); delay(1000); } //Cálculo para la distancia int ping(int TriggerPin, int EchoPin) { long duration, distanceCm; digitalWrite(TriggerPin, LOW); //para generar un pulso limpio ponemos a LOW 4us delayMicroseconds(4); digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us delayMicroseconds(10); digitalWrite(TriggerPin, LOW); duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en microsegundos distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm return distanceCm; }
Ik vond de uitleg erg handig en eenvoudig.