Componenti · 10 min di lettura

Servo a 360 gradi (FS90R): controllo di velocità e direzione

Come funziona il servo a 360 gradi FS90R? Fermarlo con write(90), velocità e verso, trimmer di arresto, uso come ruota per robot, codice PWM per ESP32 e Pico.

Un servo a 360 gradi si chiama servo, ma in realtà è un piccolo motoriduttore che continua a girare invece di portarsi a un angolo e fermarsi lì. Il più noto è il FEETECH FS90R: ha le stesse dimensioni e gli stessi tre fili di un SG90, ma il segnale che gli invii non stabilisce un angolo, bensì la velocità e il verso di rotazione. Dato che si collega direttamente a un pin di Arduino senza driver per motori, è comodissimo per le ruote di piccoli robot, le piattaforme girevoli e i distributori di cibo.

In questa guida scoprirai cosa cambia dentro l'FS90R rispetto a un servo normale, perché il comando write(90) ferma il motore, come regolare velocità e verso con la larghezza dell'impulso e come usare il trimmer di arresto per correggere un servo che continua a girare da solo. Poi guiderai un piccolo robot con due FS90R, regolerai la velocità con un potenziometro e proverai la stessa cosa con un ESP32 e un Raspberry Pi Pico. Infine vedrai perché questo servo non può fare controllo di posizione e cosa scegliere al suo posto.

Servo FS90R a rotazione continua 360 gradi
Servo a rotazione continua FS90R: formato SG90, 9 grammi. Il segnale stabilisce velocità e verso di rotazione, non l'angolo.

Cos'è un servo a 360 gradi e in cosa differisce da un servo normale?

Un servo normale contiene un piccolo motore in corrente continua, un riduttore, un circuito di controllo e un potenziometro collegato all'albero di uscita. Il circuito confronta l'angolo richiesto dall'impulso con l'angolo reale letto dal potenziometro e fa girare il motore finché la differenza è zero; quando l'albero raggiunge l'obiettivo, si ferma. Nel servo a rotazione continua questo anello di retroazione è interrotto: il potenziometro è scollegato dall'albero e bloccato in posizione centrale, e il fermo meccanico negli ingranaggi è stato tolto. Il circuito continua a calcolare la "differenza tra posizione voluta e posizione reale", ma poiché quella reale non cambia mai, la differenza non si annulla mai. Risultato: più grande è la differenza, più veloce gira il motore, e il suo segno decide il verso.

CaratteristicaSG90 (servo 180°)FS90R (rotazione continua 360°)
Cosa stabilisce il segnale?L'angolo dell'albero (0–180°)Velocità e verso di rotazione
Impulso da 1500 µsVa al centro (90°) e ci restaSi ferma
1000 µs / 2000 µsVa a un'estremità o all'altraMassima velocità in un verso o nell'altro
Retroazione internaPotenziometro collegato all'alberoNessuna; il potenziometro regola solo il punto di arresto
Fermo meccanicoSìNo, gira all'infinito
Mantenere la posizioneMantiene l'angolo sotto caricoNon può; non sa dove si è fermato
Uso tipicoBracci, sportelli, sterzoRuote, piattaforme girevoli, coclee dosatrici

Caratteristiche tecniche dell'FS90R

CaratteristicaValore
Tensione di funzionamento4,8–6 V
Velocità a vuotoCirca 100–110 giri/min a 4,8 V, circa 130 giri/min a 6 V
Coppia di stalloCirca 1,3 kg·cm a 4,8 V, circa 1,5 kg·cm a 6 V
Corrente100–130 mA a vuoto, fino a 800 mA a 6 V in stallo
Segnale di controlloPWM a 50 Hz; arresto a 1500 µs, intervallo utile circa 900–2100 µs
Livello del segnaleFunziona con segnali a 5 V e a 3,3 V
Verso di rotazioneSopra i 1500 µs in un verso, sotto nell'altro (guardando dall'albero, sopra i 1500 µs in senso antiorario)
Peso e dimensioni9 g, circa 23 × 12 × 22 mm (stesso corpo dell'SG90)
FiliMarrone GND, rosso VCC, arancione segnale
Non tutto ciò che i venditori chiamano "servo a 360 gradi" è un servo a rotazione continua. Alcuni servo mantengono una posizione tra 0 e 360° (o tra 0 e 270°); non girano all'infinito come l'FS90R, ma vanno all'angolo richiesto e si fermano. Cerca la dicitura continuous rotation o "rotazione continua" nella descrizione. Inoltre, forzare a lungo un FS90R bloccato, a mano o contro un ostacolo, rovina il motore e gli ingranaggi di plastica.

Collegamento dell'FS90R: Arduino Uno, ESP32 e Pico

Filo del servoFunzioneArduino UnoESP32Raspberry Pi Pico
MarroneGNDGNDGNDGND
RossoAlimentazione 4,8–6 V5V (un solo servo) o 5 V esterniVIN / 5V o 5 V esterniVBUS (5 V) o 5 V esterni
ArancioneSegnale PWMD9GPIO 18GP15

Per far girare un solo FS90R a vuoto basta il pin 5V dell'Uno. Quando la ruota tocca terra o due servo partono insieme, la corrente sale a qualche centinaio di milliampere; la tensione USB cala, Arduino può riavviarsi o i servo tremano. Perciò in un robot alimenta i servo da una sorgente a 5 V separata (4 pile NiMH, un regolatore a 5 V o un alimentatore adatto), collega sempre il GND di questa alimentazione a quello di Arduino e aggiungi un condensatore da 470 µF vicino ai fili dei servo. Il segnale a 3,3 V di ESP32 e Pico basta per l'FS90R; il servo però va comunque alimentato a 5 V, non dal pin a 3,3 V.

write(90) = stop: come la larghezza dell'impulso diventa velocità?

Il segnale di controllo di un servo è un impulso inviato 50 volte al secondo (ogni 20 ms), e ciò che conta è la sua durata. Per l'FS90R, 1500 µs significa "fermo". Se l'impulso supera i 1500 µs, il servo accelera in un verso; se si accorcia, nell'altro; raggiunge la massima velocità intorno a 1000 µs e 2000 µs, oltre i quali la velocità quasi non aumenta. Per questo nella libreria Servo di Arduino write(90) significa fermo, mentre write(0) e write(180) significano massima velocità nei due versi. Qui c'è una piccola trappola: per impostazione predefinita la libreria converte 0–180 nell'intervallo 544–2400 µs, quindi write(90) produce in realtà 1472 µs. Questa differenza può bastare a far girare lentamente il servo anche con write(90). La soluzione è restringere l'intervallo con attach(9, 1000, 2000) o usare direttamente writeMicroseconds(1500).

ImpulsoEquivalente con Servo.write (con attach(pin, 1000, 2000))Comportamento dell'FS90R
1000 µswrite(0)Massima velocità, senso orario
1300 µswrite(54)Velocità media, senso orario
1461 µswrite(83)Molto lento, senso orario
1500 µswrite(90)Fermo (se il trimmer è regolato bene)
1538 µswrite(97)Molto lento, senso antiorario
1700 µswrite(126)Velocità media, senso antiorario
2000 µswrite(180)Massima velocità, senso antiorario

Primo sketch: avanti, stop, indietro

C++ (Arduino IDE)
1// FS90R ilk test: ileri, dur, geri / FS90R first test: forward, stop, backward
2#include <Servo.h>
3
4Servo teker;                         // sürekli dönüş servosu / continuous rotation servo
5
6void setup() {
7  teker.attach(9, 1000, 2000);       // write(0..180) artık 1000..2000 µs üretir / write(0..180) now outputs 1000..2000 µs
8}
9
10void loop() {
11  teker.write(180);                  // tam hız bir yöne / full speed one way
12  delay(2000);
13  teker.write(90);                   // 1500 µs: dur / 1500 µs: stop
14  delay(1000);
15  teker.write(0);                    // tam hız ters yöne / full speed the other way
16  delay(2000);
17  teker.write(110);                  // yavaş / slow
18  delay(2000);
19  teker.writeMicroseconds(1500);     // durmanın en kesin yolu / the most precise way to stop
20  delay(1000);
21}

Lo sketch collega il servo a D9 e, con attach(9, 1000, 2000), adatta la scala di write() all'intervallo che l'FS90R usa davvero; così write(90) vale esattamente 1500 µs. La velocità non segue l'impulso in modo lineare: proprio intorno a 1500 µs c'è una banda morta di qualche decina di microsecondi in cui il servo non si muove, nell'intervallo 1500 ± 300 µs la velocità sale rapidamente e verso le estremità resta quasi costante. Se vuoi movimenti lenti e precisi, resta vicino a 1500 µs. L'idea generale della larghezza d'impulso è in Cos'è il PWM, il controllo dell'angolo dei servo normali in Cos'è un servomotore.

Regolare il trimmer di arresto (punto centrale)

  1. Carica lo sketch di calibrazione qui sotto; il servo riceve un segnale da 1500 µs e normalmente dovrebbe restare fermo.
  2. Se il servo gira piano, cerca il piccolo foro sul lato del corpo, vicino all'uscita del cavo; dentro c'è il trimmer che stabilisce il punto di arresto.
  3. Gira il trimmer pochissimo con un piccolo cacciavite piatto o a croce; se il servo rallenta, stai andando nella direzione giusta.
  4. Continua a piccoli passi finché il servo si ferma del tutto e sparisce anche il leggero ronzio. Il trimmer è molto sensibile: anche un quarto di giro è troppo.
  5. Se preferisci non toccare il trimmer, invia + e - dal Monitor seriale per trovare il valore di impulso a cui il servo si ferma e usa quel valore nel codice al posto di 1500.
C++ (Arduino IDE)
1// Durma noktası ayarı: Serial Monitor'den µs değeri gönder
2// Stop point calibration: send a µs value from the Serial Monitor
3#include <Servo.h>
4
5Servo teker;
6int darbe = 1500;                    // başlangıç: teorik durma noktası / start: theoretical stop point
7
8void setup() {
9  Serial.begin(9600);
10  teker.attach(9);
11  teker.writeMicroseconds(darbe);
12  Serial.println(F("Sayi yaz (900-2100) ya da + / - gonder"));
13  Serial.println(F("Type a number (900-2100) or send + / -"));
14}
15
16void loop() {
17  if (Serial.available()) {
18    char c = Serial.peek();
19    if (c == '+') { Serial.read(); darbe += 5; }          // 5 µs artır / add 5 µs
20    else if (c == '-') { Serial.read(); darbe -= 5; }     // 5 µs azalt / subtract 5 µs
21    else if (isDigit(c)) darbe = Serial.parseInt();       // doğrudan değer / direct value
22    else { Serial.read(); return; }                       // satır sonu vb. atla / skip line endings etc.
23
24    darbe = constrain(darbe, 900, 2100);
25    teker.writeMicroseconds(darbe);
26    Serial.print(F("Darbe / pulse: "));
27    Serial.print(darbe);
28    Serial.println(F(" us"));
29  }
30}
Il punto di arresto può spostarsi di qualche microsecondo con la tensione di alimentazione e la temperatura; non stupirti se il servo ricomincia a girare leggermente quando le pile si scaricano. Per lunghe pause in cui il servo deve restare perfettamente immobile, puoi interrompere del tutto il segnale con detach(): un FS90R senza segnale si ferma e non assorbe quasi corrente. Quando deve muoversi di nuovo, basta richiamare attach().

Velocità e verso con un potenziometro

C++ (Arduino IDE)
1// Potansiyometreyle hız ve yön: ortada dur, sağa ileri, sola geri
2// Speed and direction with a pot: centre = stop, right = forward, left = backward
3#include <Servo.h>
4
5const int POT_PIN = A0;
6const int OLU_BOLGE = 40;            // ortadaki ±40 adım: kesin dur / ±40 steps in the middle: solid stop
7Servo teker;
8
9void setup() {
10  teker.attach(9);
11}
12
13void loop() {
14  int okuma = analogRead(POT_PIN) - 512;                   // -512 ... +511
15  int darbe = 1500;                                        // varsayılan: dur / default: stop
16  if (okuma > OLU_BOLGE) {
17    darbe = map(okuma, OLU_BOLGE, 511, 1540, 2000);        // ileri, yavaştan hızlıya / forward, slow to fast
18  } else if (okuma < -OLU_BOLGE) {
19    darbe = map(okuma, -OLU_BOLGE, -512, 1460, 1000);      // geri / backward
20  }
21  teker.writeMicroseconds(darbe);
22  delay(20);                                               // servo periyodu kadar / one servo period
23}

Con il potenziometro collegato tra 5V, A0 e GND, la posizione centrale significa fermo, girare a destra significa avanti e girare a sinistra indietro. Il codice definisce una zona morta di ±40 passi al centro, così il servo si ferma con sicurezza anche se il potenziometro non è perfettamente centrato o le letture oscillano un po'. Fuori dalla zona morta il valore viene convertito in 1540–2000 µs o in 1460–1000 µs: girando poco la manopola il servo va piano, girandola fino in fondo va alla massima velocità. Puoi applicare la stessa idea con un joystick; il collegamento del potenziometro è in Cos'è un potenziometro.

L'FS90R come ruota di un piccolo robot

L'FS90R piace tanto nei robot per la sua semplicità: con riduttore e circuito di controllo integrati non servono driver per motori, ponte H né encoder; basta un pin di segnale per ruota. I due servo si montano ai lati del telaio a specchio, quindi per andare avanti uno deve girare in senso orario e l'altro in senso antiorario. Il codice qui sotto gestisce questa inversione dentro la funzione surus(); tu indichi solo una velocità tra -100 e +100. Una ruota da 60 mm di diametro che gira a 130 giri/min a 6 V percorre circa 0,4 metri al secondo; a 4,8 V si scende a circa 0,3 m/s.

C++ (Arduino IDE)
1// İki FS90R ile küçük robot: tekerlekler ayna gibi takılır
2// A small robot with two FS90Rs: the wheels are mounted as mirror images
3#include <Servo.h>
4
5Servo sol, sag;
6const int DUR_SOL = 1500;            // kalibrasyonla bulduğun değerler / values you found during calibration
7const int DUR_SAG = 1500;
8
9// hiz: -100 (tam geri) ... +100 (tam ileri) / speed: -100 (full back) ... +100 (full forward)
10void surus(int hizSol, int hizSag) {
11  sol.writeMicroseconds(DUR_SOL + hizSol * 5);             // sol teker normal yönde / left wheel normal direction
12  sag.writeMicroseconds(DUR_SAG - hizSag * 5);             // sağ teker ters takılı / right wheel is mounted reversed
13}
14
15void setup() {
16  sol.attach(9);
17  sag.attach(10);
18  surus(0, 0);
19  delay(1000);
20}
21
22void loop() {
23  surus(80, 80);    delay(1500);     // ileri / forward
24  surus(0, 0);      delay(500);      // dur / stop
25  surus(-60, 60);   delay(600);      // yerinde sola dön / spin left in place
26  surus(60, 60);    delay(1000);
27  surus(30, 80);    delay(1500);     // sola doğru yay çiz / curve to the left
28  surus(-80, -80);  delay(1000);     // geri / backward
29  surus(0, 0);      delay(2000);
30}

Due servo non girano mai esattamente alla stessa velocità; se il robot devia da un lato invece di andare dritto, calibra separatamente il valore di arresto di ciascun servo (DUR_SOL, DUR_SAG) e riduci un po' il coefficiente di quello più veloce. La coppia di 1,5 kg·cm dell'FS90R va bene per piccoli robot che pesano al massimo qualche centinaio di grammi; per un telaio più pesante o ruote grandi è meglio un motore DC con L298N o dei motoriduttori. A batteria, 4 pile NiMH (4,8 V) danno la tensione ideale; 4 alcaline nuove possono arrivare a 6,4 V e superare il limite del servo. Per montare un telaio completo con sensori, vedi Costruire una macchinina robot con Arduino.

Con un FS90R non puoi fare controllo di posizione. Dato che dentro il servo non c'è più nulla che misuri dove si trova l'albero, non puoi dire "gira di 90 gradi e fermati"; anche i movimenti a tempo come "gira per 1 secondo" danno ogni volta un risultato diverso a seconda della tensione delle pile, del carico e della temperatura. Se devi raggiungere un angolo preciso, usa un servo normale, un motore passo-passo per una rotazione precisa a passi, oppure aggiungi un encoder alla ruota per contare i giri. Quale motore scegliere e quando è spiegato in Motore DC, servo e passo-passo a confronto.

FS90R con l'ESP32

La libreria Servo di Arduino non funziona sull'ESP32; installa invece la libreria ESP32Servo dal Gestore librerie. Si usa quasi allo stesso modo, solo che indichi esplicitamente i 50 Hz con setPeriodHertz(50). Per il segnale va bene quasi qualsiasi GPIO in grado di generare PWM; solo i GPIO 34–39, che sono di solo ingresso, non si possono usare. Collega il filo rosso del servo al pin VIN (5 V dell'USB) dell'ESP32 o a un'alimentazione esterna a 5 V, non al pin 3V3. Il codice seguente porta dolcemente il servo da fermo alla massima velocità, poi lo rallenta e ne inverte il verso; nel Monitor seriale vedi la durata dell'impulso a ogni passo.

C++ (Arduino IDE)
1// ESP32 + FS90R: ESP32Servo kütüphanesiyle hız rampası
2// ESP32 + FS90R: a speed ramp with the ESP32Servo library
3#include <ESP32Servo.h>
4
5const int SERVO_PIN = 18;            // PWM verebilen herhangi bir GPIO / any PWM-capable GPIO
6Servo teker;
7
8void setup() {
9  Serial.begin(115200);
10  teker.setPeriodHertz(50);          // standart servo frekansı / standard servo frequency
11  teker.attach(SERVO_PIN, 1000, 2000);
12  teker.writeMicroseconds(1500);     // dur / stop
13  delay(1000);
14}
15
16void loop() {
17  for (int us = 1500; us <= 2000; us += 25) {   // yavaşça hızlan / speed up gently
18    teker.writeMicroseconds(us);
19    Serial.println(us);
20    delay(200);
21  }
22  for (int us = 2000; us >= 1000; us -= 25) {   // yavaşla, dur, ters yöne hızlan / slow down, stop, reverse
23    teker.writeMicroseconds(us);
24    Serial.println(us);
25    delay(200);
26  }
27  teker.writeMicroseconds(1500);
28  delay(2000);
29}

FS90R con il Raspberry Pi Pico e MicroPython

Sul Pico non serve alcuna libreria aggiuntiva: imposti l'oggetto machine.PWM a 50 Hz e dai la durata dell'impulso in nanosecondi con duty_ns(). La funzione hiz() del codice converte un valore tra -100 e +100 in 1000–2000 µs; basta scrivere nella riga DUR_US il valore di arresto trovato con la tua calibrazione. Quando il programma viene interrotto con Ctrl+C, anche il servo si ferma; altrimenti il PWM continua con l'ultimo valore e la ruota continua a girare. Alimenta il servo dal pin VBUS del Pico (i 5 V dell'USB). Se sei alle prime armi con MicroPython, leggi prima Basi di MicroPython.

MicroPython
1# Raspberry Pi Pico (MicroPython) + FS90R: hız -100 ... +100
2# Raspberry Pi Pico (MicroPython) + FS90R: speed -100 ... +100
3from machine import Pin, PWM
4import time
5
6servo = PWM(Pin(15))
7servo.freq(50)                        # 20 ms periyot / 20 ms period
8DUR_US = 1500                         # kalibrasyonla bulduğun durma noktası / your calibrated stop point
9
10def hiz(yuzde):
11    yuzde = max(-100, min(100, yuzde))
12    us = DUR_US + yuzde * 5           # -100 -> 1000 µs, +100 -> 2000 µs
13    servo.duty_ns(us * 1000)
14
15try:
16    while True:
17        for h in (50, 100, 0, -50, -100, 0):
18            hiz(h)
19            print("Hiz / speed:", h)
20            time.sleep(2)
21except KeyboardInterrupt:
22    hiz(0)                            # durdurunca teker dönmeye devam etmesin / stop the wheel on exit
23    servo.deinit()

Idee di progetto con il servo a 360 gradi

  • Mini inseguitore di linea: Un telaio leggero con due FS90R e due sensori a infrarossi; la logica è in Robot inseguitore di linea.
  • Robot che evita gli ostacoli: Aggiungi davanti un HC-SR04 perché giri su sé stesso e cambi direzione quando vede un ostacolo.
  • Auto comandata dal telefono: Invia i comandi dal telefono con un modulo Bluetooth HC-05.
  • Distributore di cibo: L'FS90R fa girare una coclea e un timer fa cadere il cibo a orari fissi.
  • Piattaforma girevole espositiva: Una base che ruota molto lentamente per foto di prodotto o timelapse; regola la velocità con valori vicini a 1500 µs.
  • Piccolo argano o tira-tende: Avvolgi un filo leggero e metti due finecorsa alle estremità per fermare il motore nel punto giusto.

Errori comuni e soluzioni

SintomoCausa probabileSoluzione
Gira piano anche con write(90)La scala predefinita produce 1472 µs oppure il trimmer di arresto è staratoUsa attach(pin, 1000, 2000) o writeMicroseconds(1500), regola il trimmer
Il servo non gira affattoPin di segnale sbagliato, GND non in comune o il prodotto è in realtà un servo di posizioneControlla il numero del pin e il collegamento GND, verifica che sia a rotazione continua
Il servo trema e Arduino si riavviaL'alimentazione USB non regge i picchi di correnteAlimenta i servo con 5 V esterni, unisci i GND, aggiungi un condensatore da 470 µF
Passando da 1000 µs a 1200 µs la velocità cambia appenaVicino alle estremità il servo è già alla massima velocità, che va in saturazionePer una regolazione fine usa l'intervallo 1500 ± 300 µs
Il robot non va drittoI due servo hanno velocità e punto di arresto diversiCalibra ogni servo separatamente, riduci il coefficiente del più veloce
Il servo si scalda e ronza ma non giraL'albero è bloccato o il carico è eccessivoTogli l'ostacolo, alleggerisci il carico; lo stallo rovina ingranaggi e motore
Errore di compilazione o nessun segnale sull'ESP32Usata la libreria Servo solo per AVR o scelto un GPIO 34–39Installa ESP32Servo e scegli un GPIO che possa fare da uscita

L'FS90R è il modo più semplice per comandare un meccanismo a rotazione continua con un solo pin e senza driver: si ferma a 1500 µs, gira nei due versi alla velocità che vuoi ed è un motore per ruote già pronto per piccoli robot. Regola una volta il punto di arresto, ricordati di passare a un servo normale o a un motore passo-passo quando serve il controllo di posizione, e funzionerà a lungo senza problemi. Nell'app BlueGrays trovi l'uso di base del servo, il controllo del servo con potenziometro e joystick, la costruzione di un servo a 360 gradi da un motore passo-passo e progetti di macchinine robot, con schemi di collegamento e codice pronto passo passo.

Domande frequenti

Come si ferma un servo a 360 gradi?

I servo a rotazione continua come l'FS90R si fermano quando ricevono un impulso da 1500 µs; su Arduino si usa writeMicroseconds(1500), oppure write(90) dopo aver chiamato attach(pin, 1000, 2000). Se con quel valore gira ancora piano, regola il piccolo trimmer sul corpo con un cacciavite o usa nel codice il valore a cui il tuo servo si ferma davvero.

Che differenza c'è tra un servo a 360 gradi e uno normale?

Un servo normale va a un angolo preciso in base al segnale e ci resta, perché il potenziometro interno misura la posizione dell'albero. Un servo a 360 gradi a rotazione continua non ha questa retroazione; il segnale stabilisce velocità e verso invece di un angolo, e il servo gira all'infinito.

Si può controllare l'angolo di un servo a 360 gradi?

No. L'FS90R non sa dove si trova il suo albero, quindi non può raggiungere un angolo preciso e fermarsi lì. Farlo girare per un certo tempo dà un risultato approssimativo che cambia con tensione e carico. Se ti serve un angolo, usa un servo normale, un motore passo-passo o un motore con encoder.

A che tensione funziona l'FS90R?

L'FS90R funziona tra 4,8 e 6 V; nei progetti Arduino di solito si alimenta a 5 V. La linea di segnale accetta livelli sia a 5 V sia a 3,3 V, quindi si usa direttamente con ESP32 e Raspberry Pi Pico, ma l'alimentazione deve restare a 5 V.

Quanti FS90R posso collegare ad Arduino?

La libreria Servo supporta fino a 12 servo su Arduino Uno, ma il vero limite è la corrente. Ogni FS90R può assorbire qualche centinaio di milliampere sotto carico e fino a 800 mA in stallo, quindi con più di due servo usa sempre un'alimentazione esterna a 5 V e unisci i GND.

Si può trasformare un SG90 in un servo a 360 gradi?

Sì, ma la modifica è definitiva. Apri il servo, tagli il fermo meccanico sull'ingranaggio e scolleghi il potenziometro dall'albero, sostituendolo con due resistenze uguali o bloccandolo in posizione centrale. Il risultato funziona come un FS90R, ma perdi la garanzia e il servo non potrà più mantenere un angolo; comprare un FS90R già pronto di solito è più semplice.

Vedi tutti i progetti
Utilizzo del servomotore
#35Principiante
Premium

Utilizzo del servomotore

Il braccio di un piccolo servomotore ruota a turno in tre posizioni: tutto all'inizio, esattamente a metà e tutto alla fine, aspettando due secondi a ogni fermata. L'Arduino dice al motore a quale ang

4.7(48)
67
Funzionamento del servomotore con potenziometro
#36Principiante
Premium

Funzionamento del servomotore con potenziometro

Mentre giri la manopola del potenziometro, il braccio del servomotore ruota insieme a lei: un'estremità della manopola corrisponde a zero gradi, l'altra a mezzo giro. L'Arduino legge di continuo la po

4.6(37)
52
Servomotore ESP32 (controllo tramite potenziometro)
#118Intermedio
Premium

Servomotore ESP32 (controllo tramite potenziometro)

In questo progetto controlliamo un servomotore SG90 tramite un potenziometro. Regoliamo l'angolo del servomotore mappando il valore analogico letto dal potenziometro su un intervallo compreso tra 0 e 180 gradi. La libreria ESP32Servo genera segnali per servomotori sui GPIO adatti dell'ESP32 che possono funzionare come uscite; in questo progetto si utilizza GPIO 18. Si tratta di un metodo di controllo fondamentale per bracci robotici, gimbal per telecamere e meccanismi di porte automatiche.

4.3(29)
42
Servocomando con joystick
#60Intermedio
Premium

Servocomando con joystick

Comanda due motori con un joystick, proprio come se girassi una telecamera di sicurezza. Spingendo la levetta a destra o a sinistra il servomotore in basso ruota piano, spingendola su o giù quello in

4.7(42)
58
Costruzione del servomotore a 360 gradi dal motore passo-passo
#68Intermedio
Premium

Costruzione del servomotore a 360 gradi dal motore passo-passo

Insegna a un normale motore passo-passo ad andare all'angolo che vuoi, lungo tutto il giro. L'Arduino calcola quanti passi servono per ogni angolo; il motore va a turno a 0, 90, 45, 180, 135 e 360 gra

4.5(22)
32
Auto controllata via Bluetooth con L298N
#80Avanzato
Premium

Auto controllata via Bluetooth con L298N

Trasforma il telefono in un telecomando e guida la tua auto robot. L'Arduino riceve tramite un modulo Bluetooth i comandi di un'app di controllo remoto sul telefono e fa girare le ruote con un driver

5.0(38)
65
Robot che evita gli ostacoli
#81Avanzato
Premium

Robot che evita gli ostacoli

Che ne dite di costruire un veicolo intelligente che trova la propria strada? L'Obstacle Avoiding Robot scruta costantemente l'ambiente circostante grazie al sensore a ultrasuoni posto davanti a lui.

5.0(38)
49