Avstandsmåling med ultralydsensor

Formålet med oppgava
I denne oppgava skal du bruke en ultralydsensor sammen med mikrokontrolleren. Du skal måle en avstand som Arduinoen skal visualisere ved hjelp av tre ulike lysdioder. Lysdiodene har hver sin forhandsdefinerte avstand.
Utstyrsliste
For å bygge den fysiske kretsen trenger du
Arduino Uno mikrokontroller
USB-kabel
loddefritt koplingsbrett
tre LED-er med ulik farge
tre motstander (verdi mellom 100 ohm og 1 kiloohm), for eksempel 220 ohm
ultralydavstandsmåler
koplingsledninger (jumper wires)
digitalt simuleringsprogram, for eksempel
Trinn 1: Tegn kretsen (digitalt)
I dette eksempelet har vi brukt programmet Tinkercad Circuits.
Start med å åpne nettsida. Velg New design og deretter Circuit.
Komponentene du kan benytte, ligger i en meny på høyre side. Du kan velge hvor mange komponenter du vil se i menyen.
Trykk og dra en Arduino Uno, koplingsbrett, ultralydsensor, tre dioder og tre motstander fra komponentpanelet inn til tegneområdet.

Kople 5-volts- og jordpinnene på Arduino til strømskinnene (+) og jordskinnene (–) på koplingsbrettet med ledninger. Strømskinnene gir (+) og (–) på hele rekka du kopler ledningene til, og du kan derfor kople til sensorer og aktuatorer på hele strømskinna.
Du kan endre ledningsfargene hvis du vil, og vi anbefaler at du bruker rød farge for (+) og sort farge for (–).
Dra tre lysdioder på koplingbrettet i rad E, med to koplingspunkters avstand fra hverandre. Du kan endre LED-fargen på diodene ved å bruke kontrollpanelet som dukker opp når du klikker på dem enkeltvis.
Bruk en 220 ohm motstand for å kople katoden til hver LED (dvs. venstre bein) til jordskinna (svart) på koplingsbrettet. Du kan endre verdien til en motstand ved å markere den og bruke nedtrekksmenyen.
Kople LED-anodene (høyre bein) til digitale pinner 4, 3 og 2 på Arduino. Her kan du selv velge hvilken farge du vil bruke på ledningene. Vi har valgt nesten samme farge som på diodene.
LED-anoden (+) er terminalen som strømmen flyter inn i. Den må koples til valgt utgangspinne på Arduino. Katoden (–) er terminalen som strømmen går fra. Denne koples til jordskinna.
Trinn 2: Legg til ultralydsensor
Ultralydsensorer kommer i flere varianter. I Tinkercad Circuits kan du for eksempel velge mellom en 3-pinners- og en 4-pinnerssensor. Generelt har ultralydsensorer én pinne som koples til jord, en annen som koples til 5 volt, en tredje som sender signaler og en fjerde som mottar signaler. I 3-pinnerssensoren er sende- og motta-funksjonene kombinert i én pinne.
I simuleringsprogrammet finner du vanligvis ultralydavstandsmåleren under fanen "Komponenter". 4-pinnerssensoren finner du når du velger "Alle" i komponentpanelet. I dette eksempelet bruker vi en ultralydsensor med tre pinner.
Plasser sensoren på brødbrettet til venstre for lysdiodene i rad E, som vist på figuren.
Kople sensoren slik at 5-voltpinnen koples til 5-voltspenningsskinna, GND-pinnen koples til jordskinna og SIG- eller TRIG-pinnen til Arduino-pinne 7. (Hvis du bruker
4-pinnerssensoren, koples ECHO-pinnen til Arduino-pinne 6.)

Trinn 3: Programmering med blokkprogrammering
I dette eksempelet har vi brukt blokkprogrammering til å programmere mikrokontrolleren. Programmet vi har brukt, heter Tinkercad Circuits.
Programmet skal få ultralydsensoren til å sende ut et signal og lytte etter ekkoet.
Mikrokontrolleren skal registrere hvor lang tid det tar fra signalet sendes ut til det returnerer.
Mikrokontrolleren skal bruke det registrerte tallet til å regne ut avstanden mellom sensoren og objektet som reflekterer signalet.
Mikrokontrolleren skal tenne en grønn, gul eller rød diode, alt etter hvor stor den målte avstanden er.
Programmering
Klikk på "Kode"-knappen for å åpne koderedigeringsprogrammet. På de grå notasjonsblokkene kan du notere hva du har tenkt at koden skal gjøre, men denne teksten er ikke nødvendig som en del av programmet.
Når du har åpna programmet, har du to ulike blokker liggende: "start" og "forever". Du skal programmere inne i blokka som heter "forever".
Variabler
Programmet skal lese et signal fra ultralydsensoren og sende dette signalet til mikrokontrolleren. Da trenger du en variabel for å lagre denne verdien.
Klikk på kategorien "Variabler" i koderedigeringsprogrammet. Siden vi skal måle verdien i centimeter, har vi valgt å kalle variabelen for "cm". Når du lager ditt eget program, kan du fritt velge et annet variabelnavn, for eksempel "avstand".
Lese verdi
Vi henter så inn variabelen "cm" og forteller mikrokontrolleren at den skal både sende og lese signal på pinne 7 på Arduinoen.

Vise verdi via Serial Monitor
Programmet kan vise på skjerm hvilken verdi som er registrert og lagra i variabelen. Til dette brukes et verktøy kalt Serial Monitor.
Mikrokontrolleren skal altså sende ut informasjon til en skjerm. Du finner riktig blokk under "Output". Den heter "print to serial monitor".
Her kan du enten legge inn egen tekst eller hente en variabel. Du kan også bestemme om mikrokontrolleren skal hoppe til ny linje eller ikke. Det gjør du ved å velge "with" eller "without" i nedtrekksmenyen foran "newline".
Illustrasjonen under viser et eksempel der er det lagt inn kommandoer som forteller at mikrokontrolleren skal
skrive valgt tekst "Avstanden er:"
skrive verdien som er lagra i variabelen cm
avslutte med valgt tekst "cm"
hoppe til ny linje
Hvis avstanden er 120 cm, vil mikrokontrolleren i så fall skrive "Avstanden er: 120 cm" før den hopper til ny linje for å fortsette å skrive.

Aktivere lysdioder basert på målt avstand
I dette prosjektet vil vi signalisere avstanden ved å tenne LED-dioder med ulik farge. Vi må da hente inn det som kalles logiske funksjoner. De forteller mikrokontrolleren at hvis en påstand er sann, skal en bestemt arbeidsoperasjon gjennomføres. Hvis påstanden ikke er sann (dvs. usann), skal noe annet skje. Blokkene for de logiske funksjonene finner du under "Control".
I eksempelet vårt har vi valgt følgende trinn for de ulike LED:
Hvis verdien i variabelen cm (avstanden) er over 300 cm, skal ingen LED lyse.
Hvis verdien er mellom 200 og 300 cm, skal grønn LED lyse.
Hvis verdien er mellom 100 og 200 cm, skal gul LED lyse.
Hvis verdien er under 100 cm, skal rød LED lyse.
Om mikrokontrolleren skal aktivere dioden eller ikke, bestemmes av verdiene LOW og HIGH. Dette er digitale verdier som egentlig betyr 0 og 1.
LOW betyr at den aktuelle pinnen er avslått (0).
HIGH betyr at den aktuelle pinnen er aktivert (1).
På tegninga kopla vi de ulike diodene til pinnene 2, 3 og 4. Vi må derfor fortelle hvilken verdi mikrokontrolleren skal sette de ulike pinnene til hver gang en verdi er avlest og lagra i variabelen cm.

Målehyppighet
For å kunne regulere målehyppigheten legger vi ei blokk som heter WAIT på slutten av programmet. Denne blokka pauser programmet en bestemt periode før det tar ei ny måling. Kodeblokka for WAIT-funksjonen finner du under Control.
Hvor ofte mikrokontrolleren skal gjennomføre måling, er opp til deg. Her har vi valgt 0,1 sekund, det vil si at mikrokontrolleren måler avstanden 10 ganger per sekund.

Simulering av programmet
Når du har kopla opp brettet og laga ferdig programmet, kan du simulere for å se om du har kopla og programmert riktig.
Trykk på simuleringsknappen. Da kopler maskinen strøm på mikrokontrolleren, og programmet er klart til å testes.
Trykk så på ultralydsensoren, og du vil få opp et måleområde der det også er plassert en grønn prikk. Denne prikken kan du flytte på inne i målefeltet, og du kan se om lysdiodene virker slik du har programmert dem.
Du kan også trykke på feltet for Serial Monitor for å lese av verdien og se om teksten stemmer med det du har programmert.

Trinn 5: Se programmeringskoden
Når koderedigeringsprogrammet er åpent, kan du klikke på nedtrekksmenyen til venstre og velge "Blokker + tekst" for å hente frem Arduino-koden som har blitt generert av kodeblokkene.
Trinn 6: Bygg en fysisk krets (valgfritt)
Hvis du bygger en fysisk versjon av denne kretsen, kan du prøve den ut med den serielle monitoren i Arduino-programvaren (forstørrelsesglassknapp øverst til høyre i skissevinduet). Du kan aktivere sensoren med handa, kroppen, notatboka osv.
Ultralydsensoren må av og til kalibreres fordi hastigheten på lydbølgene kan variere litt på grunn av temperatur, lufttrykk osv. Hvis du vil ha eksakte resultater for ulike avstander, må du gjennomføre noen testmålinger. Du kan sette en gjenstand i bestemte avstander foran sensoren og observere avstandene ved hjelp av den serielle monitoren. Så setter du trinna for diodene til verdiene du har valgt.
Juster de forskjellige avstandstersklene dine til et område som passer til startverdien din. Hvis handa di for eksempel var 60 cm unna, kan området ditt være 0–60, og trinna kan være 60–40, 40–20 og 20–0.
Last opp koden på nytt, og prøv å bevege deg foran sensoren. Etter hvert som du nærmer deg sensoren, bør lysdiodene tennes etter tur når du er innenfor de angitte trinna.
Trinn 6: Utforsk flere muligheter!
Gratulerer!
Du har lært å oppdage avstand ved hjelp av en ultralydsensor. Du har også lært om frittstående funksjoner og brukt og seriell monitor for å spore endringer inne i Arduino.
Du kan prøve å utvide eller forandre dette prosjektet på ulike måter:
Du kan gjøre det til en nærhetsalarm ved å legge til en Piezo-summer som slås på når den siste lysdioden lyser (nærmeste avstand).
Du kan legge til flere dioder eller nivåer.
Ultralydsensoren kan kanskje byttes ut med en mikrofon, og diodene kan vise hvor høy lyd som blir registrert.
Det er kanskje mulig å bytte ut avstandssensoren med en temperatursensor.
Du kan legge til en motor som kan åpne ei dør eller en port når noen kommer nær nok.
Her er i grunnen kun fantasien som setter grenser!