Arduino - Motor met Power

From SPAD-it Wiki
Revision as of 15:08, 18 February 2018 by WikiAdmin (talk | contribs)

Jump to: navigation, search

Een Arduino is prima om een paar LEDjes aan te sturen en eventueel een klein servo-motortje. Maar als je wat meer wilt, zoals veel LEDjes aansturen, of een behoorlijke elektrische motor, volstaat een Arduino niet meer. Toch kun je kunt zo'n motor wel aansluiten met een Arduino, en dan bijvoorbeeld de PWM mogelijkheden ervan gebruiken, maar dan kan het vermogen niet van de Arduino zelf komen; alleen het stuursignaal. Dit kan heel goed met een MOSFET driver. Zo'n MOSFET werkt als een heel snelle, elektronisch aanstuurbare schakelaar, die gemakkelijk mee kan doen met het signaal van de PWM. Daar komt als voordeel bij dat je een andere spanningsbron kunt gebruiken voor de motor. De motor kan bijvoorbeeld op een dikke acuu van 24 Volt werken, terwijl de Arduino het doet met een batterijtje van 5 Volt.

MOSFET driver

Bij de stappenmotor hebben we die drivers al voorbij zien komen, maar er niet veel aandacht aan besteed. Nu gaan we iets dieper in op dergelijke drivers. Zoals gezegd werkt een MOSFET als een elektronisch bestuurbare schakelaar.

MOSFET aansturing.png
Arduino stuurt motor aan via MOSFET

De Gate van de MOSFET krijgt het PWM signaal van de Arduino. Als het PWM signaal laag is, blokkeert de MOSET en kan er geen stroom door de motor lopen, maar als het signaal hoog is, wordt de weerstand van de MOSFET tussen Drain en Source (bijna) nul en krijgt de motor de volle lading van de Vdd. Daarbij kan een MOSFET heel snel schakelen en verbruikt die zelf dus maar heel weinig vermogen. Vdd is de voedingsspanning waar de motor op loopt. Deze mag gekoppeld zijn aan de +5 Volt die ook de Arduino voedt, maar dat hoeft niet en mag ook uit een andere bron komen (zoals in bovenstaand schema). Je kunt dan motoren gebruiken die op een heel andere spanning draaien dan de Arduino. Het is wel belangrijk dat de nul van de voeding van de Arduino gekoppeld wordt aan de nul van de motorvoeding. De dikke lijnen door de motor en MOSFET geven aan dat hier veel stroom mag lopen. De maximale stroom door de MOSFET hangt af van het type dat wordt gekozen en ook of die wel of niet gekoeld wordt. Er zijn MOSFET's die wel 100 ampere kunnen schakelen!

Dan zien we nog een klein detail: de diode over de motor. Een diode is een elementje waar de stroom maar in één richting doorheen kan. Zoals je ziet zit de diode verkeerd om, waardoor er geen stroom doorheen kan lopen. Het lijkt er daarom voor niets in te zitten. Dat is echter niet waar. De motor bevat spoelen en spoelen hebben de neiging om de stroom constant te houden. Als er dus een stroom van Vdd naar nul loopt (als het PWM signaal hoog is), en de MOSFET gaat blokkeren op het moment dat PWM laag wordt, zorgen de spoelen in de motor ervoor dat er toch nog even een stroom blijft lopen. Het gevolg is dat er op de Drain een flinke spanning kan ontstaan die schadelijk kan zijn voor de Arduino en/of de MOSFET zelf. Daarvoor dient de diode, die precies deze spanning kortsluit waardoor er geen schade wordt aangericht.

Overigens heb je voor een brug-schakeling (zie bij stappenmotor) vier MOSFET's nodig, terwijl je voor een snelheidsregeling in één richting met een enkele MOSFET kunt volstaan.


De schakeling

Extra benodigdheden:

  • 1 MOSFET driver module
  • 1 DC motor
  • 1 Bijpassende batterij
File:Naam bestand.png
Beschrijving bovenstaande figuur

Het programma

int motor=10;
int wait=10;

void setup()
{
  pinMode(motor,OUTPUT);
}

void loop()
{
  for (int i=0; i<256; i++) {
    analogWrite(motor,i);
    delay(wait);
  }
  for (int i=254; i>=0; i--) {
    analogWrite(motor,i);
    delay(wait);
  }
}

Uitleg

Het programma is uiterst simpel. De loop heeft twee delen waarin de motor eerst steeds meer vermogen krijgt en daarna steeds minder. Als het programma draait zul je zien dat de motor steeds sneller gaat draaien en dan weer afremt om meteen daarna weer te versnellen. En zo voort. Uiteraard kun je de motorsnelheid programmatisch aan bepaalde inputs koppelen en de snelheid regelen met bijvoorbeeld een potmeter. In dit project willen we alleen laten zien hoe je een zwaardere motor aan kunt sturen met een Arduino.

Beetje spelen

Leuk om zo'n motor aan te sturen, maar wat nu als de motor ook achteruit moet kunnen draaien?

Navigatie