Inhoudsopgave:
Video: Zelfbalancerende robot - PID-regelalgoritme - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Dit project is bedacht omdat ik geïnteresseerd was in meer informatie over regelalgoritmen en hoe ik functionele PID-lussen effectief kon implementeren. Het project bevindt zich nog in de ontwikkelingsfase omdat er nog een Bluetooth-module moet worden toegevoegd waarmee de robot kan worden bestuurd vanaf een smartphone met Bluetooth.
De gebruikte N20 DC-motoren waren relatief goedkoop en hebben dus veel speling. Dit leidt tot een kleine schok als de motoren de 'speling' overwinnen omdat het koppel op de wielen uitoefent. Daarom is het bijna onmogelijk om een perfect vloeiende beweging te bereiken. De code die ik heb geschreven is redelijk eenvoudig, maar demonstreert effectief de mogelijkheden van het PID-algoritme.
Project samenvatting:
Het chassis van de robot is 3D-geprint met een Ender 3-printer en is ontworpen om in elkaar te passen.
De robot wordt bestuurd door een Arduino Uno die sensorgegevens van de MPU6050 haalt en de DC-motoren bestuurt via een externe motordriver. Het werkt op een 7,4V, 1500mAh-batterij. De motordriver regelt dit naar 5V om de Arduino van stroom te voorzien en levert 7,4V aan de motoren.
De software is helemaal opnieuw geschreven met behulp van de 'Arduino-KalmanFilter-master' en 'Arduino-MPU6050-master' bibliotheken van gitHub.
Benodigdheden:
- 3D-geprinte onderdelen
- Arduino UNO
- MPU6050 6-assige sensor
- DC-motorstuurprogramma
- N20 DC-motoren (x2)
- 9V batterij
Stap 1: Robot bouwen
Afdrukken en monteren
De hele constructie moet op de pers passen, maar ik heb superlijm gebruikt om de componenten vast te zetten om ervoor te zorgen dat de robot volledig stijf is bij het balanceren.
Ik heb de onderdelen in Fusion 360 ontworpen en elk onderdeel geoptimaliseerd om zonder ondersteuning te kunnen printen, voor nauwere toleranties en een schonere oppervlakteafwerking.
De instellingen die op de Ender 3-printer werden gebruikt, waren: 0,16 mm laaghoogte bij 40% vulling voor alle onderdelen.
Stap 2: 3D-printrobot
Onderstel (x1)
Linker wiel (x2)
Motorbehuizing links (x2)
Arduino-behuizing (x1)
Stap 3: PID-regelalgoritme
Ik heb vanaf het begin een PID-controlealgoritme geschreven met behulp van de bibliotheken 'Arduino-KalmanFilter-master' en 'Arduino-MPU6050-master' van gitHub.
Het uitgangspunt van het algoritme is als volgt:
- Lees onbewerkte gegevens van MPU6050
- Gebruik Kalman Filter om gegevens van zowel de gyroscoop als de accelerometer te analyseren om onnauwkeurigheden in gyroscoopmetingen als gevolg van versnelling van de sensor te elimineren. Dit retourneert een relatief afgevlakte waarde voor de toonhoogte van de sensor in graden tot op twee decimalen.
- Bereken de fout in de hoek, d.w.z.: de hoek tussen de sensor en het setpoint.
- Bereken de proportionele fout als (constante van evenredigheid x fout).
- Bereken Integrale Fout als de lopende som van (Constante van Integratie x fout).
- Bereken de afgeleide fout zo constant als [(differentiatieconstante) x (verandering in fout / verandering in tijd)]
- Tel alle fouten bij elkaar op om de snelheidsoutput te geven die naar de motoren moet worden gestuurd.
- Bereken in welke richting de motoren moeten draaien op basis van het teken van de fouthoek.
- De lus loopt voor onbepaalde tijd en bouwt voort op de uitvoer naarmate de invoer varieert. Het is een feedbacklus, waarbij de uitvoerwaarden worden gebruikt als de nieuwe invoerwaarden voor de volgende iteratie.
De laatste stap is het afstemmen van de PID-lus Kp, Ki & Kd-parameters.
- Een goed uitgangspunt is om Kp langzaam te verhogen totdat de robot rond het balanspunt oscilleert en een val kan opvangen.
- Start vervolgens Kd op ongeveer 1% van de waarde van Kp en verhoog langzaam totdat de oscillaties verdwijnen en de robot soepel glijdt wanneer hij wordt ingedrukt.
- Begin ten slotte met Ki rond 20% van Kp en varieer totdat de robot het instelpunt "overschrijdt" om actief een val op te vangen en terug te keren naar verticaal.
Aanbevolen:
Obstakel vermijden van LEGO-robot: 8 stappen (met afbeeldingen)
Obstakel vermijden van LEGO-robot: we houden van LEGO en we houden ook van gekke circuits, dus we wilden de twee combineren tot een eenvoudige en leuke robot die kan voorkomen dat hij tegen muren en andere objecten botst. We laten u zien hoe we de onze hebben gebouwd en geven een overzicht van de basisprincipes die nodig zijn, zodat u uw eigen kunt bouwen
Brazo-robot: 28 stappen
Brazo Robot: Beschrijving van het trabajoen en presenteren van documenten die pretenderen te zijn van het spel van de robot en van functies die kunnen worden uitgevoerd door middel van drie plannen (x, y, z,) die een interfaz hebben gemaakt door een unual permit met een pc
[DIY] Spider Robot (Quad Robot, Quadruped): 14 stappen (met afbeeldingen)
[DIY] Spider Robot (Quad Robot, Quadruped): Als je extra ondersteuning van mij nodig hebt, is het beter dat je een geschikte donatie aan mij doet: http://paypal.me/RegisHsu2019-10-10 update:De nieuwe compiler veroorzaakt het berekeningsprobleem met zwevende getallen. Ik heb de code al aangepast. 2017-03-26
HOE EEN INDRUKWEKKENDE HOUTEN ROBOT ARM TE MONTEREN (DEEL 2: ROBOT OM obstakels te vermijden) -- GEBASEERD OP DE MICRO: BIT: 3 stappen
HOE EEN INDRUKWEKKENDE HOUTEN ROBOT ARM TE MONTEREN (DEEL 2: ROBOT OM obstakels te vermijden) -- GEBASEERD OP DE MICRO: BIT: Voorheen introduceerden we Armbit in lijnvolgmodus. Vervolgens introduceren we hoe Armbit te installeren in het vermijden van obstakelmodus
[Arduino Robot] Hoe maak je een Motion Capture-robot - Duimen Robot - Servomotor - Broncode: 26 stappen (met afbeeldingen)
[Arduino Robot] Hoe maak je een Motion Capture-robot | Duimen Robot | Servomotor | Broncode: Thumbs Robot. Gebruikt een potentiometer van MG90S servomotor. Het is erg leuk en makkelijk! De code is heel eenvoudig. Het is slechts ongeveer 30 lijnen. Het ziet eruit als een motion-capture.Laat een vraag of feedback achter! [Instructie] Broncode https://github.c