Inhoudsopgave:
- Stap 1: Werkingsprincipe
- Stap 2: Het bouwen
- Stap 3: Montage
- Stap 4: Ontwerp uw lijnspoor
- Stap 5: Programmeer uw code
- Stap 6: KLAAR
Video: Op PID gebaseerde lijnvolgende robot met POLOLU QTR 8RC-sensorarray - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
Hallo!
dit is mijn eerste artikel over instructables, en vandaag ga ik je op weg helpen en uitleggen hoe je een op PID gebaseerde lijnvolgende robot kunt bouwen met behulp van de QTR-8RC-sensorarray.
Voordat we verder gaan met het bouwen van de robot, moeten we begrijpen wat PID wordt genoemd,
Stap 1: Werkingsprincipe
Wat is PID??
De term PID staat voor proportioneel, integraal, afgeleide. Dus wat we simpelweg doen met PID met lijnvolging, is dat we de robot een commando geven om de lijn te volgen en de bochten te detecteren door de fout te berekenen door na te gaan hoe ver is het van de baan geraakt.
sleutelbegrippen zoals vermeld in Polalu-documenten
De proportionele waarde is ongeveer evenredig met de positie van uw robot ten opzichte van de lijn. Dat wil zeggen, als uw robot precies gecentreerd is op de lijn, verwachten we een proportionele waarde van precies 0
De integrale waarde registreert de geschiedenis van de beweging van uw robot: het is een som van alle waarden van de proportionele term die zijn geregistreerd sinds de robot begon te draaien
De afgeleide is de veranderingssnelheid van de proportionele waarde
In deze tutorial zullen we het alleen hebben over Kp- en Kd-termen, maar resultaten kunnen ook worden bereikt met behulp van de Ki-term. De metingen die we van de sensor krijgen, zijn niet alleen analoge metingen, maar ook de positionele metingen van de robot.dus eigenlijk geeft de sensor waarden van 0 tot 2500, variërend van maximale reflectie tot minimale reflectie, maar geeft tegelijkertijd ook informatie over hoe ver de robot van de lijn is gestrand.)
Nu moeten we rekening houden met de foutterm, Dit is het verschil tussen de twee waarden instelpuntwaarde en de huidige waarde. (De instelwaarde is de waarde die overeenkomt met de "perfecte" plaatsing van sensoren bovenop de lijnen. en De huidige waarde is de momentane uitlezing van de sensor Voor bijv.: Als u deze array-sensor gebruikt en gebruik maakt van 8 sensoren, ontvangt u een positionele uitlezing van 3500 als u precies goed bent, ongeveer 0 als u veel te links van de lijn en rond de 7000 als je veel te gelijk hebt.). Ons doel is om de fout nul te maken. Alleen dan kan de robot soepel de lijn volgen.
Dan komt het rekengedeelte,.
1) bereken de fout.
Error = Setpoint Waarde - Huidige Waarde = 3500 - Positie
Aangezien ik 8 sensoren gebruik. de sensor geeft een positielezing van 3500 wanneer de robot perfect is geplaatst. Nu we onze fout hebben berekend, de marge waarmee onze robot over de baan drijft, is het tijd voor ons om de fout onder de loep te nemen en de motorsnelheden dienovereenkomstig aan te passen
2) bepaal de ingestelde toerentallen van de motoren.
MotorSpeed = Kp * Fout + Kd * (Fout - Laatste Fout);
LastError = Fout;
RightMotorSpeed = RightBaseSpeed + MotorSpeed;
LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;
Logisch gezien betekent een fout van 0 dat onze robot naar links staat, wat betekent dat onze robot een beetje naar rechts moet gaan, wat op zijn beurt betekent dat de rechtermotor moet vertragen en de linkermotor moet versnellen. DIT IS PID!
De MotorSpeed-waarde wordt bepaald uit de vergelijking zelf. RightBaseSpeed en LeftBaseSpeed zijn de snelheden (elke waarde van PWM 0-255) waarmee de robot draait wanneer de fout nul is.
De code die ik heb bijgevoegd, bevat ook hoe u de positiewaarden van de sensor kunt controleren, zodat u de seriële monitor kunt openen en de code kunt uploaden en zelf met een lijn kunt zien hoe de motoren draaien wanneer de positie varieert.
Als u problemen ondervindt bij het implementeren van uw robot, controleer dan of en zie door de tekens van de vergelijkingen te veranderen !!!
En nu het lastigste gedeelte Kp EN Kd VINDEN, ik moest meer dan 1 uur besteden om mijn robot perfect af te stellen. In plaats van willekeurige waarden op te geven, vond ik een eenvoudigere methode om dit te bepalen.
- Begin met kp en Kd gelijk aan 0, en begin met Kp, probeer eerst Kp in te stellen op 1 en observeer de robot, ons doel is om de lijn te volgen, zelfs als deze wiebelig is, als de robot voorbij schiet en de lijn verliest, verlaag dan de kp-waarde. Als de robot niet door een bocht kan navigeren en traag is, verhoog dan de Kp-waarde.
- Zodra de robot de lijn enigszins lijkt te volgen, past u de Kd-waarde (Kd-waarde > Kp-waarde) aan vanaf 1 en verhoogt u de waarde totdat u een soepele rit ziet met minder wiebelen.
- Zodra de robot de lijn begint te volgen, verhoogt u de snelheid en kijkt u of hij de lijn kan vasthouden en volgen.
Houd er rekening mee dat snelheid een directe invloed heeft op de PID-afstemming en dat u soms opnieuw moet afstemmen om de snelheid van uw robot aan te passen.
Nu kunnen we beginnen met het bouwen van onze robot.
Stap 2: Het bouwen
Arduino atmega 2560 met USB-kabel - dit is de belangrijkste microcontroller die wordt gebruikt.
Chassis - voor het robotchassis heb ik 2 ronde acrylplaten gebruikt die voor een ander project worden gebruikt dat hier perfect voor is. Met behulp van moeren en schroeven heb ik een chassis van 2 verdiepingen gebouwd, zodat ik andere modules aan de bovenplaat kan bevestigen. of u kunt gebruik maken van kant en klare chassis beschikbaar.
www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…
Micrometalen tandwielmotoren - de robot had snel roterende motoren nodig om de PID-routine aan te kunnen, daarvoor heb ik motoren gebruikt met een vermogen van 6V 400 tpm en geschikte wielen met grip.
www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…
www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…
QTR 8Rc-sensorarray - dit kan worden gebruikt voor het volgen van lijnen, zoals eerder vermeld, denk ik dat je nu een duidelijk begrip hebt van hoe je de sensorarray met PID moet bedienen. De code is heel eenvoudig en met behulp van bestaande Arduino-bibliotheken kun je om een snelle lijnvolger te bouwen.
www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…
TB6612FNG Motordriver - Ik wilde een motordriver gebruiken die in een handomdraai bochten kan afhandelen en van richting kan veranderen, die in staat is om de motoren effectief te remmen wanneer het PWM-signaal laag werd.
www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…
Lipo-batterij - 11.1V lipo-batterij wordt gebruikt om de robot van stroom te voorzien. Hoewel ik een lipo-batterij van 11.1 V heb gebruikt, is deze capaciteit meer dan wat nodig is voor de Arduino en de motoren. Als je een lichtgewicht 7.4V kunt vinden lipo-batterij of 6V Ni-MH-batterijpakket, het zal perfect zijn. Daarom moet ik een buck-converter gebruiken om de spanning om te zetten naar 6V.
11.1V-
7.4 V-
Buck converter module-
Daarnaast heb je jumperdraden, bouten en moeren, schroevendraaiers en elektrische tapes en ook kabelbinders nodig om ervoor te zorgen dat alles op zijn plaats zit.
Stap 3: Montage
bevestig de motoren en een klein zwenkwiel in een plaat met behulp van moeren en schroeven en monteer vervolgens de QTR-sensor, motordriver, arduino-kaart en ten slotte de batterij op het chassis.
Hier is een perfect diagram dat ik op internet heb gevonden en waarin staat hoe de verbindingen moeten worden gemaakt.
Stap 4: Ontwerp uw lijnspoor
Nu lijkt je project bijna voorbij te zijn. Voor de laatste fase heb je een kleine arena nodig om je robot te testen. Ik heb een willekeurige lijn met een breedte van 3 cm witte lijn op een zwarte achtergrond gebruikt. Zorg ervoor dat je alles goed plakt. en vermijd voorlopig 90 graden hoekkruisen en dwarsdoorsneden, want het is een ingewikkeld geval van codering.
Stap 5: Programmeer uw code
1. Download en installeer de Arduino
Desktop-IDE
· windows -
· Mac OS X -
· Linux -
2. Download en plak het QTR 8 RC-sensorarraybestand in de map Arduino-bibliotheken.
·
· Plak bestanden in het pad - C:\Arduino\libraries
3. Download en openLINEFOLLOWING.ino
4. Upload de code naar het Arduino-bord via een USB-kabel
Stap 6: KLAAR
nu heb je een lijnvolgende robot die je zelf hebt gemaakt.
Ik hoop dat deze tutorial nuttig was. Aarzel niet om contact met me op te nemen via [email protected] als je een probleem hebt.
tot snel met weer een nieuw project.
Veel plezier met bouwen!!
Aanbevolen:
Hoe op IoT gebaseerde domotica te maken met NodeMCU-sensoren Besturingsrelais 14 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe op IoT gebaseerde huisautomatisering te maken met NodeMCU-sensoren Besturingsrelais: In dit op IoT gebaseerde project heb ik huisautomatisering gemaakt met Blynk en NodeMCU besturingsrelaismodule met realtime feedback. In de handmatige modus kan deze relaismodule worden bediend vanaf mobiel of smartphone en handmatige schakelaar. In de automatische modus is deze slimme
Is het mogelijk om foto's over te zetten met behulp van op LPWAN gebaseerde IoT-apparaten?: 6 stappen
Is het mogelijk om foto's over te zetten met behulp van op LPWAN gebaseerde IoT-apparaten?: LPWAN staat voor Low Power Wide Area Network en het is een redelijk geschikte communicatietechnologie op het gebied van IoT. Representatieve technologieën zijn Sigfox, LoRa NB-IoT en LTE Cat.M1. Dit zijn allemaal technologie voor communicatie op lange afstand met een laag vermogen. In ge
Lijnvolgende robot: 5 stappen
Lijnvolgende robot: Hallo allemaal, in deze instructable zal ik delen hoe je een lijnvolgende robot kunt maken met behulp van een kit van Amazon. Ik heb deze kit gebruikt om mijn kind te leren solderen. Meestal zijn deze kits ongecompliceerd, je krijgt al het materiaal, componenten, enz. Met de kit
Op Arduino gebaseerde contactloze infraroodthermometer - Op IR gebaseerde thermometer met Arduino: 4 stappen
Arduino-gebaseerde contactloze infraroodthermometer | IR-gebaseerde thermometer met Arduino: Hallo allemaal, in deze instructables zullen we een contactloze thermometer maken met behulp van Arduino. Omdat de temperatuur van de vloeistof / vaste stof soms veel te hoog of te laag is en dan is het moeilijk om er contact mee te maken en de temperatuur dan in die sc
Lijnvolgende robot: 3 stappen
Lijnvolgende robot: Een lijnvolgende robot is een veelzijdige machine die wordt gebruikt om de donkere lijnen die op het witte oppervlak worden getekend, te detecteren en te volgen. Omdat deze robot wordt geproduceerd met behulp van een breadboard, is hij buitengewoon eenvoudig te bouwen. Dit systeem kan worden gefuseerd in