Pagina 4 di 5

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 9:29
da venexian
PietroBaima ha scritto:perché non si può fare come ha proposto xyz?

Perché con quella soluzione, la sequenza che ho indicato in [15] porta a un conteggio errato.

lelerelele ha scritto:... 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?

Quella soluzione funziona solo con i flip flop sterni che realizzano, sotto mentite spoglie, una macchina a stati. La cosa la si può comprendere facilmente pensando che due flip flop memorizzano due bit che sono proprio la profondità di memoria necessaria alla variabile di stato della macchina necessaria.

lelerelele ha scritto:... 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!

Questo non è un problema tecnico: se devi far funzionare un prodotto mal realizzato, senza poterlo modificare... le soluzioni si devono trovare 'all'italiana'.

Se venisse chiesto a me, farei un circuito che leggesse in modo sicuro gli encoder, nel modo descritto sopra, e che generasse poi dei segnali adatti a essere letti dalla scheda mal progettata.

Altri farebbero castelli di resistenze e condensatori fino a beccare la combinazione che pare funzionare al momento, ma... diversi progettisti, diverse soluzioni.

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 9:34
da EcoTan
lelerelele ha scritto:senza filtri RC esterni?

Un segnale può rimbalzare quanto vuole, equivale ad una vibrazione avanti e indietro ma non viene considerato come spostamento finché non varia l'altro segnale. Ovviamente non devono rimbalzare tutti insieme, l'encoder deve essere serio. Il dsPic prevede anche il "digital filter" opzionale sugli ingressi.

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 9:52
da lelerelele
EcoTan ha scritto:Un segnale può rimbalzare quanto vuole, equivale ad una vibrazione avanti e indietro ma non viene considerato come spostamento finché non varia l'altro segnale. Ovviamente non devono rimbalzare tutti insieme, l'encoder deve essere serio.
se la "vibrazione" è sull'ingresso con interrupt avrai la sequenza numerica che avanza in un senso con velocità elevata, ed è quello che mi è successo.

saluti.

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 9:53
da venexian
lelerelele ha scritto:se la "vibrazione" è sull'ingresso con interrupt avrai la sequenza numerica che avanza in un senso con velocità elevata, ed è quello che mi è successo.

E questa è la prova che utilizzare il sistema con l'interrupt è la via sbagliata per leggere un encoder in quadratura.

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 10:09
da lelerelele
venexian ha scritto:E questa è la prova che utilizzare il sistema con l'interrupt è la via sbagliata per leggere un encoder in quadratura.
Pur essendo d'accordo, non so se usare il polling, (quindi impegno massiccio del micro solo per questo) valga la pena rispetto ad un filtraggio analogico degli ingressi.

magari sbaglio.

saluti.

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 10:19
da dadduni
Vorrei fare una domanda da tonto.
La sequenza che hai scritto in un messaggio precedente:
a) 0 0
b) 0 1
c) 0 0
d) 0 1

Non riesco a vederla nel grafico. Se il secondo pin fa 0->1->0->1 effettivamente ho fatto due scatti, se il primo pin è sempre a 0 vuol dire che l'encoder è fuori quadratura e qualcosa non va nell'hardware.


Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 10:23
da venexian
1) Il polling non è un uso massiccio del micro. L'utilizzo della risorsa dipende dalla durata della routine di polling. Nell'esempio fatto sopra, l'utilizzo è dello 0,1 % per una macchina che legge 1 000 impulsi al secondo.

2) Utilizzare i filtri esterni e leggere con l'interrupt è un sistema concettualmente errato. Può funzionare anche in ampi intervalli di condizioni esterne, ma non è un sistema né sicuro, né affidabile.

Ciò che non capisco (*) è perché ci si ostini a voler adoperare soluzioni errate che costano di più in termini di utilizzo di risorse, più in termini di componenti utilizzati, più in termini di codice... per ottenere risultati insufficienti, inaffidabili e magari anche pericolosi...


(*) In realtà, l'idea ce l'ho. Non è certo il caso specifico di lelerelele, ma è un globale andamento di sciatteria generale nella progettazione. Non ci si preoccupa più di fare un lavoro 'fatto bene' e, prima di tutto, di capire perché si debba utilizzare una soluzione invece di un'altra. Si cerca la soluzione che 'più o meno' funzioni, ma che sia già fatta e per la quale non serva utilizzare tempo per comprendere l'oggetto sul quale si stà lavorando. Più o meno ciò che succede con i vari 'sketch': l'importante è che faccia qualcosa, il come e il perché sono dettagli inutili...

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 10:28
da dadduni
Più o meno ciò che succede con i vari 'sketch': l'importante è che faccia qualcosa, il come e il perché sono dettagli inutili

In generale hai ragione, ma non credo sia questo il caso di questo forum in cui sono tre giorni che si discute di come "far girare una manovella" che comunque in un modo o nell'altro tutti hanno sempre fatto funzionare.
Sto partecipando così tanto perché voglio capire i limiti dell'una e dell'altra soluzione. Il caso che tu proponi è giusto, la interrupt non capisce in quale stato si è e se anche si è fuori quadratura per lei è corretto. Ma quando si verifica questo evento? E la macchina a stati non è soggetta anch'essa ai rimbalzi?

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 10:34
da PietroBaima
venexian ha scritto:1) Il polling non è un uso massiccio del micro. L'utilizzo della risorsa dipende dalla durata della routine di polling. Nell'esempio fatto sopra, l'utilizzo è dello 0,1 % per una macchina che legge 1 000 impulsi al secondo.


A proposito, ci tengo a fare un chiarimento generale che volevo già fare in passato.

Usare un interrupt ciclico per fare una lettura di un ingresso E’ fare polling.
Non importa il modo con il quale si legge un ingresso ciclicamente, ma il fatto che lo si legga ciclicamente.

Usare un interrupt è una cosa diversa: significa che il microcontrollore esegue una service di interrupt quando si verifica una condizione specifica (per esempio la variazione di un pin di ingresso, l’underrun di un timer, un watchdog ecc...)

Re: potenziometro o encoder

MessaggioInviato: 30 apr 2018, 10:40
da dadduni
[quote="venexian"]Questa è la macchina del lettore di cui scrivevo prima

WH2.png

[/quote="venexian"]

Ho seguito passo passo la macchina a stati e, sarà un mio limite, ma ci vedo lo stesso sistema delle interrupt che triggera su entrambi i fronti. Da qualsiasi stato qualsiasi fronte arrivi su qualsiasi ingresso fa la XOR degli ingressi i incremeta o decrementa per poi arrivare al nuovo stato.
Gli stati adiacenti collegati sono solo quelli in cui varia un solo bit in ingresso ossia avere un fronte.
Non voglio dire una fesseria ma credo che nella sequenza
1) 0 0
2) 1 0
3) 1 1
4) 0 1
io ci vedo un solo incremento invece la macchina a stati ne vede due