ultraljud range finders är roliga små sensorer som kan mäta avstånd. Du kan använda dem för att hitta avståndet till ett objekt, eller för att upptäcka när något är nära sensorn som en rörelsedetektor. De är idealiska för projekt som involverar navigering, objektundvikande och hemsäkerhet. Eftersom de använder ljud för att mäta avstånd, fungerar de lika bra i mörkret som de gör i ljuset., Ultraljuds range finder jag kommer att använda i denna handledning är HC-SR04, som kan mäta avstånd från 2 cm upp till 400 cm med en noggrannhet på ±3 mm.
i den här artikeln ska jag visa dig hur man gör tre olika range finder kretsar för Arduino. Den första range finder kretsen är lätt att ställa in, och har ganska bra noggrannhet. De andra två är lite mer komplicerade, men är mer exakta eftersom de faktor i temperatur och fuktighet. Men innan vi kommer in i det, låt oss prata om hur range finder mäter avstånd.,
ljudets hastighet
ultraljudsintervallfinnare mäter avståndet genom att emittera en puls av ultraljudsljud som färdas genom luften tills det träffar ett objekt. När ljudets puls träffar ett objekt reflekteras det av objektet och reser tillbaka till ultraljudsintervallet., Ultraljuds range finder mäter hur lång tid det tar ljudpulsen att resa i sin tur resa från sensorn och tillbaka. Det skickar sedan en signal till Arduino med information om hur lång tid det tog för sonic pulse att resa.
att veta den tid det tar ultraljudspulsen att resa fram och tillbaka till objektet, och även veta ljudets hastighet, kan Arduino beräkna avståndet till objektet., Formeln som rör ljudets hastighet, avståndet och tiden som reste är:
omarrangera denna formel får vi formeln som används för att beräkna avstånd:
tidsvariabeln är den tid det tar för ultraljudspulsen att lämna sensorn, studsa av objektet och återgå till sensorn., Vi delar faktiskt den här tiden i hälften eftersom vi bara behöver mäta avståndet till objektet, inte Avståndet till objektet och tillbaka till sensorn. Hastighetsvariabeln är den hastighet med vilken ljudet färdas genom luften.
ljudets hastighet i luftförändringar med temperatur och fuktighet. Därför, för att exakt beräkna avståndet, måste vi överväga omgivningstemperaturen och luftfuktigheten., Formeln för ljudets hastighet i luft med temperatur och fuktighet som står för är:
till exempel vid 20°C och 50% fuktighet färdas ljudet med en hastighet av:
i ekvationen ovan är det uppenbart att temperaturen har störst effekt på ljudets hastighet. Luftfuktigheten har visst inflytande, men det är mycket mindre än effekten av temperaturen.,
hur Ultraljuds Range Finder mäter avstånd
på framsidan av ultraljuds range finder är två metallcylindrar. Det här är givare. Givare omvandlar mekaniska krafter till elektriska signaler. I ultraljudsintervallet finder finns en sändande givare och mottagande givare. Den sändande givaren omvandlar en elektrisk signal till ultraljudspulsen, och den mottagande givaren omvandlar den reflekterade ultraljudspulsen tillbaka till en elektrisk signal., Om du tittar på baksidan av range finder, kommer du att se en IC bakom den sändande givaren märkt MAX3232. Detta är IC som styr den sändande givaren. Bakom den mottagande givaren finns en IC märkt LM324. Detta är en Quad Op-Amp som förstärker signalen som genereras av mottagargivaren till en signal som är stark nog att överföra till Arduino.,
HC-SR04 ultrasonic range finder har fyra stift:
- VCC – levererar kraften för att generera ultraljudspulserna
- GND – ansluten till marken
- Trig – där Arduino skickar signalen för att starta ultrasonic Pulse
- Echo – där ultrasonic range finder skickar information om varaktigheten av resan som tas av ultraljudspulsen till Arduino
för att initiera en avståndsmätning måste vi skicka en 5V hög signal till Trig-stiftet i minst 10 µs., När modulen tar emot denna signal kommer den att avge 8 pulser ultraljudsljud med en frekvens av 40 KHz från den sändande givaren. Sedan väntar och lyssnar den på mottagargivaren för den reflekterade signalen. Om ett objekt ligger inom räckhåll kommer de 8 pulserna att reflekteras tillbaka till sensorn. När pulsen träffar mottagargivaren matar Eko-stiftet ut en högspänningssignal.
längden på denna högspänningssignal är lika med den totala tiden de 8 pulserna tar för att resa från den sändande givaren och tillbaka till den mottagande givaren., Men vi vill bara mäta avståndet till objektet, och inte Avståndet till den väg som ljudpulsen tog. Därför delar vi den tiden i hälften för att få tidsvariabeln I d = s x t-ekvationen ovan. Eftersom vi redan vet ljudets hastighet kan vi lösa ekvationen för avstånd.
ultraljud Range Finder Setup för seriell Monitor utgång
låt oss börja med att göra en enkel ultraljud range finder som kommer att mata avståndsmätningar till din seriella bildskärm. Om du vill mata ut avläsningarna till en LCD istället, kolla in nästa avsnitt., Att ansluta allt är enkelt, bara koppla upp det så här:
När du har allt anslutet, ladda upp det här programmet till Arduino:
förklaring av koden
- linje 11: deklarerar variablerna
duration
ochdistance
. - linjer 12 och 13: skickar en 2 µs låg signal till
trigPin
för att se till att den är avstängd i början av programslingan., - Linjerna 15-17: Skickar en 10 µs HÖG signal till
trigPin
för att starta sekvensen av åtta 40 KHz ultraljudspulser som skickas från den sändande givaren. - linje 19: definierar variabeln
duration
som längden (i µs) för en hög ingångssignal som detekterats videchoPin
. Eko-stiftutgången är lika med den tid det tar den utsända ultraljudspulsen att resa till objektet och tillbaka till sensorn., - linje 20: definierar variabeln
distance
som varaktighet (tid i d = s x t) multiplicerad med ljudets hastighet konverterad från meter per sekund till centimeter per µs (0,0344 cm/µs). - linjer 22-24: om avståndet är större än eller lika med 400 cm, eller mindre än eller lika med 2 cm, visa ”Distance = out of range” på den seriella bildskärmen.
- linjer 26-30: om avståndsmätningen inte är utom räckvidd, visa avståndet beräknat i linje 20 på den seriella bildskärmen för 500 ms.,
Ultrasonic Range Finder med LCD-utgång
om du vill mata ut avståndsmätningarna till en 16X2 LCD, följ det här diagrammet för att ansluta range finder och LCD till din Arduino:
om du behöver mer hjälp med att ansluta LCD, Prova vår andra handledning om att ställa in en LCD på Arduino., När allt är anslutet, ladda upp den här koden till Arduino:
en högre noggrannhet ultraljud Range Finder
eftersom temperaturen är en variabel i ljudekvationen ovan (C = 331.4 + (0.606 x t) + (0.0124 x H)), temperaturen på luften runt sensorn påverkar våra avståndsmätningar. För att kompensera för detta behöver vi bara lägga till en termistor i vår krets och mata in dess avläsningar i ekvationen. Detta bör ge våra avståndsmätningar större noggrannhet., En termistor är ett variabelt motstånd som ändrar motstånd med temperatur. Om du vill veta mer om termistorer, kolla in vår artikel, Arduino Thermistor temperatursensor Tutorial. Här är ett diagram som hjälper dig att lägga till en termistor till din range finder krets:
- r1 = 10K Ohm motstånd
- Th = 10K Ohm termistor
notera: värdet på din termistor är av R1 bör motsvara motståndet hos din termistor.,
När allt är anslutet, ladda upp den här koden till Arduino:
förklaring av koden
i basic range finder-programmet i början av den här artikeln använde vi formeln D = S x T för att beräkna avståndet. I det här programmet använder vi formeln som står för temperatur och fuktighet (c = 331.4 + (0.606 x t) + (0.0124 x H)).
i rader 5-10 används Steinhart-Hart-ekvationen för att omvandla termistormotståndsvärdena till temperatur, vilka lagras i en variabel som heter temp
., I linje 35 lägger vi till en ny variabel (spdSnd
) som innehåller ljudekvationshastigheten. Utmatningen frånspdSnd
– variabeln används som hastigheten idistance
– funktionen på rad 36.
den mycket höga (nästan för hög) noggrannhet ultraljud Range Finder
temperaturkompenserad ultraljud range finder krets är ganska exakt för vad de flesta människor kommer att använda den för. Det finns dock en annan faktor som påverkar ljudets hastighet i luften (och därmed avståndsberäkningen), och det är fuktighet., Du kan berätta från ljudets hastighet ekvation att luftfuktigheten bara har en liten effekt på ljudets hastighet, men låt oss kolla in det ändå.
det finns flera typer av fuktsensorer du kan använda på Arduino, men jag kommer att använda DHT11 luftfuktighet och temperatursensor. Denna modul har faktiskt en termistor utöver fuktighetsgivaren, så inställningen är väldigt enkel:
När allt är anslutet måste vi installera ett speciellt bibliotek för att köra koden., Biblioteket är DHTLib bibliotek skrivet av Rob Tillaart. Biblioteket är lätt att installera. Först ladda ner .zip-fil nedan. Sedan i Arduino IDE, gå till Sketch>inkludera Bibliotek>Lägg till ZIP-bibliotek och välj sedan DHTLib.zip-fil.,
DHTLib
när biblioteket är installerat, ladda upp den här koden till din Arduino:
förklaring av koden
temperatur-och fuktighetsavläsningarna som matas ut av DHT11 är digitala, så vi behöver inte använda Steinhart-Hart-ekvationen för att konvertera termistorns motståndskraft mot temperatur. DHTLib-biblioteket innehåller alla funktioner som behövs för att få temperaturen och luftfuktigheten i enheter som vi kan använda direkt i ljudekvationshastigheten. Variablerna för temperatur och fuktighet heter DHT.temperature
och DHT.humidity
., Därefter används hastigheten som en variabel i avståndsekvationen på linje 28.
för att mata ut avståndsmätningar till en LCD, först ansluta din LCD efter vår handledning hur du ställer in en LCD-skärm på en Arduino, sedan ladda upp denna kod:
titta på video tutorial för att se ultraljuds range finder kretsar i aktion:
Tack för att du läste! Lämna en kommentar om du har några frågor om hur du ställer in dessa., Om du gillar våra artiklar här på Circuit Basics, prenumerera och vi meddelar dig när vi publicerar nya artiklar. Också, om du känner någon annan som skulle hitta den här artikeln till hjälp, vänligen dela den!