Sommario:

Guidare un motore passo-passo senza microcontrollore: 7 passaggi
Guidare un motore passo-passo senza microcontrollore: 7 passaggi

Video: Guidare un motore passo-passo senza microcontrollore: 7 passaggi

Video: Guidare un motore passo-passo senza microcontrollore: 7 passaggi
Video: Usare un motore passo passo (stepper motor) con Arduino - #61 2024, Dicembre
Anonim
Image
Image

In questo Instructable, guiderò un motore passo-passo 28-BYJ-48, con una scheda array darlington UNL2003, a volte chiamata x113647, senza un micro controller.

Avrà avvio/arresto, avanti/indietro e controllo della velocità.

Il motore è un motore passo-passo unipolare con 2048 passi per giro in modalità passo completo. La scheda tecnica del motore si trova su

I due dispositivi possono essere acquistati insieme da diversi fornitori. Ho preso il mio da kjell.com

Bing o google per trovare un fornitore vicino a te.

Passerò prima attraverso alcuni passaggi e parti necessari per farlo funzionare, quindi aggiungerò alcuni passaggi e parti per un maggiore controllo.

Dovresti essere avvertito che le parti che uso sono quelle che mi capita di avere nel mio scrigno del tesoro, e non necessariamente le parti più adatte allo scopo.

Inoltre, dovresti essere avvertito che questo è il mio primo Instructable e che sono abbastanza nuovo nell'elettronica.

Per favore aggiungi commenti se pensi che io abbia fatto qualcosa che non avrei dovuto fare, o se hai suggerimenti per miglioramenti o suggerimenti per parti più adatte.

Passaggio 1: elenco delle parti

Le parti principali
Le parti principali

Le parti utilizzate per questo progetto sono

  • tagliere
  • Motore passo-passo 28byj-48
  • Scheda ULN2003 dell'array di transistor Darlington (x113647)
  • 74HC595 registro a scorrimento
  • 74HC393 contatore di ondulazione binario
  • DS1809-100 Potenziometro digitale Dallastat
  • Tampone ottale 74HC241
  • 3 × pulsanti tattili
  • 3 × 10kΩ resistori
  • Condensatori ceramici 2 × 0,1µF
  • 1 × 0,01 µF condensatore ceramico
  • Cavi di collegamento
  • Alimentazione 5V

Passaggio 2: le parti principali

Le parti principali
Le parti principali

Il registro a scorrimento 74HC595

Il motore viene mosso dando ripetutamente ai quattro pin di ingresso della scheda UNL2003 questa sequenza:

1100-0110-0011-1001

Questo guiderà il motore in quella che viene chiamata modalità passo completo. Il modello 1100 viene ripetutamente spostato a destra. Questo suggerisce un registro a scorrimento. Il modo in cui funziona un registro a scorrimento è che, ad ogni ciclo di clock, i bit nel registro si spostano di una posizione a destra, sostituendo il bit più a sinistra con il valore del pin di ingresso in quel momento. Quindi, dovrebbe essere alimentato con due cicli di clock di 1 e poi due cicli di clock di 0 per generare lo schema per l'immersione del motore.

Per generare i segnali di clock è necessario un oscillatore, che generi una serie costante di impulsi preferibilmente un'onda quadra pulita. Questo costituirà la base dello schema di spostamento dei segnali al motore.

Per generare i "due cicli di uno e poi due cicli di 0", vengono utilizzati i flip-flop.

Ho un registro a scorrimento 74HC595. Questo è un chip molto popolare, descritto in numerosi video Instructables e Youtube.

La scheda tecnica è disponibile all'indirizzo

Un bel Instructable è 74HC595-Shift-Register-Demistified da bweaver6, Il registro a scorrimento 74HC595 funziona in modo tale che ad ogni ciclo di clock, i dati nel suo registro a 8 bit vengano spostati a destra e spostando il valore del pin di ingresso nella posizione più a sinistra. Quindi, dovrebbe essere alimentato con due cicli di clock di 1 e quindi due cicli di clock di 0.

I dati vengono spostati sul fronte di salita dell'impulso di clock. Quindi il flip-flop dovrebbe attivarsi al fronte di discesa del clock, quindi il 74HC595 avrà un input di dati stabile al fronte di clock ascendente.

Il 74HC595 in può essere cablato in questo modo:

Pin 8 (GND) -> GND

Pin 16 (VCC) -> 5V Pin 14 (SER) -> Dati nel Pin 12 (RCLK) -> Ingresso orologio Pin 11 (SRCLK) -> Ingresso orologio Pin 13 (OE) -> GND Pin 10 (SRCRL) -> 5V Pin 15 e 1-3 emetteranno il pattern per azionare il motore.

Il collegamento di RCLK e SRCLK garantisce che il registro dei dati del chip sia sempre sincronizzato con il registro di uscita. Mettendo a massa il Pin 13 si rende immediatamente visibile ai pin di uscita (Q0 - Q7) il contenuto del registro di uscita.

Il timer 555

Per generare l'impulso di clock, è possibile utilizzare il chip timer 555. Anche questo è un chip molto popolare, ed è ancora più descritto e discusso rispetto al registro a scorrimento. Wikipedia ha un bell'articolo su

La scheda tecnica è qui:

Questo chip può, tra le altre cose, generare impulsi di clock ad onda quadra. Resistori e condensatori esterni vengono utilizzati per controllare la frequenza e il ciclo di lavoro (on-fraction).

Quando è impostato per generare ripetutamente impulsi, si dice che il chip 555 sia in modalità astabile. Questo viene fatto collegandolo come nell'immagine sopra. (foto di jjbeard [dominio pubblico], tramite Wikimedia Commons):

Pin 1 -> GND

Pin 2 -> R1 (10kΩ) -> Pin 7 Pin 2 -> Pin 6 Pin 3 è l'uscita Pin 4 (reset) -> 5V Pin 5 -> 0.01µF -> GND Pin 6 -> 0.1µF -> GND Pin 7 -> R2 (10kΩ) -> 5V Pin 8 -> 5V

L'uscita del Pin 3 sarà collegata ai pin del clock di ingresso (Pin 11 e Pin 12) del registro a scorrimento 74HC595.

La frequenza del segnale di uscita (e quindi la velocità del motore passo-passo) è determinata dai valori del resistore R1 e R2 e dal valore del condensatore C.

Il tempo di ciclo T sarà ln(2) C (R1 + 2 R2) o circa 0,7 C (R1 + 2 R2). La frequenza è 1/T.

Il ciclo di lavoro, la frazione del tempo di ciclo in cui il segnale è alto, è (R1 + R2) / (R1 + 2R2). Il ciclo di lavoro non è molto importante per questo progetto.

Io uso 10kΩ, sia per R1 che per R2, e C = 0.1µF.

Questo dà una frequenza di circa 480Hz, ed è vicino alla frequenza massima che ho trovato che il motore passo-passo può gestire senza stallo.

Per generare il pattern 1100 spostato e ripetuto dal 74HC595, il pin 14 (SER) deve essere mantenuto alto per due cicli di clock e quindi basso per due cicli di clock ripetutamente. Cioè, il pin dovrebbe oscillare con metà della frequenza dell'orologio.

Il contatore di ondulazione binario doppio 74HC393

Il 74HC393 conta in binario, e questo significa anche che può essere usato per dividere le frequenze degli impulsi per potenze di due, La sua scheda tecnica è qui:

Il 74HC393 è duale, ha un contatore a 4 bit su ciascun lato.

Al fronte di discesa dell'impulso di clock, il primo pin di uscita si attiva e disattiva. Quindi, il pin di uscita uno oscillerà con metà della frequenza del clock di ingresso. Al fronte di discesa del pin di uscita uno, il pin di uscita due si attiva e disattiva. E così via per tutti e quattro i pin di uscita. Ogni volta che il pin n si spegne, il pin n+1 cambia.

Il pin n+1 cambia la metà delle volte rispetto al pin n. Questo è il conteggio binario. Il contatore può contare fino a 15 (tutti e quattro i bit 1) prima di ricominciare da zero. Se l'ultimo pin di uscita del contatore 1 è collegato come clock al contatore 2, potrebbe contare fino a 255 (8 bit).

Per creare un impulso con metà della frequenza del clock di ingresso, è necessario solo il pin di uscita 1. Cioè, contando solo da zero a uno.

Quindi, se il conteggio viene effettuato dall'impulso di clock dal 555, il pin sul contatore 74HC393 che rappresenta il bit 2, oscillerà con metà della frequenza del clock. Quindi questo può essere collegato al pin SER del registro a scorrimento 74HC595, per far sì che questo generi il pattern desiderato.

Il cablaggio del contatore binario 74HC393 dovrebbe essere:

Pin 1 (1CLK) -> 74HC595 Pin 11, 12 e 555 Pin 3

Pin 2 (1CLR) -> GND Pin 4 (1QB) -> 74HC595 Pin 14 Pin 7 (GND) -> GND Pin 14 (VCC) -> 5V Pin 13 (2CLK) -> GND (non utilizzato) Pin 12 (2CLR) -> 5V (non utilizzato)

Passaggio 3: farlo funzionare

Fallo correre
Fallo correre
Fallo correre
Fallo correre

Ora possiamo far funzionare il motore, se i pin 0-3 del 74HC595 sono collegati rispettivamente ai pin 1-4 della scheda ULN2003.

Per ora, sostituire il condensatore da 0.1µF al Pin 6 del timer 555 con un 10µF. Ciò renderà il ciclo dell'orologio cento volte più lungo e si sarà in grado di vedere cosa sta succedendo.

I LED sulle schede ULN2003 possono essere utilizzati per questo. Scollegare il motore dalla scheda ULN2003. Collegare i pin da 1 a 4 della scheda all'uscita QA-QD (pin 7, 9, 10 e 11) del 74HC595. Collegare il - e il + della scheda ULN2003 a terra e 5V. Se l'alimentazione è accesa, dovresti vedere lo schema desiderato sui LED.

Se vuoi vedere cosa sta succedendo nel contatore binario 74HC393, collegati invece ai pin 3-6 di quello.

Se lo schema sembra corretto, spegnere, sostituire nuovamente il condensatore con quello da 0,1µF, collegare i pin di ingresso 1 - 4 della scheda ULN2003 ai pin di uscita QA - QD del 74HC595 e ricollegare il motore.

Con l'alimentazione accesa, il motore dovrebbe ora funzionare.

Passaggio 4: controllo della velocità

Controllo di velocità
Controllo di velocità

La velocità del motore passo-passo è governata dalla frequenza dell'uscita del timer 555. Anche questo è governato dai valori dei resistori R1 e R2 e del condensatore C1 ad esso collegato. Collegando un potenziometro da 100kΩ in serie con R2, la frequenza può essere compresa tra 480Hz e 63Hz. I passi p. secondo del motore, sarà la metà della frequenza del timer 555.

Ho usato un potenziometro digitale DS1809-100, che è fatto per l'utilizzo del pulsante. I pulsanti che collegano il pin 2 (UC) e il pin 7 (DC) a 5 V fanno aumentare/diminuire la resistenza tra i terminali RH (Pin 1) o RL (Pin 4) e il pin 6 (RW) del tergicristallo. Tenendo premuto un pulsante per più di un secondo, il pulsante si ripete automaticamente.

La scheda tecnica può essere trovata qui:

Il cablaggio è così:

Pin 1 (RH) inutilizzato

Pin 2 (UC) -> pulsante tattile 1 Pin 3 (STR) -> GND Pin 4 (RL) -> 555 Pin 2 Pin 5 -> GND Pin 6 (RW) -> 10 kΩ -> 555 pin 7 Pin 7 (DC) -> pulsante tattile 2 Pin 8 -> 5V

Il cablaggio per il pulsante tattile 1:

Pin 1/2 -> DS1809 Pin 2

Pin 3/4 -> 5V

Il cablaggio per il pulsante tattile 2:

Pin 1/2 -> DS1809 Pin 7

Pin 3/4 -> 5V

Ora è possibile regolare la velocità.

Passaggio 5: avvio / arresto

Avvia/Arresta
Avvia/Arresta

Per avviare e arrestare il motore passo-passo, è possibile utilizzare il pin 4 (il pin di ripristino) del timer 555. Se questo viene abbassato, non ci saranno impulsi di uscita dal Pin 3.

Un pulsante tattile verrà utilizzato per alternare l'avvio e l'arresto. Premendo il pulsante una volta, dovrebbe avviare il motore, e premendolo di nuovo, dovrebbe arrestarlo. Per ottenere questo comportamento, è necessario un flip-flop. Ma può essere utilizzato anche il 74HC393 che è già presente. Il 74HC393 ha due parti e solo una metà viene utilizzata come divisore di frequenza per l'impulso di clock.

Poiché il contatore binario è in realtà solo un insieme di flip-flop alternati in serie, è possibile utilizzare il primo flip-flop dell'altra parte. Collegando un pulsante tattile in modo che il Pin 13 (2CLK) sia basso quando il pulsante viene premuto e alto se non lo è, il Pin 12 si attiverà su ogni basso. Collegando il Pin 12 al Pin 4 del 555, si avvierà e si fermerà la sua uscita, e quindi il motore.

I pulsanti tattili sono un po' complicati, perché sono meccanici. Possono "rimbalzare", cioè possono inviare più segnali ad ogni spinta. Il collegamento di un condensatore da 0,1 µF sul pulsante aiuta a evitare ciò.

Quindi un pulsante tattile (viene aggiunto il pulsante 3 e viene modificata la connessione al Pin 4 del 555.

Il cablaggio del pulsante:

Pin 1/2 -> 10kΩ -> 5V

Pin 1/2 -> 0.1µF -> Pin Pin 3/4 -> 74HC393 Pin 13 (2CLK)

Le seguenti modifiche vengono apportate al 555:

Pin 4 (Reset) -> 74HC393 Pin 11 (2QA)

Il pulsante 3 dovrebbe ora funzionare come interruttore di avvio/arresto.

Notare che un motore fermato in questo modo consumerà comunque energia.

Passaggio 6: controllo della direzione

Controllo della direzione
Controllo della direzione

Per controllare la direzione del motore, è necessario un altro pulsante e quindi un altro flip-flop. Tuttavia, imbroglierò, utilizzando il prossimo flip-flop del 74HC393, dopo il flip-flop on/off e il pulsante on/off.

Quando il pin di direzione (Pin 2QA) diventa basso, viene commutato il pin successivo (Pin 2QB). Quindi premendo ripetutamente il pulsante si otterrà OFF - ON AVANTI - OFF - ON INDIETRO - OFF - ON AVANTI ecc.

Per far funzionare il motore all'indietro, il modello fornito all'ULN2003 deve essere invertito. Questo potrebbe essere fatto con un registro a scorrimento bidirezionale, ma non ne ho uno. Il 74HC595 non è bidirezionale.

Tuttavia, ho scoperto che potevo usare il mio buffer ottale 74HC241. Questo buffer ha due parti a 4 bit, con pin OE (abilitazione uscita) separati. Il primo pin OE controlla i primi quattro pin di output e il secondo gli ultimi quattro pin di output. Quando l'OE è acceso, i pin di uscita hanno lo stesso valore dei corrispondenti pin di ingresso e quando è spento, i pin di uscita saranno in stato di alta impedenza, come se non fossero collegati. Inoltre, uno dei pin OE è attivo basso e l'altro è attivo alto, quindi quando li colleghi insieme, solo la metà del buffer sarà attiva in quel momento.

Quindi, per lo stesso ingresso, metà del buffer può guidare il motore in avanti e l'altra metà all'indietro. Quale metà è attiva, dipende dal valore dei pin OE.

La scheda tecnica del 74HC241 si trova all'indirizzo

Il cablaggio potrebbe essere questo:

Pin 1 (1OE) -> 74HC293 Pin 10 (2QB)

Pin 2 (1A1) -> 74HC595 Pin 15 Pin 3 (1Y4) -> ULN2003 Pin 1 Pin 4 (1A2) -> 74HC595 Pin 1 Pin 5 (1Y3) -> ULN2003 Pin 2 Pin 6 (1A3) -> 74HC595 Pin 2 Pin 7 (1Y2) -> ULN2003 Pin 3 Pin 8 (1A4) -> 74HC595 Pin 3 Pin 9 (1Y1) -> ULN2003 Pin 4 Pin 10 (GND) -> Massa Pin 11 (2A1) -> Pin 2 (1A1) Pin 12 (1Y4) -> Pin 9 (2Y1) Pin 13 (2A2) -> Pin 4 (1A2) Pin 14 (1Y3) -> Pin 7 (2Y2) Pin 15 (2A3) -> Pin 6 (1A3) Pin 16 (1Y2) -> Pin 5 (2Y3) Pin 17 (2A3) -> Pin 8 (1A4) Pin 18 (1Y2) -> Pin 3 (2Y4) Pin 19 (2OE) -> Pin 1 (1OE) Pin 20 (VCC) -> 5V

Ora, il cablaggio dovrebbe essere completato semplicemente accendendo con 5V. Assicurati che l'alimentatore possa fornire abbastanza corrente per pilotare sia il motore che i circuiti.

Passaggio 7: Conclusioni

Conclusioni
Conclusioni

Il motore passo-passo può essere controllato senza microcontrollore.

Gli IC usati qui erano alcuni che avevo da prima. La maggior parte di essi non è ottimale per questo scopo e potrebbero essere utilizzate diverse alternative.

  • Per generare gli impulsi, il chip timer 555 è una buona scelta, ma esistono diverse alternative, ad esempio quella descritta in questo Instructable.
  • Per il controllo della velocità può essere utilizzato qualsiasi potenziometro, non solo digitale. Se si dispone di un potenziometro da 10 kΩ, anziché da 100 k, i resistori da 10 k potrebbero essere sostituiti da 1 k e il condensatore da 0,1 µF con un condensatore da 1 µF (dividere tutti i resistori e moltiplicare il condensatore con lo stesso numero per mantenere i tempi).
  • Utilizzando un registro a scorrimento bidirezionale, ad es. il 74HC194 renderebbe più facile il controllo della direzione.
  • Per il controllo dei pulsanti, il 74HC393 potrebbe essere sostituito da un flip-flop, ad es. 74HC73. Il 555 può anche essere cablato per fungere da interruttore.

Consigliato: