Pilotaggio micro-step di motori passo-passo

Micro-step driver

Attenzione

Questa pagina è stata scritta molti anni fa e quindi non posso più fornire alcun supporto

Questo circuito permette di collegare un motore passo-passo bipolare ad un personal computer attraverso la porta parallela. Il circuito è, per motivi di sicurezza, isolato otticamente dal PC e permette di gestire motori fino a 3A per fase. Inoltre la modalità adottata nella connessione al PC permette di collegare fino a sei motori ad un'unica porta parallela.

L'aspetto forse più interessante è la possibilità di implementare oltre ai classici funzionamenti a passo intero e a mezzo passo, anche il cosiddetto micro-step, capace nel caso specifico di moltiplicare fino a 64 volte il numero dei passi del motore. Per esempio un normale motore da 200 passi potrebbe comportarsi come un motore "virtuale" da 12.800 passi. Questa funzione si dimostra particolarmente utile quando la velocità di rotazione è molto bassa, dell'ordine  di frazioni di giro al minuto. Per una trattazione approfondita dei vantaggi e dei limiti di questa tecnica, vi rimando al tutorial sui motori passo-passo.

Il breve software di esempio, di cui fornisco sia l' eseguibile che il codice sorgente, permette di testare il funzionamento di un motore in ambiente Windows. E' presente anche un mini-esempio per DOS e per Linux. Sono tutti basati  sulle librerie del progetto VVIO.

Descrizione dell'hardware

Il circuito è sostanzialmente diviso in due sezioni:

Si noti che per il collegamento di questo circuito alla porta parallela è necessario cablare un apposito cavo oppure realizzare un apposito circuito stampato. La descrizione dettagliata di come fare queste operazioni la trovate un un'apposita pagina

Il circuito di potenza è realizzato con una coppia di ponti ad H che includono anche la logica per selezionare digitalmente la corrente che deve essere mandata al carico: sono infatti presenti quattro ingressi digitali che, attraverso un DAC interno, permettono di impostare il modulo della corrente da zero al massimo, in sedici passi. Inoltre è disponibile un pin per il verso della corrente.

La corrente è determinata scegliendo il valore delle resistenza R1 (oppure R4) e impostando quattro bit in ingresso. Sui fogli tecnici è riportata la formula:

Imax = (Vdac * D / 16) / (250*10-6 * R)

Dove:

Vdac  Tensione di riferimento, 5V (nel circuito proposto)
D La configurazione digitale in ingresso (0... 15)
R R1 (oppure R4) - Valori indicativi da 6k8 a 20k, rispettivamente per correnti massime di 3A e 1A circa
Imax La corrente massima di uscita

Si noti che la corrente media nel carico è inferiore a quella massima appena calcolata, diciamo un 10-20% in meno (per un calcolo preciso occorre conoscere l'induttanza del carico e la frequenza di oscillazione). Vi consiglio di andare, eventualmente, per tentativi.

La corrente massima gestita dall'integrato è di 3A, la tensione massima di alimentazione di 55V. I dati termici dettagliati sono presenti sui fogli tecnici ma, orientativamente, non è richiesto nessun dissipatore per correnti fino a uno o anche due ampere, altrimenti è meglio usare un dissipatore anche se di dimensioni non eccessive: esso va montato in modo da dividere in due il circuito stampato, come visibile nella fotografia di apertura. Se la tensione di alimentazione è elevata anche l'integrato LM317HV potrebbe scaldarsi. E' comunque implementata in tutti i circuiti integrati la protezione termica contro il surriscaldamento e, con qualche limitazione, le sovracorrenti.

E' consigliabile mantenere la tensione di alimentazione del circuito a valori un po' inferiori ai 55V a causa delle sempre possibili sovratensioni. Inoltre, qualora si utilizzino al posto del LM317HV il più diffuso LM317 oppure condensatori elettrolitici a bassa tensione, è necessario rispettare la tensione di rottura del componente più "delicato". La tensione minima di alimentazione è 12V. Si noti inoltre che essa è indipendente dalla tensione di alimentazione del motore: quest'ultima è infatti automaticamente limitata al valore che permette il passaggio della corrente impostata dalle resistenze, come detto più sopra.

La corrente assorbita dipende ovviamente dalla corrente impostata ed essendo previsti due integrati potrebbe arrivare in teoria anche a 6A. In realtà essa è, in condizioni operative, anche di molto inferiore: la corrente assorbita dipende:

A titolo di esempio, usando un motore da 5V e 2 A/fase, l'assorbimento con alimentazione di 30V è minore di 500 mA.

Vi consiglio di non utilizzare alimentatori stabilizzati: basta un semplice trasformatore, un ponte a diodi ed un condensatore elettrolitico di capacità adeguata (un migliaio di uF per ampere) oppure una batteria da 12 o 24V. Si ricordi che l'assorbimento di corrente e la tensione di alimentazione sono abbastanza elevati e quindi occorre un minimo di attenzione nel maneggiare il circuito. In particolare non collegate o scollegate il circuito alla sorgente di alimentazione o il motore al circuito in presenza di tensione, pena scintille particolarmente intense e poco "igieniche" per i dispositivi elettronici.

Si noti ancora una volta che la tensione di alimentazione del circuito non è quella fornita al motore ma deve essere, anche di molto, ad essa superiore: infatti il circuito provvede a ridurla e portarla ai valori adeguati a garantire la corrente corretta e calcolata con la formula sopra riportata. In genere maggiore è la differenza tra la tensione di alimentazione del circuito e quella del motore, migliori sono le prestazioni e minore l'assorbimento di corrente.

La sezione digitale del circuito è costituita da due registri a scorrimento che gestiscono complessivamente 12 segnali digitali, sei per ciascun motore(quattro uscite non sono utilizzate). La connessione del circuito alla porta parallela del PC deve essere effettuato con il cavo descritto nella pagina dedicata al convertitore seriale/parallelo.

Descrizione del funzionamento

Per funzionare il circuito necessita del collegamento ad un personal computer attraverso la porta parallela oppure ad un altro sistema programmabile (in questo secondo caso non è però al momento disponibile alcun software). E' infatti necessario:

L'immagine seguente mostra l'andamento della corrente in una delle fasi di un motore da 200 passi/giro in funzionamento a micropassi. Per la misura è stato utilizzato un resistore di potenza da 0.15 ohm in serie ad una fase e quindi ogni "quadretto" corrisponde a circa 1.5 A. Pur con un notevole rumore di fondo (in grigio più chiaro), i 32 "scalini" che formano l'andamento sinusoidale sono chiaramente visibili.

La corrente di pilotaggio vista con l'oscilloscopio

Quella che appare come lo "spessore" della linea sinusoidale è in realtà un andamento seghettato della corrente, come ben descritto sui fogli tecnici dell'integrato a cui vi rimando per una trattazione dettagliata.

Nel file microstepper.tgz è disponibile il software di test in ambiente windows che permette di pilotare fino a due motori contemporaneamente ma in modo indipendente;  sono inoltre presenti due semplicissimi esempi per dos e linux. Per utilizzare il software occorre:

Le librerie del progetto VVIO mettono a disposizione funzioni per pilotare fino a sei motori contemporaneamente, tutti collegati alla stessa porta parallela.

Il circuito può essere utilizzato anche per pilotare due generici carichi induttivi, per esempio un motore DC del quale si vuole controllare la coppia oppure solenoidi. Le librerie mettono a disposizione anche una funzione generica di scrittura utilizzabile in questi casi.

Elenco dei componenti

3 ISO1, ISO2, ISO3 6N135 - Optoisolatore
U1, U3 CD4094B - Registro a scorrimento CMOS
2 U4, U2 LMD18245 - Ponte ad H
1 U5  LM317HV - Regolatore di tensione
2 C1, C3 470pF
2 C2, C4  2.2nF
1 C5  Elettrolitico 100 (o 47) uF - 63V
1 C6  Tantalio 10uF
3 C7, C8, C9 100nF
4  C10, C11, C14, C15 470nF
2 C13, C12 Elettrolitico 470 (o 1000) uF - 63V
JP1 Connettore 5x2 poli, passo 2.54mm
3 J1, J2, J3 Connettore 2 poli, passo 5mm
2 R1, R4 6k8 - 20k (vedi testo)
2 R2, R5 22k
1 R3  100 ohm
R6  220 ohm
R7  680 ohm
3 R8, R10, R12 270 ohm
R9, R11, R13 2k2

Tutte le resistenze hanno tolleranza del 5% e potenza massima dissipabile di 1/4 di watt. Se la tensione di alimentazione rimane sui 30-40V la tensione di lavoro dei condensatori può essere ridotta (anche se consiglio comunque un certo margine di sicurezza) ed è possibile usare un LM317 "normale".

Lo stampato

Il circuito stampato è a doppia faccia. Ovviamente non ho utilizzato fori metallizzati, non realizzabili dall'hobbista; è però necessario inserire in diversi punti un piccolo filo per collegare i due lati (una "via" artigianale) nonché realizzare le saldature di alcuni componenti su entrambi i lati del circuito stampato. Consiglio di montare i due  integrati CD4094B usando zoccoli con contatti torniti ("a tulipano"), saldabili anche sul lato superiore oppure di non utilizzare affatto gli zoccoli. Osservando il circuito stampato è possibile individuare quali sono le saldature da fare sul lato superiore, in corrispondenza degli IC e di alcune resistenze.

Per facilitare il montaggio consiglio di non seguire la solita logica di iniziare dai componenti più "bassi" ma di usare il seguente ordine per evitare difficoltà nelle operazioni di saldature sul lato superiore:

Se usate dissipatori, tenete presente che occorre tenerli sollevati dal circuito stampato per evitare cortocircuiti. Inoltre il dissipatore dei due LMD18245 deve essere diverso o comunque isolato da quello, eventuale, dell'LM317.

Il circuito visto dal lato dei connettori dei motori

Il software, lo schema elettrico del circuito ed il PCB sono contenuti nel file microstepper.tgz

licenza La licenza d'uso che ho utilizzato
schematic.pdf Lo schema elettrico del circuito, in formato PDF
top.pdf Circuito stampato lato componenti, in formato PDF
bottom.pdf Circuito stampato lato saldature, in formato PDF
assembly.pdf Layout di assemblaggio, in formato PDF
sw\LW-CVI Software di test in ambiente Windows
sw\TC Esempio d'uso in ambiente DOS
sw/gcc Esempio d'uso in ambiente Linux

Per realizzare questo circuito è necessario disporre dei seguenti file o documenti:

Prima di realizzare il circuito o utilizzare il software è inoltre necessario leggere le avvertenze generali.

Altri progetti correlati


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima