Servo: hvordan man bruger servomotoren med Arduino

servo, servomotor

Hvis du vil bruge en servomotor eller servo, Med Arduino, i denne artikel kan du lære, hvad du skal bruge for at komme i gang. Vi har allerede set i andre artikler, hvad der er nødvendigt at bruge elektriske motorer, stepmotorer, og også andre nødvendige koncepter for at forstå driften af ​​denne type enhed, såsom artiklen om PWM.

Nu vil du være i stand til at tilføje en anden ny elektronisk komponent til enhedslisten analyseret, og du kan gå integrere i dine gør-det-selv-projekter at tilføje ny funktionalitet.

Hvad er en servo?

servo

Un servomotor, eller blot servo, er en elektronisk motor med ligheder med konventionelle DC-motorer, men med nogle elementer, der gør dem specielle. I dette tilfælde har den evnen til at opretholde en angivet position, noget som elektriske motorer ikke tillader.

På den anden side kan servoen også præcist kontrol omdrejningshastigheden, takket være en række indvendige gear og et system, der muliggør meget bedre kontrol, end der kunne gøres i andre typer motorer.

Disse funktioner gør det særligt interessant for applikationer robotteknologi, eller til andre enheder, hvor der er behov for bevægelses- og positionskontrol, såsom en printer eller en fjernstyret bil. I denne type radiostyrede biler er der en konventionel motor til at drive bilen, og en servo til styringen, med hvilken man kan styre svinget præcist.

Forskellen mellem stepmotor og servomotor

Nema 17

Hvis du spekulerer på det forskellen mellem en servomotor og en stepmotor, sandheden er, at de kan forveksles, da i stepmotoren, eller stepperen, rotationen også kan styres ret præcist, og applikationerne minder meget om servoen. I stedet er der nogle forskelle.

Og det er, servomotorer typisk bruger sjældne jordmagneter, mens stepmotorer bruger billigere, mere konventionelle magneter. Derfor kan en højere drejningsmomentudvikling opnås i en servo, selvom den stadig er kompakt. Derfor vil drejekraften være meget høj.

tekniske egenskaber

Når du køber en servo, bør du konsultere dets tekniske blad eller datablad. På den måde vil du sikre dig tekniske egenskaber det har, men også de grænser, som du kan underkaste det, såsom spænding, intensitet, maksimal belastning, drejningsmoment osv. Husk, at hver model kan være meget forskellig.

For eksempel, hvis du ser på en af ​​de mest populære, Micro Servo 9G SG90 fra det kendte firma Tower Pro, så vil du have nogle meget ejendommelige egenskaber, selvom programmeringen og tilslutningen af ​​modellerne er mere eller mindre den samme, og alt, der er sagt her, fungerer for enhver.

I tilfælde af denne model er det en motor af høj kvalitet, med en drejevinkel, der tillader en feje mellem -90 og 90ºdet vil sige en samlet drejning på 180º. Opløsningen, som den kan nå, er meget høj, så du vil være i stand til at rykke frem meget lidt efter lidt. For eksempel med begrænsningerne af PWM-signalet på Arduino UNO, kan du endda få en grad-for-grade avancement.

Ligeledes vil PWM-signalet også pålægge en anden grænse, og det er antallet af gange, det kan skifte position hver pr. tidsenhed. For eksempel da pulserne arbejdes med mellem 1 og 2 ms og med 20 ms perioder (50Hz), så vil servoen kunne bevæge sig en gang hver 20. ms.

Derudover vil den have en vægt på 9 gram og på trods af den vægt og kompakte størrelse kan den udvikle en drejningsmoment eller drejningsmoment på 1.8 kg/cm med 4.8v. Det takket være dets POM gearsæt.

Endelig ved du allerede, at alt efter hvad du vil opnå, bør du vælge en eller anden model, så den har funktioner, der er nødvendige for dit projekt. Det vil sige, det er ikke det samme, at du vil have en motor til at flytte en last X, end en for XX...

hvor kan man købe en servo

servomotor

Hvis du vil i gang med at bruge denne type servomotor, kan du finde den billigt i mange specialbutikker, og du kan også få den online hos Amazon. Her er fx nogle eksempler på anbefalede produkter der kan interessere dig:

De har alle en ret god drejningsvinkel, men forskellen ligger grundlæggende i det moment, som hver enkelt tåler. jeg har medtaget tre forskellige modeller. Førstnævnte og billigere kan være tilstrækkelig til de fleste applikationer. Men hvis du har brug for en med større kraft til andre applikationer, har du 25 og 35, som allerede er ret bemærkelsesværdige...

Integration med Arduino

arduino servo

Som du kan se på billedet ovenfor, servoen forbinder meget nemt til Arduino. Den har kun tre kabler, som du kan tilslutte på denne måde:

  • Rød med 5V
  • Sort med GND
  • Gul med en Arduino PWM pin, i dette tilfælde med -9.

For at programmere en skitse til at begynde at bruge disse typer motorer, har du flere muligheder. Men først og fremmest skal du starte tilføje bibliotek til Arduino IDE for at drive denne type servomotorer:

  1. Åbn Arduino IDE.
  2. Gå til Program.
  3. Inkluder derefter bibliotek.
  4. Servo

Med hensyn til skitsekode, det kunne være så enkelt, hvor servoen vil gå gennem sine positioner og stoppe ved 0º, 90º og 180º:

//Incluir la biblioteca del servo
#include <Servo.h>
 
//Declarar la variable para el servo
Servo servoMotor;
 
void setup() {
  // Iniciar el monitor serie
  Serial.begin(9600);
 
  // Iniciar el servo para que use el pin 9 al que conectamos
  servoMotor.attach(9);
}
 
void loop() {
  
  // Desplazar a la posición 0º
  servoMotor.write(0);
  // Esperar 1 segundo
  delay(1000);
  
  // Desplazar a la posición 90º
  servoMotor.write(90);
  // Esperar 1 segundo
  delay(1000);
  
  // Desplazamos a la posición 180º
  servoMotor.write(180);
  // Esperar 1 segundo
  delay(1000);
}

Nu hvis du vil flytte det fra grad til grad, så ville det være sådan her:

// Incluir la biblioteca servo
#include <Servo.h>
 
// Declarar la variable para el servo
Servo servoMotor;
 
void setup() {
  // Iniciar la velocidad de serie
  Serial.begin(9600);
 
  // Poner el servo en el pin 9
  servoMotor.attach(9);
 
  // Iniciar el servo en 0º
  servoMotor.write(0);
}
 
void loop() {
 
  // Los bucles serán positivos o negativos, en función el sentido del giro
  // Positivo
  for (int i = 0; i <= 180; i++)
  {
    // Desplazar ángulo correspondiente
    servoMotor.write(i);
    // Pausa de 25 ms
    delay(25);
  }
 
  // Negativo
  for (int i = 179; i > 0; i--)
  {
    // Desplazar el ángulo correspondiente
    servoMotor.write(i);
    // Pausa e 25 ms
    delay(25);
  }
}


Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.