Als je een servomotor of servomet Arduino, in dit artikel leer je wat je nodig hebt om aan de slag te gaan. We hebben al in andere artikelen gezien wat er nodig is om te gebruiken elektrische motoren, stappenmotoren, en ook andere concepten die nodig zijn om de werking van dit type apparaat te begrijpen, zoals het artikel over PWM.
Nu kunt u nog een nieuwe elektronische component toevoegen aan de apparatenlijst geanalyseerd en dat u kunt gaan het integreren van uw doe-het-zelf-projecten om nieuwe functionaliteit toe te voegen.
Wat is een servo?
Un servomotor, of gewoon servo, is een elektronische motor met gelijkenissen met conventionele gelijkstroommotoren, maar met enkele elementen die ze speciaal maken. In dit geval heeft het de mogelijkheid om een aangegeven positie vast te houden, iets wat elektrische motoren niet toestaan.
Aan de andere kant kan de servo ook precies controle de rotatiesnelheid, dankzij een reeks interne tandwielen en een systeem dat een veel betere controle mogelijk maakt dan bij andere typen motoren.
Deze eigenschappen maken het vooral interessant voor toepassingen robotica, of voor andere apparaten waarbij het nodig is om beweging en positie te besturen, zoals een printer of een op afstand bestuurbare auto. In dit type radiografisch bestuurbare auto zit een conventionele motor om de auto aan te drijven, en een servo voor de besturing, waarmee de bocht nauwkeurig kan worden bestuurd.
Verschil tussen stappenmotor en servomotor
Als je het vraagt het verschil tussen een servomotor en een stappenmotor, de waarheid is dat ze kunnen worden verward, omdat in de stappenmotor of stepper de rotatie ook vrij nauwkeurig kan worden geregeld en de toepassingen sterk lijken op de servo. In plaats daarvan zijn er enkele verschillen.
En het is dat de servomotoren meestal gebruiken zeldzame aardmagneten, terwijl stappenmotoren goedkopere en meer conventionele magneten gebruiken. Daarom kan een servo een hogere koppelontwikkeling bereiken, ondanks dat hij compact blijft. Daarom zal de draaikracht erg hoog zijn.
technische kenmerken
Wanneer u een servo koopt, dient u de technische fiche of datasheet te raadplegen. Op die manier zorgt u ervoor dat de technische kenmerken het heeft, maar ook de limieten waaraan je het kunt onderwerpen, zoals spanning, intensiteit, maximale belasting, koppel, etc. Onthoud dat elk model behoorlijk verschillend kan zijn.
Als je bijvoorbeeld kijkt naar een van de meest populaire, de Micro Servo 9G SG90 van de bekende firma Tower Pro, dan heb je een aantal zeer eigenaardige kenmerken, hoewel de programmering en aansluiting van de modellen min of meer hetzelfde zijn en alles wat hier wordt gezegd, voor iedereen nuttig is.
In het geval van dit model is het een motor van hoge kwaliteit, met een draaihoek die een sweep tussen -90 en 90º, dat wil zeggen een totale draai van 180º. De resolutie die u kunt bereiken is erg hoog, dus u kunt heel beetje bij beetje vooruitgaan. Bijvoorbeeld met de PWM-signaalbeperkingen van Arduino UNO, je zou zelfs een voorschot kunnen krijgen van leerjaar tot leerjaar.
Evenzo zal het PWM-signaal ook een andere limiet opleggen, en dit is het aantal keren dat elke positie per tijdseenheid kan veranderen. Omdat de pulsen bijvoorbeeld werken met tussen 1 en 2 ms en met 20 ms periodes (50Hz), dan kan de servo eens per 20 ms bewegen.
Bovendien zal het een gewicht hebben van 9 gram en ondanks dat gewicht en compacte formaat een koppel of koppel van 1.8 kg / cm met 4.8v. Dat is te danken aan de POM-versnellingsset.
Ten slotte weet u al dat u, afhankelijk van wat u wilt bereiken, een of ander model moet kiezen, zodat het de functies die nodig zijn voor uw project. Dat wil zeggen, het is niet hetzelfde dat u wilt dat een motor een belasting X verplaatst, dan een voor XX ...
Waar een servo kopen
Als je dit type servomotor wilt gaan gebruiken, kun je het goedkoop vinden in veel gespecialiseerde winkels en je kunt het ook online krijgen bij Amazon. Hier zijn bijvoorbeeld enkele voorbeelden van aangeraden producten die u wellicht interesseren:
-
AZDelivery Servo MG90S Micro: ondersteunt tot 13.4 kg.
- Innoveren-EU: met maximaal 25 kg / cm.
- Innoveren-EU: nog een waterdicht model, en met maximaal 35 kg / cm.
Ze hebben allemaal een redelijk goede draaihoek, maar het verschilt fundamenteel in het koppel dat iedereen kan verdragen. Ik heb opgenomen drie verschillende modellen. Het eerste, en goedkopere, kan voor de meeste toepassingen voldoende zijn. Maar als je er een nodig hebt met een grotere sterkte voor andere toepassingen, dan heb je de 25 en 35, die al behoorlijk opmerkelijk zijn ...
Integratie met Arduino
Zoals je kunt zien in de afbeelding hierboven, de servo sluit heel gemakkelijk aan naar Arduino. Hij heeft maar drie kabels, die je op deze manier kunt aansluiten:
- Rood met 5V
- Zwart met GND
- Geel met een Arduino PWM-pin, in dit geval met -9.
Om een sketch te programmeren om dit soort engines te gaan gebruiken, heb je verschillende opties. Maar allereerst moet je om te beginnen Arduino IDE-bibliotheek toevoegen om dit type servomotoren aan te drijven:
- Open Arduino IDE.
- Ga naar Programma.
- Voeg vervolgens Bibliotheek toe.
- Servo-
Wat betreft schetscode, het zou zo simpel kunnen zijn dat de servo door zijn posities gaat en stopt bij 0º, 90º en 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 als je wilt verplaats het van graad naar graad, dan zou het zo zijn:
// 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); } }