- Vereiste materialen
- Concepten van lijnvolger
- Circuit uitleg
- Werking van Line Follower Robot met MSP430
- Schakelschema
- Uitleg over programmeren
Lijnvolgerrobot is vanwege zijn eenvoud een van de populaire robotica-projecten onder studenten en beginners. Het volgt een lijn, zwart of wit, afhankelijk van hoe u uw microcontroller programmeert. Hier maken we een lijnvolgerrobot met behulp van het MSP430-lanceerplatform van Texas Instruments, dat de zwarte lijn volgt. Als u nieuw bent bij het MSP430-startvenster, lees dan onze Zelfstudie Aan de slag met MSP430.
Vereiste materialen
- MSP430G2 LaunchPad van Texas Instruments
- De L298D motor driver module
- Draden aansluiten
- IR-sensormodules
- Chasis, wiel, achtbaan
- Energia IDE
- Voeding (3.3v) en 5v-12v
Concepten van lijnvolger
Het concept van lijnvolger heeft betrekking op licht. We hebben het gedrag van licht op een zwart-wit oppervlak gebruikt. Wanneer licht op een wit oppervlak valt zal het bijna volledig reflecteren en in het geval van een zwart oppervlak wordt het licht geabsorbeerd door een zwart oppervlak. Dit verklaarde gedrag van licht wordt gebruikt in deze lijnvolgerrobot.
In deze op MSP430 gebaseerde lijnvolgerrobot hebben we IR-zenders en IR-ontvangers gebruikt, ook wel fotodiodes genoemd. Ze worden gebruikt voor het verzenden en ontvangen van licht. IR zendt infraroodlichten uit. Wanneer infraroodstralen op een wit oppervlak vallen, worden deze teruggekaatst en opgevangen door fotodiodes die een aantal spanningsveranderingen genereren. Wanneer IR-licht op een zwart oppervlak valt, wordt licht geabsorbeerd door het zwarte oppervlak en worden er geen stralen teruggekaatst, dus de fotodiode ontvangt geen licht of stralen. Volg de link voor meer informatie over IR-sensoren.
Hier in deze op MSP430 gebaseerde lijnvolgerrobot krijgt wanneer de sensor een wit oppervlak detecteert, MSP 1 als invoer en wanneer de zwarte lijn wordt waargenomen, krijgt MSP 0 als invoer.
Circuit uitleg
We kunnen de hele lijnvolgerrobot opdelen in verschillende secties, zoals sensorsectie, besturingssectie en driversectie.
Sensorgedeelte: dit gedeelte bevat IR-diodes, potentiometer, comparator (op-amp) en LED's. Potentiometer wordt gebruikt voor het instellen van de referentiespanning op de ene aansluiting van de comparator en IR-sensoren detecteren de lijn en zorgen voor een verandering in de spanning op de tweede aansluiting van de comparator. Vervolgens vergelijkt de comparator beide spanningen en genereert een digitaal signaal aan de uitgang. Hier in dit circuit hebben we twee comparatoren gebruikt voor twee sensoren. LM358 wordt gebruikt als vergelijker. De LM358 heeft twee ingebouwde Op-amp met lage ruis.
Besturingssectie: MSP430 Launchpad wordt gebruikt voor het besturen van het hele proces van lijnvolgerrobot. De uitgangen van comparatoren zijn verbonden met digitale pin P1_3 en P1_4 van MPS430 Launchpad. MSP430 Launchpad leest deze signalen en stuurt commando's naar het stuurcircuit om de lijnvolger aan te drijven.
Driver-sectie: Driver-sectie bestaat uit een motor-driver en twee DC-motoren. Motordriver wordt gebruikt voor het aandrijven van motoren omdat MSP430 Launchpad niet genoeg spanning en stroom levert aan de motor. Dus hebben we een motorstuurcircuit toegevoegd om voldoende spanning en stroom voor de motor te krijgen. Hier hebben we de L298d-driver gebruikt voor het aandrijven van DC-motoren. MSP430 Launchpad stuurt opdrachten naar deze motordriver en stuurt vervolgens motoren aan.
We hebben Line Follower Robots ontwikkeld met verschillende Micrcontrollers:
- Lijnvolgerrobot met 8051 Microcontroller
- Line Follower Robot met Arduino
- Lijnvolgerrobot met Raspberry Pi
- Line Follower Robot met behulp van PIC Microcontroller
Werking van Line Follower Robot met MSP430
Werken met lijnvolger is erg interessant. Lijnvolgerrobot detecteert zwarte lijn met behulp van sensor en stuurt vervolgens het signaal naar MSP430 Launchpad. Vervolgens drijft MSP430 Launchpad de motor aan volgens de output van de sensoren.
Hier in dit project gebruiken we twee IR-sensormodules, namelijk de linker sensor en de rechter sensor. Wanneer zowel de linker- als de rechtersensor wit detecteert, beweegt de robot naar voren.
Als de linkersensor op een zwarte lijn komt, draait de robot naar links.
Als de rechtersensor een zwarte lijn detecteert, draait de robot naar rechts totdat beide sensoren op een wit oppervlak komen. Als er een wit oppervlak komt, begint de robot weer vooruit te gaan.
Als beide sensoren op een zwarte lijn komen, stopt de robot.
Schakelschema
Het circuit voor deze MSP430 Line Follower Robot is heel eenvoudig. De output van comparators is rechtstreeks verbonden met MSP430 Launchpad's digitale pincode p1_3 en P1_4. En de inputpin IN1, IN2, IN3 en IN4 van de motorbestuurder zijn verbonden met respectievelijk de digitale pin P1_5, P2_0, P2_1, P2_2 van de MSP430 Launchpad. Een motor is aangesloten op de uitgangspen van motoraandrijving OUT1 en OUT2, en een andere motor is aangesloten op OUT3 en OUT4. Hier hebben we 3.3v-voeding gebruikt om het hele circuit van stroom te voorzien, behalve de Motor Driver-module. We hebben 8v geleverd aan de motor driver module. De gebruiker kan 5v-12v gebruiken.
U kunt ook uw eigen IR-module bouwen, zoals ik op Perf Board heb gebouwd. Hieronder is het circuit voor IR-module:
Uitleg over programmeren
Het volledige programma en de video vindt u aan het einde van dit artikel.
In een programma definiëren we allereerst de input en output pin voor sensor en motoren. Definieer vervolgens enkele macro's voor de richting van de lijnvolger en schrijf vervolgens een richtlijn om de sensoruitvoer te selecteren
Opmerking: de sensor kan actief laag of actief hoog zijn, dus controleer eerst wat de output van de sensor is en selecteer vervolgens de richtlijn door activeLowMode te becommentariëren of de commentaar te verwijderen . Geef voor actieve HIGH commentaar op demacro activeLowMode .
#define l_sensor P1_3 #define r_sensor P1_4 int pinnen = {P1_5, P2_0, P2_1, P2_2}; #define vooruit 0x05 #define links 0x06 #define rechts 0x09 #define stop 0x00 // # definieer activeLowMode #ifdef activeLowMode int res = {vooruit, links, rechts, stop}; #else int res = {stop, rechts, links, vooruit}; #stop als
Daarna geven we in de setup- functie richting aan sensor en motorpin. En dan in de lusfunctie , controleren we de ingangen en sturen we de uitvoer naar de motorstuurmodule om de motoren te laten draaien.
void setup () { voor (int i = 0; i <4; i ++) pinMode (pinnen, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); voor (int i = 0; i <4; i ++) digitalWrite (pinnen, (res >> i) & 0x01); }
Er zijn vier voorwaarden in deze regelvolger die we lezen met behulp van MSP430 Launchpad. We hebben twee sensoren gebruikt namelijk de linker sensor en de rechter sensor.
Voorwaarden: Actieve HIGH-output
Invoer |
Uitvoer |
Beweging Van Robot |
||||
Linker sensor |
Rechter sensor |
Linkermotor |
Rechter motor |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Hou op |
0 |
1 |
1 |
0 |
0 |
0 |
Rechts afslaan |
1 |
0 |
0 |
0 |
1 |
0 |
Sla linksaf |
1 |
1 |
1 |
0 |
1 |
0 |
Vooruit |
Programma is geschreven volgens de bovenstaande tabelvoorwaarden. Bekijk de volledige code en demonstratievideo hieronder.