Motorregeling voor robots: een leertraject
Twee motoren met precieze snelheid en richting aansturen, uitlezen hoe ver ze hebben gedraaid, en een robot met differentiële aandrijving besturen.
Motoren zijn waar de beslissingen van een robot beweging worden. Dit leertraject bouwt motorregeling vanaf nul op: eerst schakel je echte motorstroom veilig met een H-brug en PWM, dan sluit je de terugkoppeling door encoders te lezen zodat je weet hoe ver en hoe snel elk wiel heeft gedraaid, en ten slotte combineer je twee wielen tot differentiële aandrijving en odometrie.
Doorloop de stappen in volgorde — elke stap ontgrendelt de volgende zodra je die hebt afgerond. Aan het eind kun je de wielen van een robot met echte precisie aansturen, de basis voor lijnvolging, lijndoolhofoplossen en autonome navigatie.
Voordat je begint
Je moet comfortabel zijn met het bedraden van een breadboard en het aflezen van een spanning, en je hebt een microcontroller nodig die je al kunt flashen — een Arduino Uno is de gebruikelijke keuze. Er is geen regeltheorie nodig; daar is het PID-leertraject voor, en dat verwacht dit leertraject eerst.
Wat je aan het eind kunt
- Een borstelgelijkstroommotor in beide richtingen op een opgegeven snelheid aansturen, zonder dat de driver of het bord warm wordt.
- Uitleggen waarom een motor bij 15% duty stilstaat en bij 30% gaat lopen, en die drempel voor je eigen hardware meten in plaats van hem te gokken.
- Ruwe encoderpulsen omrekenen naar afgelegde millimeters en millimeters per seconde, inclusief het juiste omgaan met de ×4-kwadratuurfactor.
- “Draai 90° op de plaats naar links” omzetten in twee wielsnelheden, één voor het linkerwiel en één voor het rechterwiel, en voorspellen waar de robot belandt op basis van alleen de wielbeweging.
- Een tandmotor dimensioneren op basis van de massa en de wielen van je eigen robot, in plaats van de motor uit de kit te kopen en het op het tapijt te ontdekken.
- De speling van je reductie meten in graden en zeggen wat die je odometrie kost.
- Uitrekenen welke maximale kracht je robot op de vloer kan uitoefenen, en zeggen of de motoren of de banden je tegenhouden.
Waar mensen vastlopen
De motoren voeden uit de 5 V-rail van de regelaar. Dit is de meest voorkomende storing bij een eerste robot. De spanningsregelaar kan geen motorstroom leveren, dus de rail zakt in, het bord valt uit in brown-out en herstart, en het symptoom lijkt op een softwarefout. Motoren krijgen hun eigen voeding; alleen de logische kant van de driver deelt de 5 V van het bord — de pagina over het stroombudget heeft de berekening en de meting.
Geen gemeenschappelijke massa. De driver en de regelaar moeten een gemeenschappelijke massareferentie delen, anders betekenen de richtingspinnen niets. Alles lijkt goed bedraad en er beweegt niets.
Verwachten dat de odometrie klopt. Wielodometrie drijft onbeperkt weg — elke slip en elke millimeter wieldiameterfout telt op en wordt nooit gecorrigeerd. Over een meter is hij uitstekend, over honderd meter waardeloos. Die beperking is de reden dat het Padplanning en kartering bestaat.
Encoderflanken inconsistent tellen. Een kwadratuurencoder levert vier telbare flanken per cyclus. Eén flank tellen en met de ×4-waarde uit de datasheet werken zet elke afstand factor vier op de schop, wat leest als een volledig verkeerd gekalibreerd wiel.
De regelaar de schuld geven voor de reductie. Een fout die van teken verandert met de richting is mechanisch, geen afstemmingsfout. Een tandwielstelsel heeft speling, die bij elke omkering wordt opgebouwd, en een encoder op de motoras ziet er niets van.
Wat je nodig hebt
| Wat | Waarom dit leertraject het nodig heeft | Opmerkingen |
|---|---|---|
| Twee DC-tandmotoren | Het onderwerp van het hele leertraject | Uitvoeringen met encoder kosten iets meer en besparen later een herbouw |
| Een motordriver | Een H-brug, zodat een logische pin motorstroom kan aansturen | L298N als hij in de kit zat, TB6612FNG als je hem koopt |
| Een aparte motoraccu | De rail die de motoren omlaag trekken mag niet de rail zijn waarop het bord draait | Elk accupakket dat vastloopstroom kan leveren |
| Een multimeter | Vastloopstroom en spanningsdip meten | Hier is de stroomstand belangrijk, niet alleen volt |
| Een rolmaat | Controleren of “rij 1 m” ook echt 1 m opleverde | Het goedkoopste en meest eerlijke instrument op de werkbank |
Waarom het leertraject deze volgorde volgt
Dimensioneren komt bewust vóór het bedraden. Vrijwel elke vraag over “mijn robot is te traag” of “mijn driver is doorgebrand” is een dimensioneringsbeslissing die je maanden eerder per ongeluk nam door simpelweg de motor uit de doos te gebruiken. Uitrekenen welk koppelmoment je eigen robot nodig heeft kost twintig minuten en beslecht vragen die de rest van het leertraject anders steeds opnieuw oproept.
Tractie komt direct na het dimensioneren omdat die de tweede grens stelt, en op een kleine robot is dat de lagere. Het vastloopkoppel zegt wat de motor kan produceren; wrijving zegt wat de vloer accepteert. Een lichte robot op een gladde vloer bereikt de tractiegrens rond een kwart van het vastloopkoppel, wat betekent dat de laatste drie kwart van wat je motor kan leveren de grond helemaal niet bereikt. Dimensioneren zonder tractie geeft je een robot die op papier sterk is en in de praktijk zijn wielen laat doorslippen.
PWM komt vóór encoders omdat een motor in de open lus het eenvoudigste is dat mis kan gaan, en een bedradingsfout is veel makkelijker te debuggen als er geen regellus bovenop zit. Zorg eerst dat beide wielen in beide richtingen draaien op een opgegeven duty.
Encoders komen vóór differentiële aandrijving omdat differentiële aandrijving rekenwerk is bovenop gemeten wielbeweging. Zonder encoders kun je sturen, maar je kunt niet zeggen waar de robot is heen gegaan, en de odometriehelft van die stap heeft niets om mee te werken.
Bewegingsprofielen en de twee verliesstappen komen als laatste omdat elk een correctie is op iets dat de eerdere stappen je liet geloven. Bewegingsprofielen corrigeren het idee dat je een positie rechtstreeks kunt aansturen. Wielslip corrigeert het idee dat de encoder de grond meet. Speling corrigeert het idee dat de encoder het wiel meet. Alle drie zijn teleurstellingen, en alle drie leer je hier goedkoper dan op een robot die je nog af moet ronden.
Controlepunten: zo weet je dat een fase is gelukt
| Fase | De controle | Zo ziet een succes eruit |
|---|---|---|
| Motor dimensioneren | Bereken het benodigde koppelmoment uit de massa van je robot, de wielstraal en de gewenste acceleratie | Een getal in N·m dat je tegen een datasheet kunt houden — en je kent de vastloopstroom van je motor |
| Tractiegrens | Houd de robot met volgas stil tegen een keukenweegschaal | De waarde vlakt af ver onder de vastloopkracht van de motor, en de wielen draaien |
| PWM-regeling | Veer de duty op elk wiel van 0 naar 255 in stappen van 5 | Je kunt de duty noemen waarbij elk wiel voor het eerst draait, en de twee getallen verschillen |
| Richtingsregeling | Geef vooruit, achteruit en remmen op beide kanalen | Alle zes toestanden werken, en je kunt uitleggen wat remmen anders doet dan vrijlaten |
| Encoders | Duw de robot met de hand precies 1 m en lees de tellingen | De tellingen komen overeen met 1000 mm ± 20 mm, met de ×4-kwadratuurfactor |
| Differentiële aandrijving | Laat de robot 90° op de plaats draaien en meet met een gradenhoek | Binnen een paar graden, en reproduceerbaar — een consistente fout is speling, een willekeurige is slip |
| Bewegingsprofielen | Geef met dezelfde grenzen een korte en een lange verplaatsing op | De korte verplaatsing bereikt nooit de topsnelheid, en je kunt uit de profielvorm zeggen waarom |
| Speling | Draai het wiel met de hand tot het in elke richting weerstand geeft | Je hebt een getal in graden, en dat is niet nul |
Waar dit leertraject stopt
Dit leertraject stopt bij het nauwkeurig aansturen van beweging. Er wordt geen terugkoppeling gesloten rond een extern doel — geen lijn om te volgen, geen muur waar je langs moet blijven, geen streefwaarde waar je op moet convergeren. Dat is regeling met PID, en dat gaat ervan uit dat je alles hier beheerst.
Drie bewuste weglatingen die het waard zijn te noemen. Borstelloze motoren en ESC’s zijn een ander regelprobleem, en vrijwel geen kleine grondrobot heeft er een nodig. Stappenmotoren ruilen de encoder in voor een positie in de open lus, ten koste van koppelmoment en snelheid — de juiste ruil voor een printer en de verkeerde voor een rover — en daarvoor is er een eigen leertraject in Nauwkeurige beweging met stappenmotoren. Holonome aandrijvingen — mecanum- en omniwielen die zijwaarts kunnen bewegen — hebben vier onafhankelijk geregelde wielen en een eigen kinematisch model nodig, en daarvoor is er een eigen leertraject in holonome aandrijving. En stroommeting — meten wat de motor werkelijk trekt in plaats van wat je opgaf — is de professionele manier om een vastloop te detecteren en is werkelijk nuttig, maar vraagt hardware die de meeste standaarddrivers niet hebben.
Leerroute
De route
Volg de knooppunten op volgorde – elk ontgrendelt het volgende zodra je het hebt afgerond. Je voortgang wordt op dit apparaat opgeslagen.
0 / 13 klaar
Veelgestelde vragen
Veelgestelde vragen
Wat moet ik leren om de motoren van een robot te regelen?
Vier lagen, in volgorde. Ten eerste dimensioneren: de massa en de wieldiameter van je robot omrekenen naar het koppelmoment en de RPM die je werkelijk nodig hebt, zodat je de motor kiest in plaats van hem over te erven. Ten tweede schakelen: een H-brug en PWM, waarmee een logische pin een stroom kan regelen die hij zelf nooit kan leveren. Ten derde meten: een encoder, zodat de robot weet hoe ver elk wiel heeft gedraaid in plaats van dat aan te nemen. Ten vierde combineren: differentiële aandrijving, die van twee wielsnelheden een koers en een positie maakt. Al het andere — lijnvolging, PID, navigatie — is op die vier gebouwd.
Waarom draait mijn motor pas vanaf ongeveer 30% PWM-duty?
Statische wrijving en de losbreekweerstand van de reductie moeten eerst worden overwonnen voordat er iets draait, en onder die drempel bromt de motor alleen maar. De waarde is een eigenschap van je specifieke hardware — overbrengingsverhouding, toestand van de lagers, temperatuur en hoeveel gewicht op de wielen staat — en moet dus gemeten worden, niet opgezocht. Verhoog de duty in stappen van 5 en noteer waar elk wiel voor het eerst draait. Robots hebben vaak twee verschillende drempels, één per kant, en een robot die bij lage snelheid uitboogt laat meestal dat verschil zien en geen besturingsfout.
Hoe nauwkeurig is wielodometrie?
Uitstekend over een meter en waardeloos over honderd. Odometrie integreert de wielbeweging, dus elke fout die ze maakt is permanent — geen enkele meting corrigeert die ooit. Willekeurige slip groeit met de wortel van de afstand, wat te overleven valt, maar een systematische fout zoals een wieldiameter die 1% afwijkt groeit lineair, en dat valt niet te overleven. Het praktische gevolg is dat odometrie het juiste gereedschap is om een regellus te sluiten over de volgende paar seconden, en het verkeerde om te weten waar je na vijf minuten bent.
L298N of TB6612FNG — welke motordriver moet ik gebruiken?
TB6612FNG voor vrijwel elke kleine robot. De MOSFET-uitgangstrap verlaagt ongeveer 0,5 V tegenover de ruim 2 V van de L298N, en bij een 6 V-motor is dat verschil een derde van je voeding die als warmte eindigt voordat de motor hem ziet. De L298N verdient zijn plek wanneer je meer dan ongeveer 1,2 A aanhoudende stroom per kanaal nodig hebt, of wanneer de motorvoeding boven de 13,5 V-limiet van de TB6612FNG ligt. Het is ook waar de meeste kits mee geleverd worden, dus het is de moeite waard goed te kennen, ook als je hem vervangt.
Heb ik encoders nodig op een beginnersrobot?
Niet voor een lijnvolger, die stuurt op zijn lijnsensor en nooit hoeft te weten hoe ver hij is gekomen. Je hebt ze nodig zodra de robot een vaste afstand moet afleggen, een vaste hoek moet draaien, of een snelheid moet vasthouden die niet zakt als de accu leeg is of het tapijt dikker wordt. Een lijndoolhofoplosser heeft ze nodig; een eerste lijnvolger niet. Ze later toevoegen betekent andere motoren, dus als je denkt daar te komen, koop dan motoren met de encoder al ingebouwd.
Waarom schiet de draai van mijn robot elke keer hetzelfde stuk door?
Een fout die consistent is en van teken verandert met de richting is mechanisch, geen afstemmingsprobleem. Elk tandwielstelsel heeft speling — vrije ruimte die moet worden opgenomen voordat de uitgang beweegt — en die wordt bij elke omkering opgebouwd. Een encoder op de motoras zit aan de verkeerde kant van de reductie en ziet er niets van, dus de regelaar gelooft dat de beweging klaar is. Meet de speling in graden aan het wiel en compenseer er in software voor, of keer niet halverwege een beweging om.