Tutorial · Beginner · 18 min lezen

Bestuur gelijkstroommotoren met PWM en een H-brug

Leer een gelijkstroommotor met borstels te besturen met PWM en een H-brug: richting, remmen, stroomgrenzen, bedrading en het veilig kiezen van een driver.

Een pin van een microcontroller kan beschrijven hoe een motor moet bewegen, maar hij kan de motorstroom niet veilig leveren. Een gelijkstroommotor (DC) met borstels kan bij het opstarten of bij vastlopen meerdere malen zijn normale stroom trekken. Een H-brugmotordriver zit tussen de regelaar en de motor, schakelt die stroom vanaf een aparte voeding, en laat de regelaar snelheid en richting kiezen.

Deze tutorial bouwt het motortrap dat lijnvolgers, labyrintrobots en kleine obstakelvermijdende platformen gebruiken. De precieze pinnamen verschillen per driver, maar de elektrische keuzes blijven gelijk.

Begrijp wat de H-brug verandert

Een gelijkstroommotor keert om wanneer de stroom erdoorheen omkeert. Een H-brug gebruikt vier elektronische schakelaars rond de motor. Eén diagonale paar stuurt de stroom vooruit; het andere stuurt hem teruguit. Driverbords stellen dat schakelen bloot via logische pinnen als IN1 en IN2:

IN1 IN2 Motortoestand
Laag Laag Vrijlopen of remmen, afhankelijk van de driver
Hoog Laag Vooruit
Laag Hoog Achteruit
Hoog Hoog Remmen of vrijlopen, afhankelijk van de driver

Ga nooit uit van wat beide-laag en beide-hoog betekenen. Lees de waarheidstabel van de specifieke driver. Sommige chips hebben ook een ENABLE-, STANDBY- of SLEEP-pin die geactiveerd moet zijn voordat de uitgangen werken.

Pulsbreedtemodulatie (PWM) regelt de gemiddelde spanning door de aansturing snel aan en uit te schakelen. Een duty cycle van 25% is een kwart van elke periode aan; dat garandeert geen kwart van de assnelheid, want het resultaat hangt ook af van belasting, voedingsspanning, wrijving en de tegen-EMK van de motor.

Drie blokgolfsporen verticaal gestapeld, alle drie met dezelfde frequentie tussen nul en twaalf volt wisselend maar met verschillende inschakeltijden. De bovenste golf is vijfenzeventig procent van elke periode aan met een stippellijn die zijn gemiddelde van negen volt markeert, de middelste is veertig procent van de tijd aan met een gemiddelde van vier komma acht volt, en de onderste is vijftien procent aan met een gemiddelde van een komma acht volt.
De voedingsspanning verandert nooit. Alleen de fractie van de tijd dat hij aangesloten is verandert, en de inductie van de motor maakt daarvan een gemiddelde. SVG downloaden

Kies de driver op stroom, niet op motorgrootte

Zoek de nominale spanning, de nullaststroom en de vastloopstroom van de motor op. De vastloopstroom is het belangrijke getal voor de dimensionering van de driver, want dat is wat de motor vraagt wanneer de as niet kan draaien. Is de datasheet niet beschikbaar, meet dan de wikkelweerstand met de motor losgekoppeld en schat stall current = supply voltage / winding resistance. De weerstand van de meetleidingen maakt dit slechts een schatting.

Kies een driver waarvan het motorspanningsbereik de voeding omvat en waarvan de piekstroom het opstarten overleeft. Controleer daarna de continue stroom en de thermische omstandigheden. Een bord dat met een groot piekgetal gespecificeerd wordt, kan dat soms alleen kort verdragen of met forse koeling.

Houd ook rekening met spanningsval. Oudere bipolaire transistor-drivers kunnen flinke spanning verliezen binnen de brug; moderne MOSFET-drivers verspillen doorgaans minder vermogen. Voor een batterijrobot beïnvloedt dat verschil het koppel en de gebruiksduur.

Bedraad één motor veilig

Gebruik deze volgorde vóór het inschakelen:

  1. Sluit de motorvoeding aan op de motorvoedingsingang en de aarde van de driver.
  2. Sluit de motor aan op de twee driveruitgangen, niet op een pin van de microcontroller.
  3. Sluit de aarde van de regelaar aan op de aarde van de driver zodat de logische signalen een referentie delen.
  4. Sluit IN1, IN2 en eventuele enable-pinnen aan op geschikte digitale pinnen.
  5. Houd de motorbedrading kort en leg haar weg van de analoge sensorleidingen.
  6. Controleer de vereisten voor de logische spanning van de driver voordat je een 3,3 V ESP32 of Raspberry Pi aansluit.

Gebruik een zekering of een stroombegrensde labvoeding bij de eerste inschakeling. Voeg lokale ontkoppeling van de voeding toe zoals de datasheet van de driver voorschrijft. Schakel nooit een belaste motor via de 5 V-regelaar of de USB-connector van de Arduino — dat is de brown-out die zich voordoet als een softwarecrash.

Schrijf één kleine motorfunctie

De schoonste interface neemt een commando met teken: positief is vooruit, negatief is achteruit, en nul is gestopt. Op een Arduino-achtig bord ziet een minimale implementatie er zo uit:

const int IN1 = 7;
const int IN2 = 8;
const int PWM_PIN = 5;

void setMotor(int command) {
  command = constrain(command, -255, 255);
  digitalWrite(IN1, command >= 0 ? HIGH : LOW);
  digitalWrite(IN2, command >= 0 ? LOW : HIGH);
  analogWrite(PWM_PIN, abs(command));
}

Dit voorbeeld gaat uit van een driver met een aparte PWM-/enable-ingang. Een driver met twee ingangen kan PWM op de ene ingang verwachten terwijl de andere de richting vasthoudt. Volg zijn waarheidstabel in plaats van pinlogica blind te kopiëren.

Bij omkeren geef je kort het commando nul voordat je van richting verandert. Een omslag op volle snelheid veroorzaakt een grote stroompiek en een mechanische schok. Een eenvoudige helling verbetert ook de tractie:

for (int command = 0; command <= 180; command += 5) {
  setMotor(command);
  delay(15);
}

In een echte regellus maak je die helling tijdsgebaseerd in plaats van met blokkerende delay()-aanroepen.

Test richting, snelheid, vrijlopen en remmen

Til de wielen voor de eerste test van de tafel. Begin met een lage duty cycle, bevestig de aangestuurde richting en verhoog hem dan geleidelijk. Noteer het laagste commando dat de motor betrouwbaar doet starten. Statische wrijving creëert een dode zone, dus commando’s onder die drempel kunnen zoemen zonder te bewegen.

Vergelijk daarna de stopmodi. Vrijlopen ontkoppelt of laat de brug los en laat de traagheid de motor vertragen. Dynamisch remmen kort de motoraansluitingen via de brug, zodat de draaiende motor energie dissipeert en sneller stopt. Remmen geeft meer elektrische en mechanische belasting, dus gebruik het bewust.

Zet de robot ten slotte op de vloer en herhaal het. Een motor die onbelast draait kan de regelaar onder werkelijke belasting brown-outten. Let op de voedingsspanning tijdens het opstarten en controleer dat de driver niet oververhit.

Diagnoseer de veelvoorkomende fouten

  • De regelaar reset als de motor start: de voeding zakt in of motorruis bereikt de logicarail. Gebruik voldoende accucapaciteit, lokale ontkoppeling, nette aarding en waar nodig een aparte regeling voor de logica.
  • De motor draait maar één kant op: controleer beide logische ingangen bij de driver en bevestig dat standby of enable geactiveerd is.
  • De snelheid verandert nauwelijks met PWM: controleer of de gekozen pin daadwerkelijk PWM ondersteunt en of de driver PWM op die ingang accepteert.
  • De driver wordt heet: vergelijk belasting en vastloopstroom met de continue classificatie, controleer de spanningsval en inspecteer op een mechanisch vastgelopen aandrijflijn.
  • Sensoren worden ruisachtig: scheid motor- en sensorbedrading, voeg de onderdrukking toe die de fabrikant van motor/driver aanbeveelt, en filter metingen pas nadat het elektrische pad is gerepareerd.

Zodra één motor voorspelbaar werkt, verdubbel je het kanaal voor een robot met differentiaalaandrijving. De Line Follower Simulator laat zien hoe twee ondertekende wielcommando’s sturen worden, terwijl de PID Controller Simulator laat zien hoe terugkoppeling snelheid kan regelen in plaats van te vertrouwen op ruwe duty cycle.

Houd de hardware-afstelknoppen

Twee nominieel identieke motoren leveren zelden dezelfde snelheid. Bewaar in software een schaalfactor per wiel en het minimale startcommando. Meet in plaats van het verschil te verbergen met een vaste, onverklaarde offset. Later kunnen kwadratuurencoders de lus sluiten en de snelheid corrigeren naarmate batterijspanning en belasting veranderen.

Verken de graaf

Onderdeel van deze bouwprojecten

Projecten en leerroutes waarin deze tutorial voorkomt.

Verder lezen

Bronnen