Go Down

Topic: Modifica servi... (Read 2781 times) previous topic - next topic

83darking83

Ciao a tutti, possiedo un Arduino Mega e recentemente ho acquistato dei servi MG996R.

Dopo alcune prove e ricerche, ho imparato ad usarli utilizzando la libreria Servo.h.

Adesso, vorrei modificarli ed utilizzarli per sostituire i miei attuali motori DC. Quindi mi chiedo se esista la possibilità di far ruotare tali servi di 360, utilizzando la solita libreria, oppure servendosi di segnali PWM.

Chiaramente son ben accetti anche eventuali consigli sulla modifca hardware da effettuare sui servi.


83darking83

Grazie, è quello che ho iniziato a fare giorni fa...

Calamaro

http://www.gioblu.com/index.php?option=com_content&view=article&id=94:come-modificare-un-servomotore&catid=43:azionamenti&Itemid=35
questa è una guida che ho fatto io solo che ruotano di 360 senza fermarsi. in pratica diventano vericelli!

kokiua

Se non ho capito male 83darking83 vorrebbe convertire un servo in modo da farlo diventare una specie di motore senza vincoli che può pilotare in PWM..
Se è così l'unica cosa da fare (secondo me), dopo aver rimosso i limiti (come da esempio di Calamaro), è quella di rimuovere l'elettronica interna e pilotare direttamente il motore. Non è possibile adattare l'elettronica interna per lavorare diversamente dal normale servo (ovvero: raggiungere una posizione in base ad un segnale pwm)

83darking83

In realtà volevo fare proprio qualcosa di simile a ciò che ha fatto Calamaro, ovvero modificare il servo per farlo ruotare di 360°, mantenendo l'elettronica. (Non devo usare per forza il PWM, anche se dispongo comunque di un PCB per il controllo dei motori, basato su L293D)

Ho visto che alcuni hanno sostituito il trimmer con due resistenze da 2.7 KOHM, quali benefici comporta?

kokiua

dal momento in cui il servo ruota a 360° (ovvero senza soluzione di continuità) il trimmer (che è usato come encoder assoluto) non ha più ragione di esistere, e quindi penso che impostando il valore come se il trimmer si trovasse esattamente al centro serva per poter controllare la direzione del movimento con dei valori  certi (i gradi del servo)...
Ma la mia è solo una supposizione perchè non ho mai modificato un servo  ;)

83darking83

Praticamente (da quanto ho visto e capito) dovrebbe essere come dici...

Quindi, la mia domanda diventa: sostituendo il potenziometro con delle resistenze di valore equivalente, ho la possibilità far girare il servo a 360°, avendo anche la possibilità di variarne la velocità?

kokiua

Si alla prima e no alla seconda.
Puoi far girare il servo nei due sensi chiedendogli di andare alle due posizioni estreme (es: 0° e 180° - se il range è questo)
Non puoi modificare la velocità perchè il servo la gestisce in modo del tutto autonomo (ed è per questo che credevo tu volessi pilotare il motore direttamente con il pwm)

83darking83

Immaginavo....
Per adesso, comunque, la variazione della velocità è secondaria e non indispensabile, al contrario della rotazione continua.

Lo scopo finale è quello di utilizzare il servo come un DC Motor, cercando di essere il meno "invasivo"(/distruttivo) possibile sui componenti del servo stesso.

83darking83

Intanto avevo dimenticato che gli ingranaggi del servo sono di metallo...  :-/

kokiua

Meglio! sono molto più robusti  ;)
Quasi un peccato rovinarli.. comunque se possiedi un trapanino tipo dremel non dovresti avere difficoltà a rimuovere protuberanze o simili.

83darking83

lo so, li ho scelti anche per quello.
Solo che ora, non posso eliminare il blocco con il taglierino!  :)

Vedrò di eliminarlo col Dremel...

uwefed

#13
Jun 09, 2010, 04:53 pm Last Edit: Jun 10, 2010, 12:03 am by uwefed Reason: 1
Ciao 83darking83
sono stato troppo lento nel rispondere  Tongue comunque quel che volevo dire io rispondo a delle domande vecchie:
rispondo al reply# 5 e # 7.

nelle istruzioni http://www.gioblu.com/index.php?option=com_content&view=article&id=94:come-modificare-un-servomotore&catid=43:azionamenti&Itemid=35 mettono il potenziometro a metá corsa e lo staccano dal ingranaggi che lo muove. Questo equivale a metere un partitore con 2 resistenze uguali come consigliato in altre fonti.
In questo modo é possibile utilizzare la libreria servo.h e con valori piccoli gira in un verso e con valori grandi gira nel altro verso. Con un valore centrale (dipende dal rapporto delle 2 resistenze oppure dalla posizione del potenziometro) il motore dovrebbe fermarsi.

Se vuoi usare un integrsto tipo L293 devi togliere tutta l'elettronica e pilotare direttamente il motore. Cosí puoi regolare la velocitá con PWM.

Ciao Uwe

Calamaro

#14
Jun 09, 2010, 05:16 pm Last Edit: Jun 09, 2010, 05:34 pm by Calamaro Reason: 1
il partitore te lo sconsiglio, se vuoi fare una cosa fatta bene metti un trimmerino. Praticamente devi regolare il servo fermo a 90 gradi, in modo che abbia un comportamento simmetrico. Se tu gli mandi servo.write(180) lui andrà in avanti all'infinito viceversa con servo.write(0). La taratura sullo 0 avviene con una determinata alimentazione, variando quello è -probabile- che ti vari la taratura. quindi scrivendo servo.write(90) quello non starebbe fermo. L'elettronica dentro a un servo dipende dal prezzo. Dei servo pilotano il motorino anche in velocità altri no. Per vedere se il tuo servo lo fa basta che lo modifichi e gli dai servo.write(91) e servo.write(180) se la velocità di rotazione cambia allora sei fortunato, altrimenti devi riprogettare tutto da zero :D

edit per taratura sullo 0 intendo la taratura che fai per farlo stare fermo, in pratica 90 gradi diventano lo 0. puoi anche tararlo a 0 sui 179 gradi ma non avrà un comportamento simmetrico!

edit 2 devi riprogettare l'elettronica da 0 se hai un servo che si muove a velocità costante e lo vuoi a velocità variabile.

aggiungo qualche video sul robot che ho costruito grazie ai pezzi di gbm con il servo moddato!
http://www.youtube.com/watch?v=-sSzOonENFU
http://www.youtube.com/watch?v=Km9XJVvacD8&feature=related

Go Up