Om du vill använda en servomotor eller servomotor, Med Arduino, i den här artikeln lär du dig vad du behöver för att komma igång. Vi har redan sett i andra artiklar vad som är nödvändigt att använda elmotorer, stegmotorer, och även andra begrepp som är nödvändiga för att förstå hur denna typ av enhet fungerar, såsom artikeln om PWM.
Nu kan du lägga till ytterligare en ny elektronisk komponent i enhetslistan analyserat och att du kan gå integrera dina DIY-projekt för att lägga till ny funktionalitet.
Vad är en servo?
Un servomotor, eller helt enkelt servo, är en elektronisk motor som liknar konventionella likströmsmotorer, men med några element som gör dem speciella. I det här fallet har den förmågan att hålla en position som indikeras, något som elmotorer inte tillåter.
Å andra sidan kan servo också exakt kontroll rotationshastigheten tack vare en serie interna växlar och ett system som möjliggör en mycket bättre kontroll än vad som kunde göras i andra typer av motorer.
Dessa funktioner gör det särskilt intressant för tillämpningar robotik, eller för andra enheter där rörelse och position behöver kontrolleras, såsom en skrivare eller en fjärrkontrollbil. I denna typ av radiostyrd bil finns en konventionell motor för att köra bilen, och en servo för styrningen, med vilken man kan styra svängen exakt.
Skillnad mellan stegmotor och servomotor
Om du undrar skillnaden mellan en servomotor och en stegmotorsanningen är att de kan förväxlas, eftersom i stegmotorn eller stegmotorn kan rotationen också kontrolleras ganska exakt, och applikationerna liknar servon. Istället finns det några skillnader.
Och det är som servomotorerna vanligtvis använder sällsynta jordartsmagneter, medan stegmotorer använder billigare och mer konventionella magneter. Därför kan en servo uppnå högre vridmomentutveckling, trots att den är kompakt. Därför kommer vridkraften att vara mycket hög.
tekniska egenskaper
När du köper en servo bör du läsa dess tekniska datablad eller datablad. På det sättet kommer du att se till att tekniska egenskaper den har, men också de gränser som du kan utsätta den för, såsom spänning, intensitet, maximal belastning, vridmoment etc. Kom ihåg att varje modell kan vara helt annorlunda.
Till exempel, om du tittar på en av de mest populära, Micro Servo 9G SG90 från det välkända Tower Pro-företaget, då kommer du att ha några mycket märkliga egenskaper, även om programmeringen och anslutningen av modellerna är mer eller mindre desamma och allt som sägs här är användbart för alla.
För den här modellen är det en högkvalitativ motor med en vridningsvinkel som tillåter en svep mellan -90 och 90º, det vill säga en total sväng på 180º. Den upplösning du kan uppnå är mycket hög, så att du kan gå framåt lite efter lite. Till exempel med PWM-signalbegränsningarna på Arduino UNO, du kan till och med få ett förskott från klass till klass.
På samma sätt kommer PWM-signalen också att införa en annan gräns, och det är antalet gånger varje position kan ändras per tidsenhet. Till exempel eftersom pulserna arbetar med mellan 1 och 2 ms och med 20 ms perioder (50Hz), då kan servon röra sig var 20: e ms.
Dessutom har den en vikt på 9 gram och trots den vikt och kompakta storlek kan den utveckla en vridmoment eller vridmoment på 1.8 kg / cm med 4.8 v. Det är tack vare POM-redskapet.
Slutligen vet du redan att, beroende på vad du vill uppnå, måste du välja en eller annan modell så att den har funktioner som behövs för ditt projekt. Det vill säga, det är inte samma sak som du vill att en motor ska flytta en last X, än en för XX ...
Var man kan köpa en servo
Om du vill börja använda denna typ av servomotor kan du hitta den billig i många specialbutiker, och du kan också få den online på Amazon. Här är till exempel några exempel på rekommenderade produkter som kan intressera dig:
-
AZDelivery Servo MG90S Micro: stöder upp till 13.4 kg.
- Innovateking-EU: med upp till 25 kg / cm.
- Innovateking-EU: en annan vattentät modell, och med upp till 35 kg / cm.
De har alla en ganska bra svängvinkel, men det skiljer sig i grunden i vridmomentet som alla kan tåla. Jag har inkluderat tre olika modeller. Det förra och billigare kan vara tillräckligt för de flesta applikationer. Men om du behöver en med större styrka för andra applikationer, har du 25 och 35, som redan är ganska anmärkningsvärda ...
Integration med Arduino
Som du kan se på bilden ovan, servo ansluter mycket enkelt till Arduino. Den har bara tre kablar som du kan ansluta på detta sätt:
- Röd med 5V
- Svart med GND
- Gul med en Arduino PWM-stift, i detta fall med -9.
För att programmera en skiss för att börja använda dessa typer av motorer har du flera alternativ. Men först och främst måste du göra det lägg till Arduino IDE-bibliotek för att köra denna typ av servomotorer:
- Öppna Arduino IDE.
- Gå till programmet.
- Inkludera sedan bibliotek.
- Servo
Beträffande skisskod, det kan vara så enkelt att servon går igenom sina positioner och stannar vid 0 °, 90 ° och 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 om du vill flytta den från grad till grad, då skulle det vara så här:
// 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); } }