ULN2003ドライバーとArduinoを使用した28BYJ-48ステッパーモーター
In questo tutorial, impareremo come controllare un motore passo-passo 28BYJ-48 utilizzando un driver ULN2003 con un Arduino. Questa configurazione consente un controllo preciso della posizione e della velocità del motore. Alla fine di questo progetto, sarai in grado di ruotare il motore in entrambe le direzioni e controllare efficacemente i suoi passi.
Utilizzeremo il motore passo-passo 28BYJ-48, che è una scelta popolare per vari progetti di robotica e automazione grazie al suo basso costo e alla facilità d'uso. La scheda driver ULN2003 interfaccia il motore passo-passo con l'Arduino, permettendoci di inviare segnali di passo che controllano il movimento del motore. Questo tutorial ti guiderà attraverso il cablaggio e il codice necessari per far girare il tuo motore.
Per ulteriori chiarimenti, si prega di fare riferimento al video associato a questo tutorial (nel video a :45).
Hardware Spiegato
I componenti chiave di questo progetto includono il motore passo-passo 28BYJ-48 e la scheda driver ULN2003. Il motore passo-passo è composto da diverse bobine che possono essere alimentate in una sequenza specifica per creare rotazione. Il driver ULN2003 funge da interruttore, consentendo all'Arduino di controllare la potenza fornita a ciascuna bobina.
Il driver ULN2003 utilizza un array di transistor Darlington per gestire la corrente più elevata richiesta dal motore passo-passo. Quando un pin dell'Arduino emette un segnale HIGH, consente alla corrente di fluire verso la bobina corrispondente nel motore, facendolo muovere. Questo consente un controllo preciso sull'angolo di rotazione e sulla velocità del motore.
Dettagli della scheda tecnica
| Produttore | ULN2003 |
|---|---|
| Numero di parte | ULN2003 |
| Tensione di logica/IO | 5 V |
| Tensione di alimentazione | 5-30 V (max) |
| Corrente di uscita (per canale) | 500 mA max |
| Corrente di picco (per canale) | 2 A max |
| Linee guida sulla frequenza PWM | N/A |
| Soglie logiche di ingresso | 0,8 V (basso), 2,4 V (alto) |
| Caduta di tensione / RDS(on)/ saturazione | 1,5 V max |
| Limiti termici | 70 °C max |
| Pacchetto | DIP-16 |
| Note / varianti | Comunemente usato con motori passo-passo da 5V. |
- Assicurati che il driver possa gestire i requisiti attuali del tuo motore.
- Utilizzare dissipatori di calore se necessario per gestire i limiti termici.
- Controlla che tutte le connessioni siano sicure per evitare ingressi flottanti.
- Testa il motore eseguendo semplici sequenze di passi prima di integrarlo in progetti più grandi.
- Assicurati di alimentare il motore con una tensione di alimentazione adeguata.
Istruzioni di cablaggio
Per collegare il motore passo-passo 28BYJ-48 al driver ULN2003 e all'Arduino, segui questi passaggi:
Prima di tutto, collega il motore al driver ULN2003. Il motore ha quattro fili, tipicamente codificati a colori come arancione, giallo, rosa e blu. Collega questi fili ai pin di uscita corrispondenti sul driver ULN2003. Le connessioni sono le seguenti:
Orangecavo aOUT1Yellowcavo aOUT2Pinkcavo aOUT3Bluecavo aOUT4
Successivamente, collega il driver ULN2003 all'Arduino. I pin di ingresso sul driver corrispondono a quattro pin digitali sull'Arduino. Ad esempio:
IN1aPin 10IN2aPin 11IN3aPin 12IN4aPin 13
Infine, collega i pin di alimentazione e di massa del driver ULN2003 all'Arduino. Collega ilVCCcollegare al pin di uscita 5V dell'Arduino e ilGNDcollegare al terreno dell'Arduino. Assicurati che tutte le connessioni siano sicure prima di accendere il sistema.
Esempi di codice e guida passo passo
Nella sezione di configurazione del codice Arduino, definiamo i pin collegati al driver ULN2003:
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
Qui dichiariamo quattro variabili intere:Pin1,Pin2,Pin3, ePin4, che corrispondono ai pin digitali sull'Arduino. Questi pin controlleranno il movimento del motore passo-passo.
Nellasetup()funzione, configuriamo questi pin come uscite:
void setup() {
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
Questa configurazione garantisce che l'Arduino possa inviare segnali al driver ULN2003 per controllare il motore.pinModeLa funzione imposta ogni pin in modalità OUTPUT, consentendo loro di inviare segnali.
Infine, nel ciclo principale, creiamo un'istruzione switch case per controllare i passi del motore in base alla variabile._step:
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
// Additional cases follow
}
In questo estratto, utilizziamodigitalWriteinviare segnali ALTI o BASSI a ciascun pin in base alla corrente_stepQuesto controlla quali bobine sono energizzate, permettendo al motore di ruotare. Il codice completo che integra questi frammenti sarà caricato sotto l'articolo.
Dimostrazione / Cosa Aspettarsi
Una volta che tutto è cablato correttamente e il codice è caricato, il motore passo-passo dovrebbe ruotare in risposta ai segnali dall'Arduino. Puoi testare il motore modificando il ritardo nel ciclo o cambiando i passi per vedere come reagisce. Tieni presente che se il motore non è alimentato correttamente, potrebbe non muoversi o comportarsi in modo erratico.
Capitoli
- Introduzione - 0:00
- Hardware Spiegato - 1:30
- Istruzioni di cablaggio - 3:15
- Esempi di codice e guida - 5:00
- Dimostrazione / Cosa Aspettarsi - 7:45
/*
* Necessita di uno schema di collegamento da questo codice: https://youtu.be/0glBk917HPg
* Acquista il mio corso su Arduino su Udemy.com http://robojax.com/L/?id=62
*
* Ottieni questo codice e altri codici Arduino da RoboJax.com
* Impara Arduino passo dopo passo in un corso strutturato con tutto il materiale, schemi di collegamento e librerie
* tutto in un unico posto. Acquista il mio corso su Udemy.com http://robojax.com/L/?id=62
*
* Se hai trovato utile questo tutorial, ti prego di supportarmi affinché possa continuare a creare
* contenuti come questo.
*
* oppure fai una donazione utilizzando PayPal http://robojax.com/L/?id=64
*
* Questo codice è "COSÌ COM'È" senza garanzia o responsabilità. Libero di essere utilizzato finché mantieni questo avviso intatto.
* Questo codice è stato scaricato da RoboJax.com
* Questo programma è software libero: puoi ridistribuirlo e/o modificarlo
* secondo i termini della GNU General Public License così come pubblicata dalla
* Free Software Foundation, sia nella versione 3 della Licenza, oppure
* (a tua scelta) qualsiasi versione successiva.
*
* Questo programma è distribuito nella speranza che possa essere utile,
* ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di
* COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la
* GNU General Public License per ulteriori dettagli.
*
* Dovresti aver ricevuto una copia della GNU General Public License
* insieme a questo programma. Se non l'hai ricevuta, consulta <https://www.gnu.org/licenses/>.
*/
int Pin1 = 10;
int Pin2 = 11;
int Pin3 = 12;
int Pin4 = 13;
int _step = 0;
boolean dir = true; // falso=orario, vero=antiorario
int count=0;
void setup()
{
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
case 1:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
break;
case 2:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 3:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, LOW);
break;
case 4:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 5:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 6:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
case 7:
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, HIGH);
break;
default:
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delay(1);
}
Cose di cui potresti avere bisogno
-
AliExpressAcquista 5 pezzi di motori passo-passo 28BYJ-48 da AliExpress.s.click.aliexpress.com
-
AliExpress
Risorse e riferimenti
-
EsternoAcquista 5 pezzi di motori passo-passo 28BYJ-48 da AliExpress.s.click.aliexpress.com
-
Esterno
-
Esterno
-
Esterno
-
Esterno
-
Esterno
-
Esterno
-
Esterno
-
Esterno
File📁
Nessun file disponibile.