Arduino - MG996R

In deze tutorial gaan we leren hoe u de MG996R high-torque servo motor gebruikt met Arduino.

Hardware Benodigdheden

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×MG996R Servomotor
1×Jumper Wires (male-male)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables STEM V3 Starterskit (Arduino inbegrepen)
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 de Servo Motor

De MG996R servo motor is een high-torque servo motor die een gewicht tot 15 kg kan tillen. De motor kan zijn arm van 0° tot 180° draaien, wat precieze controle over de hoekpositie mogelijk maakt. Voor basisinformatie over servo motoren verwijzen wij u naar de Arduino - Servo Motor tutorial.

Pinout

De MG996R servo motor die in dit voorbeeld wordt gebruikt, heeft drie pinnen:

  • VCC pin: (meestal rood) moet worden verbonden met VCC (4,8V – 7,2V)
  • GND pin: (meestal zwart of bruin) moet worden verbonden met GND (0V)
  • Signaal pin: (meestal geel of oranje) ontvangt het PWM besturingssignaal van een Arduino pin.
MG996R Servo Motor Pinout

Bedradingsschema

Omdat de MG996R een high-torque servo motor is, verbruikt deze veel stroom. U mag deze motor niet via de 5V-pin van de Arduino voeden. In plaats daarvan dient u een externe voeding te gebruiken voor de MG996R servo motor.

Arduino MG996R Servo Motor Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-mg996r */ #include <Servo.h> Servo servo; // maak servo-object om een servo aan te sturen void setup() { servo.attach(9); // sluit de servo aan op pin 9 en koppel aan het servo-object servo.write(0); // draai de servo direct langzaam naar 0 graden } void loop() { for (int angle = 0; angle <= 180; angle += 1) { // draai langzaam van 0 graden naar 180 graden, in stappen van 1 graad servo.write(angle); // stuur de servo naar de positie in de variabele 'angle' delay(10); // wacht 10 ms tot de servo de positie bereikt } for (int angle = 180; angle >= 0; angle -= 1) { // draai van 180 graden terug naar 0 graden, één graad per keer servo.write(angle); // stuur de servo naar de positie in 'angle' delay(10); // wacht 10 ms tot de servo de positie bereikt } }

Snelle Stappen

  • Verbind de Arduino met de pc via de USB-kabel
  • Open de Arduino IDE, selecteer de juiste board en poort
  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de knop Upload in de Arduino IDE om de code naar de Arduino te uploaden
Arduino IDE - Hoe code uploaden
  • Bekijk het resultaat: De servo motor draait langzaam van 0° naar 180° en vervolgens langzaam terug van 180° naar 0°

Code Uitleg

Lees de regel-voor-regel uitleg in de commentaarregels van de code!

Hoe de Snelheid van de Servo Motor te Besturen

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

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-mg996r */ #include <Servo.h> Servo myServo; unsigned long MOVING_TIME = 3000; // bewegingsduur is 3 seconden unsigned long moveStartTime; int startAngle = 30; // 30° int stopAngle = 90; // 90° void setup() { myServo.attach(9); moveStartTime = millis(); // start beweging // TODO: andere code } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); myServo.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.

※ 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!