Come posso modificare un servo hobby a basso costo per funzionare "liberamente"?


15

Ho dei servi per hobby ( Power HD 1501MG ) e mi piacerebbe essere in grado di controllarli (tramite un Arduino) in modo che vadano nell'angolazione che ho impostato o li mettono in modalità "free running", dove il carico li porterà ovunque vada.

È anche possibile, o finirò per spogliare gli ingranaggi?

Il mio primo pensiero è semplicemente quello di uccidere il potere del servo, ma la forza richiesta per spostarli in quello stato è più di quanto mi piacerebbe.

Se è possibile, sto osservando una modifica hardware o posso farlo nel software?


3
I servi per hobby non sono davvero adatti per la robotica robusta e i servi per hobby modificati sono anche peggio. Non ti piacerà quello che otterrai se lo fai. Acquista invece un motore DC riduttore economico e un piccolo ponte a H per guidarlo, sarà molto più robusto e sarai molto più felice. È possibile costruire un ponte H da un circuito L298 a costi molto bassi.
Jon Watte,

1
Immagino che la mia prossima domanda qui sarà "cos'è un h-bridge?" (Ma proverò prima Google!)
Khrob,

Risposte:


13

Quello che stai chiedendo non sarà molto semplice con un servo RC standard.

Quello che stai chiedendo è un servo retroazionabile. Vale a dire uno che puoi ruotare liberamente applicando una coppia esterna. È certamente possibile crearli e vengono utilizzati su molti robot, ma la maggior parte dei servi RC richiede una coppia considerevole per guidarli indietro. Li definirei semi-backdrivable.

Cosa ti impedisce di tornare a guidarli? Due cose:

Attrito: in primo luogo, attrito nella catena degli ingranaggi e nel motore. I servi RC sono sempre orientati verso il basso; l'uscita gira più lentamente del motore. Naturalmente questo significa che quando si tenta di guidarlo indietro, è necessario far girare il motore molto rapidamente. Qualunque attrito o intasamento nel motore sarà avvertito dozzine di tempo all'uscita.

backdrivability

Corrente: qualcosa di sorprendente sui motori elettrici è che, se si cortocircuitano i terminali, diventano più difficili da girare. La rotazione del motore genera una corrente elettrica che funziona contro la rotazione. L'elettronica all'interno del servocomando potrebbe consentire un flusso sufficiente di corrente, anche quando spento, da impedire in modo evidente la retrodivisibilità. In passato ho notato che alcuni grandi motori passo-passo, anche se senza cambio, sono quasi impossibili da guidare indietro quando sono collegati ad apparecchiature non alimentate. Ma quando li scolleghi, possono essere fatti girare liberamente.

Quindi, un modo per migliorare la retro-guidabilità è prevenire il flusso di corrente. Il modo ovvio per farlo è di scollegare completamente il motore dalla sua elettronica. Ma questo è difficile da fare, anche usando i FET, perché i diodi all'interno dei FET potrebbero consentire al flusso di corrente. Tuttavia, è possibile utilizzare un relè, che disconnetterebbe davvero il motore. Dovresti usarlo solo su uno dei terminali del motore.

ESCON di Maxon

I servocomandi "adeguati" (come l' ESCON di Maxon) contengono effettivamente un controllore di corrente che può attivamente impedire il flusso di corrente applicando la tensione corretta ai terminali del motore. Sostituire l'elettronica nel servo con qualcosa in grado di controllare l'attuale potrebbe davvero aiutare.

Cosa fare: aprire il servo, dissaldare il motore e rimontarlo. Quanto è facile tornare indietro ora? Se è facile, allora potrebbe essere possibile fare quello che vuoi. Se è ancora troppo difficile per la tua applicazione, dovrai scegliere un servo diverso o crearne uno tuo. Realizzane uno con un solo stadio del cambio in modo da ridurre il più possibile l'attrito del cambio e usa l'elettronica di azionamento con un circuito di controllo della corrente per garantire un flusso di corrente pari a zero.


Anche la risposta di SimpleCoder è eccellente.
Khrob,

7

Domanda interessante.

La prima opzione che indagherò sarebbe quella di tagliare la potenza come hai suggerito (forse controllare un MOSFET nel software per cambiare potenza).

Un altro approccio più complicato potrebbe essere quello di monitorare il consumo corrente del servo per rilevare quando è sotto un carico pesante. Quando si desidera passare alla modalità "free running", fare in modo che il software tenti di spostare continuamente il servo in una posizione che comporti il ​​consumo di corrente minimo. Questo non si tradurrà interamente in un servo "free running", poiché ci saranno alcuni movimenti nervosi dal servo mentre il software tenta di trovare la posizione "giusta", ma potrebbe funzionare a seconda dell'applicazione.

Non è necessario modificare i servi per monitorare il consumo corrente. Una scheda come questa di SparkFun si posizionerà tra il servo e la sua fonte di alimentazione (ne hai bisogno una per ogni servo) e genererà una tensione analogica (che puoi leggere su un pin ADC del microcontrollore) che corrisponde alla corrente:

inserisci qui la descrizione dell'immagine

Immagine da SparkFun


@Khrob: Per favore, vedi la mia modifica
Chris Laplante,

Bello - Ora ho ordinato un sacco di quelli!
Khrob,

@Khrob: Bello, facci sapere come funzionano! (E per favore non incolparmi se non funziona;))
Chris Laplante,

@Khrob: Inoltre, nota che, a seconda di quanto piccole correnti stai misurando, potresti aver bisogno di una scheda più sensibile: sparkfun.com/products/8883
Chris Laplante,

1
Inizierò a buon mercato e mi farò strada!
Khrob,

5

Di solito, questi tipi di servi per hobby non sono fatti per la rotazione continua e spesso includono un arresto meccanico. Attenzione, quello che ho delineato di seguito è un modo infallibile per non ottenere mai l'effettiva operazione a circuito chiuso, ma renderà invece il servo solo continuo.

La maggior parte delle volte, è possibile effettuare una rapida ricerca online per "Modifica continua per x servo", ma illustrerò qui il processo generale.

  • Determina se il servo ha un arresto fisico. In tal caso, dovrai aprire il servo e rimuoverlo (consiglio lo strumento Dremel).
  • Volete quindi trovare il "centro" del meccanismo di feedback.
    • Collega il servo al tuo Arduino e invia un comando "centrale" (di solito PWM 127).
    • Trova il meccanismo di feedback (in genere un potenziometro) e taglialo fino a quando il servo non si sposta affatto.
    • O incollare il potenziometro in posizione oppure misurare la resistenza e sostituire il potenziometro con un resistore di valore impostato.
  • Rimontare il servo.

Ora l'invio di un comando "centrale" al servo dovrebbe impedirgli di muoversi, mentre l'invio di un comando positivo o negativo dovrebbe causare la rotazione continua in una direzione o nell'altra. La velocità di rotazione dovrebbe essere proporzionale alla "distanza" dal centro del comando inviato.

Se si desidera ripristinare il funzionamento del servo sul servo appena modificato, è possibile aggiungere una sorta di encoder per richiudere il ciclo.

In alternativa, potresti voler guardare il servo della serie Dynamixel , che consente sia il funzionamento continuo che servo, e include un po 'di supporto Arduino.


Sto bene con un limite meccanico al movimento, ma questo sarebbe un buon modo per estenderlo ulteriormente per avere una crepa in una configurazione a pendolo invertito! Ho guardato le cose di Dynamixel, ed è molto bello, ma più $$ di quanto spero di spendere per questo.
Khrob,

La mia impressione è stata che l'OP volesse avviare qualcosa in movimento guidando un servo e poi lasciarlo "aggirare" senza energia fino a quando non si ferma naturalmente dall'inerzia. Non conosco alcun disegno servo (continuo o no) che consentirebbe questo effetto.
Crake,

@Crake, sono d'accordo, credo di aver risposto alla domanda sbagliata, ma lascio perdere, dal momento che ho già fatto il lavoro: p. IIRC, i servi Dynamixel dovrebbero avere un'impostazione "costa".
mjcarroll,

@mjcarroll Sì, penso che sia utile avere una menzione di come modificare un servo per la rotazione continua poiché questo è un compito comune per progetti di robot a basso costo. Sono curioso di sapere se i servi Dynamixel utilizzano l'algoritmo di misurazione della corrente descritto nella risposta di SimpleCoder, cercando costantemente di minimizzare la corrente regolando PWM, o se hanno una frizione fisica per disinnestare il servomotore dall'albero di trasmissione.
Crake,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.