Problema pilotaggio servo motore

Sto implementando un sistema pan-tilt, ma ho un problema con il servo che esegue lo spostamento verticale, quello orizzontale risponde ai comandi correttamente.
Praticamente il servo verticale non risponde ai comandi rimane fermo e fa un rumore strano tipo di vibrazione.

Per il codice è sempre quello classico:

#include <Servo.h>
#define PIN_SERVO_H 9
#define PIN_SERVO_V 11
 
Servo servo_h;
Servo servo_v;
 
void setup(){
  servo_h.attach(PIN_SERVO_H);
  servo_v.attach(PIN_SERVO_V);
  servo_h.write(0);   // posiziono il servo alla posizione iniziale
  servo_v.write(0);   // posiziono il servo alla posizione iniziale

  delay(15);          // aspetto 15ms per consentire al servo di raggiungere la posizione
}
 
void loop(){
  int max_h = 180;
  int init_h = 0;
  int max_v = 180;
  int init_v = 0;


  for(int i = init_h; i < max_h; i=i+10){
    servo_h.write(i);
    delay(100);
    for(int j = init_v; j < max_v; j++){
      servo_v.write(j);
      delay(300);
    }
  }
}

incollo le specifiche del servo verticale che mi da problemi
ANNIMOS 80KG

RDS5180SG 80kg

Specifiche di controllo:

Sistema di controllo: PWM (modifica della larghezza di impulso)

Gamma di larghezza degli impulsi: 500-2500μsec

Posizione neutra: 1500μsec

Grado di marcia: 270° (quando 500-2500μsec)

Larghezza banda morta: 3μsec

Frequenza di funzionamento: 50-330Hz

Direzione di rotazione: Senso antiorario (quando 1500-2500μsec)

i due servi sono collegati con un unico alimentatore esterno da 30w a 7.4v.

Può essere che l'alimentatore è poco potente?
Il servo deve essere pilotato con altri parametri in pwm?

Grazie per le risposte

Per quale ragione i due cicli for{} sono annidati?

Ad ogni modo, se vuoi che il tuo sistema pan-tilt sia reattivo
(forse è questo il motivo per cui hai annidato i cicli for{} ?)
e risponda in modo immediato ai comandi devi assolutamente evitare dei cicli bloccanti come stai facendo in questo momento.

Capisco che il 99% degli esempi sui servo che ci sono in rete e ahimè anche nei corsi, usano questo approccio (che trovo assurdo) però bisogna imparare ad andare oltre gli esempi di base che sono forniti con le librerie.

30/7.4 ≈ 4A ... quindi, quell'alimentatore, tirandolo al massimo (cosa che NON va mai fatta) da 4A ... la corrente di stallo dei motori che stai usando, a 7.4V è di 5A ciascuno ... vedi un po' te ... :roll_eyes:

Guglielmo

Grazie, provo a cambiare alimentatore, speriamo che sia quello...

... purtroppo, probabilmente NON solo ... cotestatnt ti ha dato altre informazioni :roll_eyes:

Guglielmo

anche facendo un solo ciclo, quello del servo verticale, il problema rimane, il servo fa rumori, mettendo la mano sopra si sente che si muove o cerca di muoversi dentro, ma la "rotella" del servo non si sposta.

Mentre il servo che esegue lo spostamento orizzontale funziona correttamente

image

Non leggo alcuna specifica sulla corrente assorbita ... :roll_eyes:

Guglielmo

Hai provato ad invertire i due motori per vedere se si sposta anche il problema.
In caso positivo, probabilmente il tuo servo si è danneggiato in qualche modo.

ho appena provato a cambiare pin, stesso risultato

Stesso risultato nel senso che anche il motore che gira bene, spostandolo va a scatti?
Allora non rimane che il software.

ho cercato ma non sono dichiarate

no scusa forse mi sono espresso male, ho cambiato pin al servo che da problemi e continua a non funzionare

Bhè, allora non rimane che cambiare il servomotore temo.

Forse neanche adesso ti sei spiegato bene o non hai inteso quale prova fare...:slight_smile:
Tu hai INVERTITO i comandi dei due servo, o hai solo cambiato il pin del servo "problematico"?

Diciamo che il servo A sta sul pin X ed il servo B (quello che dà problemi) sul pin Y: dovresti provare a collegare il servo A al pun Y ed il B sul pin X e vedere se il problema resti identico (quindi il problema potrebbe essere il servo B) oppure se invece il problema compare per l'altro mentre quello problematico invcece funziona (quindi il problema non è il servo ma a monte del controllo).
E' questa la prova che hai fatto?

Datashit (non è un errore) assolutamente da evitare

Basta vedere l'ottava riga: sensore angelico

:joy: :joy: :joy:

Guglielmo

Magari smontarlo e provarlo senza carico?

si lo sto provando a vuoto

Ah
Mi spiace ma allora è proprio da scartare