- Vereiste materialen:
- Concepten van lijnvolger
- Schakelschema en uitleg:
- PIC-microcontroller programmeren:
- PIC-lijnvolger in actie:
Een Line Follower Robot is een eenvoudige maar fascinerende robot die de meeste studenten / hobbyisten kunnen bouwen. In deze tutorial zullen we leren hoe een Line Follower Robot werkt en hoe we er een kunnen bouwen met behulp van de PIC Microcontroller PIC16F877A. PIC16F877A is een 40-pins multifunctionele MCU van Microchip, we hebben dit IC gebruikt in onze complete PIC-tutorialserie. Als u nieuw bent, kunt u hier deze PIC-tutorials bekijken om de basis van dit IC te leren en om programma's te uploaden naar de microcontroller. Omdat we deze informatie al in onze tutorials hebben behandeld, zullen we ze in de onderstaande uitleg overslaan.
Als je geïnteresseerd bent in robotica, dan zou je de naam " Line Follower Robot " goed moeten kennen. Deze robot is in staat om een lijn te volgen, alleen door een paar sensoren en motoren te gebruiken. Deze robot geeft je de ruimte voor oneindige ontwikkeling en robots als Kiva (Amazon magazijnrobot) zijn hier een voorbeeld van. Je kunt ook onze andere Line Follower Robots bekijken:
- Lijnvolgerrobot met 8051 Microcontroller
- Line Follower Robot met Arduino
- Lijnvolgerrobot met Raspberry Pi
Vereiste materialen:
- PIC16F877A
- IR-sensor (2Nos)
- DC-reductiemotor (2Nos)
- L293D-motorstuurprogramma
- Chaises (je kunt er ook zelf een bouwen met karton)
- Powerbank (elke beschikbare voedingsbron)
Concepten van lijnvolger
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 PIC 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 PIC-microcontroller de motoren om vooruit te gaan, 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.
Schakelschema en uitleg:
Het volledige schakelschema voor deze op PIC gebaseerde Line Follower Robot wordt hieronder weergegeven
Het circuit maakt gebruik van twee IR-sensoren en een paar DC-reductiemotoren, samen met een motorbesturingsmodule, zoals hierboven weergegeven. De Motor driver module die in dit project wordt gebruikt is L293D, we hebben een motor driver nodig omdat de output pin van de PIC Microcontroller niet genoeg stroom kan leveren om de motoren te laten rijden. Deze module wordt rechtstreeks gevoed vanuit de stroombron (5V) zoals weergegeven in het circuit. De module heeft vier pinnen (twee voor elke motor) die zijn verbonden met de PIC om de richting van de motoren te regelen. We hebben ook twee IR-sensoren die fungeren als input voor de PIC-microcontroller. Deze sensoren gaan hoog (1) als ze zich boven een wit oppervlak bevinden en gaan laag (0) als ze zich boven een zwart oppervlak bevinden. De volledige pinverbindingen worden geïllustreerd in de onderstaande tabel.
S.No |
Verbonden vanaf |
Verbonden met |
1 |
IR-sensor Pin weggelaten |
RD2 (pen 21) |
2 |
IR-sensor Rechtse pin |
RD3 (pen 22) |
4 |
Motor 1 kanaal A pin |
RC4 (pen 23) |
5 |
Motor 1 kanaal B-pin |
RC5 (pen 25) |
6 |
Motor 2 kanaal A-pin |
RC6 (pen 26) |
7 |
Motor 2 kanaal B-pin |
RC7 (pen 27) |
In de eigenlijke hardware heb ik een powerbank gebruikt die een output van + 5V direct via de USB-poort zal geven; daarom heb ik de 7805-spanningsregelaar omzeild en de PIC, sensoren en motoren aangedreven met dezelfde. U kunt hetzelfde doen door een 12V-batterij te gebruiken in combinatie met een regelaar, zoals weergegeven in het circuit.
PIC-microcontroller programmeren:
Zodra u klaar bent met uw hardware, is het tijd om te beginnen met programmeren. Het complete programma van dit PIC Line Follower Robot Project vindt u aan het einde van deze pagina. De belangrijke brokken worden echter hieronder uitgelegd.
Initialiseer de I / O-pinnen door de volgende regels. De 2 IR-sensorpinnen fungeren als invoer en de vier motorpennen als uitvoerpennen.
TRISD2 = 1; TRISD3 = 1; // Bath de IR-sensorpinnen worden gedeclareerd als invoer TRISC4 = 0; TRISC5 = 0; // Motor 1-pinnen gedeclareerd als uitvoer TRISC6 = 0; TRISC7 = 0; // Motor 2 pinnen gedeclareerd als output
Nu moeten we de status van zowel de IR-sensor aflezen als de motor dienovereenkomstig regelen. Bijvoorbeeld indien de beide sensoren hoog (niet onder zwarte lijn) dan we bewegen beide motoren uit zoals in het onderstaande programma.
if (RD2 == 1 && RD3 == 1) // Beide sensoren niet over achterlijn {RC4 = 0; RC5 = 1; // Motor 1 vooruit RC6 = 1; RC7 = 0; // Motor 2 vooruit}
Komt de linkersensor over de zwarte lijn dan maken we een bocht naar rechts door Motor 1 stil te houden en Motor 2 voorwaarts te draaien. Dit type draaien wordt differentieel draaien genoemd.
anders als (RD2 == 0 && RD3 == 1) // Linker sensor is over zwarte lijn {RC4 = 1; RC5 = 1; // Motor 1 stop RC6 = 1; RC7 = 0; // Motor 2 vooruit}
Evenzo, als de rechtersensor over de zwarte lijn komt, moet de bot een bocht naar links maken door de tweede motor stil te houden en alleen de eerste motor in voorwaartse richting te draaien, zoals hieronder wordt weergegeven.
anders als (RD2 == 1 && RD3 == 0) // Rechter sensor is over zwarte lijn {RC4 = 0; RC5 = 1; // Motor 1 vooruit RC6 = 1; RC7 = 1; // Motor 2 stop}
Eindelijk, als beide sensoren onder een zwarte lijn komen, is het tijd om de bot te stoppen. Dit kan door alle pinnen van beide motoren hoog te maken. De code om hetzelfde te doen, wordt hieronder weergegeven
anders // Beide sensor over zwarte lijn {RC4 = 1; RC5 = 1; // Motor 1 stop RC6 = 1; RC7 = 1; // Motor 2 stop}
Dat is het, het programma is klaar en kan met elke programmeur zoals PicKit naar de PIC worden geüpload.
PIC-lijnvolger in actie:
Zodra de hardware en code klaar zijn, is het tijd voor actie. Zoals eerder gezegd heb ik een powerbank gebruikt om de bot van stroom te voorzien, dus alles wat ik hoef te doen is de powerbank aansluiten op de bot waarop de hardware is ingesteld en de code al is geüpload.
Het PIC Perf-bord is gemaakt voor onze PIC-tutorialserie, waarin we hebben geleerd hoe we PIC-microcontrollers moeten gebruiken. Misschien wil je teruggaan naar die PIC Microcontroller-tutorials met MPLABX en XC8 als je niet weet hoe je een programma moet branden met Pickit 3, aangezien ik al die basisinformatie zal overslaan.
Start nu de bot gewoon over een zwarte lijn en je zou hem de lijn moeten volgen.
In dat geval kunt u in het begin wat problemen ondervinden, lees dan verder. Als de wielen in tegengestelde richting draaien, verwissel dan eenvoudig de polariteit van de motor waarvan het wiel in tegengestelde richting draait. Als de bot van de lijn afwijkt, verwissel dan de IR-sensor en alles zou goed moeten zijn.
De volledige werking van de bot is te vinden in de onderstaande video. Ik hoop dat je het project leuk vindt en met plezier iets soortgelijks hebt gebouwd. Als je problemen hebt om dit te laten werken, kun je ze posten in het commentaargedeelte hieronder om het probleem op te lossen of onze forums gebruiken om technische inhoud te bespreken.