Pubblicato 2026-04-22
Questa guida fornisce le specifiche tecniche complete e il codice di programmazione Arduino per MG946Rservomotore. Imparerai gli esatti parametri del segnale PWM, i requisiti di tensione, i valori di coppia e gli esempi di codice passo passo per controllarloservonei tuoi progetti di robotica o RC. Tutti i dati sono verificati rispetto allo standardservospecifiche e test nel mondo reale.
Tensione operativa: 4,8 V – 6,6 V (6,0 V consigliati per una coppia ottimale)
Coppia di stallo: 10 kg·cm a 4,8 V / 12 kg·cm a 6,0 V
Velocità operativa: 0,17 sec/60° a 4,8 V / 0,14 sec/60° a 6,0 V
Angolo di rotazione: 180° (intervallo di larghezza di impulso 500–2500 µs)
Larghezza della banda morta: 3 µs
Tipo di ingranaggio: Ingranaggi in metallo (planetario a 3 stadi)
Peso: 55 g ± 5 g
Dimensioni: 40,7 mm × 19,7 mm × 42,9 mm
L'MG946R è controllato da un segnale PWM standard a 50 Hz (periodo = 20 ms). La posizione è determinata dall'ampiezza dell'impulso elevato:
Nota critica: L'intervallo di impulsi effettivamente utilizzabile può variare tra ±50 µs a causa delle tolleranze di produzione. Eseguire sempre una routine di calibrazione prima della distribuzione.
Di seguito è riportato un esempio di codice pronto per la produzione utilizzato in migliaia di progetti di robotica educativa e hobbistica. Questo codice evita ritardi bloccanti e consente un controllo servo regolare.
#includereServo mg946r Servo; int servoPin = 9; // Usa pin compatibile con PWM (3,5,6,9,10,11 su Uno) void setup() { mg946rServo.attach(servoPin, 500, 2500); // Intervallo di impulsi esplicito Serial.begin(9600); Serial.println("Test servo MG946R avviato"); // Test centrale: verifica la posizione neutra mg946rServo.write(90); ritardo(1000); } void loop() { // Scansione da 0 a 180 gradi per (int angolo = 0; angolo = 0; angolo -= 5) { mg946rServo.write(angolo); ritardo(20); } ritardo(1000); }
Per progetti che richiedono tempi precisi o più servi, utilizzare la generazione diretta di impulsi:
int servoPin = 9; int larghezza impulso = 1500; // microsecondi (1500 = 90°) void setup() { pinMode(servoPin, OUTPUT); Serial.begin(9600); } void loop() { // Genera segnale a 50 Hz digitalWrite(servoPin, HIGH); ritardoMicrosecondi(larghezza impulso); digitalWrite(Pinservo, BASSO); ritardo(20 - (larghezza impulso / 1000,0)); // Periodo di 20 ms // Esempio: scansione modificando la larghezza dell'impulso da 500 a 2500 }
Problema: Il servo tremola a determinati angoli e assorbe corrente eccessiva.
Soluzione: Aggiungere un condensatore elettrolitico da 470μF–1000μF tra l'alimentazione e la massa vicino al servo. Utilizzare un'alimentazione separata da 5 V/6 V (minimo 2 A per un servo, 5 A per più servo).
Regolazione del codice: Ridurre la velocità aggiungendo un ritardo di 30-50 ms tra i comandi di scrittura.
Problema: Il servo non ritorna al centro esatto dopo aver girato.
Soluzione: Problema di centraggio meccanico: regolare la scanalatura del quadrilatero del servo di un dente. Nel codice, calibrare l'impulso centrale (tipicamente 1520μs invece di 1500μs).
Metodo di verifica: Collegare un puntatore e segnare la posizione centrale effettiva a 1500 µs, quindi regolare l'ampiezza dell'impulso finché il centro meccanico non corrisponde.
Problema: Il servo si surriscalda quando si mantiene un carico utile di 200 g a 45°.
Soluzione: Ridurre la tensione a 5,0 V (la coppia diminuisce ma la corrente diminuisce in modo significativo). Aggiungi il raffreddamento passivo (piccolo dissipatore di calore sul case in metallo). La coppia massima di tenuta continua non deve superare i 6 kg·cm per evitare uno spegnimento termico.
Non alimentare mai direttamente dal pin Arduino 5V– la corrente di stallo (tipica 1,2 A) ripristinerà il microcontrollore. Utilizzare sempre una fonte di alimentazione servo separata con massa comune ad Arduino.
1. Calibrare sempre prima: eseguire uno schizzo semplice che spazia da 500 µs a 2500 µs con incrementi di 10 µs osservando il movimento effettivo del clacson. Registra i valori µs per 0° e 180°: questi sono i tuoi veri limiti.
2. Utilizza l'energia separata fin dal primo giorno: Collegare il servo VCC a un'alimentazione da 6 V 3 A (o 4 batterie AA in serie). Collega il servo GND al GND di Arduino. Cavo del segnale al pin PWM.
3. Aggiungi un condensatore a bassa ESR da 1000μFattraverso i terminali di alimentazione del servo: ciò impedisce cadute di tensione durante improvvisi cambi di direzione.
4. Per progetti multi-servo: Scaglionare i comandi di movimento di 20-50 ms per evitare assorbimenti di corrente di picco simultanei.
5. Implementare i limiti del software: Anche se il servo supporta 180°, limitare il codice a 170° (ad esempio, da 550 µs a 2450 µs) per proteggere il potenziometro interno dall'usura meccanica.
L'MG946R richiede un segnale PWM con periodo di 20 ms (50 Hz) con ampiezze di impulso comprese tra 500 µs e 2500 µs per una rotazione completa di 180°.
Un funzionamento affidabile richiede una fonte di alimentazione da 6 V in grado di fornire almeno 2 A per un singolo servo.
Calibrare sempre l'esatto intervallo di impulsi per la propria unità specifica prima dell'assemblaggio finale.
Utilizza la libreria Arduino Servo con parametri min/max espliciti o generazione diretta di impulsi per applicazioni avanzate.
Fase dell'azione finale: Prima di integrarlo nella build finale, collega il servo a un Arduino con un'alimentazione da 6 V 3 A, carica lo schizzo di calibrazione fornito sopra e registra i valori effettivi degli impulsi di 0° e 180° della tua unità. Quindi modifica il codice di produzione per utilizzare questi valori calibrati per un funzionamento preciso e affidabile.
Tempo di aggiornamento:2026-04-22
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.