Riga ottica

Sezione dedicata alla meccanica delle CNC e delle macchine tradizionali.
Rispondi
Avatar utente
giulianodes
Member
Member
Messaggi: 549
Iscritto il: martedì 18 marzo 2008, 22:44
Località: Padova

Riga ottica

Messaggio da giulianodes » domenica 13 aprile 2008, 22:25

Sono riuscito, dopo non poche peripezie, a mettere in "funzione" una riga ottica con relativo lettore laser recuperati da una stampante canniballizzata.
Il bello è che ha le due uscite in quadratura di fase ( A e B sfasate di 90°) per poter rilevare la direzione del movimento (ma queste cose le sapete già !).
Con l'aiuto del microscopio, giocattolo di mia figlia, ho visto che la riga ha 5 tacche per ogni mm. Il che vuol dire, se non erro, che posso avere la precisione di lettura di 0,2 mm. Mi sembrano pochini anche se è per una fresetta per fare i PCB.
Che dite se moltiplico l'avanzamento del sensore della riga rispetto all'asse ? Esempio se moltiplico per 2:1 avrò già  0,1 mm di risoluzione!
Considerando che la L della riga è di ca 40 cm e con un rapporto 2:1 potrò sfruttarne solo 20 .
Lascio perdere.....o perseguo !?
Giuliano
La causa principale dei problemi sono le soluzioni. E. Sevareid

Avatar utente
Bit79
Senior
Senior
Messaggi: 1701
Iscritto il: mercoledì 10 gennaio 2007, 23:27
Località: Fornaci di Barga (Lucca)

Messaggio da Bit79 » domenica 13 aprile 2008, 23:58

Considera che con i due segnali sfasati di 90° puoi effettuare il conteggio degli impulsi moltiplicandoli x4. Quindi le 5 tacche al mm ti permetteranno una risoluzione di 0.05 mm. Penso sia accettabile.
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Avatar utente
giulianodes
Member
Member
Messaggi: 549
Iscritto il: martedì 18 marzo 2008, 22:44
Località: Padova

Messaggio da giulianodes » lunedì 14 aprile 2008, 0:25

Moltiplicare per 4 ? E come ? Io al massimo avevo pensato di leggere anche il fronte di discesa dell'impulso. C'è qualcosa nel forum, che tu sappia, su questo argomento ?
Per Velleca55: forse sono nella sezione sbagliata, dovrei trasferire il topico su elettronica ?
La causa principale dei problemi sono le soluzioni. E. Sevareid

velleca55

Messaggio da velleca55 » lunedì 14 aprile 2008, 1:17

Ancora no ... vediamo come si svolge il topico ... almeno che tu non lo voglia ... allora dimmelo che ti sposto ...




.

Avatar utente
Bit79
Senior
Senior
Messaggi: 1701
Iscritto il: mercoledì 10 gennaio 2007, 23:27
Località: Fornaci di Barga (Lucca)

Messaggio da Bit79 » lunedì 14 aprile 2008, 12:52

A metà  strada ci sei già  arrivato da solo... :wink:
Se conti solo i fronti di salita di un segnale conti 5 impulsi per mm.
Se conti anche i fronti di discesa dello stesso segnale hai 10 impulsi per mm.
Se conti i fronti di salita e di discesa di entrambi i segnali hai 20 impulsi per mm.

La decodifica non è difficile, anche se non è immediata. Con un microprocessore è più semplice, e ti permette di gestire anche il display.
Ciao!
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Avatar utente
giulianodes
Member
Member
Messaggi: 549
Iscritto il: martedì 18 marzo 2008, 22:44
Località: Padova

Messaggio da giulianodes » martedì 15 aprile 2008, 21:53

Grazie velleca55, in realtà  voglio capire dagli specialisti della meccanica se vale la pena perseguire questa strada.
Bit79, penso si possa limitare a 10 imp x mm per non perdere la direzione.
Oppure, per esempio, con Mach3 non è indispensabile conoscere la direzione dello spostamento perchè ci pensa lui ?
Mi studierò la parte del prog riguardante l'uso dell'encoder.
Grazie ciao.
Giuliano
La causa principale dei problemi sono le soluzioni. E. Sevareid

Avatar utente
Bit79
Senior
Senior
Messaggi: 1701
Iscritto il: mercoledì 10 gennaio 2007, 23:27
Località: Fornaci di Barga (Lucca)

Messaggio da Bit79 » mercoledì 16 aprile 2008, 9:54

La direzione non la perdi comunque. E' una cosa che si fa naturalmente con il conteggio encoder. Generalmente è settabile nelle modalità  x1 x2 e x4.

L'algoritmo più semplice (riferito ad un conteggio effettutato con un microprocessore) è questo:

In interrupt sul cambio di livello di uno dei due segnali:

Se memA + B = 1
allora incrementa contatore
Se memB + A = 1
allora decrementa contatore

memA = A
memB = B

Fine interrupt.

A e B sono i due canali della riga ottica o dell'encoder. La routine è eseguita ogni volta che un segnale cambia di livello (sia il fronte di salita che di discesa).
memA e memB sono due bit di appoggio per memorizzare il valore dei segnali A e B e averli disponibili nel successivo controllo.

Con cosa vuoi leggere le righe? I normali visualizzatori eseguono già  il conteggio x4.
Ciao!
Non accontentarti mai, scegli gli strumenti giusti, usali bene, non accettare compromessi, pretendi il successo. Poi ricomincia da capo.

Avatar utente
giulianodes
Member
Member
Messaggi: 549
Iscritto il: martedì 18 marzo 2008, 22:44
Località: Padova

Messaggio da giulianodes » mercoledì 16 aprile 2008, 21:15

Leggerei i due segnali con un microprocessore (ST6).
Mi è chiaro come identificare il senso di marcia leggendo i fronti di uno dei due segnali. Così avrei un 2X! Ma come faccio a leggerli tutti e 4 usando NMI del micro ? Dovrei avere un circuitino che genera un segnale di cambio stato da entrambe le uscite dell'encoder ( A e B ) ?
C'è qualche altro trucchetto ? Non sono espertissimo con i micro, so fare cose elementari, spesso utilizzo routine già  fatte di librerie tipo conversioni HEX a BCD o ASCII ecc...
Grazie Bit79 sei molto gentile.
Ciao
La causa principale dei problemi sono le soluzioni. E. Sevareid

Rispondi

Torna a “Meccanica”