Kazalo:

Infrardeči radar z Arduinom: 6 korakov
Infrardeči radar z Arduinom: 6 korakov

Video: Infrardeči radar z Arduinom: 6 korakov

Video: Infrardeči radar z Arduinom: 6 korakov
Video: Lesson 28: Car-6 SunFounder self Driving Arduino car using | Robojax 2024, November
Anonim
Image
Image

V tem majhnem projektu bi vam rad pokazal, kako lahko z Arduinom ustvarite preprost radar doma. Na internetu je veliko podobnih projektov, vendar vsi uporabljajo ultrazvočni senzor za merjenje razdalje. V tem projektu uporabljam infrardeči senzor za merjenje razdalje.

Moj cilj je z njim ustvariti zelo preprost in poceni sistem LIDAR in implementirati kartirno napravo.

Zaloge

  • Arduino (uporabil sem Maple Mini)
  • Senzor ostre razdalje (uporabil sem Sharp GP2Y0A02YK0F)
  • Mikro servo (9 g)
  • Ogledna plošča, žice
  • Izbirno: 4.7k upor, 100nF kondenzator

Korak: Ultrazvočni VS infrardeči senzor

Shematično
Shematično

Glavna razlika med ultrazvočnimi in infrardečimi senzorji razdalje je v tem, da ultrazvočni senzor meri razdaljo v širšem območju. Zato ne more natančno določiti položaja ovire. To pomeni, da meri razdaljo najbližjega predmeta, ki se nahaja znotraj kota ~ +-30 °.

Seveda to ne pomeni, da je senzor Sharp boljši. Včasih je ta lastnost lahko zelo uporabna (na primer z brezpilotnimi letali za merjenje višine od tal). Prava izbira je popolnoma odvisna od zahtev vašega projekta.

2. korak: Shema

Shematično
Shematično
Shematično
Shematično

Povezavo med deli je zelo preprosto. Izberite izhod PWM in analogni vhod na plošči Arduino ter na te nožice povežite senzorje razdalje Servo in Sharp. V ta namen sem uporabil naslednje zatiče:

  • PA0: Analogni vhod za senzor ostre razdalje
  • PA9: PWM izhod za servo

Včasih ima lahko Sharp IR senzor hrupne izhode, zato morate vanj namestiti preprost nizkoprepustni filter. Za zmanjšanje hrupa na analognem zatiču sem uporabil 4,7 k upor in 100 nF kondenzator. Poleg tega sem izmerjeno vrednost filtriral tudi v kodi tako, da sem jo večkrat prebral in izračunal povprečje.

3. korak: Značilnost senzorja

Značilnost senzorja
Značilnost senzorja
Značilnost senzorja
Značilnost senzorja

Žal ima infrardeči senzor razdalje nelinearne lastnosti. To pomeni, da za dosego razdalje ni dovolj pomnožiti izmerjeno vrednost ADC s konstantno vrednostjo in ji dodati še eno konstantno vrednost.

Čeprav podatkovni list senzorja vsebuje značilnosti, ga raje merim sam v določenem projektu (lahko je odvisen od uporabljene napetosti). Za to sem naredil pare iz izmerjene vrednosti ADC in razdalje na vsakih 10 cm. (Moj senzor je lahko izmeril pravilno razdaljo od 12 cm).

Te pare sem uporabil v kodi, da sem z linearno interpolacijo dosegel pravilno razdaljo.

Na koncu dokumenta boste našli preprosto kodo Arduino za merjenje vrednosti ADC med značilnimi meritvami.

4. korak: Serijska komunikacija

Serijska komunikacija
Serijska komunikacija

Za pošiljanje izmerjenih vrednosti kotne razdalje v računalnik sem uporabil serijsko komunikacijo. Ker moram poslati več bajtov in različne vrste sporočil, sem oblikoval preprost komunikacijski protokol.

Ta procotol omogoča generično definiranje različnih vrst sporočil. V tem projektu sem uporabil dve vrsti sporočil:

  • Parametri: Uporablja se za pošiljanje parametrov v aplikacijo PC, določenih na Arduinu, kot sta največja razdalja in število ovir v krogu.
  • Ovira: Uporablja se za pošiljanje zaznane ovire. Prepozna se po kotu servomotorja in izmerjeni razdalji. Položaj x-y bo izračunala aplikacija za osebni računalnik.

5. korak: Aplikacija Qt

Aplikacija Qt
Aplikacija Qt

Za komunikacijo z Arduinom in risanje izmerjenih točk kot radar sem naredil računalniško aplikacijo v Qt (C ++). Prejema nekatere parametre (določene na Arduinu) in izmerjene točke razdalje.

Lahko prenesete tudi aplikacijo in njeno izvorno kodo.

6. korak: Arduino izvorna koda

Nekatere parametre na vrhu kode lahko prilagodite z makri.

Upoštevajte, da če spremenite značilnost senzorja razdalje Sharp, morate spremeniti vrednosti matrike distAdcMap !

  • InfraRadar.c: Koda radarja. Kopirajte in prilepite v svoj projekt Arduino.
  • InfraRadarMeasurement.c: Koda za karakteristično merjenje. Kopirajte in prilepite v svoj projekt Arduino. Za preverjanje vrednosti ADC uporabite serijsko konzolo.

Priporočena: