Sommario:
- Passaggio 1: libreria StepDriver
- Passaggio 2: variabili globali
- Passaggio 3: funzioni - Impostazione dei pin del driver
- Passaggio 4: Funzioni - Funzioni di base del conducente
- Passaggio 5: Funzioni - Impostazione del passo del motore
- Passaggio 6: Funzioni - Impostazione della modalità passo motore
- Passaggio 7: Funzioni - Impostazione dei finecorsa
- Fase 8: Funzioni - Lettura dei finecorsa
- Passaggio 9: Funzioni - Configurazione movimento
- Passaggio 10: Funzioni - Funzione di movimento
- Passaggio 11: Funzioni - Funzione di movimento - Variabili
- Passaggio 12: Funzioni - Funzione di movimento - Accelerazione
- Passaggio 13: Funzioni - Funzione di movimento - Velocità continua
- Passaggio 14: Funzioni - Funzione di movimento - Decelerazione
- Passaggio 15: Funzioni - Funzione di movimento - Velocità continua
- Passaggio 16: Funzioni - Funzione di spostamento - Sposta turni
- Passaggio 17: Grafico del movimento - Velocità di posizione
- Passaggio 18: grafico del movimento - Posizione vs. Posizione
- Passaggio 19: grafico del movimento - Velocità vs. Momento
Video: Arduino: Lib di precisione per motore passo-passo: 19 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Oggi ti mostrerò una libreria per un driver per motori passo-passo completo con finecorsa e movimento del motore con accelerazione e micro passo. Questa Lib, che funziona sia su Arduino Uno che su Arduino Mega, permette di muovere i motori in base non solo al numero di passi, ma anche ai millimetri. Ed è anche abbastanza preciso.
Una caratteristica importante di questa libreria è che ti permette di costruire la tua macchina CNC, che non è necessariamente solo X, Y, ma anche un cambio di sezione, ad esempio, perché non è un GRBL pronto, ma piuttosto la programmazione che ti permette di realizzare la macchina ideale per te.
Tuttavia, la seguente affermazione è un dettaglio importante! Questo video è solo per chi è già abituato alla programmazione. Se non hai familiarità con la programmazione Arduino, dovresti prima guardare altri video introduttivi sul mio canale. Questo perché sto discutendo un argomento avanzato in questo video specifico e spiegando in modo più dettagliato il Lib utilizzato nel video: Step Motor con accelerazione e fine corsa.
Passaggio 1: libreria StepDriver
Questa libreria copre i tre tipi di driver più comuni sul mercato: A4988, DRV8825 e TB6600. Configura i pin dei driver, consentendo loro di eseguire il reset e il posizionamento in modalità Sleep, nonché di attivare e disattivare le uscite motore agendo sul pin Enable. Imposta anche gli ingressi dei pin micro-step del driver e limita gli interruttori e il loro livello di attivazione (alto o basso). Dispone inoltre di codice movimento motore con accelerazione continua in mm/s², velocità massima in mm/s e velocità minima in mm/s.
Per coloro che hanno visto le parti 1 e 2 del video Step Motor with Acceleration and End of Stroke, scarica questa nuova libreria disponibile oggi, perché ho apportato alcune modifiche a quel primo file per facilitarne l'uso.
Passaggio 2: variabili globali
Mostro esattamente a cosa serve ciascuna delle variabili globali.
Passaggio 3: funzioni - Impostazione dei pin del driver
Qui, descrivo alcuni metodi.
Ho impostato l'impostazione Pinout e i pin Arduino come output.
Passaggio 4: Funzioni - Funzioni di base del conducente
In questa parte, lavoriamo con la configurazione del driver e le sue funzioni di base.
Passaggio 5: Funzioni - Impostazione del passo del motore
In questo passo del codice, configuriamo la quantità di passi per millimetro che il motore deve eseguire.
Passaggio 6: Funzioni - Impostazione della modalità passo motore
Questa tabella mostra le impostazioni per la modalità passo motore. Ecco alcuni esempi.
Passaggio 7: Funzioni - Impostazione dei finecorsa
Qui, devo leggere i valori interi e booleani. E' necessario impostare se la chiave attiva è su o giù, mentre si imposta il limite massimo e minimo di finecorsa.
Fase 8: Funzioni - Lettura dei finecorsa
Questa parte è diversa da quella in Lib che ho reso disponibile la scorsa settimana. Perché l'ho cambiato? Bene, ho creato eRead per sostituirne altri. Qui, l'eRead leggerà il LVL, il digitalRead (pin) e restituirà TRUE. Tutto questo deve essere eseguito in alto. Il successivo lavoro con la chiave attiva sarà al livello basso. Lo userò qui per mostrarti la tabella "Verità".
Nell'immagine del codice, ho inserito un diagramma che aiuterà a capire che, in questa parte del codice sorgente, mi sto muovendo verso l'Ascendente e non ho ancora premuto il tasto di fine corso.
Ora, in questa immagine con il codice del sistema operativo bool DRV8825, mostro il motore ancora in movimento nella direzione della crescita. Tuttavia, si è attivato il finecorsa massimo. Il meccanismo, poi, deve fermare il movimento.
Per ultimo, mostro lo stesso movimento, ma nella direzione opposta.
Qui hai già attivato l'interruttore di fine corso.
Passaggio 9: Funzioni - Configurazione movimento
L'utilità principale del metodo motionConfig è convertire i millimetri al secondo (una misura utilizzata nelle macchine CNC) in passi, per soddisfare il controller di un motore passo-passo. È in questa parte, quindi, che istanziamo le variabili per capire i passi e non i millimetri.
Passaggio 10: Funzioni - Funzione di movimento
In questo passaggio, trattiamo il comando che sposta un passo nella direzione desiderata in un periodo in microsecondi. Impostiamo anche il pin di direzione del driver, il tempo di ritardo e la direzione dei finecorsa.
Passaggio 11: Funzioni - Funzione di movimento - Variabili
In questa parte, configuriamo tutte le variabili che coinvolgono periodi di velocità massima e minima, distanza di traiettoria e passaggi necessari per interrompere la traiettoria, tra gli altri.
Passaggio 12: Funzioni - Funzione di movimento - Accelerazione
Qui, presento alcuni dettagli su come siamo arrivati ai dati di accelerazione, che sono stati calcolati tramite l'equazione di Torricelli, poiché questa tiene conto degli spazi per lavorare l'accelerazione e non del tempo. Ma qui è importante capire che l'intera equazione riguarda solo una riga di codice.
Abbiamo identificato un trapezio nell'immagine sopra, perché gli RPM iniziali sono dannosi per la maggior parte dei motori passo-passo. La stessa cosa accade con la decelerazione. Per questo motivo, visualizziamo un trapezio nel periodo tra l'accelerazione e la decelerazione.
Passaggio 13: Funzioni - Funzione di movimento - Velocità continua
Qui manteniamo il numero di passaggi utilizzati nell'accelerazione, continuiamo a velocità continua e manteniamo con la velocità massima, che può essere vista nell'immagine qui sotto.
Passaggio 14: Funzioni - Funzione di movimento - Decelerazione
Qui abbiamo un'altra equazione, questa volta con un valore di accelerazione negativo. Viene anche visualizzato in una riga di codice, che rappresenta, nell'immagine sottostante, il rettangolo etichettato Decelerazione.
Passaggio 15: Funzioni - Funzione di movimento - Velocità continua
Torniamo a velocità continua per lavorare la seconda metà della traiettoria, come visto sotto.
Passaggio 16: Funzioni - Funzione di spostamento - Sposta turni
In questa parte spostiamo il motore di un certo numero di giri nella direzione desiderata, convertendo il numero di giri in millimetri. Infine, spostiamo il motore nella direzione richiesta.
Passaggio 17: Grafico del movimento - Velocità di posizione
In questo grafico, ho i dati estratti dall'equazione che abbiamo usato nella parte di Accelerazione. Ho preso i valori e ho giocato sul seriale Arduino, e sono passato da questo a Excel, che ha portato a questa tabella. Questa tabella mostra lo stato di avanzamento della fase.
Passaggio 18: grafico del movimento - Posizione vs. Posizione
Qui prendiamo la posizione, in passi, e la velocità e la convertiamo in periodo, in microsecondi. Notiamo in questo passaggio che il periodo è inversamente proporzionale alla velocità.
Passaggio 19: grafico del movimento - Velocità vs. Momento
Infine, abbiamo la velocità in funzione dell'istante, e per questo abbiamo una retta, poiché è la velocità in funzione del tempo.
Consigliato:
Raspberry Pi - Tutorial Python per sensore altimetro di precisione MPL3115A2: 4 passaggi
Raspberry Pi - Tutorial Python per sensore altimetro di precisione MPL3115A2: MPL3115A2 utilizza un sensore di pressione MEMS con un'interfaccia I2C per fornire dati accurati di pressione/altitudine e temperatura. Le uscite del sensore sono digitalizzate da un ADC a 24 bit ad alta risoluzione. L'elaborazione interna rimuove le attività di compensazione dal
Motore da 24 V CC a motore universale ad alta velocità (30 Volt): 3 passaggi
Motore da 24 V CC a motore universale ad alta velocità (30 Volt): Ciao! In questo progetto ti insegnerò come convertire un normale motore da 24 V CC in un motore universale da 30 V. Personalmente credo che una dimostrazione video descriva al meglio un progetto . Quindi ragazzi vi consiglierei di guardare prima il video. Progetto V
Raspberry Pi - Tutorial Java per sensore altimetro di precisione MPL3115A2: 4 passaggi
Raspberry Pi - Tutorial Java del sensore altimetro di precisione MPL3115A2: MPL3115A2 utilizza un sensore di pressione MEMS con un'interfaccia I2C per fornire dati accurati di pressione/altitudine e temperatura. Le uscite del sensore sono digitalizzate da un ADC a 24 bit ad alta risoluzione. L'elaborazione interna rimuove le attività di compensazione dal
Motore elettrico + motore Fidget: 12 passaggi
Motore elettrico + motore Fidget: in questo modo istruibile wordt uitgelegd hoe je 2 verschillende elektromotoren kan maken. De eerste is een kleine elektromotor waarbij de spoel draait en de magneet vast zit. De tweede is fidget motor waarbij de spoel vast zit en de magneten op een fidg
Come controllare il motore DC brushless Drone Quadcopter (tipo 3 fili) utilizzando il controller di velocità del motore HW30A e Arduino UNO: 5 passaggi
Come controllare il motore DC brushless Drone Quadcopter (tipo 3 fili) utilizzando il controller di velocità del motore HW30A e Arduino UNO: Descrizione: Il controller di velocità del motore HW30A può essere utilizzato con batterie LiPo da 4-10 NiMH/NiCd o 2-3 celle. Il BEC è funzionale con un massimo di 3 celle LiPo. Può essere utilizzato per controllare la velocità del motore Brushless DC (3 fili) con un massimo fino a 12Vdc.Specific