Arduino-opdrachten/Motor-2

Uit basis
Naar navigatie springen Naar zoeken springen
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