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).
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. |
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
|
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
|
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!
last update 14/01/10
Davide Ventura home page