5. Servo GO-GO
(Click pentru poză)

Introducere:

Un servo este un fel de motor specializat. Ceea ce face un servo diferit de un motor cu motor normal este acela că are o placă de control încorporată și un potențiometru de feedback (ca un buton de volum stereo) pentru o poziționare precisă. Este foarte ușor să controlați un servomotor folosind un microcontroler, cum ar fi un Arduino. De obicei, nu este nevoie de nici un alt circuit de control. Servo este practic un motor foarte ușor și de încredere pentru a lucra cu el.

Tipuri de servo

Servo hobby tind să vină într-o gamă largă de dimensiuni. De asemenea, au o varietate de alte opțiuni, cum ar fi rotația lor globală, modul în care este construită cutia de viteze și modul în care acestea comunică cu microcontrolerele. Urmează câteva tipuri de servo de bază pe care le puteți întâlni.

Servo Standard

Denumirea standard se aplică în mare parte dimensiunilor motorului (aproximativ 1,5"x 1,5" x 0,75"). Dincolo de aceasta, există tendința de a nu fi nimic standard în ceea ce privește serverele standard.

Există nenumărate tipuri diferite de servo standard pe care le puteți întâlni. Acestea se fac cu cutii de viteze din plastic sau metal, care, la rândul lor, sunt concepute fie pentru o viteză ridicată, fie pentru un cuplu ridicat. Majoritatea au o rotație de 90 de grade (90 de grade în ambele direcții - 180 total), dar unele au o rotație de 180 de grade (180 de grade în ambele direcții - 360 de total) sau sunt rotative continuu și se pot roti liber. Unele au chiar și plăci de control digitale, spre deosebire de servo cu plăci analogice pe care le folosim. Puteți găsi chiar și unele care nu îndeplinesc nici una din aceste descrieri. Există o mulțime de servo "standard" în lume.

Nano Servo

Nano servo-urile sunt mici - aproximativ mărimea unei monede foarte mici. Acestea sunt folosite atunci când constrângerile legate de mărime sunt o problemă. Sunt bune pentru manipularea mecanismelor existente (de exemplu, apăsarea unui buton) sau pentru construirea unor roboți foarte, foarte mici. Acestea sunt fabricate în mare parte pentru a face lucruri cum ar fi controlul flaps-urilor în avioane RC (telecomandate).

Micro Servo

Acestea sunt ca nano servo, dar mai mari și mai puternice. Ele au majoritatea aceleași cazuri de utilizare și funcționalitate ale nano-servo-urilor. Ele sunt bune pentru a construi lucruri mici, mai degrabă decât lucruri minuscule. De asemenea, acestea sunt de obicei fabricate pentru utilizarea în avioane RC.

Scara 1/4

Dacă ați judeca după nume, ați putea deduce că un servomotor de 1/4 este foarte mic. Dar, ați greși. Aceste servo sunt destinate a fi utilizate cu modelele de automobile care sunt un sfert din dimensiunea lucrurilor reale. Astfel, ele sunt relativ mari și de obicei sunt destul de puternice.

Mărimea și puterea lor le fac ideale pentru motoarele de acționare. Din nefericire, aceste servo rareori sunt pre-fabricate pentru o rotație continuă. Totuși, este posibil să se modifice un servo standard ca un servo de rotație continuă și un număr de comercianți cu amănuntul va face acest lucru pentru tine, cu o taxă suplimentară.

Construcția Cutiei de viteze

Așa cum am menționat, nu toate servo sunt create în mod egal. Fiecare servo funcționează diferit în funcție de tipul de motor utilizat, configurația ansamblului de angrenaje și dacă pinioanele sunt din material plastic sau din metal.

Servo cu angrenaje metalice tind să fie construite pentru a oferi un cuplu mai mare decât servo cu pinioane din plastic. Motivul este că pinioanele din plastic se rup sub sarcini grele și pinioanele metalice tind să fie mult mai puternice. Astfel, servomotoarele metalice sunt capabile să facă față încărcărilor mai mari și forțelor mai mari.

Pentru cei încă confuzi, cuplul este în esență cantitatea de forță pe care un arbore rotativ îl poate oferi. Ceea ce înseamnă că ceva cu un cuplu mai mare este mai puțin probabil să blocheze (sau să oprească rotirea și/sau aplicarea presiunii) decât ceva cu un cuplu mai mic. Dacă aveți nevoie să ridicați ceva sau să apăsați ceva, cu cât mai mult cuplu pe care servo dvs. îl poate oferi, cu atât mai bine.

Măsurătorile cuplului pe care le întâlniți în mod obișnuit sunt în uncii-inci, kilogram-centimetru (kg-cm) sau Newton-metru (Nm). Înțelegerea este o chestiune complicată. Pentru a simplifica, mai mare este de obicei mai bun pentru majoritatea aplicațiilor. Ar trebui să vă obișnuiți să lucrați fie în oz-in, fie în kg-cm, și apoi utilizați convertoarele de măsură online pentru a traduce toate măsurătorile la valoarea cu care vă simțiți mai confortabil.

Servo standard

Când utilizați un servo standard, îl puteți trimite într-o poziție foarte specifică de-a lungul unghiului de rotație. Cu alte cuvinte, dacă utilizați un servo capabil să se rotească 180 de grade, îi puteți spune să meargă la orice nivel (de exemplu - 112 de grade) și se va deplasa acolo din poziția sa actuală. Este capabil să știe în ce poziție este, deoarece există un potențiometru (sau rezistor variabil) încorporat în cutia de viteze. Această componentă este în esență butonul de învârtit pe care îl vedeți plasat peste vârful plăcii de circuite. Modul în care funcționează aceasta este faptul că atunci când roțile se rotesc, rotesc de asemenea butonul care schimbă valoarea rezistenței în circuit. Placa de comandă poate detecta această modificare a rezistenței și poate determina cu precizie poziția arborelui motor în grade.

Deoarece un potențiometru poate fi rotit numai până aici, aceste motoare nu se pot roti dincolo de unghiul maxim. În plus, dacă vă uitați atent la cea mai mare treaptă de viteză din partea dreaptă a cutiei de viteze, veți observa o mică bucată de plastic care iese din suprafață. Aceasta este o oprire fizică care împiedică servomotorul să depășească unghiul maxim de rotație. Serverele standard sunt restricționate fizic de la a face o rotație completă în două moduri.

În timp ce, evident, nu puteți folosi acest tip de servo pentru a conduce robotul în jurul său, este foarte util pentru o mare varietate de aplicații. Să zicem că, de exemplu, construiți un braț robot. Puteți utiliza un servo pentru a controla fiecare îmbinare. Procedând astfel, puteți spune fiecărei îmbinări să se îndrepte într-o poziție foarte precisă, permițându-i să facă sarcini foarte complexe. Puteți, de asemenea, să le folosiți pentru a face lucruri cum ar fi construirea păianjenilor robot multi-picioare de mers pe jos, apăsare pe alte lucruri, cum ar fi o duză de pulverizator, sau puteți face păpușă animatronice pentru copii.

Servo de rotație continuă

Servo-urile de rotație continuă nu au capacitatea de poziționare și sunt capabile să facă o rotație completă. Dacă vă uitați atent la roțile mari din dreapta, veți observa că nu există o oprire fizică dură care să limiteze capacitatea sa de a se roti.

În locul poziției setate, servo de rotație continuă vă permit să setați direcția și viteza motorului. Aceasta vă permite să efectuați cu ușurință lucruri cum ar fi specificarea faptului că merge rapid în direcția acelor de ceasornic, se oprește pentru o clipă și apoi se reia foarte lent în sens invers acelor de ceasornic. Aceste servo-uri au în principiu un H-bridge construit, pe care îl puteți controla folosind un microcontroler.

Sunt foarte utile ca roți de antrenare robot sau în sisteme mecanice care necesită un motor cu rotație continuă (cum ar fi cu mecanismul pensulei din Sponge Bot). Totuși, nu vă așteptați să obțineți multă viteză din ele. În timp ce servo sunt cunoscute pentru un control ușor și un cuplu decent, nu sunt cunoscute pentru viteză. Acest lucru se datorează faptului că cutiile de viteze proiectate să asigure cuplu fac acest lucru în detrimentul vitezei generale a motorului.

Aici vom folosi doar servo ca motoare de acționare, deoarece nimic din ce construim nu este destinat să meargă remarcabil de rapid. Cu toate acestea, pe măsură ce ajungeți mai adânc în robotică și începeți să simțiți nevoia de viteză, este posibil să doriți să cercetați motoarele cu roți de curent continuu și controller-e de motor. Acest lucru poate părea copleșitor, dar amintiți-vă că un servo de rotație continuă este în esență un motor cu motoreductor DC cu controlerul motorului deja încorporat.

Servomotorul Servo A are 3 fire care se desprind de el. Semnal: Conectat la un pin de control digital de 5V de la un microcontroler. Putere: Acesta poate fi conectat la o tensiune pozitivă de la 4.5V până la 6V.

Alimentarea unui Servo

Un servo are 3 fire ce ies din el.

Semnal: Conectat la un pin de control digital 5V de la microcontroller.

Alimentare: Acesta poate fi conectat la o tensiune pozitivă de la 4,5 V la 6 V.

Masa: Conectat la masa comună - întotdeauna.

S-ar putea să fiți tentat să conectați doar firul de alimentare al servomotorului la pinul 5V de pe microcontrolerul Arduino. NU FACEȚI ASTA!

Conectarea servomotorului la pinul 5V este o idee proastă pentru că:

1) pinul 5V de la Arduino poate furniza doar o cantitate limitată de curent. Astfel, veți sub-alimenta motorul.

2) PIN-ul 5V nu are prea mult în calea unui circuit de protecție. Ce înseamnă acest lucru este faptul că dacă o tensiune mai mare de 5V apare la pin, puteți deteriora placa Arduino. Motoarele (cum ar fi servo) sunt cunoscute în mod special pentru producerea curentului invers (a curenților electrici neașteptați) și ați putea trimite mai mult de 5V înapoi la placă.

3) De asemenea, dacă consumați prea mult curent de la placa Arduino, codul dvs. ar putea pur și simplu să facă lucruri amuzante și să nu funcționeze corect. Este pur și simplu cea mai bună practică de a furniza curent consumatorilor mari (cum ar fi motoare) separat.

Soluția cea mai simplă este de a furniza motorului propria sursă de alimentare. Acest lucru se poate face cel mai ușor prin conectarea unei surse de baterii de 6 V la servomotor. Ei bine - se poate face aproape cu ușurință. Există problema masei. Sârmă de masă din acumulator trebuie împărțită cu firul de masă de la Arduino. Acest lucru poate părea complicat, dar este foarte simplu.

Ori de câte ori se construiește un circuit cu mai multe surse de tensiune DC sau se conectează diferite plăci de circuite, firele lor de masă trebuie conectate.

Așa cum este important să avem o masă comună între toți participanții la o conversație, este important să avem o masă comună în lucrul cu electronica. Au o conexiune partajată la pământ punând toate tensiunile pe aceeași pagină și le permite să comunice.

Vorbind despre comunicare, conectați firul de semnal la Digital Pin 9 de pe Arduino.

Controlul unui servo standard

Încărcați următorul cod Arduino pentru a efectua mișcarea Servo înainte și înapoi:

/*

Servo Back and Forth code

Sends the servo horn back and forth from 0 degrees to 180 degrees

*/

// Include the Servo library
// This is needed to send the Arduino servo-specific commands
#include <Servo.h>

// Let the Arduino know that there is a standard servo connected.
Servo StandardServo1;

// Create a variable for storing the servo position
int servoPosition = 0;

void setup() {

// Tell the Arduino that the standard servo is connected to pin 9
StandardServo1.attach(9);

}

void loop() {

// This is a 'for loop'. The code contained within the brackets repeats over and over
// until the value of servoPosition is greater than 180 degrees.
// Basically, it increments the variable servoPosition by 1 from 0 to 180 degrees.
for (servoPosition = 0; servoPosition <= 180; servoPosition += 1){

// Moves the servo to the value of the variable servoPosition
// In other words, as the variable increases by 1, the position of the servo increases by 1
StandardServo1.write(servoPosition);

// Wait a tiny bit for the servo to move into place
delay(15);
}

// Does the same thing as the last 'for loop,' but in the opposite direction.
// This decreases the value of servoPosition from 180 degrees to 0.
for (servoPosition = 180; servoPosition >= 0; servoPosition -= 1) {
StandardServo1.write(servoPosition);
delay(15);
}


}

Controlul unui servo continuu

Încărcați următorul cod pentru a face motorul să se rotească în sensul acelor de ceasornic:

/*

Spin a continuous servo clockwise

*/

// Include the Servo library
// This is needed to send the Arduino servo-specific commands
#include <Servo.h>

// Let the Arduino know that there is a continuous servo connected.
Servo ContinuousServo1;

void setup() {

// Tell the Arduino that the continuous servo is connected to pin 9
ContinuousServo1.attach(9);

// Start the continuous servo at it's neutral position
// This position is typically somewhere around 90.
// You can change this value slightly until the servo stops spinning.
// Starting paused is not necessary. I just wanted to talk about this.
ContinuousServo1.write(94);

// Wait a second for the heck of it
delay(1000);

}

void loop() {

// Any number you write to the servo above the value of the neutral position the servo clockwise.
// The higher the number, the faster it theoretcally spins.

ContinuousServo1.write(110);

}

Pentru a roti motorul în sensul invers acelor de ceasornic, încărcați acest cod:

Spin a continuous servo counterclockwise

*/

// Include the Servo library
// This is needed to send the Arduino servo-specific commands
#include <Servo.h>

// Let the Arduino know that there is a continuous servo connected.
Servo ContinuousServo1;

void setup() {

// Tell the Arduino that the continuous servo is connected to pin 9
ContinuousServo1.attach(9);

// Start the continuous servo at it's neutral position
// This position is typically somewhere around 90.
// You can change this value slightly until the servo stops spinning.
// Starting paused is not necessary. I just wanted to talk about this.
ContinuousServo1.write(94);

// Wait a second for the heck of it
delay(1000);

}

void loop() {

// Any number you write to the servo below the value of the neutral position the servo counterclockwise.
// The lower the number, the faster it theoretcally spins.

ContinuousServo1.write(70);

}