Arduino Nano - Servo Motor

Deze tutorial legt uit hoe u de Arduino Nano gebruikt om een servo motor te besturen. We behandelen in detail:

Hardware Required

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×Servomotor
1×Jumper Draden
1×(optioneel) DC Stroomaansluiting
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Servo Motor

Een servo motor is een component die in staat is om zijn as te roteren, meestal tussen 0° en 180°. Het wordt vaak gebruikt voor het regelen van de hoekpositie van een object.

De Servo Motor Pinout

De servo motor heeft drie pinnen:

  • VCC-pin (meestal rood) moet worden verbonden met VCC (5V)
  • GND-pin (gewoonlijk zwart of bruin) moet worden verbonden met GND (0V)
  • Signaalpin (doorgaans geel of oranje) ontvangt het PWM-controlesignaal van een pin van een Arduino Nano.
servo motor pinout

Arduino Nano - Servo Motor

Sommige pins van de Arduino Nano kunnen worden geprogrammeerd om een PWM-signaal te genereren. We kunnen de signaalpin van de servo motor verbinden met zo’n pin en deze programmeren om een PWM-uitgang te produceren. Hiermee kunnen we de servo motor aansturen.

Dankzij de Arduino Nano Servo library is het eenvoudig om een servo motor te bedienen. We hoeven niet precies te weten hoe servo motors werken of hoe PWM-signalen gegenereerd worden. Alles wat u hoeft te leren is hoe u de library gebruikt.

Aansluitschema

Arduino Nano Servo Motor wiring diagram

This image is created using Fritzing. Click to enlarge image

Om het simpel te houden, is het bovenstaande aansluitschema bedoeld voor testen of educatieve doeleinden, en voor een servo motor met een klein koppel. We raden sterk aan om in de praktijk een externe voeding te gebruiken voor de servo motor. Onderstaand aansluitschema laat zien hoe u de servo motor aansluit op een externe stroomvoorziening.

Arduino Nano servo motor external power supply wiring diagram

This image is created using Fritzing. Click to enlarge image

Vergeet niet om de GND van de externe voeding te verbinden met de GND van de Arduino.

Hoe programmeer je voor Servo Motor

  • Include de library:
#include <Servo.h>
  • Maak een Servo-object aan:
Servo servo;
  • Heeft u meer dan één servo motor, declareer dan meerdere Servo-objecten:
Servo servo1; Servo servo2;
  • Wijs de Arduino Nano-pin toe die verbonden is met de signaalpin van de servo motor. Gebruik bijvoorbeeld pin 9:
servo.attach(9);
  • Bestuur daarna de servo motor naar de gewenste hoek, bijvoorbeeld 90°
servo.write(90);

Arduino Nano Code

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano pin D9 verbonden met signaalpin van servo motor Servo servo; // maak een servo-object om een servo te bedienen int pos = 0; // variabele om de servo positie op te slaan void setup() { servo.attach(SERVO_PIN); // verbinding maken met de servo op pin 9 } void loop() { for (pos = 0; pos <= 180; pos += 1) { // draai van 0 graden naar 180 graden // in stappen van 1 graad servo.write(pos); // stuur de servo naar de positie in variabele 'pos' delay(10); // wacht 10ms om de servo de tijd te geven de positie te bereiken } for (pos = 180; pos >= 0; pos -= 1) { // draai van 180 graden naar 0 graden servo.write(pos); // stuur de servo naar de positie in variabele 'pos' delay(10); // wacht 10ms om de servo de tijd te geven de positie te bereiken } }

Snelle Stappen

  • Verbind de Arduino Nano met uw computer met een USB-kabel.
  • Start de Arduino IDE, selecteer het juiste board en de juiste poort.
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de Upload knop in de Arduino IDE om de code te compileren en naar de Arduino Nano te uploaden.
How to upload code to Arduino Nano
  • Bekijk het resultaat: De servo motor draait zowel met de klok mee als tegen de klok in.

Code Uitleg

Bekijk de regel-voor-regel uitleg in de commentaren van de broncode!

Hoe de snelheid van de Servo Motor te regelen

Met behulp van de map() en millis() functies kunnen we de snelheid van een servo motor geleidelijk aanpassen zonder andere code te blokkeren.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano pin D9 verbonden met signaalpin van servo motor Servo servo; unsigned long MOVING_TIME = 3000; // bewegingstijd is 3 seconden unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(SERVO_PIN); move_start_ms = millis(); // start beweging // TODO: andere code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: andere code }

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en help u het concept snel onder de knie te krijgen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!