- Concept van lijnvolgerrobot
- Componenten vereist
- Schakelschema
- Atmega16 programmeren voor Line Follower Robot
Hier gaan we weer een ander project bouwen met AVR Atmega16 Microcontroller. Als AVR-microcontrollers nieuw voor u zijn, kunt u verwijzen naar eerdere AVR-projecten en tutorials.
Het bouwen van een robot is altijd spannend voor alle elektronicahobbyisten. En deze sensatie kan worden gemaximaliseerd als de robot sommige dingen automatisch kan doen zonder externe instructies. Een van de meest gebouwde robots door elektronica-beginners is Line Follower Robot. Zoals de naam al doet vermoeden, volgt de robot de lijn die op het oppervlak is getekend. De lijn hoeft geen rechte lijn te zijn. Lijnen kunnen ook elke kleur hebben.
We hebben eerder Line Follower Robot-projecten gebouwd met behulp van verschillende controllers:
- Lijnvolgerrobot met 8051 Microcontroller
- Line Follower Robot met behulp van PIC Microcontroller
- Line Follower Robot met Arduino
- Lijnvolgerrobot met Raspberry Pi
- Lijnvolgerrobot met MSP430 Launchpad
Vandaag zullen we AVR-microcontroller gebruiken om een Line Follower Robot te bouwen.
Meestal worden IR-sensoren gebruikt om lijnen te detecteren. De IR-sensoren zijn goed in het detecteren van witte of zwarte oppervlakken. Hoewel je andere geavanceerde sensoren kunt gebruiken die alle kleuren kunnen detecteren en een robot kunnen maken die alle kleurlijnen kan volgen. De robot moet de lijn kunnen detecteren, zelfs als het pad wordt gewijzigd door de hoek te veranderen en de lijn te blijven volgen. Het moet ook stoppen waar de stopzone in de rij komt.
Lijnvolger-robots worden tegenwoordig op grote schaal gebruikt in de maakindustrie, medische, huishoudelijke toepassingen en goederenmagazijnen. De robots zijn niet beperkt tot alleen deze toepassingen en kunnen hun toepassingen in veel toekomstige toepassingen uitbreiden.
Concept van lijnvolgerrobot
De IR-sensoren spelen een hoofdrol in dit project. IR-sensoren worden voor de robot geplaatst om de getekende zwarte lijn en het oppervlak te volgen. De robot wordt tussen de lijn geplaatst en met behulp van IR-sensoren houdt de robot de lijn bij. IR-sensoren geven de uitlezing terug aan de microcontroller en met behulp van IR-uitlezing beweegt de microcontroller de motoren naar links of rechts en brengt de robot opnieuw naar het pad.
Line Follower Robot kan een lijn volgen met behulp van een IR-sensor. Deze sensor heeft een IR-zender en IR-ontvanger. De IR-zender (IR-led) zendt het licht uit en de ontvanger (fotodiode) wacht tot het uitgezonden licht terugkeert. Een IR-licht keert alleen terug als het wordt gereflecteerd door een oppervlak. Terwijl alle oppervlakken geen IR-licht reflecteren, kan alleen wit het gekleurde oppervlak ze volledig reflecteren en zal het zwarte kleuroppervlak ze volledig waarnemen, zoals weergegeven in de onderstaande afbeelding. Lees hier meer over de IR-sensormodule.
Nu zullen we twee IR-sensoren gebruiken om te controleren of de robot in het spoor is met de lijn en twee motoren om de robot te corrigeren als deze uit de baan beweegt. Deze motoren vereisen een hoge stroomsterkte en moeten bidirectioneel zijn; daarom gebruiken we een motor driver module zoals L293D. We hebben ook een Microcontroller zoals ATmega16 nodig om de motoren te instrueren op basis van de waarden van de IR-sensor. Een vereenvoudigd blokschema hiervan wordt hieronder getoond.
Deze twee IR-sensoren worden aan weerszijden van de lijn geplaatst. Als geen van de sensoren een zwarte lijn detecteert, instrueert de AVR-microcontroller de motoren om vooruit te bewegen, zoals hieronder wordt weergegeven
Als de linkersensor op een zwarte lijn komt, instrueert de microcontroller de robot om naar links te draaien door alleen het rechterwiel te draaien.
Als de rechtersensor op een zwarte lijn komt, instrueert de microcontroller de robot om naar rechts te draaien door alleen het linkerwiel te draaien.
Als beide sensoren op een zwarte lijn komen, stopt de robot.
Op deze manier kan de robot de lijn volgen zonder buiten de baan te komen. Laten we nu eens kijken hoe het circuit en de code eruit zien.
Componenten vereist
- DC-reductiemotoren (2 stuks)
- IR-sensormodule (2 stuks)
- L293D-module
- Draadloze voedingsbron (bijv. Batterij, powerbank)
- Robot Chaises
- Atmega16 Microcontroller IC
- 16Mhz kristaloscillator
- Twee 100nF condensatoren
- Twee 22pF condensatoren
- Druk op de knop
- Doorverbindingsdraden
- Breadboard
- USBASP v2.0 (om Atmega16 te programmeren)
Schakelschema
Sluit alle componenten aan zoals hieronder weergegeven in het schakelschema
Atmega16 programmeren voor Line Follower Robot
Hier wordt de Atmega16 geprogrammeerd met behulp van USBASP en Atmel Studio7.0. Als u niet weet hoe Atmega16 kan worden geprogrammeerd met USBASP, bezoek dan de link. Volledig programma wordt aan het einde van het project gegeven, upload het programma gewoon in Atmega16 met behulp van de JTAG-programmeur en Atmel Studio 7.0, zoals uitgelegd in de vorige tutorial.
We hebben geprobeerd de code zo kort en eenvoudig mogelijk te houden. Dus we gebruiken macro's en speciale functieregisters in deze code.
if (bit_is_clear (PINA , leftSen)) { // controleer of linkersensor UIT staat
Deze instructie controleert of de PA0 waarop de linkersensor is aangesloten LAAG of HOOG is.
Als je meer wilt weten over deze verklaring en andere macro's, ga dan naar deze link
Er zijn vier voorwaarden die we volgen om via IR-sensoren uit te lezen. IR-sensoren krijgen een naam op basis van hun plaatsing voor de robot. De linker IR is de linker sensor en de rechter IR is de rechter sensor. De volgende voorwaarden bepalen de beweging van de robot.
We hebben de code geschreven volgens bovenstaande voorwaarden. Enige verandering is dat we slechts twee ingangspennen van de L293D gebruiken om beide motoren aan te drijven.
Volledige code met een demonstratievideo wordt hieronder gegeven.