encoder gray code e pic

Ciao a tutti. Non ho mai usato un encoder ottico e mi trovo tra le mani un encoder di questo tipo:

risoluzione da 25 aa 256 output: 2 bit graycode Channel A leads Channel B by 90 º (electrical) with clockwise rotation e ha un canale di index.

datasheet

formatting link

Ho letto del graycode su wikipedia, mi piacerebbe approfondire e magari guardare qualche codice di esempio, preferibilmente in C. Grazie ciao! JohnnyRun

Reply to
JohnnyRun
Loading thread data ...

Il giorno Wed, 03 Mar 2010 12:42:12 +0100, JohnnyRun ha scritto:

Ho questa formula di conversione sviluppata in QuickBasic da cui ho ricavato anche una routine per assembler AVR

'CONVERSIONE NUMERI DA GRAY A BINARIO 'FORMULA: 2^n =2^(n-1) XOR GRAY^n

BCR = 0: Bin$ = "" FOR I = 1 TO LEN(Gry$) BCR = BCR XOR VAL(MID$(Gry$, I, 1)):Bin$ = Bin$ + LTRIM$(STR$(BCR)) NEXT

Non è molto difficile da trasformare negli scarabocchi di Kernighan e socio :-)

-- ciao Stefano

Reply to
SB

Il 03/03/2010 13.13, SB ha scritto:

:-)

Grazie. Il mio dubbio è più teorico. Non capisco come posso selezionare la risoluzione dell'encoder. JohnnyRun

Reply to
JohnnyRun

Il giorno Wed, 03 Mar 2010 13:46:16 +0100, JohnnyRun ha scritto:

Quello non è un encoder gray ma solo un encoder incrementale bidirezionale.

La risoluzione non si seleziona ma si ordina perchè dipende dal modello e dal codice del prodotto.

Esempio ENC1J-B28-L00128L ha 128 steps. (pag.3 del datasheet)

-- ciao Stefano

Reply to
SB

Il 03/03/2010 13.55, SB ha scritto:

Ah.. ok. Allora il mio è ENS1J-450-R00256L Quindi risoluzione a 256. Pensavo fosse un encoder gray..la prima riga dice "2 bit gray code". Mi rileggo bene il datasheet, mi deve esser sfuggito qualcosa. Grazie JohnnyRun

Reply to
JohnnyRun

Il giorno Wed, 03 Mar 2010 14:19:57 +0100, JohnnyRun ha scritto:

Giusto.

Beh, con 2 bit non è che puoi avere un encoder assoluto, è un semplice shaft encoder economico.

Non stare a impazzire con routine software, se usi uno di questi ti risparmi molti problemi:

formatting link

-- ciao Stefano

Reply to
SB

JohnnyRun:

"Gray code" vuole semplicemente dire che, per ogni "scatto" non puoi avere più di un bit che cambia. Viene usato negli encoder assoluti.

Un encoder a 2 bit è per forza Gray (beh, no, non per forza, ma non avrebbe senso), non vedo cosa lo specifichino a fare.

Serve solo a confondere le idee.

Reply to
F. Bertolazzi

SB:

In effetti con quelli meccanici, con il loro rimbarzi del cavolo, è molto ma molto più complicato di quanto sembri, soprattutto se devi essere chessò, sincrono con il refresh di un display.

Se è invece ottico, l'interfacciamento è banale: interrupt su di una fase e check del livello dell'altra.

Reply to
F. Bertolazzi

Il 03/03/2010 14.52, F. Bertolazzi ha scritto:

Fatto. l'interfacciamento è stato facile facile.. E' un pò troppo preciso per quel che mi serve ma vabè...tutta esperienza. Sull'albero dell'encoder vorrei montare una puleggia passacavo in nylon o gomma. Cosa potrei usare? Anche soluzioni caserecce...

Grazie ciao! JohnnyRun

Reply to
JohnnyRun

JohnnyRun:

Bene, bravo.

it.hobby.fai-da-te. C'è gente con attributi quadrati, anzi cubici.

Reply to
F. Bertolazzi

Il 03 Mar 2010, 14:52, "F. Bertolazzi" ha scritto:

molto

fase e

Non e' una soluzione affidabile, a meno che non sia tollerabile perdere qualche impulso come nel caso di una manopola. Infatti c'e' sempre la possibilita' che una fase, a causa di vibrazioni, oscilli piu' velocemente di quanto la isr del micro riesca a starci dietro. Inoltre non sfrutti la massima risoluzione dell'encoder. Il modo migliore resta sempre una macchina a stati realizzata in hardware per determinare il verso di rotazione e il clock per un contatore up-down, pure questo hardware.

-------------------------------- Inviato via

formatting link

Reply to
brown_fox

Il giorno Thu, 04 Mar 2010 17:14:41 GMT, snipped-for-privacy@xx.yy (brown_fox) ha scritto:

Quoto, difatti in un controllo a 3 assi c'era il problema della perdita di qualche impulso conteggiato con la conseguente necessità di inserire dei sensori per ricalibrare il sistema ogni tanto, perchè dopo ore di funzionamento le quote erano sballlate, e anche in modo abbastanza casuale.

Con l'uso di un sistema hardware per formare gli impulsi il problema non si è più presentato, ecco perchè ho consigliato quegli ic all'op.

-- ciao Stefano

Reply to
SB

brown_fox:

La puleggia è saltata fuori solo dopo.

Ho la sfera di cristallo a riparare, mi arrangio con una palla di vetro.

Reply to
F. Bertolazzi

Il 04/03/2010 18.14, brown_fox ha scritto:

Grazie. Spè però un chiarimento: perchè facendo tutto col micro non si sfrutta la massima risoluizione? JohnnyRun

Reply to
JohnnyRun

Il giorno Fri, 05 Mar 2010 13:29:18 +0100, JohnnyRun ha scritto:

Perchè usando un fronte come CLOCK e l'altro come DATA usi 256 fronti e quindi impulsi, mentre usando ambedue i fronti sia come CLK che come D si possono avere

512 impulsi giro.

Usando poi anche i fronti di discesa potresti raddoppiare ancora la risoluzione fino a 1024 impulsi/giro, ma quello che conta nella maggior parte delle applicazioni è soprattutto evitare errori.

Gli IC LS7183-4 che ti avevo segnalato hanno tra l'altro la possibilità di usare il pin MODE per cambiare la risoluzione fino a 4X.

Mode = 0 : x1 selected Mode = 1 : x2 selected Mode = Float : x4 selected

-- ciao Stefano

Reply to
SB

Il 05/03/2010 13.47, SB ha scritto:

avere

Chiarissimo.

Ok. Convinto. Voglio provarlo. Ma perchè su farnell non li trovo? Devo cercare un'altra sigla o un equivalente? JohnnyRun

Reply to
JohnnyRun

Il giorno Fri, 05 Mar 2010 19:15:18 +0100, JohnnyRun ha scritto:

I

Perchè non li hanno

Prova qui, io adesso non riesco a risalire al distributore

formatting link

-- ciao Stefano

Reply to
SB

SB:

Degli interrupt? :D

Reply to
F. Bertolazzi

Il giorno Sat, 6 Mar 2010 07:24:02 +0100, "F. Bertolazzi" ha scritto:

Del caffè :-P

-- ciao Stefano

Reply to
SB

SB:

Eppure avrei giurato che Farnell avesse un integrato della serie MC (ON, ex Motorola) che facesse al caso suo. Sarebbe per i meccanici, in quanto ha anche l'antirimbalzo ma non tipo lo MC14490, lo avevo preso in considerazione quando non riuscivo a far funzionare l'encoder del displayone.

Reply to
F. Bertolazzi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.