# Actuatoren en motoren

Aan het eind van dit hoofdstuk kun je:

Uitleggen wat actuatoren zijn en hun rol in elektronische systemen.
Een servomotor aansluiten en besturen met de Arduino.
Een programma schrijven dat een servomotor aanstuurt op basis van sensorinput.


# Wat zijn actuatoren?

[![image.png](https://www.digitaallab.nl/uploads/images/gallery/2024-10/scaled-1680-/yLlimage.png)](https://www.digitaallab.nl/uploads/images/gallery/2024-10/yLlimage.png)

**Definitie**: Een actuator is een apparaat dat energie omzet in beweging. Het wordt gebruikt om een systeem of mechanisme te controleren of te bewegen.

**Voorbeelden van actuatoren**:

- **Servomotoren**: Precisie motoren die een hoekpositie kunnen aannemen.
- **DC-motoren**: Standaard motoren die continu kunnen draaien.
- **Stepper motoren**: Motoren die in discrete stappen bewegen.
- **Relais**: Elektrische schakelaars die circuits kunnen openen of sluiten.

**Waarom actuatoren gebruiken?**

- Ze stellen je in staat om fysieke beweging te integreren in je projecten.
- Worden gebruikt in robotica, automatisering, en mechanische systemen.

# Werken met servomotoren

**Wat is een Servomotor?**

- Een servomotor is een motor die een bepaalde hoekpositie kan aannemen, meestal tussen 0° en 180°.
- Hij bevat een motor, een tandwielstelsel, een potentiometer en een besturingscircuit.

**Aansluiten van een Servomotor:**

1. **Componenten**: Servomotor (bijv. SG90), Arduino, breadboard, jumper wires.
2. **Draden van de servo**:
    
    
    - **Rood**: Voedingsspanning (meestal 5V).
    - **Bruin of Zwart**: Aarde (GND).
    - **Geel, Oranje of Wit**: Signaal (PWM-besturingssignaal).
3. **Aansluiting**:
    
    
    - Verbind de **rode draad** met de 5V pin van de Arduino.
    - Verbind de **bruine/zwart draad** met GND.
    - Verbind de **geel/oranje/witte draad** met digitale pin 9 (PWM pin).

**Let op:** Sommige servomotoren kunnen meer stroom trekken dan de Arduino kan leveren. Voor dit voorbeeld is het veilig, maar voor grotere servo's moet je een externe voeding gebruiken.

### De Servo Bibliotheek

- Arduino heeft een ingebouwde **Servo** bibliotheek die het eenvoudig maakt om servomotoren aan te sturen.
- De bibliotheek zorgt voor de juiste timing van de PWM-signalen die nodig zijn om de servo te besturen.

**Toevoegen van de Servo Bibliotheek:**

- Ga in de Arduino IDE naar **Schets &gt; Bibliotheek gebruiken &gt; Servo** of voeg `#include <Servo.h>` toe aan je code.

### Code om de Servomotor te Besturen

**Basiscode om de servo te bewegen:**

```c++
#include <Servo.h>

Servo mijnServo;  // Maak een Servo object aan

void setup() {
  mijnServo.attach(9);  // Verbind de servo met pin 9
}

void loop() {
  mijnServo.write(0);    // Beweeg naar 0 graden
  delay(1000);           // Wacht 1 seconde
  mijnServo.write(90);   // Beweeg naar 90 graden
  delay(1000);
  mijnServo.write(180);  // Beweeg naar 180 graden
  delay(1000);
}
```

**Uitleg van de Code:**

- `#include <Servo.h>`: Voegt de Servo bibliotheek toe.
- `Servo mijnServo;`: Maakt een nieuw Servo object.
- `mijnServo.attach(9);`: Verbindt het Servo object met pin 9.
- `mijnServo.write(hoek);`: Stuurt de servo naar de opgegeven hoek (0° - 180°).

# Servo besturen met een potentiometer

**Sensorinput gebruiken om de servo te besturen:**

1. **Aansluiting van de potentiometer:**
    
    
    - Verbind de middelste pin van de potentiometer met analoge pin A0.
    - Verbind de buitenste pinnen met 5V en GND.
2. **Code aanpassen:**
    
     ```c++
    #include <Servo.h>
    
    Servo mijnServo;
    
    void setup() {
      mijnServo.attach(9);
    }
    
    void loop() {
      int sensorValue = analogRead(A0);              // Lees de potentiometer
      int hoek = map(sensorValue, 0, 1023, 0, 180);  // Converteer naar hoek
      mijnServo.write(hoek);                         // Beweeg servo naar hoek
      delay(15);                                     // Kleine pauze voor stabiliteit
    }
    
    ```

**Uitleg van de Code:**

- `analogRead(A0)`: Leest de waarde van de potentiometer.
- `map(sensorValue, 0, 1023, 0, 180)`: Converteert de sensorwaarde naar een hoek tussen 0° en 180°.
- `mijnServo.write(hoek)`: Beweegt de servo naar de berekende hoek.

### Opdracht

**Doel:** Programmeer de servomotor om heen en weer te bewegen op basis van een sensorinput (potentiometer).

**Instructies:**

1. Bouw de schakeling met de servomotor en potentiometer zoals hierboven beschreven.
2. Schrijf of kopieer de code in de Arduino IDE.
3. Upload de code naar je Arduino.
4. Draai aan de potentiometer en observeer hoe de servomotor reageert.

### Extra Uitdagingen

- **Uitbreiding 1:** Gebruik een LDR in plaats van een potentiometer om de servo te besturen op basis van lichtintensiteit.
- **Uitbreiding 2:** Laat de servo automatisch heen en weer bewegen tussen twee hoeken met een instelbare snelheid.

### Veelgemaakte Fouten

- **Verkeerde voeding van de servo**: Zorg ervoor dat de servo voldoende stroom krijgt; gebruik eventueel een externe voeding.
- **Servo niet correct aangesloten**: Controleer de kleurcodering van de draden.
- **Servo beweegt schokkerig**: Voeg een delay toe om de beweging te stabiliseren.

### Veiligheidstips

- Gebruik geen servomotoren die meer stroom vereisen dan de Arduino kan leveren zonder externe voeding.
- Zorg ervoor dat bewegende delen vrij kunnen bewegen zonder obstakels.
- Pas op voor scherpe randen of bewegende onderdelen die letsel kunnen veroorzaken.