Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Ik bouw voor de lol een robot die ik autonoom in een huis wil laten bewegen.
Het is een werk van lange adem en ik doe het stap voor stap.
Deze instructable focus op de detectie van obstakels met Arduino Mega
Ultrasone sensoren HC-SR04 versus HY-SRF05 zijn goedkoop en eenvoudig te gebruiken, maar kunnen moeilijk te integreren zijn in de microcontroller-lus in een complexe robot. Ik wilde obstakeldetectie op een asynchrone manier uitvoeren.
_
Ik heb al 3 instructables gepubliceerd over functies van deze robot:
- Maak je wiel-encoder
- Maak uw WIFI-gateway
- Gebruik traagheidsmodule-eenheid
En een documentatie over het combineren van kunstmatige intelligentie en echografie om de robot te lokaliseren.
Stap 1: Wat is precies het probleem met ultrasone sensoren en microcontrollers?
Synchroon wachten en Arduino-beperkingen
De code van microcontrollers loopt in een lus en ondersteunt geen multi-thread. Ultrasone sensoren zijn gebaseerd op signaalduur. Deze duur duurt tot 30 ms, wat erg lang is om binnen de lus te wachten wanneer de microcontrollers te maken hebben met meerdere motoren en sensoren (bijvoorbeeld servo- en DC-motoren met wiel-encoders).
Dus ik wilde een object ontwikkelen dat asynchroon draait.
Stap 2: Hoe werkt het?
Het is ontworpen voor Atmega voor het detecteren van obstakels. Het ondersteunt maximaal 4 ultrasone sensoren.
Dankzij periodieke tijdsonderbrekingen kan het systeem tot 4 ultrasone sensoren bewaken. De hoofdcode hoeft alleen te definiëren welke sensor moet worden geactiveerd met voorwaarde en drempel. De hoofdcode wordt alleen onderbroken als (voorwaarde, drempel) verschijnt.
De belangrijkste functies zijn:
- Waarschuwing is de basis obstakeldetectie en biedt een onderbreking als ten minste 1 van de 4 sensoren een afstand onder de drempel detecteert
- Monitor is een uitgebreide functie die een onderbreking biedt op een combinatie van afstandscondities van maximaal 4 sensoren. De mogelijke voorwaarden zijn boven, onder, gelijk aan of niet gelijk aan drempels.
Stap 3: Technische details
Gebruik timer4 zodat pin 6 7 8 niet als PWM kan worden gebruikt.
Voor elke sensor heeft het object een trigger-PIN en een interrupt-PIN nodig.
Bovenop de sensoren interrupt PINs heeft het object een andere interrupt PIN nodig voor software gebruik.
Stap 4: Hoe implementeren?
Sluit de sensoren aan zoals hierboven
Downloaden van deze GitHub-repository
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- VoorbeeldEchoObstacleDetection.ino
Maak de map EchoObstacleDetection in uw IDE-bibliotheek en verplaats de.cpp en.h
Test het
Open VoorbeeldEchoObstacleDetection.ino.
Dit is een eenvoudig voorbeeld van obstakeldetectie met 2 ultrasone sensoren.
Uitgang is gericht op seriële monitor. In eerste instantie zal het afstanden afdrukken die door de 2 sensoren zijn gedetecteerd en vervolgens waarschuwingen afdrukken afhankelijk van afstanden onder drempels.