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?
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
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
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:
-
AZDelivery Servo MG90S Micro: understøtter op til 13.4 kg.
- Innovation-EU: med op til 25 kg/cm.
- Innovation-EU: endnu en vandtæt model, og med op til 35 kg/cm.
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
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:
- Åbn Arduino IDE.
- Gå til Program.
- Inkluder derefter bibliotek.
- 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); } }