potenziometro o encoder
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
50 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
0
voti
premesso che nessuno mi ha mai insegnato ad usare un econder nella maniera "corretta" io mi sono mosso nel modo che ritenevo più intelligente: studio il datasheet osservo i grafici, tiro delle conclusioni e faccio una ricerca per vedere se ci sono criticità che mi sono sfuggite.
Credevo di essere arrivato ad una soluzione invece a quanto pare non è cosi.
venexian posso gentilmente chiederti una mano in questa direzione?
Credevo di essere arrivato ad una soluzione invece a quanto pare non è cosi.
1
voti
Questa è la macchina del lettore di cui scrivevo prima
I quattro stati [00, 01, 10, 11] sono le condizioni stabili tra un polling e il successivo. Corrispondono all'ultima combinazione letta agli ingressi.
I quattro stati [I1, I2, I3, I4] sono stati temporanei di incremento del contatore. Da questi stati si passa al successivo in ogni condizione.
I quattro stati [D1, D2, D3, D4] sono stati temporanei di decremento del contatore. Da questi stati si passa al successivo in ogni condizione.
Le frecce con la condizione vicina sono i passaggi condizionati, quelle senza condizione sono ovviamente i passaggi incondizionati.
Nota: i passaggi [00]<->[11] e [01]<->[10] sono violazioni della codifica in quadratura. In questa macchina si è deciso di ignorarli (sono le quattro frecce diagonali più interne), ma potrebbero essere codificati per sollevare un'eccezione da gestire in modo appropriato.
I quattro stati [00, 01, 10, 11] sono le condizioni stabili tra un polling e il successivo. Corrispondono all'ultima combinazione letta agli ingressi.
I quattro stati [I1, I2, I3, I4] sono stati temporanei di incremento del contatore. Da questi stati si passa al successivo in ogni condizione.
I quattro stati [D1, D2, D3, D4] sono stati temporanei di decremento del contatore. Da questi stati si passa al successivo in ogni condizione.
Le frecce con la condizione vicina sono i passaggi condizionati, quelle senza condizione sono ovviamente i passaggi incondizionati.
Nota: i passaggi [00]<->[11] e [01]<->[10] sono violazioni della codifica in quadratura. In questa macchina si è deciso di ignorarli (sono le quattro frecce diagonali più interne), ma potrebbero essere codificati per sollevare un'eccezione da gestire in modo appropriato.
0
voti
Un encoder ottico non dovrebbe generare rimbalzi.
Meccanico sicuramente si.
Ne ho usato uno ottico tempo fa, i segnali all'uscita sui canli A e B erano ovviamente in quadratura (ed ambi i canali a 0 senza girare il braccio, o solo uno dei due non ricordo bene, ma non so se è caratteristica comune di tutti gli encoder):
Ricordo che era stata sufficiente una interruzione sul fronte di salita (o discesa) su uno dei due canali (con gli STM32 si fa tranquillamente settando bene i registri), con successiva lettura.
Ha sempre funzionato bene, almeno nel mio caso..

Meccanico sicuramente si.
Ne ho usato uno ottico tempo fa, i segnali all'uscita sui canli A e B erano ovviamente in quadratura (ed ambi i canali a 0 senza girare il braccio, o solo uno dei due non ricordo bene, ma non so se è caratteristica comune di tutti gli encoder):
Ricordo che era stata sufficiente una interruzione sul fronte di salita (o discesa) su uno dei due canali (con gli STM32 si fa tranquillamente settando bene i registri), con successiva lettura.
Ha sempre funzionato bene, almeno nel mio caso..

5
voti
Io ho sempre usato gli interrupt e una semplice XOR sugli stati dei pin per leggere gli encoder in quadratura e non ho mai notato nessun errore in lettura durante l'uso.
0
voti
Io ho sempre usato gli interrupt e una semplice XOR sugli stati dei pin per leggere gli encoder in quadratura e non ho mai notato nessun errore in lettura durante l'uso
non sai quanto sono contento di questa tua risposta
0
voti
Alcuni microcontrollori (per esempio dsPic33 della serie MC ovvero MotorControl) hanno un modulo QEI (Quadrature Encoder Interface) che fornisce direttamente il risultato in ambo i sensi ed effettivamente non sbaglia un colpo anche con encoder DIY, ovviamente che siano realmente in quadratura cioè con due sensori ravvicinati.
0
voti
Vorrei solo fare una chiosa sul fatto che spessissimo si reinventa "l'acqua calda".
Quello che fino alla fine del secolo scorso era appannaggio di pochi eletti che avevano accesso - spesso a pagamento - ai data book ed alla documentazione delle ditte di semiconduttori, oggi e' a portata dell'ultimo hobbista che ha un collegamento internet (e la voglia di leggere).
Ho utilizzato codifiche di encoder in quadratura negli anni '90 seguendo dei tutorial dell' (allora) HP sia in logica discreta sia IC e la tecnica gia' allora era ben consolidata.
Tra le millemila soluzioni possibili:
- Dall' AN718 della Microchip
http://ww1.microchip.com/downloads/en/A ... 00718a.pdf
In cui viene utilizzata una logica discreta per processare I due segnali dell'encoder (la parte riquadrata in rosso)
Guarda anche: Quadrature Encoder Interface (QEI)
http://ww1.microchip.com/downloads/en/D ... 70208A.pdf
- Esistono anche circuiti integrati (alcuni incorporano anche un counter) che gestiscono anche la "moltiplicazione x 4" degli impulsi:
-- HCTL-2001
https://www.broadcom.com/products/motio ... ecoder-ic/
-- LS7XXX della LSI/CSI
https://lsicsi.com/#/products/Increment ... -Interface
0
voti
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12207
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
0
voti
A parte i punti di vista diversi, ciò non significa che il tuo ragionamento sia sbagliato, ribadirei due punti.
Il primo encoder non era rotto, tutti funzionavano allo stesso modo, cioè da cani.
Comunque, per dimostrarti che non sono completamente d'accordo con te, mi pare che gli STM32 abbiano la gestione dell'encoder direttamente attraverso lettura di un timer, con i due ingressi connessi direttamente ad i pin, come è possibile che questa lettura sia buona senza filtri RC esterni?
saluti.
Su questo posso essere d'accordo con te, ma rimane a me il problema che la scheda non l'ho progettata io, non ho accesso neanche l firmware, legge interrupt su un pin, a me rimane come al solito il compito di farla funzionare!venexian ha scritto:Utilizzare il sistema con l'interrupt su uno degli ingressi non è la strada giusta.
Il primo encoder non era rotto, tutti funzionavano allo stesso modo, cioè da cani.
Comunque, per dimostrarti che non sono completamente d'accordo con te, mi pare che gli STM32 abbiano la gestione dell'encoder direttamente attraverso lettura di un timer, con i due ingressi connessi direttamente ad i pin, come è possibile che questa lettura sia buona senza filtri RC esterni?
saluti.
-

lelerelele
4.899 3 7 9 - Master

- Messaggi: 5509
- Iscritto il: 8 giu 2011, 8:57
- Località: Reggio Emilia
50 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
Chi c’è in linea
Visitano il forum: Google [Bot] e 97 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)








pigreco]=π