Sommario:
- Forniture
- Passaggio 1: Passaggio 1: Configurazione
- Passaggio 2: Passaggio 2: Spiegazione del codice
- Fase 3: FINITO
Video: Controllo della posizione angolare del motore passo-passo 28BYJ-48 con Arduino e joystick analogico: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo è uno schema di controllo per il motore passo-passo 28BYJ-48 che ho sviluppato per essere utilizzato come parte del mio progetto di tesi dell'ultimo anno. Non l'avevo mai visto prima, quindi ho pensato di caricare ciò che ho scoperto. Speriamo che questo aiuti qualcun altro là fuori!
Il codice permette sostanzialmente ad un motore passo-passo di "copiare" la posizione angolare di un joystick analogico, cioè se si spinge il joystick in avanti, il motore punta verso "nord". spingere il joystick verso ovest, il motore ruota per puntare nella stessa direzione.
Per la mia implementazione ho richiesto che se il joystick viene rilasciato, cioè non ha posizione angolare, il motore ritorna nella direzione "home". La direzione home è rivolta a est e anche il motore (o almeno qualsiasi puntatore/dispositivo collegato all'albero di uscita!) deve essere rivolto in questa direzione quando è acceso.
Forniture
Arduino Uno o simili
breadboard e selezione di ponticelli (maschio a maschio, maschio a femmina)
Alimentazione 5V
Modulo joystick analogico (idealmente con una funzione di pulsante momentaneo, questo facilita il riposo della posizione "home"
Motore passo-passo 28BYJ-48 e driver passo-passo ULN2003
Penna, carta e blu-tac (o qualsiasi altro dispositivo puntatore da attaccare al motore!)
Passaggio 1: Passaggio 1: Configurazione
Collegare il motore passo-passo al driver passo-passo e collegare i pin come segue:
IN1 - Arduino pin 8
IN2 - Arduino pin 9
IN3 - Pin Arduino 10
IN4 - Arduino pin 11
Collega il tuo alimentatore 5v ai binari di alimentazione sulla breadboard e collega gli ingressi 5v ULN2003 ai binari di alimentazione. collega il binario di terra a terra sul tuo Arduino.
per il joystick, collegare come segue:
Interruttore pin - Arduino pin 2
Asse X - Arduino A0 (Analogico in 0)
Asse Y - Arduino A1
+5V - Uscita Arduino 5V
GND - Arduino GND
Infine collega la massa della tua breadboard all'altro pin GND di Arduino
Passaggio 2: Passaggio 2: Spiegazione del codice
Ho incluso il codice Arduino completo da scaricare e utilizzare. Ma farò del mio meglio per spiegare qui le parti pertinenti.
La teoria alla base di questo codice è che lo spazio occupato dal joystick è suddiviso in un grafico, con 0, 0 al centro. tuttavia gli ingressi del joystick si trovano a (circa) 512 al centro, quindi per ovviare a questo si utilizzano due funzioni per "azzerare" il valore letto dagli assi X e Y. a seconda dell'alimentatore utilizzato potrebbe essere necessario modificare i valori nelle funzioni ZeroX e ZeroY in modo che il joystick fornisca una lettura affidabile di 0 a riposo.
Quando i valori X, Y vengono letti, vengono prima convertiti in radianti utilizzando la funzione atan2() nella libreria math.h. Spiegare questa funzione è al di fuori dello scopo di questo istruibile, ma per favore vai a cercarlo - è un trucco di geometria piuttosto semplice!
Infine, per semplificare la vita a quelli di noi che erano soliti lavorare in gradi anziché in rad, il valore rad calcolato da atan2() viene convertito in gradi.
Nella parte superiore del ciclo c'è un piccolo frammento di codice che ti consente di fare clic sul pulsante momentaneo sul joystick per spostare la posizione "casa". Questo è stato incredibilmente utile durante il test del codice, ma l'ho lasciato perché posso vedere come potrebbe essere utile in alcuni casi.
Ora sulla maggior parte del codice! iniziamo leggendo le coordinate X, Y del joystick due volte separate da un ritardo di 10 ms e quindi controllando se sono le stesse - ho scoperto che il joystick emetteva occasionalmente letture sporadiche e questo leggero ritardo era sufficiente per fermare il motore in base a queste. È anche un ritardo abbastanza breve da non interferire con gli input intenzionali.
Il resto del codice è piuttosto autoesplicativo e ho fatto del mio meglio per documentarlo; Una serie di istruzioni IF confronta l'angolo corrente del joystick con l'angolo del motore e sposta il motore su quell'angolo. Il 28BYJ-48 ha 5.689 passi per grado, ecco perché moltiplichiamo il movimento richiesto per questo numero apparentemente dispari!
L'unica parte del codice che richiede più spiegazioni è quella che ho soprannominato il "caso avvolgente". Nel caso in cui il joystick e il motore fossero ad es. +175°, e il joystick successivamente si è spostato a -175° (un movimento di soli 10° sul joystick, da appena a nord di ovest a appena a sud di ovest), il motore si sposterebbe NELLA DIREZIONE SBAGLIATA di 350°! per tener conto di ciò è stato scritto il caso speciale.
Il caso avvolgente inizia verificando che motore e joystick abbiano segni opposti, ovvero il motore sia positivo e il joystick negativo, o viceversa. Verifica inoltre che la somma dei valori assoluti (cioè positivi) del joystick e del motore sia superiore a 180°.
Se entrambe queste affermazioni sono vere, la funzione verifica se il motore deve muoversi in senso orario (il valore del motore è negativo) o antiorario (se il valore del motore è positivo).
I valori assoluti dell'angolo del motore e dell'angolo del joystick vengono sommati e sottratti da 360° per determinare la distanza da percorrere. Infine, l'angolo del motore (che ora riflette l'angolo del joystick) viene aggiornato come tale.
Fase 3: FINITO
Quindi, tutto ciò che resta da fare è caricare il codice sul tuo Arduino ed eseguirlo! Guarda il video qui sopra per una buona idea di come funziona il progetto. Questo sarebbe utile per i gimbal della fotocamera, i bracci robotici e molte altre applicazioni!
Se usi il codice, per favore fammelo sapere, e se vedi dove il codice può essere migliorato, mi piacerebbe sentire il tuo feedback.
Consigliato:
Motore CC ed encoder per il controllo di posizione e velocità: 6 passaggi
Motore CC ed encoder per il controllo della posizione e della velocità: IntroduzioneSiamo un gruppo di studenti UQD10801 (Robocon I) dell'Università Tun Hussei Onn Malaysia (UTHM). Abbiamo 9 gruppi in questo corso. Il mio gruppo è il gruppo 2. L'attività del nostro gruppo è DC motore ed encoder per il controllo di posizione e velocità. L'oggetto del nostro gruppo
Controllo della posizione del motore CC: 5 passaggi
Controllo della posizione del motore CC: questa istruzione mostrerà come controllare la posizione del motore tramite la rete web locale. Ora puoi utilizzare lo smartphone o l'iPad connesso alla rete, quindi digitare l'indirizzo del server web locale del motore Da qui, possiamo controllare la posizione del disco del motore ruotando
Controllo della velocità e della luce del motore CC PWM - Dimmer DC: 7 passaggi
Controllo della velocità e della luce del motore CC PWM | DC Dimmer: oggi in questo video ti mostrerò come attenuare le luci, controllare la velocità di un motore in DC o corrente continua, quindi iniziamo
CONTROLLO DELLA DIREZIONE E DELLA VELOCITÀ DEL MOTORE CC CON LABVIEW (PWM) E ARDUINO: 5 passaggi
DIREZIONE E CONTROLLO DELLA VELOCITÀ DEL MOTORE CC UTILIZZANDO LABVIEW (PWM) E ARDUINO: Ciao ragazzi, prima di tutto scusate per il mio inglese divertente. In questo tutorial vi mostrerò come controllare la velocità di un motore CC utilizzando labview Cominciamo
Utilizzo della PSP come joystick del computer e quindi controllo del computer con la PSP: 5 passaggi (con immagini)
Utilizzo della PSP come joystick del computer e quindi controllo del computer con la PSP: puoi fare molte cose interessanti con l'homebrew della PSP, e in questo tutorial ti insegnerò come usare la tua PSP come joystick per giocare, ma c'è anche un programma che ti permette di usare il tuo joystick come mouse. Ecco i mater