Hoe de servomotor te besturen met Arduino

Hoe De Servomotor Te Besturen Met Arduino



Servomotoren is een type elektrisch apparaat dat de positie van een object met grote precisie kan veranderen of roteren. In het begin werden ze gebruikt om RC-vliegtuigvleugels te besturen. Even later vonden ze hun weg naar robotica, humanoïde robots en vele automatiseringsprojecten. In tegenstelling tot stappenmotoren is hun beweging beperkt tussen 0o en 180o.

Meestal hebben servomotoren armen die kunnen worden bestuurd met behulp van Arduino. Servomotoren bestaan ​​uit een besturingssysteem dat zorgt voor: feedback over de huidige positie van de motoras maakt deze feedback het mogelijk om met grote precisie te bewegen.

Servomotor pinout

Meestal hebben de meeste servomotoren drie pinnen:







  • Vcc-pin (normaal rood 5V)
  • GND-pin (normaal zwart 0V)
  • Input Signal Pin (Ontvang PWM-signaal van Arduino)



Werking van servomotor

We kunnen de servomotor besturen door de Vcc-pin aan te sluiten op 5V en GND-pin op 0V. Op de gele kleurterminal bieden we a PWM signaal dat de draaihoek van de servomotor regelt. De breedte van het PWM-signaal geeft ons de hoek waaronder de motor zijn arm zal draaien.



Als we naar het gegevensblad van servomotoren kijken, krijgen we de volgende parameters:





  • PWM signaal tijdsperiode:
  • Minimale breedte voor PWM
  • Maximale breedte voor PWM

Al deze parameters zijn vooraf gedefinieerd in de Arduino Servo-bibliotheek.

Servomotoren met Arduino

Servomotoren zijn super eenvoudig te bedienen met Arduino, dankzij de Servobibliotheek wat ons helpt onze code naar behoefte aan te passen en ons in staat stelt de servo-arm in de gewenste hoek te draaien.



Alle drie bovengenoemde parameters zijn vastgelegd in de servobibliotheek. Door deze parameters te gebruiken, kunnen we de hoek van de servomotor op de volgende manier regelen:

  • Als de breedte van het PWM-signaal = WIDTH_MAX, draait de servo naar 180o
  • Als de PWM-signaalbreedte = WIDTH_MIIN, draait de servo naar 0o
  • Als de PWM-signaalbreedte ertussen ligt: WIDTH_MAX en WIDTH_MIN , de servomotor draait tussen 0o en 180o

We kunnen een gewenst PWM-signaal genereren op sommige Arduino-pinnen. PWM-signaal wordt gegeven op de ingangssignaalpen van de servomotor. De resterende twee pinnen van servo aansluiten op 5v en GND van Arduino.

Hoe de servomotor te besturen met behulp van Arduino

Hier zal ik uitleggen hoe we onze servomotor kunnen aansluiten en programmeren met behulp van Arduino. Alles wat u nodig heeft is:

  • Arduino UNO
  • USB B-kabel
  • servomotor
  • Doorverbindingsdraden

Hoe servo te programmeren met Arduino

Hieronder volgen enkele eenvoudige stappen:

Stap 1: Voorgedefinieerde servobibliotheek opnemen:

# erbij betrekken < servo.h >

Stap 2: Servo-object maken:

Servo-mijnservo;

Tip: Als u meer dan één servomotor bestuurt, moet u meer servo-objecten maken:

Servo myservo1;
Servo-myservo2;

Stap 3: Stel besturingspin (9) in op Arduino Uno die het PWM-signaal naar de ingangssignaalpoort van de servo stuurt:

mijnservo.attach ( 9 ) ;

Stap 4: Draai de hoek van de servomotor naar de gewenste waarde, bijvoorbeeld 90o:

mijnservo.write ( pos ) ;

Arduino-code

Open servomotor voorbeeldprogramma van Bestand>Voorbeeld>Servo>Sweep , een nieuw venster wordt geopend met onze servo-schets:

#include

Servo-mijnservo; // servo-object is gemaakt voor servomotor aansturen;
int pos = 0 ; // om de servopositie op te slaan, wordt een nieuwe variabele gemaakt
ongeldige setup ( ) {
mijnservo.attach ( 9 ) ; // dit zal set Arduino-pin 9 voor PWM-uitgang
}
lege lus ( ) {
voor ( pos = 0 ; pos = 0 ; pos -= 1 ) { // gaat van 180 tot 0 graden
mijnservo.write ( pos ) ; // vertel servo om naar 'pos' positie te gaan
vertraging ( 5 ) ; // wacht voor 5 ms zodat servo naar positie kan reiken
}
}

Zodra het programma is gecompileerd en geüpload, begint de servomotor langzaam te draaien van de startpositie 0 graden tot 180 graden, één graad per keer, net als stappen. Wanneer de motor een rotatie van 180 graden heeft voltooid, begint deze te draaien in de tegenovergestelde richting naar het startpunt, d.w.z. 0 graden.

Schema's

Hoe de servomotor te bedienen met behulp van een potentiometer

We kunnen ook de servomotorpositie met de hand regelen. Om dit te doen hebben we een Potentiometer . Potentiometer heeft drie pinnen. Verbind de twee buitenste pinnen met 5V Vcc en GND van Arduino en middelste met A0-pin op Arduino-bord.

Servo programmeren met potentiometer

Het grootste deel van de schets voor de potentiometer is hetzelfde als in het vorige voorbeeld. Het enige verschil is een nieuwe variabele val en subpin wordt gedefinieerd vóór het setup- en lusgedeelte van de code.

int potpin = A0;
int-waarde;

In lussectie wordt analoge pin A0 gebruikt om waarden te lezen voor Potentiometer met functie analoogLees() . Arduino-borden bevatten 10-bit ADC (analoog naar digitaal converter) die ons waarden geeft tussen 0 en 1023, afhankelijk van de positie van de potentiometer:

val = analoog lezen ( subpin ) ;

Als laatste hebben we gebruikt kaart() functie om getallen van 0 tot 1023 opnieuw toe te wijzen volgens de hoek van Servo, zoals we weten. Servomotoren kunnen alleen tussen 00 en 1800 draaien.

val = kaart ( val, 0 , 1023 , 0 , 180 ) ;

Arduino-code

Open knopschets beschikbaar in Arduino IDE, ga naar Bestanden>Voorbeelden>Servo>Knop . Er wordt een nieuw venster geopend waarin onze knopschets voor servo wordt weergegeven:

#include
Servo-mijnservo; // Een servo-objectnaam maken myservo
int potpin = A0; // analoge pin definiëren voor potentiometer
int-waarde; // variabele welke zullen lezen analoge pin-waarden voor potentiometer

ongeldige setup ( ) {
mijnservo.attach ( 9 ) ; // gedefinieerde pin 9 voor PWM-ingangssignaal van servo op Arduino
}
lege lus ( ) {
val = analoog lezen ( subpin ) ; // leest waarde van potentiometer ( waarde tussen 0 en 1023 )
val = kaart ( val, 0 , 1023 , 0 , 180 ) ; // schaal de waarde om te gebruiken met de servo ( waarde tussen 0 en 180 )
mijnservo.write ( val ) ; // stelt servopositie in met geschaalde waarde
vertraging ( vijftien ) ; // wacht voor de servo om in positie te komen
}

Bovenstaande code helpt ons om de as van de servomotor te regelen met behulp van een potentiometer, de as zal tussen 0 en 180 graden draaien. We kunnen ook de snelheid behouden, samen met de richting van de servo die het gebruikt.

Schakelschema

Hoeveel servomotoren kan ik verbinden met Arduino?

Maximaal aantal servomotoren dat Arduino UNO aankan, is maximaal 12 met Arduino-bibliotheek voor servo, en maximaal 48 servo's kan worden verbonden met borden zoals Mega.

Tip: We kunnen servo direct laten draaien met behulp van Arduino-stroom, maar onthoud of servomotoren meer trekken dan 500mA dan kan je Arduino-bord automatisch resetten en stroom verliezen. Het wordt aanbevolen om altijd een speciale voeding voor servomotoren te gebruiken.

Conclusie

In deze tutorial hebben we het besturingsmechanisme van servomotoren met Arduino behandeld. We hebben de basis besproken van het regelen van de servopositie en -snelheid met behulp van een potentiometer. Nu heb je een idee over servo en de mogelijkheden voor je robotica, RC-projecten en automatisering met servo zijn eindeloos.