Arduino-opdrachten/Motor-2

Uit basis
Naar navigatie springen Naar zoeken springen
De printervriendelijke versie wordt niet langer ondersteund en kan weergavefouten bevatten. Werk uw browserbladwijzers bij en gebruik de gewone afdrukfunctie van de browser.
Arduino opdrachten

Zie ook Regels en richtlijnen
Zie ook Artikelen bewerken

Motor-2

Leerdoelen motor, h-brug, vrijloopdiode
Voorkennis spanning en stroom
Onderdelen

drukknopschakelaar, potmeter 10 kOhm, H-brug IC

Libraries en functies

Inleiding

Bestand:Voorbeeld.png

Opbouwen van de schakeling

Motor met H-brug

De schakeling bestaat uit:

  • een potmeter, voor het instellen van de snelheid, verbonden met A0
  • een schakelaar (button, gebruikt interne pullup weerstand) voor het omschakelen van de draairichting, verbonden met pin 2
  • een H-brug IC (bijvoorbeeld L293DNE)
    • de "D" in deze IC-naam geeft aan dat dit IC interne vrijloop-diodes (flyback diodes) heeft. Die hoef je dan niet extern toe te voegen.
  • een DC-motor (kleine motor, werkend op 5V, met lage stroom)

Denk om de richting waarin je het H-brug IC monteert:

  • ICs monteer je altijd over de lege middenlijn (die is ervoor gemaakt);
  • de inkeping zit aan de kant van pin 1 van het IC (op het breadboard: rechts);
    • pin 1 is dan de pin boven de inkeping.
  • pin 1 van de H-brug is verbonden met pin 9 van de Arduino (Enable), voor het regelen van de snelheid (PWM)
  • pin 2 (Control1) is verbonden met pin 10 (in1), voor de richting van de motor
  • pin 7 (Control2) is verbonden met pin 11 (in2), voor de richting van de motor
  • pin 12 (GND) is verbonden 0V
  • pin 8 (VCC - power) is verbonden met 5V, voor de power voor de motor
  • pin 16 (VCC - logic) is verbonden met 5V, voor de besturingslogica.

De motor verbind je met pin 3 en pin 6 van de H-brug.

Schema

Motor met H-brug

Programma

int enable = 9;
int in1 = 10;
int in2 = 11;
int button = 2;
int potmeter = A0;

boolean reverse = false;

void setMotor(int speed, boolean reverse) {
  analogWrite(enable, speed);
  digitalWrite(in1, ! reverse);
  digitalWrite(in2, reverse);
}

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enable, OUTPUT);
  pinMode(button, INPUT_PULLUP);
}

void loop() {
  int speed = analogRead(potmeter) / 4;
  if (digitalRead(button) == LOW) {
    reverse = ! reverse;
    delay(200);
  }
  setMotor(speed, reverse);
}

Uitleg van het programma

De besturing van de H-brug is verrassend eenvoudig:

  • enable geeft aan of de motor spanning krijgt of niet;
    • door deze te koppelen aan een PMW-output kunnen we de snelheid van de motor regelen;
  • in1 en in2 geven de stand van de schakelaars van de H-brug aan, volgens onderstaande tabel
    • als we ervoor zorgen dat in1 != in2 (in1 verschilt van in2) dan draait de motor;
    • door deze beide tegelijk om te wisselen veranderen we de richting van de motor;
in1 in2 motor
0 0 stop
0 1 links
1 0 rechts
1 1 stop

De andere onderdelen zijn bekend:

  • met de button schakelen we de richting van de motor om;
    • denk om de delay! Anders blijft de motor omschakelen, in hoog tempo.
  • met de potmeter stellen we de snelheid van de motor in.
    • denk hierbij om de schaling.

Vragen en opdrachten

Eerste experimenten

LEDS voor richting

Je kunt de H-brug testen door twee LEDs van verschillende kleuren met elk een serieweerstand te verbinden met de motor-verbindingen (IC-aansluitingen 3 en 6). De ene LED verbind je in de ene richting, de andere in tegengestelde richting.

  • sluit eerst alleen deze LEDs aan; de motor nog niet. Je kunt dan zien dat:
    • de ene LED brandt, en de andere niet; of omgekeerd, als je de richting omkeert (button);
    • de LED meer of minder brandt, als je de potmeter-instelling verandert.
  • sluit vervolgens de motor aan naast de LED-verbindingen.
    • wat verwacht je te zien?
    • wat krijg je te zien?
    • hoe kun je dit verklaren?

Verdiepingsvragen