Pilotare un servomotore con un potenziometro

10 Anni 2 Mesi fa - 10 Anni 2 Mesi fa #1 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

File allegato:

Nome del file: Servoconpo...etro.rar
Dimensione del file:71 KB


Pinna: 2 servo, 2 potenziometri

File allegato:

Nome del file: Servicondu...1-29.rar
Dimensione del file:75 KB





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.

File allegato:

Nome del file: Servo_pot_...1-29.rar
Dimensione del file:72 KB

Chi vola vale, chi vale vola, chi non vola è un vile
Allegati:
Ultima Modifica 10 Anni 2 Mesi fa da StefA.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
10 Anni 2 Mesi fa #2 da StefA
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.

..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
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
10 Anni 2 Mesi fa #3 da Pinna
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

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
10 Anni 2 Mesi fa #4 da Pinna
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

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
10 Anni 2 Mesi fa #5 da StefA
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

..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
  • Avatar di StefA
  • Moderator
  • Moderator
Di più

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login