Ultralyd rekkevidde finders er morsomme små sensorer som kan måle avstand. Du kan bruke dem til å finne avstanden til et objekt, eller til å oppdage når noe er i nærheten av sensoren som en bevegelsesdetektor. De er ideelle for prosjekter som involverer navigasjon, objekt unngåelse, og sikkerhet i hjemmet. Fordi de bruker lyd for å måle avstand, de fungerer like bra i mørke, som de gjør i lyset., Ultralyd range finder jeg skal bruke i denne opplæringen er HC-SR04, som kan måle avstander i forhold til 2 cm opp til 400 cm med en nøyaktighet på ±3 mm.
I denne artikkelen, vil jeg vise deg hvordan å lage tre forskjellige range finder kretser for Arduino. Den første range finder krets er enkel å sette opp, og har ganske god nøyaktighet. De to andre er litt mer komplisert, men det er mer nøyaktig fordi de faktor i temperatur og fuktighet. Men før vi kommer inn i det, la oss snakke om hvordan de range finder måler avstand.,
lydens Hastighet
Ultralyd rekkevidde finders måle avstand med og skaper en puls av ultrasonisk lyd som reiser gjennom luften før den treffer et objekt. Når som puls av lyd treffer en gjenstand, er det reflekteres av objektet og reiser tilbake til ultralyd range finder., Ultralyd range finder måler hvor lang tid det tar lyden puls til å reise i sin tur / retur reise fra sensoren og tilbake. Det sender et signal til Arduino med informasjon om hvor lang tid det tok for sonic pulse å reise.
å Vite hvor lang tid det tar ultralyd puls for å reise frem og tilbake til objekt, og også vite lydens hastighet, Arduino kan beregne avstanden til objektet., Formelen om lydens hastighet, avstand, tid og reist er:
Omorganisere denne formelen, får vi formelen som brukes til å beregne avstand:
Den tid variabelen er den tiden det tar for ultralyd puls for å la sensoren, sprette av objektet, og gå tilbake til sensoren., Vi har faktisk dele denne gang i halv siden vi bare trenger å måle avstanden til objektet, ikke avstanden til objektet og tilbake til sensoren. Hastigheten variabel er hastigheten som lyden beveger seg gjennom luften.
lydens hastighet i luft endres med temperatur og luftfuktighet. Derfor, for å nøyaktig beregne avstand, må vi vurdere omgivelsestemperatur og luftfuktighet., Formelen for lydens hastighet i luft med temperatur og luftfuktighet sto for er:
For eksempel, ved 20°C og 50% luftfuktighet, lyd reiser med en hastighet på:
I ligningen ovenfor, er det klart at temperaturen har den største effekten på lydens hastighet. Fuktighet ikke har noen innflytelse, men det er mye mindre enn effekten av temperatur.,
Hvordan Ultralyd Range Finder Måler Avstand
På forsiden av ultralyd range finder er to metall sylindere. Disse er transdusere. Transdusere konvertere mekaniske krefter, til elektriske signaler. I ultralyd range finder, det er en overføring av svinger og motta svinger. Den overførende svinger konverterer et elektrisk signal til ultralyd puls, og motta svinger konverterer reflektert ultralyd puls tilbake til et elektrisk signal., Hvis du ser på baksiden av range finder, vil du se en IC bak overføring av svingeren merket MAX3232. Dette er IC som styrer overføring av svingeren. Bak motta svingeren er en IC-merket LM324. Dette er en quad Op-Amp som forsterker signalet som genereres av mottak svinger inn et signal som er sterkt nok til å overføre til Arduino.,
HC-SR04 ultralyd range finder har fire pinner:
- Vcc – leverer kraft til å generere ultralyd pulser
- GND – koblet til jord
- Trig – hvor Arduino sender signal til å starte ultralyd puls
- Echo – hvor ultralyd range finder sender informasjon om varigheten av turen tatt av ultralyd puls til Arduino
for Å starte en avstandsmåling, vi må sende en 5V høyt signal til de Trigonometriske pin for minst 10 µs., Når modulen mottar dette signalet, det vil avgi 8 pulser av ultrasonisk lyd med en frekvens på 40 KHz fra den overførende svinger. Så det venter og lytter på mottak svinger for det reflekterte signalet. Hvis et objekt er innen rekkevidde, 8 pulser vil bli reflektert tilbake til sensoren. Når pulsen treffer motta svinger, Echo pin-utganger en høy spenning signal.
lengden av dette høy spenning signal er lik den totale tiden 8 pulser ta å reise fra den overførende svinger og tilbake til den mottakende svinger., Men, vi bare ønsker å måle avstanden til objektet, og ikke avstand på banen lyden puls tok. Derfor, vi deler den tiden i to for å få tiden variabel i d = s x t ligningen ovenfor. Siden vi allerede vet lydens hastighet (s), kan vi løse ligningen for avstand.
Ultralyd Range Finder Oppsett for Serial Monitor Output
La oss starte ved å gjøre en enkel ultralyd range finder som vil output avstandsmålinger til din serial monitor. Hvis du ønsker å utgang målingene til en LCD-i stedet, sjekk ut den neste delen., Koble alt er lett, bare koble det opp som dette:
Når du har alt er koblet til, laster opp dette programmet til Arduino:
Forklaring av Koden
- Line 11: Erklærer variablene
duration
ogdistance
. - Linjene 12 og 13: Sender en 2 µs LAVT signal til
trigPin
for å kontrollere at den er slått av på begynnelsen av programmet loop., - Linjer 15-17: Sender en 10 µs HØYT signal til
trigPin
for å starte sekvensen av åtte 40 KHz ultralyd pulser som sendes fra den overførende svinger. - Linje 19: Definerer
duration
variabel som lengden (i µs) av HØY input-signal oppdages påechoPin
. Echo-pin utgang er lik den tiden det tar slippes ut ultralyd puls for å reise til objektet og tilbake til sensoren., - Line 20: Definerer
distance
variabel som lenge (tid i d = s x t) multiplisert med lydens hastighet konvertert fra meter per sekund å centimeter per µs (0.0344 cm/µs). - Linjer 22-24: Hvis avstanden er større enn eller lik 400 cm, eller mindre enn eller lik 2 cm, skjerm «- Avstand = Out of range» på serial monitor.
- Linjer 26-30: Hvis avstanden måling er ikke utenfor rekkevidde, vises avstanden beregnet i linje 20 på serial monitor for 500 ms.,
Ultralyd Range Finder Med LCD-Utgang
Hvis du ønsker å sende ut den avstandsmåling til et 16X2 LCD, følg dette diagrammet for å koble range finder og LCD-til Arduino:
Hvis du trenger mer hjelp til å koble LCD-skjermen, kan du prøve våre andre tutorial på å sette opp en LCD-skjermen på Arduino., Når alt er koblet til, laster opp denne koden for å Arduino:
En Høyere Nøyaktighet Ultralyd Range Finder
Siden temperaturen er en variabel i lydens hastighet ligningen ovenfor (c = 331.4 + (0.606 x T) + (0.0124 x H)), temperaturen på luften rundt sensor påvirker våre avstandsmålinger. For å kompensere for dette, er alt vi trenger å gjøre er å legge en termistor til vår krets og innspill sine målinger i ligningen. Dette skal gi våre avstandsmålinger større nøyaktighet., En termistor er en variabel motstand som endrer motstand med temperaturen. For å lære mer om thermistors, sjekk ut vår artikkel, Arduino Termistor Temperatur Sensor Opplæringen. Her er et diagram for å hjelpe deg med å legge en termistor til din range finder krets:
- R1 = 10K Ohm motstand
- Th = 10K Ohm termistor
Merk: verdien til R1 bør være lik motstand av termistor.,
Når alt er koblet til, laster opp denne koden for å Arduino:
Forklaring av Koden
I de grunnleggende range finder program i begynnelsen av denne artikkelen, har vi brukt formelen d = s x t for å beregne avstand. I dette programmet, bruker vi formelen som står for temperatur og luftfuktighet (c = 331.4 + (0.606 x T) + (0.0124 x H)).
I 5-10 linjer, den Steinhart-Hart ligningen brukes til å konvertere termistor motstand verdier for temperatur, som er lagret i en variabel kalt temp
., I tråd 35, legger vi til en ny variabel (spdSnd
) som inneholder lydens hastighet ligningen. Utdataene fra spdSnd
variabelen er brukt som hastigheten i distance
funksjon på linje 36.
Svært Høy (Nesten For Høy) Nøyaktighet Ultralyd Range Finder
Den temperatur kompensert ultralyd range finder krets er ganske nøyaktig for hva folk flest vil bruke den til. Men, det er en annen faktor som påvirker lydens hastighet i luft (og derfor avstand beregning), og det er fuktighet., Du kan fortelle fra lydens hastighet ligningen som fuktighet bare har en liten effekt på lydens hastighet, men kan sjekke det ut uansett.
Det finnes flere typer av fuktighet sensorer du kan bruke på Arduino, men jeg skal bruke DHT11 luftfuktighet og temperatur sensor. Denne modulen har faktisk en termistor i tillegg til fuktighet sensor, så det hele er veldig enkelt:
Når alt er koblet til, trenger vi å installere en spesiell biblioteket for å kjøre koden., Biblioteket er DHTLib bibliotek skrevet av Rob Tillaart. Biblioteket er lett å installere. Først, last ned .zip-filen nedenfor. Så i Arduino IDE, kan du gå til Skisse>Inkluderer Bibliotek>Legg til ZIP Bibliotek, og velg deretter DHTLib.zip-fil.,
DHTLib
Etter at biblioteket er installert, kan du laste opp denne koden til din Arduino:
Forklaring av Koden
temperatur og luftfuktighet målinger som er et resultat av DHT11 er digitale, så vi trenger ikke å bruke Steinhart-Hart ligningen for å konvertere termistor er motstand mot temperatur. Den DHTLib-biblioteket inneholder alle funksjoner som trengs for å få temperaturen og fuktigheten i enheter som vi kan bruke direkte i lydens hastighet ligningen. Variablene for temperatur og luftfuktighet er oppkalt DHT.temperature
og DHT.humidity
., Så, hastighet brukes som en variabel i det fjerne ligningen på linje 28.
Til utgang avstanden målinger til en LCD-skjermen, må du først koble din LCD-etter vår tutorial Hvordan å Sette Opp en LCD-Skjerm på en Arduino, så last opp denne koden:
Se videoen opplæringen for å se ultralyd range finder kretser i aksjon:
Takk for at du leser! Legg igjen en kommentar om du har noen spørsmål om hvordan du skal sette opp disse., Hvis du liker våre artikler her på Krets Grunnleggende, abonnere på og vi vil gi deg beskjed når vi publiserer nye artikler. Også, hvis du kjenner noen andre som skulle finne denne artikkelen nyttig, kan du dele det!