Vai al contenuto
PLC Forum


Microstepping 1/256 WOW! NUOVO! - Ma può mai essere così semplice?


eeprom

Messaggi consigliati

Salve ragazzi,

in questo link http://perso.orange.fr/jf.wadel/telech/e882.zip viene proposto uno schema che pilota un motore passo passo in microstepping mode selezionabile da 1/32 a 1/256.

Io non sono mai riuscito a capire come generare questa sequenza per il pilotaggio in questa modalità ma ho studiato a fondo il circuito e tradotto anche il txt presente all'interno per verci chiaro.

A me sembra proprio che non funzioni, ma sicome la cosa è abbastanza interessante anzi interessantissima vista la facilità del circuito e l'assenza di microcontroller e proprio una cosa ridotta al minimo e gestita tutta tramite LPT o Seriale.

Vorrei un parere dei più esperti sulla fattibilità del circuito, e sul suo funzionamento intrinseco.

Ciao e grazie

Link al commento
Condividi su altri siti


Allora continuo il thread anallizanto passo passo il circuito, ma prima di tutto dobbiamo parlare della Eprom in questione 25C512.

Possiamo immaginare una eprom costituita da una serie di celle all'interno delle quali sono memorizzate le informazioni in maniera sequenziale:

Ogni cella contiene quindi un Byte (1 Byte=8Bit; per esempio i bit 10010011 formano un Byte);

ogni cella si trova in una certa posizione individuata da un indirizzo; cosi' la prima cella si trova all'indirizzo 1, la seconda cella all'indirizzo 2 e cosi' di seguito (in realta' si comincia da 0.1.2..);

per poter accedere ad una cella bisogna specificarne l'indirizzo; se osserviamo il datasheet di una eprom notiamo che ci sono 8 piedini contrassegnati D0..D7: e' proprio da qui che andremo a leggere gli otto bit (cioe' un Byte) memorizzati in una determinata cella;

vediamo anche che ci sono dei piedini contrassegnati A0..A16: da questi si sceglie l'indirizzo della cella da leggere (o scrivere);

la sequenza semplificata e' dunque questa:

1) "scriviamo" sulle linee degli indirizzi (A0..A16) l'indirizzo a cui vogliamo accedere

2) e la eprom automaticamente ci fornira' sui piedini D0..D7 il byte;

per specificare l'indirizzo bisogna solo scrivere lo stesso in binario sulle linee A0..A14 nel seguente modo:

A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

per specificare l'indirizzo 0 (Zero),

A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

per specificare l'indirizzo 1,

A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

per specificare l'indirizzo 4 e cosi di seguito;

ad ogni zero corrisponde un segnale di 0v mentre ad ogni 1 un segnale di circa 5V;

dal momento che siamo in argomento di indirizzi specifichiamo una cosa:

una 27C512 ha una capacita' di 512k bit che corrispondono a 512/8 Byte cioe' 64K byte; bisogna fare attenzione che 1K byte non corrisponde a 1000 byte ma a 1024 byte quindi una 27C512 avra' 1024x64=65536 locazioni di memoria (byte) (quindi indirizzi);

alcuni piedini (detti "di controllo") servono a controllare il chip:

E o CE sta' per Chip Enable; possiamo immaginarlo come un interruttore generale: quando applichiamo una tensione di 0v la eprom e' "accesa", quando ci mettiamo +5v la eprom e "spenta"

G o OE sta' per Output Enable; con 0v abilitiamo le uscite con +5v le disabilitiamo;

Riassumendo le operazioni da compiere per leggere da una eprom sono:

abilitiamo il chip (CE a 0v)

abilitiamo le uscite (OE a 0v)

specifichiamo l'indirizzo da cui leggere (linee A0..A16)

dopo un breve periodo (necessario a stabilizzare i segnali) leggiamo il byte sui piedini D0..D7

Con questo lunghissimo post voglio rendere partecipi tutti anche i neofiti che magari possono avere qualche idea geniale all'ultimo minuto.

specifichiamo un nuovo indirizzo..

Link al commento
Condividi su altri siti

Visto come funziona una Eprom che sicuramente tutti in questo forum sapranno tranne me sino ad oggi possiamo dedurre che dal circuito si notano 2 integrati 4516 che non sono altro che dei contatori binari collegati insieme per poter contare fino a 256 comandati direttamente dal PC.

Nello schema c'è già un errore che sta nel collegare il Pin 7 del primo integrato al Pin 15 del secondo che invece deve essere collegato al Pin 5.

Il pin 7 indica quando il contatore a finito il suo conteggio fino a 15 (Hex F) questo a suo volta doveva andare a finire al Pin 5 del secondo integrato che percepisce la fine del primo contatore ed aziona il secondo incrementando di uno il contatore. Tutto questo permette di avere un contatore ad 8-bit e quandi arrivare a contare fino a 255 (Hex FF).

Il Pin 15 del secondo integrato invece deve essere collegato allo stesso pin del primo integrato per avere il clock in comune.

Almeno così sono riusci a capire da diversi post su internet.

Corregetemi se sbaglio.

Alla prox...

Link al commento
Condividi su altri siti

Posto di seguito la traduzione del txt allegato al file ZIP:

------------

SCHEDA A MICROPASSI

© JFW freeware

------------

Buongiorno,

questo progetto contiene:

“lisezmoi.txt” il testo che state leggendo

“E882.Jpg” lo schema elettrico

“E582.Bin” il files binario a 4,8,16,32 micropassi

“E682.Bin” il files binario a 8,16,32,64 micropassi

“E782.Bin” il files binario a 16,32,64,128 micropassi

“E882.Bin” il files binario a 32,64,128,256 micropassi

Secondo la vostra scelta, uno di questi files si dovrà scrivere dentro la 27C512.

INTRODUZIONE

Questo progetto è talmente semplice che mi chiedo perché non è mai stato inventato prima.

Un circuito integrato CMOS 4516 sa contare e interpretare molto bene i segnali DIR e CLOCK che vengono dalla porta LPT o RS232, basta poi mettere due 4516 combinati tra loro per poter contare fino a 256 clock.

Una EPROM 27C512 è fata normalmente per contenere dei dati informatici… ma può anche contenere altro!

Questo circuito integrato è normalmente pensato per funzionare a più di 100Mhz ma se si bloccano i Pin 20 e 22 si può farlo lavorare bene anche a delle frequenze inferiori, anche a 0Hz.

Il principio è di servirsene come se fosse un’immensa tabella di corrispondenze.

Abbiamo i nostri 256 passi sui Pin che vano da A0 ad A7 in un contatore che funziona alla massima velocità, sui piedini che vanno invece da A8 ad A15 cosa succede?

Ognuno dei 256 passi determina un valore SENO/COSENO, il contatore rapido collegato sui Pin A8/A15 valuta se il seno (o coseno) è BUONO ed allora mette l’uscita corrispondente a 1 o a 0.

Il che fa si che il contatore funzioni rapidamente, le uscite mandano un PWM (Pulse Width Modulation) il cui rapporto ciclico dipende dal seno (o coseno) del passo in questione.

Siccome una 27C512 può contenere molti byte, è stato possibile allora mettere 4 tabelle seno/coseno, di cui le seguenti uscite:

D0/D1 generano un PWM per 256 micropassi

D2/D3 generano un PWM per 128 micropassi

D4/D5 generano un PWM per 64 micropassi

D6/D7 generano un PWM per 32 micropassi

È il 4052 che si occupa di commutare le buone uscite per poi inviarle al L298 o ai due L6203.

Bene… questo schema è previsto per 32,64,128,256 micropassi ma quel che può fare va oltre, può però anche fare di meno perciò i tre files binari forniti servono a ridurre il numero di micropassi, di seguito esplicitati:

“E582.Bin” per i 4 a i 32 micropassi

“E682.Bin” per i 8 a i 64 micropassi

“E782.Bin” per i 16 a i 128 micropassi

“E882.Bin” per i 32 a i 256 micropassi

E tutto ciò senza alcun cambiamento al circuito ma solo cambiando il contenuto della eprom.

Ma comunque si può sempre personalizzare il circuito se 8,16 o anche 32 micropassi vi bastano, infatti c’è poco da cambiare allo schema, basterebbe mettere delle EPROMs meno capienti (27C256, 27C128 o anche una 27C64). Però c’è da dire che si può fare anche l’inverso, mettendo una 27C4001 avrete 1024 o 2048 micropassi. Oppure potere optare della potenza di queste grosse eprom affinché con una sola di queste potete fare delle schede a 2 o 3 assi (mantenendo lo stesso schema e quasi lo stesso numero di componente.

I soli limiti di questo sistema sono le deboli velocità dei L298 e L6203 e soprattutto quella del PC.

Infatti i circuiti CMOS qui utilizzati hanno un tempo di trasferimento che varia da 45ns per i buoni componenti e 120ns per i componenti a basso costo.

Se non ho messo valori a R e C è perché c’è una polemica sulle velocità dei PWM,

- certi vogliono 5Khz

- altri vogliono 40Khz

e ognuno fonda fermamente le proprie opinioni in base alle loro esigenze, essi però dimenticano che su carta L298 è limitato a 40Khz, ma in realtà questo smette di funzionare verso i 22Khz circa.

Personalmente ho fatto le mie prove con R = 150 KOhm e C = 1nf, per altri dettagli…. La mia email jacky[at]jfwadel.net

Non c’è più limitazione di corrente perché quando il motore riceve dal seno/coseno, esso riceve dunque una coppia costante qualunque sia il passo in corto, le mie prove semplicemente con una tensione doppia di quella segnata sul motore dimostrano che ciò basta largamente.

Per coloro invece che vogliono assolutamente fare una limitazione di corrente occorre servirsi del Pin 6 del 4052 e di due entrate del 4011.

Il prossimo schema avrà questa limitazione di corrente…

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...