- Messaggi: 1010
- Ringraziamenti ricevuti 107
Pilotare un servomotore con un potenziometro
10 Anni 11 Mesi fa - 10 Anni 10 Mesi fa #1
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Pilotare un servomotore con un potenziometro è stato creato da Pinna
Apro questo nuovo topic per allegare un breve progetto, scritto in mplab, che chiunque può modificare a suo piacimento per ampliarlo: pilotare un servocomando tramite un potenziometro utilizzando gli interrupt generati da Timer0 e Timer1. In pratica, non ho fatto altro che modificare il mio primo progetto (controllo e pilotaggio di un servocomando) adattandolo alle mie esigenze. Il potenziometro usato per la prova ha un valore di 4,7K ed è collegato all'ingresso analogico AN1 del microcontrollore. Per fare le prove ho utilizzato la scheda Freedom I, che è già predisposta con otto ingressi per i servi. Nel caso si volesse utilizzare la Freeom II, ricordo di alimentare il servo a parte e di mettere in comune le masse delle due alimentazioni (massa alimentazione servo + massa Freedom). La prova è risultata molto soddisfacente: il servo si sposta per tutto il suo range di 180°, da destra a sinistra e l'impulso è più che stabile.
Marcello
Pinna: 1 servo, 1 potenziometro
Pinna: 2 servo, 2 potenziometri
EDIT StefA:
Mi permetto di aggiungere qui nel primo post una variante al programma di cui sopra.
In questa versione, ruotando il potenziometro si varia la velocità di rotazione del servo, portando il potenziometro in posizione centrale il servo si arresta e mantiene la posizione.
EDIT_2 StefA:
Nello stesso progetto è stato aggiunto un secondo programma, main_2_con_offset.c, che comprende anche la calibrazione (come spiegato nel file leggimi.txt all'interno del file rar).
Per ulteriori informazioni e sviluppi leggete il topic.
Marcello
Pinna: 1 servo, 1 potenziometro
Pinna: 2 servo, 2 potenziometri
EDIT StefA:
Mi permetto di aggiungere qui nel primo post una variante al programma di cui sopra.
In questa versione, ruotando il potenziometro si varia la velocità di rotazione del servo, portando il potenziometro in posizione centrale il servo si arresta e mantiene la posizione.
EDIT_2 StefA:
Nello stesso progetto è stato aggiunto un secondo programma, main_2_con_offset.c, che comprende anche la calibrazione (come spiegato nel file leggimi.txt all'interno del file rar).
Per ulteriori informazioni e sviluppi leggete il topic.
Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 10 Anni 10 Mesi fa da StefA.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
10 Anni 11 Mesi fa #2
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Risposta da StefA al topic Pilotare un servomotore con un potenziometro
Ottimo lavoro.
Tanto per complicare un po' le cose, mi è venuto in mente che si potrebbe implementare il controllo anche in un secondo modo.
Attualmente il servo "replica" la posizione del potenziometro, però si potrebbe far muovere il servo utilizzando il potenziometro come una sorta di acceleratore, ruotando di poco il potenziometro il servo inizia a ruotare con una certa (bassa) velocità, ruotando di più il potenziometro, il servo ruota più velocemente fino ad arrivaree a fine corsa.
Ho un servo diverso ma mi ricordo che funzionava in modo "standard", se mi dice fortuna trovo buttato da qualche parte anche un potenziometro da 4,7K ohm, almeno posso replicare le tue prove e magari essere d'aiuto..
Ste
P.S. Ne deduco che le levette del joystick della play siano da 4,7K ohm...
Nell'immagine dello schema elettrico manca il potenziometro.
Tanto per complicare un po' le cose, mi è venuto in mente che si potrebbe implementare il controllo anche in un secondo modo.
Attualmente il servo "replica" la posizione del potenziometro, però si potrebbe far muovere il servo utilizzando il potenziometro come una sorta di acceleratore, ruotando di poco il potenziometro il servo inizia a ruotare con una certa (bassa) velocità, ruotando di più il potenziometro, il servo ruota più velocemente fino ad arrivaree a fine corsa.
Ho un servo diverso ma mi ricordo che funzionava in modo "standard", se mi dice fortuna trovo buttato da qualche parte anche un potenziometro da 4,7K ohm, almeno posso replicare le tue prove e magari essere d'aiuto..
Ste
P.S. Ne deduco che le levette del joystick della play siano da 4,7K ohm...
Nell'immagine dello schema elettrico manca il potenziometro.
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Riduci
Di più
- Messaggi: 1222
- Ringraziamenti ricevuti 104
10 Anni 11 Mesi fa #3
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Pilotare un servomotore con un potenziometro
Ciao Ste, non ho ancora provato con il joystick (devo ancora smontarlo dalla sua sede)... ti spiego esattamente come ho fatto: innanzittutto ho usato prima la freedom II, perchè ha già a bordo un trimmer da 2,5K collegato all'ingresso dell' AN1 (giusto per risparmiare tempo). Poi ho collegato un display lcd alla PORTD in modo da poter leggere sia il valore ADC in assoluto (da 0 a 1023), sia il corrispondente valore pulse calcolato (e devo dire che tra i valori teorici ricavati dal foglio excel e quelli trovati non c'è nessuna differenza). A questo punto ho rifatto lo stesso lavoro sulla freedom I ma usando un potenziometro da 4,7K. Quando ho visto che i risultati ottenuti erano identici ai precedenti ho levato il display, pulito il codice dalle routine relative, e ho collegato il servo a RD0... tutto OK!!! L'immagine dello schema è quella standard del primo progetto, basta collegare il pin centrale del potenziometro ad AN1 e gli altri due rispettivamente a massa e vcc. Interessante la tua idea, solo che attualmente non ho idea su come fare...
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
10 Anni 11 Mesi fa #4
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic Pilotare un servomotore con un potenziometro
stavo pensando che si potrebbe provare anche con un 10K... in questo modo si potrebbe aumentare la risoluzione (il passo ) del servo... mi sa che domani faccio un'altra prova
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Autore della discussione
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
10 Anni 11 Mesi fa #5
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Risposta da StefA al topic Pilotare un servomotore con un potenziometro
quando ho testato un accelerometro (che essendo analogico tira fuori una tensione come tutti i sensori simili), ho proceduto più o meno come hai fatto tu.
Riguardo l'immagine, l'ho scritto solamente per chi leggendo poi non si ritrova e potrebbe chiedere spiegazioni, avevo riconosciuto lo schema dell'altro progetto.
Per l'altra idea, potremmo fare così: in un ciclo infinito si legge il potenziometro, poi mettiamo vari range di valori, a seconda di dove mi trovo riduco o aumento l'impulso andando a modificare il registro del timer (ad esempio con +10) ripetendo il tutto che so, ogni 200ms.
In questo modo dovrebbe spostarsi di poco ogni 200ms se giro poco il potenziometro e spostarsi di tanto (nello stesso tempo) se lo ruoto di più.. variando la velocità di rotazione.
Non so se mi sono spiegato bene e se è una cosa fattibile..ma in ottica braccio robotico credo che si debba mantenere la posizione raggiunta una volta che lascio il telecomando e non tornare sempre alla posizione di partenza..
Ste
Riguardo l'immagine, l'ho scritto solamente per chi leggendo poi non si ritrova e potrebbe chiedere spiegazioni, avevo riconosciuto lo schema dell'altro progetto.
Per l'altra idea, potremmo fare così: in un ciclo infinito si legge il potenziometro, poi mettiamo vari range di valori, a seconda di dove mi trovo riduco o aumento l'impulso andando a modificare il registro del timer (ad esempio con +10) ripetendo il tutto che so, ogni 200ms.
In questo modo dovrebbe spostarsi di poco ogni 200ms se giro poco il potenziometro e spostarsi di tanto (nello stesso tempo) se lo ruoto di più.. variando la velocità di rotazione.
Non so se mi sono spiegato bene e se è una cosa fattibile..ma in ottica braccio robotico credo che si debba mantenere la posizione raggiunta una volta che lascio il telecomando e non tornare sempre alla posizione di partenza..
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Riduci
Di più
- Messaggi: 1222
- Ringraziamenti ricevuti 104
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.