Een ultrasone afstandsmeter instellen op een Arduino

ultrasone afstandsmeter zijn leuke kleine sensoren die de afstand kunnen meten. Je kunt ze gebruiken om de afstand tot een object te vinden, of om te detecteren wanneer er iets in de buurt van de sensor is, zoals een bewegingsmelder. Ze zijn ideaal voor projecten op het gebied van navigatie, objectvermijding en huisbeveiliging. Omdat ze geluid gebruiken om afstand te meten, werken ze net zo goed in het donker als in het licht., De ultrasone range finder die ik in deze handleiding zal gebruiken is de HC-SR04, die afstanden van 2 cm tot 400 cm kan meten met een nauwkeurigheid van ±3 mm.

in dit artikel zal ik u laten zien hoe u drie verschillende range finder circuits voor de Arduino kunt maken. Het eerste range finder circuit is eenvoudig in te stellen en heeft een vrij goede nauwkeurigheid. De andere twee zijn wat ingewikkelder, maar nauwkeuriger omdat ze rekening houden met temperatuur en vochtigheid. Maar voordat we daar op ingaan, laten we praten over hoe de afstandsmeter de afstand meet.,

BONUS: Ik heb een snelstartgids gemaakt voor deze tutorial die je kunt downloaden en later terug kunt gaan als je dit nu niet kunt instellen. Het omvat alle stappen, diagrammen en code die u nodig hebt om aan de slag te gaan.

de geluidssnelheid

Ultrasone afstandsmeting meet de afstand door het uitzenden van een ultrasoon geluid dat door de lucht reist totdat het een object raakt. Als die geluidshinder een object raakt, wordt het gereflecteerd en gaat het terug naar de ultrasone afstandsmeter., De ultrasone range finder meet hoe lang het duurt voordat de geluidspuls van de sensor en terug reist. Het stuurt dan een signaal naar de Arduino met informatie over hoe lang het duurde voor de sonische puls te reizen.

wetende hoe lang het duurt voordat de ultrasone puls heen en weer naar het object reist, en ook de snelheid van het geluid, kan de Arduino de afstand tot het object berekenen., De formule voor de relatie tussen de snelheid van het geluid, de afstand en de tijd gereisd is:

het Rangschikken van deze formule, dan krijgen we de formule gebruikt voor het berekenen van afstand:

De variabele tijd is de tijd die het duurt voor het ultrasone signaal om te vertrekken van de sensor, stuiteren van het object en terug naar de sensor., We delen deze tijd eigenlijk in tweeën omdat we alleen de afstand tot het object hoeven te meten, niet de afstand tot het object en terug naar de sensor. De snelheidsvariabele is de snelheid waarmee geluid door de lucht reist.

de geluidssnelheid in de lucht verandert met de temperatuur en de vochtigheid. Daarom, om de afstand nauwkeurig te berekenen, moeten we rekening houden met de omgevingstemperatuur en vochtigheid., De formule voor de snelheid van het geluid in de lucht met temperatuur en vochtigheid is:

bijvoorbeeld, bij 20°C en 50% vochtigheid, gaat het geluid met een snelheid van:

in de vergelijking hierboven is het duidelijk dat temperatuur het grootste effect heeft op de geluidssnelheid. Vochtigheid heeft wel enige invloed, maar het is veel minder dan het effect van temperatuur.,

hoe de ultrasone afstandsmeter de afstand meet

aan de voorzijde van de ultrasone afstandsmeter bevinden zich twee metalen cilinders. Dit zijn transducers. Transducers zetten mechanische krachten om in elektrische signalen. In de ultrasone afstandsmeter bevindt zich een zend-en ontvangtransducer. De zendende transducer zet een elektrisch signaal om in de ultrasone puls, en de ontvangende transducer zet de gereflecteerde ultrasone puls terug in een elektrisch signaal., Als u naar de achterkant van de range finder kijkt, ziet u een IC achter de zendende transducer met het label MAX3232. Dit is de IC die de transmitterende transducer bestuurt. Achter de ontvangende transducer bevindt zich een IC gelabeld LM324. Dit is een quad Op-Amp die het signaal dat door de ontvangende transducer wordt gegenereerd versterkt tot een signaal dat sterk genoeg is om naar de Arduino te verzenden.,

De HC-SR04 ultrasone afstandmeter is vier pinnen:

  • Vcc – levert de stroom voor het genereren van de ultrasone pulsen
  • GND aangesloten te worden op grond
  • Trig – waar de Arduino stuurt het signaal om te beginnen het ultrasone signaal
  • Echo – waar de ultrasone afstandmeter stuurt de informatie over de duur van de reis genomen door de ultrasone signaal naar de Arduino

Voor het starten van een afstand te meten, we moeten het verzenden van een 5V hoog signaal naar de Trig-pin voor ten minste 10 µs., Wanneer de module dit signaal ontvangt, zal het 8 pulsen van ultrasoon geluid uitzenden met een frequentie van 40 KHz van de zendende transducer. Dan wacht en luistert hij naar de ontvangende transducer voor het gereflecteerde signaal. Als een object binnen bereik is, worden de 8 pulsen terug naar de sensor gereflecteerd. Wanneer de puls de ontvangende transducer raakt, geeft de Echopin een hoogspanningsignaal uit.

De lengte van dit hoogspanningsignaal is gelijk aan de totale tijd die de 8 pulsen nodig hebben om van de zendende transducer naar de ontvangende transducer te reizen., We willen echter alleen de afstand tot het object meten, en niet de afstand van het pad dat de geluidsimpuls nam. Daarom delen we die tijd door de helft om de tijdvariabele in de D = s x t vergelijking hierboven te krijgen. Omdat we de snelheid van geluid (en) al kennen, kunnen we de vergelijking voor afstand oplossen.

Ultrasone Range Finder Setup voor seriële Monitor Output

laten we beginnen met het maken van een eenvoudige ultrasone range finder die afstandsmetingen naar uw seriële monitor uitvoert. Als u de metingen in plaats daarvan naar een LCD wilt uitvoeren, bekijk dan de volgende sectie., Het aansluiten van alles is gemakkelijk, gewoon de draad zoals dit:

Nadat u alles hebt aangesloten, het uploaden van dit programma op de Arduino:

Toelichting van de Code

  • Lijn 11: Verklaart de variabelen duration en distance.
  • regels 12 en 13: stuurt een 2 µs laag signaal naar de trigPin om er zeker van te zijn dat het is uitgeschakeld aan het begin van de programmalus.,
  • lijnen 15-17: stuurt een hoog signaal van 10 µs naar de trigPin om de sequentie van acht ultrasone pulsen van 40 KHz die vanuit de zendomvormer worden verzonden, te starten.
  • regel 19: definieert de variabele duration als de lengte (in µs) van elk hoog ingangssignaal gedetecteerd bij de echoPin. De uitgang van de Echopin is gelijk aan de tijd die de uitgezonden ultrasone puls nodig heeft om naar het object en terug naar de sensor te reizen.,
  • regel 20: definieert de variabele distance als de duur (tijd in d = s x t) vermenigvuldigd met de snelheid van het geluid omgezet van meters per seconde naar centimeter per µs (0,0344 cm/µs).
  • regels 22-24: als de afstand groter is dan of gelijk is aan 400 cm, of kleiner is dan of gelijk is aan 2 cm, wordt “Distance = Out of range” op de seriële monitor weergegeven.
  • lijnen 26-30: als de afstandsmeting niet buiten het bereik valt, geeft u de in regel 20 berekende afstand gedurende 500 ms op de seriële monitor aan.,

Ultrasone Range Finder Met LCD-uitgang

Als u de afstandsmetingen wilt uitvoeren naar een 16×2 LCD, volg dan dit diagram om de range finder en LCD aan te sluiten op uw Arduino:

Als u meer hulp nodig hebt om het LCD aan te sluiten, probeer dan onze andere tutorial over het opzetten van een LCD op de Arduino., Als alles is aangesloten, upload deze code naar de Arduino:

een hogere nauwkeurigheid Ultrasone Range Finder

omdat temperatuur een variabele is in de snelheid van de geluidsvergelijking hierboven (c = 331.4 + (0,606 x T) + (0,0124 x H)), De temperatuur van de lucht rond de sensor beïnvloedt onze afstandsmetingen. Om dit te compenseren, hoeven we alleen maar een thermistor aan ons circuit toe te voegen en de metingen in te voeren in de vergelijking. Dit moet onze afstandsmetingen meer nauwkeurigheid geven., Een thermistor is een variabele weerstand die de weerstand verandert met de temperatuur. Voor meer informatie over thermistoren, bekijk ons artikel, Arduino Thermistor temperatuursensor Tutorial. Hier is een diagram om u te helpen een thermistor toe te voegen aan uw range finder circuit:

  • R1 = 10K Ohm weerstand
  • Th = 10K Ohm thermistor

opmerking: de waarde van R1 moet gelijk zijn aan de weerstand van uw thermistor.,

nadat alles is aangesloten, upload deze code naar de Arduino:

uitleg van de Code

In het basic range finder Programma aan het begin van dit artikel hebben we de formule d = s x t gebruikt om de afstand te berekenen. In dit programma gebruiken we de formule die rekening houdt met temperatuur en vochtigheid (c = 331,4 + (0,606 X T) + (0,0124 x H)).

in de regels 5-10 wordt de Steinhart-Hart-vergelijking gebruikt om de thermistorweerstandwaarden om te zetten in temperatuur, die worden opgeslagen in een variabele genaamd temp., In regel 35 voegen we een nieuwe variabele toe (spdSnd) die de snelheid van de geluidsvergelijking bevat. De output van despdSnd variabele wordt gebruikt als de snelheid in dedistance functie op lijn 36.

de zeer hoge (bijna te hoge) nauwkeurigheid Ultrasone Range Finder

De temperatuur gecompenseerd ultrasone range finder circuit is vrij nauwkeurig voor wat de meeste mensen zullen gebruiken voor. Er is echter een andere factor die de snelheid van het geluid in de lucht (en dus de afstand berekening), en dat is vochtigheid., U kunt zien aan de snelheid van geluid vergelijking dat vochtigheid heeft slechts een klein effect op de snelheid van het geluid, maar laten we check it out toch.

Er zijn verschillende soorten vochtigheidssensoren die u op de Arduino kunt gebruiken, maar Ik zal de DHT11 vocht-en temperatuursensor gebruiken. Deze module heeft een thermistor naast de vochtigheidssensor, dus de set-up is heel eenvoudig:

nadat alles is aangesloten, moeten we een speciale bibliotheek installeren om de code uit te voeren., De bibliotheek is de dhtlib bibliotheek geschreven door Rob Tillaart. De bibliotheek is eenvoudig te installeren. Eerst, download de .zip-bestand hieronder. Ga in de Arduino IDE naar Sketch>Include Library>add ZIP Library, selecteer vervolgens de DHTLib.zip-bestand.,

DHTLib

nadat de bibliotheek is geïnstalleerd, upload deze code naar uw Arduino:

uitleg van de Code

De temperatuur-en vochtigheidsmetingen van de DHT11 zijn digitaal, dus we hoeven de Steinhart-Hart-vergelijking niet te gebruiken om de temperatuurweerstand van de thermistor om te zetten. De dhtlib bibliotheek bevat alle functies die nodig zijn om de temperatuur en vochtigheid te krijgen in eenheden die we direct kunnen gebruiken in de snelheid van geluid vergelijking. De variabelen voor temperatuur en vochtigheid worden DHT.temperature en DHT.humiditygenoemd., Vervolgens wordt snelheid gebruikt als een variabele in de afstandvergelijking op lijn 28.

om de afstandsmetingen naar een LCD uit te voeren, sluit u eerst uw LCD aan na onze tutorial hoe u een lcd-scherm op een Arduino kunt instellen, en upload vervolgens deze code:

bekijk de video tutorial naar zie de ultrasone range finder circuits in actie:

bedankt voor het lezen! Laat een reactie achter als u vragen heeft over hoe u deze kunt instellen., Als je onze artikelen hier op Circuit Basics leuk vindt, schrijf je dan in en we laten het je weten wanneer we nieuwe artikelen publiceren. Ook, als je weet dat iemand anders dat dit artikel nuttig zou vinden, deel het dan!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *