Motorbesturing (L298N)

Met de L298N ben je met de Raspberry Pi in staat om gelijkstroom (DC) motoren te besturen. Ideaal voor o.a. robotica. Officieel heet de gebruikte module: Dual H-Bridge Motor Controller module. 

De L298N kan twee DC motoren onafhankelijk van elkaar aansturen. In deze tutorial beschrijf ik de besturing van één motor op de L298N.

De module heeft een ingebouwde 5V-regelaar voor het regelen van de spanningen die worden geleverd en gebruikt door de motor die is aangesloten op de L298N-motordriver. De driver kan motoren aandrijven met spanningen van 5V tot 35V met een piekstroom van 2A. Deze spanning wordt geregeld door een jumper die achter de voedingsklem zit te plaatsen of weg te laten.

Als de voedingsspanning maximaal 12V is, is de 5V-regelaar ingeschakeld en de jumper geplaatst. De 5V-pin kunnen we gebruiken als uitgang voor het voeden van o.a. een Raspberry Pi.

Als de voedingsspanning echter hoger is dan 12V, moet de jumper worden losgekoppeld om te voorkomen dat de ingebouwde 5V-regelaar defect raakt. In dit geval wordt de 5V-pin als ingang gebruikt, omdat we deze op een 5V-voeding moeten aansluiten om het IC goed te laten werken.

Ingangspennen  IN1, IN2, IN3  en  IN4  zijn voor het regelen van de draairichting van de motoren, waarbij IN1 en IN2 de draairichting van motor A regelen, terwijl IN3 en IN4 de draairichting van motor B regelen.

De Enable-pinnen ENA en ENB zijn snelheidsregelpinnen voor respectievelijk motor A en B. Deze pinnen zijn meestal bedekt met jumpers. Wanneer de jumper op zijn plaats zit, is de motor ingeschakeld en draait hij op maximale snelheid. 

Hoe werkt de L298N-motordriver?
De L298N-motordriver regelt de rotatiesnelheid van een gelijkstroommotor met behulp van PWM-signalen en de draairichting wordt bepaald door een H-brug. Deze technieken worden hieronder in detail uitgelegd.

Motortoerentalregeling met PWM
PWM stelt ons in staat om de spanning op de motor te regelen in de vorm van blokgolfpulsen met een bepaalde frequentie. De spanning die op de motor wordt toegepast, bepaalt de rotatiesnelheid van de motor door de breedte van deze blokgolf, een duty cycle genaamd, te variëren. De duty-cycle wordt in procenten gegeven en hoe hoger de duty-cycle, hoe hoger de spanning over de motor waardoor ook de rotatiesnelheid toeneemt.

Wanneer de duty-cycle 100% is, is de puls constant HOOG en krijgt de motor het volledige vermogen en draait hij met zijn nominale uitgangssnelheid, terwijl een duty-cycle van 0% betekent dat het pulssignaal constant LAAG is en de motor zal stoppen met draaien.

Draairichting controle met behulp van H-Bridge
De draairichting van een motor wordt bepaald door de stroomrichting door de motor. Dit wordt bereikt met behulp van een H-brugschakeling die in dit geval wordt gebruikt voor het omschakelen van de polariteit van een spanning die wordt toegepast op een belasting zoals een motor.

Hoe werkt een H-brug
Een H-Bridge bestaat uit vier MOSFET’s of transistors die als schakelaars zijn aangesloten. Wanneer twee van deze schakelaars tegelijkertijd in een bepaald formaat worden geactiveerd, wordt de stroomrichting veranderd, waardoor de draairichting van de motor verandert. U kunt het onderstaande diagram raadplegen om te zien hoe de H-Bridge werkt.

Bij gesloten schakelaars S1 en S4 zal de stroom van links naar rechts door de motor vloeien waardoor de motor in een bepaalde richting draait, in dit geval met de klok mee. Evenzo, als de schakelaars S2 en S3 gesloten zijn, zal de stroom van rechts naar links vloeien en draait de motor in de tegenovergestelde richting.

Schakel S1 en S2 en/of of S3 en S4 niet samen in. Deze toestand wordt shoot-through genoemd en kan de MOSFET’s of transistors beschadigen.

De pinnen IN1, IN2, IN3 en IN4 zijn eigenlijk voor het aansturen van de schakelaars van het H-brugcircuit van de L298N-module.

Als IN1 LAAG is en IN2 HOOG, dan draait motor A in een bepaalde richting en als IN1 HOOG is en IN2 LAAG, dan draait de motor in de tegenovergestelde richting. Als alle ingangen hetzelfde signaal hebben, zeg IN1 en IN2 zijn beide LAAG en beide HOOG, dan stopt de motor met draaien.

De onderstaande tabel laat zien hoe de draairichting van motor A en B verandert afhankelijk van de status van de ingangspinnen IN1, IN2, IN3 en IN4.

Specificaties L298N
– Spanningsbereik (signalen): 0 – 5V
– Spanningsbereik (voeding voor motoren): 5 – 35V DC
– Maximale stroom (per brug): 2A

Voor een goede werking wordt geadviseerd om bijpassende motoren op de L298N aan te sluiten, zoals de JGB37-500-CE. Maar dat kan natuurlijk ook een vergelijkbaar model zijn.

12V Motor met tandwielvertraging

In de bekendste Chinese online shop heb je de motor al voor € 4,34 (incl. btw en verz. kosten) een geschikte motor.

Wil je een robotwagentje maken? Kies dan in dezelfde winkel voor onderstaand setje (incl. btw en verz. kosten: € 3,66). Oh ja, bestel er direct twee, dan kun je bijvoorbeeld een van deze leuke wagentjes bouwen.

5V Robot motortje met wiel

Schema
De onderdelen worden als volgt met elkaar verbonden. In het schema wordt van een 12V DC motor gebruik gemaakt, dit kan ook een 5V DC motor zijn. In het schema is één motor opgenomen.

Aansluittabel
De onderdelen worden als volgt met elkaar verbonden. Hierbij is op te merken dat in het voorbeeld een 12V DC motor gebruikt is. Dit kan natuurlijk ook een 5V variant zijn, de voeding wordt dan 5V.

Omdat motoren een aanzienlijk stroomverbruik kunnen hebben wordt geadviseerd een externe voeding te gebruiken en niet de 5V van de Raspberry Pi te gebruiken.

De code
Er is een standaard Python 3 script beschikbaar waarmee je de motor kunt besturen. Wil je de code voor Python 2 gebruiken, dan dient er één regel in de code aangepast te worden. Ik heb een opmerking hiervoor in het script geplaatst.

Je start het script met:

python motor.py

Bediening van het script
Na het opstarten van het script krijg je een melding. Deze wordt gevolgd door een lijst met letters die je moet gebruiken om de motor te besturen. De commando’s worden hieronder gegeven.

r – rijden (om de motor te starten)

s – stop (om de motor te stoppen)

f – vooruit (om de motor vooruit te laten lopen) – standaard richting

b – achteruit (om de draairichting om te keren)

l – laag (om de snelheid te verlagen tot 25%) – standaardsnelheid

m – gemiddeld (om de motor op gemiddelde snelheid 50% te laten draaien)

h – hoog (om de snelheid te verhogen tot 75%)

e – exit (om de motor te stoppen en Python af te sluiten)

Heb je nog vragen? Stel ze in het reactievenster hieronder. Je krijgt altijd antwoord. 

Have A Nice Day!