Controllo dei motori passo-passo


In questa pagina ho riportato la mia esperienza con questa tipologia di motori che a differenza dei classici motori in CC, richiedono un pilotaggio degli avvolgimenti che si può ralizzare con un circuito elettronico controllato da interruttori, un microprocessore oppure da una periferica del PC.

Fin dal primo momento in cui avevo sentito parlare di questo tipo di motori mi aveva sempre incuriosito l'idea di poter controllare il loro movimento attraverso il computer.

Tutto è iniziato facendo una ricerca in Internet sull'argomento, trovai l'interessante sito di Vincenzo Villa che propone vari progetti di autocostruzione elettronica, tra cui un ottimo tutorial sui motori passo passo che consiglio di leggere a chi è interessato.

Sempre cercando in Internet mi imbattei in un altro sito molto interessante di Adriano Gandolfo (http://www.adrirobot.it/), che riguarda più in generale la robotica amatoriale. Riportava un bell'articolo sui motori passo passo in cui era descritto come realizzare il circuito di interfaccia e il programma realizzato in QBASIC con cui controllare i motori dal computer attraverso la porta parallela.

Volevo realizzare lo stesso programma di controllo dei motori, ma in ambiente Windows. Trovai un compilatore (Rapidq) per applicazioni in ambiente Windows che utilizzava un codice molto simile al QBASIC, realizzai quindi l'interfaccia grafica e cominciai a scrivere alcune istruzioni.

C'era però un problema: nei vecchi sistemi operativi come Windows 95 e 98 era possibile l'accesso diretto all'hardware e quindi non c'erano problemi (almeno in fase di programmazione, non per la sicurezza , i codici dannosi potevano creare danni!), mentre invece con i nuovi sistemi operativi come Win2000/Xp non è più possibile, ma è necessario un driver che permetta al software di accedere all'hardware (in questo caso la porta parallela).

In effetti era più complicato di quanto avevo previsto! Si doveva programmare l'applicazione in un altro linguaggio...

La svolta è stata una nuova ricerca in Internet, mi portò ad un altro ottimo sito di Marco Piccinno (http://www.giobe2000.it/HW/Parallela/index.htm) sono presentati una serie di programmi realizzati in diversi linguaggi per l'input output della porta parallela che funzionavano in ambiente Windows Xp ed dei quali era fornito anche il codice sorgente. Iniziai allora con i programmi scritti in Visual Basic e C++ senza successo (il codice conteneva degli errori probabilmente dovuti alla differente versione del compilatore). Decisi allora di utilizzare l'ultimo programma che era scritto in Delphi: il programma leggeva e scriveva un valore sulla porta parallela, basandosi su una libreria di funzioni creata da Alexandr Zloba senza necessità di installare nessun driver.

Dopo aver fatto un po' di pratica con il Delphi, ho realizzato il programma di controllo del motore che permette il movimento in modo continuo oppure di un certo numero di passi, impostando la sequenza dei passi e l'intervallo di tempo in ms tra ogni passo.

L'interfaccia

Per la scheda di interfaccia ho utilizzato quella proposta da Adriano Gandolfo (http://www.adrirobot.it/).

Il programma controlla la porta parallela alla quale è collegato un circuito costituito da dei transistor (che sono "interruttori" di potenza): attivando il primo pin della parallela si abilita il passaggio della corrente nel 1° transistor (accendiamo "l'interruttore") e quindi il primo avvolgimento (bobina), attraversato dalla corrente, genera un campo magnetico che respinge un dente del motore facendogli compiere un passo.
Ripetendo lo stesso discorso per gli altri transistor si possono quindi azionare quattro differenti bobine e combinando opportunamente la sequenza delle accensioni si mette in rotazione il motore: la sequenza dipende da come è costruito il motore e da come sono collegati i cavi.

Per ulteriori dettagli e i dettagli costruttivi rimando all'esauriente pagina di Adriano (clic qui).

 

Il circuito di interfaccia collegato al motore.

Il software StepVentura

>> NOTA IMPORTANTE : declino ogni responsabilità per malfunzionamenti/danni arrecati dall'utilizzo del software presente in questa pagina.
Il software è stato testato su Windows XP, senza riscontrare problemi.

Di seguito ho riportato la semplice interfaccia del programma che ho realizzato: il funzionamento è molto semplice e non richiede installazione, è sufficiente decomprimere il file .zip in una cartella ed avviare l'eseguibile.
Il programma è da utilizzare con la scheda di interfaccia collegata alla porta parallela e può controllare un solo motore di tipo bipolare.

Una volta impostato l'indirizzo della porta in esadecimale (di solito è 378) e la sequenza dei passi, si può muovere il motore in due modalità passi e in continuo.
Nel riquadro movimento passi si imposta il tempo di ritardo, cioè li tempo in ms tra un passo e il successivo e il n° di passi poi facendo  clic sui pulsanti +/- si effettua movimento nelle due direzioni.
Nel riquadro movimento continuo si imposta il tempo di ritardo in ms alla velocità massima e per avviare il movimento si spunta la casella "ON" e si fa clic su Avvia, mentre per fermare il motore si deseleziona ON; trascinando il cursore si può modificare la velocità di rotazione mentre
selezionando la casella "Inverti moto" si può invertire il verso di rotazione.
Facendo clic su Azzera porta viene inviato 0 alla porta : si può usare alla fine di ogni movimento quando il motore resta attivo sull'ultimo passo.
Facendo clic su Salva ed Esci, invece vengono salvate tutte le impostazioni e chiuso il programma.
 

  Download v1.3 del programma  
Se trovi utile il mio programma scrivimi un'e-mail,
se vuoi puoi anche richiedermi i sorgenti.

 

L'interfaccia del programma realizzato in Delphi.

Versione modificata - sequenze di movimenti

In questa versione del programma è possibile impostare una sequenza di movimenti del motore.
Nel riquadro sequenza istruzioni si possono inserire le istruzioni in due modi: direttamente abilitando la casella "Edit mod" oppure caricandole da file .txt facendo clic su "Load", si possono poi salvare su file .txt facendo clic su "Salva".
Abilitando la casella "Ripeti ciclo" viene salvata la sequenza di istruzioni corrente in un file .txt e viene ricaricata ad ogni ciclo.
Fare clic su "Avvia/Ferma" per avviare/fermare la sequenza.

SINTASSI ISTRUZIONI:

Comando Sintassi Esempio
START START_spazio_durata in ms_spazio_tempo di ritardo in ms START 3000 20
STOP

STOP_spazio_durata in ms

STOP 2000
INVERTI

INVERTI

 

  Download v2.0 del programma  
Se trovi utile il mio programma scrivimi un'e-mail,
se vuoi puoi anche richiedermi i sorgenti.

 

L'interfaccia del programma realizzato in Delphi.

Ringrazio l'amico Adriano Gandolfo per i consigli sulla scheda d'interfaccia e la prova del programma .

Per qualsiasi dubbio scrivi a daventura@tin.it, sono graditi commenti o suggerimenti!

Se hai trovato utile il mio programma, se vuoi, puoi ringraziarmi anche con una piccola donazione

last update 14/01/10


Davide Ventura home page