Inhoudsopgave:

Infraroodradar met Arduino - Ajarnpa
Infraroodradar met Arduino - Ajarnpa

Video: Infraroodradar met Arduino - Ajarnpa

Video: Infraroodradar met Arduino - Ajarnpa
Video: Arduino Missile Defense Radar System in ACTION 2024, November
Anonim
Image
Image

In dit kleine project wil ik je laten zien hoe je een eenvoudige Radar thuis kunt maken met Arduino. Er zijn veel vergelijkbare projecten op internet, maar ze gebruiken allemaal een ultrasone sensor om de afstand te meten. In dit project gebruik ik een infraroodsensor voor afstandsmeting.

Mijn doel is om er een heel eenvoudig en goedkoop LIDAR-systeem mee te maken en een kaartapparaat te implementeren.

Benodigdheden

  • Arduino (ik gebruikte een Maple Mini)
  • Sharp afstandssensor (ik gebruikte Sharp GP2Y0A02YK0F)
  • Microservo (9g)
  • Breadboard, draden
  • Optioneel: 4,7k-weerstand, 100nF-condensator

Stap 1: Ultrasone VS-infraroodsensor

Schematisch
Schematisch

Het belangrijkste verschil tussen ultrasone en infrarood afstandssensoren is dat de ultrasone sensor afstand meet in een groter bereik. Daarom is het niet in staat om de positie van een obstakel nauwkeurig te lokaliseren. Het betekent dat het de afstand meet van het dichtstbijzijnde object dat zich binnen een hoekbereik van ~ +-30° bevindt.

Het betekent natuurlijk niet dat de Sharp-sensor beter is. Soms kan deze eigenschap erg handig zijn (bijvoorbeeld gebruikt door drones om de hoogte vanaf de grond te meten). De juiste keuze hangt volledig af van de vereisten van uw project.

Stap 2: Schema

Schematisch
Schematisch
Schematisch
Schematisch

Het is heel eenvoudig om de verbinding tussen onderdelen te maken. Selecteer een PWM-uitgang en een analoge ingang op je Arduino-bord en sluit de servo- en Sharp-afstandssensoren aan op die pinnen. Ik heb hiervoor de volgende pinnen gebruikt:

  • PA0: Analoge ingang voor Sharp-afstandssensor
  • PA9: PWM-uitgang voor servo

Soms kan de Sharp IR-sensor luidruchtige output hebben, daarom moet u er een eenvoudig laagdoorlaatfilter op plaatsen. Ik heb een weerstand van 4,7 k en een condensator van 100 nF gebruikt om de ruis op de analoge pin te verminderen. Daarnaast heb ik ook de gemeten waarde in de code gefilterd door deze meerdere keren te lezen en het gemiddelde te berekenen.

Stap 3: Sensorkenmerk

Sensorkenmerk
Sensorkenmerk
Sensorkenmerk
Sensorkenmerk

Helaas heeft de gebruikte infrarood afstandssensor een niet-lineaire karakteristiek. Het betekent dat om de afstand te krijgen, het niet voldoende is om de gemeten ADC-waarde te vermenigvuldigen met een constante waarde en er nog een constante waarde aan toe te voegen.

Hoewel de datasheet van de sensor het kenmerk geeft, meet ik het liever zelf in het specifieke project (dit kan afhankelijk zijn van de gebruikte spanning). Hiervoor heb ik voor elke 10 cm paren gemaakt van de gemeten ADC-waarde en afstand. (Mijn sensor kon de juiste afstand meten vanaf 12 cm).

Ik heb deze paren in de code gebruikt om de juiste afstand te krijgen met lineaire interpolatie.

Aan het einde van het document vindt u een eenvoudige Arduino-code om de ADC-waarde te meten tijdens karakteristieke meting.

Stap 4: Seriële communicatie

Seriële communicatie
Seriële communicatie

Ik gebruikte seriële communicatie om de gemeten hoek-afstandswaarden naar de pc te sturen. Omdat ik meerdere bytes en verschillende soorten berichten moet verzenden, heb ik een eenvoudig communicatieprotocol ontworpen.

Dit protocol maakt het mogelijk om verschillende berichttypes op een generieke manier te definiëren. In dit project heb ik 2 berichttypes gebruikt:

  • Parameters: Wordt gebruikt om parameters naar de pc-toepassing te sturen, gedefinieerd op Arduino, zoals maximale afstand en aantal obstakels in een ronde.
  • Obstakel: Wordt gebruikt om een gedetecteerd obstakel te verzenden. Het wordt geïdentificeerd door de hoek van de servo en de gemeten afstand. De x-y-positie wordt berekend door de pc-toepassing.

Stap 5: Qt-toepassing

Qt-toepassing
Qt-toepassing

Om met Arduino te communiceren en de gemeten punten als een radar te tekenen, heb ik een pc-toepassing gemaakt in Qt (C++). Het ontvangt enkele parameters (gedefinieerd op Arduino) en de gemeten afstandspunten.

U kunt de applicatie en de broncode ook downloaden.

Stap 6: Arduino-broncode

U kunt enkele parameters bovenaan de code aanpassen met macro's.

Merk op dat als u de karakteristiek van de Sharp-afstandssensor wijzigt, u de distAdcMap-arraywaarden moet wijzigen!

  • InfraRadar.c: Code van radar. Kopieer en plak het in uw Arduino-project.
  • InfraRadarMeasurement.c: Code voor karakteristieke meting. Kopieer en plak het in uw Arduino-project. Gebruik de seriële console om de ADC-waarden te controleren.

Aanbevolen: