Innholdsfortegnelse:

Infrarød radar med Arduino: 6 trinn
Infrarød radar med Arduino: 6 trinn

Video: Infrarød radar med Arduino: 6 trinn

Video: Infrarød radar med Arduino: 6 trinn
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, November
Anonim
Image
Image

I dette lille prosjektet vil jeg vise deg hvordan du kan lage en enkel radar hjemme med Arduino. Det er mange lignende prosjekter på internett, men de bruker alle en ultralydssensor for å måle avstanden. I dette prosjektet bruker jeg en infrarød sensor for avstandsmåling.

Målet mitt er å lage et veldig enkelt og billig LIDAR -system med det og implementere en kartleggingsenhet.

Rekvisita

  • Arduino (jeg brukte en Maple Mini)
  • Skarp avstandssensor (jeg brukte Sharp GP2Y0A02YK0F)
  • Micro Servo (9g)
  • Brødbrett, ledninger
  • Valgfritt: 4,7k motstand, 100nF kondensator

Trinn 1: Ultralyd VS infrarød sensor

Skjematisk
Skjematisk

Hovedforskjellen mellom ultralyd- og infrarøde avstandssensorer er at ultralydssensoren måler avstand i et større område. Derfor er den ikke i stand til nøyaktig å finne posisjonen til et hinder. Det betyr at den måler avstanden til det nærmeste objektet som befinner seg innenfor et ~ +-30 ° vinkelområde.

Selvfølgelig betyr det ikke at Sharp -sensoren er bedre. Noen ganger kan denne egenskapen være veldig nyttig (f.eks. Brukt av droner til å måle høyde fra bakken). Det riktige valget er helt avhengig av kravene til prosjektet ditt.

Trinn 2: Skjematisk

Skjematisk
Skjematisk
Skjematisk
Skjematisk

Det er veldig enkelt å lage forbindelsen mellom deler. Velg en PWM -utgang og en analog inngang på Arduino -kortet, og koble Servo- og Sharp -avstandssensorene til disse pinnene. Jeg brukte følgende pins for dette formålet:

  • PA0: Analog inngang for skarp avstandssensor
  • PA9: PWM -utgang for Servo

Noen ganger kan Sharp IR -sensoren ha støyende utgang, derfor må du sette et enkelt lavpassfilter på den. Jeg brukte en 4,7k motstand og en 100nF kondensator for å redusere støyen på den analoge pinnen. Dessuten filtrerte jeg også måleverdien i koden ved å lese den flere ganger og beregne gjennomsnittet.

Trinn 3: Sensorkarakteristisk

Sensor Karakteristisk
Sensor Karakteristisk
Sensor Karakteristisk
Sensor Karakteristisk

Dessverre har den brukte infrarøde avstandssensoren ikke-lineær karakteristikk. Det betyr at for å få avstanden, er det ikke nok å multiplisere den målte ADC -verdien med en konstant verdi og legge til en annen konstant verdi til den.

Selv om databladet til sensoren gir karakteristikken, foretrekker jeg å måle det selv i det spesifikke prosjektet (det kan avhenge av brukt spenning). For dette laget jeg par fra den målte ADC -verdien og avstanden for hver 10 cm. (Sensoren min var i stand til å måle riktig avstand fra 12 cm).

Jeg brukte disse parene i koden for å få riktig avstand med lineær interpolasjon.

Du finner en enkel Arduino -kode på slutten av dokumentet, for å måle ADC -verdi under karakteristisk måling.

Trinn 4: Seriell kommunikasjon

Seriell kommunikasjon
Seriell kommunikasjon

Jeg brukte seriell kommunikasjon til å sende de målte vinkelavstandsverdiene til PC-en. Siden jeg må sende flere byte og forskjellige typer meldinger, har jeg designet en enkel kommunikasjonsprotokoll.

Denne procotolen gjør det mulig å definere forskjellige meldingstyper på en generisk måte. I dette prosjektet brukte jeg to meldingstyper:

  • Parametere: Brukes til å sende parametere til PC -applikasjon, definert på Arduino som maksimal avstand og antall hindringer i en runde.
  • Hindring: Brukes til å sende et påvist hinder. Det identifiseres ved servoens vinkel og målt avstand. Xy-posisjonen beregnes av PC-applikasjon.

Trinn 5: Qt -applikasjon

Qt -applikasjon
Qt -applikasjon

For å kommunisere med Arduino og tegne de målte punktene som en radar laget jeg en PC -applikasjon i Qt (C ++). Den mottar noen parametere (definert på Arduino) og de målte avstandspunktene.

Du kan også laste ned programmet og kildekoden.

Trinn 6: Arduino kildekode

Du kan tilpasse noen parametere øverst i koden med makroer.

Vær oppmerksom på at hvis du endrer egenskapen til Sharp -avstandssensoren, må du endre distAdcMap matrisverdier!

  • InfraRadar.c: Kode for radar. Kopier og lim det inn i Arduino -prosjektet.
  • InfraRadarMeasurement.c: Kode for karakteristisk måling. Kopier og lim det inn i Arduino -prosjektet. Bruk Seriekonsoll for å kontrollere ADC -verdier.

Anbefalt: