ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Sezione dedicata all'elettronica in generale.
Rispondi
Avatar utente
tomas
Member
Member
Messaggi: 326
Iscritto il: giovedì 6 dicembre 2007, 22:16
Località: Imola
Contatta:

ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da tomas » martedì 8 marzo 2022, 11:38

Ciao a tutti,
sono qui a chiedere un aiuto a qualche volenteroso esperto di programmazione Arduino perchè ho provato da solo ma ho troppa confusione ,si trova troppa roba tutta simile ma diversa e cosi faccio solo casini.... (ho bruciato anche un Arduino #-o )
Vorrei invece piano piano padroneggiare un po il mezzo e con l'aiuto di qualcuno che mi spieghi in Italiano (e non solo dei video in Inglese....)

Comunque sia ho un punto di partenza, sono riuscito a replicare questo con successo:

https://www.brainy-bits.com/post/nema-s ... ry-encoder


unica differenza che il mio driver è un A4988, ma tutto funziona.
In pratica questo circuito cosa fà:
Ruoto l'encoder e lo stepper si muove di conseguenza(instantaneamente) e quando premo il pulsante dell'encoder lo stepper si azzera

Ora quello che vorrei fare è implementare il programma che mi permetta di memorizzare più posizioni e poi di fare ripetere il ciclo.

Provo a spiegarmi meglio:
1# giro encoder (e quindi anche lo stepper si muove) premo il pulsante 1 e memorizzo
2# ripeto più volte il punto 1# e memorizzo tutte le posizioni in sequenza
3# premo il pulsante 2 e le posizioni memorizzate vengono ripetute in sequenza all'infinito...

Tutto questo dovrebbe essere possibile farlo, ma io non sono in grado da solo sia nello scketch che nei cablaggi,
quindi sono a chiedervi un aiuto a chi è più esperto.

ho visto farlo con potenziometri e servo ma a me serve farlo con stepper nema 17 , driver a4988 ed encoder rotativo ky-040.
(per ora un motore solo e se funziona si aggiungono motori)


Grazie in anticipo mi aiuterà.
La meccanica non è la moglie del meccanico !!!!
http://www.querciatomas.altervista.org/

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » martedì 8 marzo 2022, 14:09

Partendo dall'inizio: se puoi, non scrivere tutto in maiuscolo, nenache il titolo del thread.
Scrivere in maiuscolo equivale ad URLARE. Non è carino.

Quello che vuoi fare è abbastanza semplice, se, quando premi il tasto 2, la sequenza viene riprodotta con velocità e accelerazione fisse.
(nel senso che memorizzi solamente le posizioni di arrivo, ma nessu'altra informazione relativa alla velocità con cui hai mosso il driver).

Ti conviene partire utilizzando le librerie "encoder" e "accelstepper" che ti consentono di gestire encoder e stepper senza fatica e senza dover copiare codice di dubbia qualità.
Scaricati le librerie e studiati come funzionano.

Ti serve solamente un array di long nel qual memorizzare le posizioni attuali ogni volta che premi il tasto 1 (e attenzione ai rimbalzi del pulsante!) ed un contatore per la posizione corrente.

Avatar utente
tomas
Member
Member
Messaggi: 326
Iscritto il: giovedì 6 dicembre 2007, 22:16
Località: Imola
Contatta:

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da tomas » martedì 8 marzo 2022, 15:24

Ciao Hellfire,
scusa per il carattere in maiuscolo, non pensavo non andasse bene nel titolo.

Per iniziare andrebbero benissimo velocità e accelerazioni fisse.
Per scaricare e studiare le librerie è li il problema, ci ho provato ma non ho concluso nulla, per questo ho chiesto aiuto sul forum, e se necessario pago il disturbo a chi mi può aiutare.

Credimi ho provato in tutti i modi a capirci qualcosa è il risultato è stato un fallimento.... o non compila o si brucia Arduino, insomma niente.
L'unica cosa di buono che sono riuscito a fare è il circuito che ho postato nel link, sono riuscito a sostituire il driver A4988 con quello presente nello schema originale, e tutto funziona, ma non è quello che vorrei fare io....

Quindi, senza impegno, se vuoi/puoi passarmi uno sketch per iniziare da un punto giusto io sono a disposizione.
Con un punto di partenza buono forse (sicuramente con degli altri aiuti) riuscirò ad implementare tutto quello che mi serve,( piu motori ecc.)

Intanto ti ringrazio per l'interesse.
Saluti.
La meccanica non è la moglie del meccanico !!!!
http://www.querciatomas.altervista.org/

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » martedì 8 marzo 2022, 16:28

Per le librerie, gli esempi sono inclusi.
Ogni libreria si porta dietro alcuni esempi che spiegano come utilizzarle.

https://www.pjrc.com/teensy/td_libs_Encoder.html
http://www.airspayce.com/mikem/arduino/AccelStepper/

Per la seconda libreria, puoi guardare l'esempio "bounce" dove mostra come configurare lo stepper e muoverlo in posizione.

Quindi, in fase di salvataggio del percorso si può provare a:
-leggere la posizione dell'encoder
- passarla allo stepper

in fase di esecuzione del programma, si corre l'array e si richiama la stepper.moveTo() aspettando ogni volta che il movimento sia terminato prima di passare al successivo.

Attenzione:
1) quando spegni arduino perdi tutto il programma
2) anche se salvassi da qualche parte il programma, arduino non saprebbe comunque la posizione corretta all'accensione, senza una procedura di homing
3) se vuoi mettere più assi insieme, la cosa si complica assai nel caso volessi che gli assi si muovessero insieme.


Ora, prima che un certo altro utente lo proponga :D :mrgreen: , te lo propongo io: perché non pensi di utilizzare grbl?


P.S. è ben difficile rompere un arduino solamente con il codice...

Avatar utente
tomas
Member
Member
Messaggi: 326
Iscritto il: giovedì 6 dicembre 2007, 22:16
Località: Imola
Contatta:

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da tomas » martedì 8 marzo 2022, 16:43

Ho bruciato Arduino sbagliando avendo collegato Vin e la porta usb del pc in contemporanea su Arduino.
Ora mi cerco cosa è gbrl e poi valuteró.
Il mio intento è quello di creare un braccio per esempio… lo accendo, faccio la prima volta i miei movimenti muovendolo semplicemente ruotando l’encoder e poi lui li ripete.
Questo da al braccio un enorme flessibilità senza dover programmare niente.
Non ha un g-code e cose simili,
percui puoi fargli fare tante cose diverse in maniera molto facile.
Sicuramente nelle implementazioni di cui parlavo prima è indispensabile aggiungere gli homing all’accensione.
Proverò a guardare i link che mi hai fornito
Spero di poterci capire qualcosa.
Grazie
La meccanica non è la moglie del meccanico !!!!
http://www.querciatomas.altervista.org/

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » martedì 8 marzo 2022, 17:50

Mi sembra un po' avanzato, come progetto per un neofita!

Ripeto quanto detto:
1) devi prevedere un homing degli assi, altrimenti Arduino non sa dove si trova.
2) se non c'è una logica che regola le velocità dei singoli assi, il movimento sarà diverso da quello che ti aspetti perché l'asse che fa meno strada completerà il percorso prima dell'asse (o assi) che fanno più strada

torn24
God
God
Messaggi: 5044
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da torn24 » mercoledì 9 marzo 2022, 7:59

Si potrebbe fare, ma dovresti prima diventare più bravo con progetti più semplici, se tu partissi con un motore e riuscissi a farlo, controllarne tre o più non sarebbe problematico.
Il braccio che vorresti comandare sarebbe comunque limitato rispetto a un vero robot antropomorfo perché non potrebbe muovere contemporaneamente gli assi come avviene per un vero robot, ma solo una alla volta in sequenza.

Su un robot giocattolo mi sembra inutile gli encoder, rifletti, muovo il motore di 100 passi, poi leggo gli encoder che mi indicano i passi e li registro, posso fare a meno dell'ecoder, faccio 100 passi e registro senza dovere leggere l'encoder, implementando un contatore che muovendo lo step conti i passi, ad esempio comandato da un joystick per programmando, mentre aziono il motore conto i passi.
Ma anche qui dovresti diventare più bravo.
Parti da un progetto di apprendimento, un solo motore, e cerca di implementare tutto quello che ti ho descritto per la rotazione di un solo motore, se ci riesci, farlo per i motori di un braccio non sarà molto diverso.
CIAO A TUTTI !

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » mercoledì 9 marzo 2022, 8:30

controllarne tre o più non sarebbe problematico
non è vero, se li vuoi controllare in modo coordinato, è più complicato!
perché non potrebbe muovere contemporaneamente gli assi
non è vero: li puoi controllare contemporaneamente. Vedi esempio multistepper. Fattibile, ma, come detto sopra, più complicato se vuoi coordinare i movimenti
Su un robot giocattolo mi sembra inutile gli encoder
Affermazione troppo semplicistica. Va bene non avere gli encoder, ma devi prevedere un meccanismo di homing, se vuoi registrare dei movimenti per farli riprodurre (sempre che sei in grado di salvare i movimenti su scheda SD, per esempio).
Ma se vuoi poterli riprodurre dopo aver sento e riacceso arduino, DEVI poter fare una home.
L'alternativa è quella di utilizzare i servo al posto degli stepper, che hanno un sensore di posizione incorporato.
se ci riesci, farlo per i motori di un braccio non sarà molto diverso.
Vedi sopra: si che è molto diverso!

torn24
God
God
Messaggi: 5044
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da torn24 » mercoledì 9 marzo 2022, 9:23

Si serve un punto zero da cui conteggiare gli spostamenti, ma non ho mai detto che non serve.
Un progetto simile lo avevo pensato anche io, i mie consigli sono riferiti a quello che è semplice o complesso per me, esempio per me sarebbe complesso muovere contemporaneamente più motori, mentre muovere più motori in sequenza non sarebbe molto più complicato che muoverne uno.
Nella mia idea su come immaginavo il mio progetto, essendo un giocattolo, avendo origini per ogni motore, a inizio programmazione si portano i motori tutti in posizione zero, azionato da più joystic, ad ogni movimento, registro i passi, la posizione finale,ma questa verrebbe salvata in RAM, magari in array paralleli ognuno per ogni motore. Forse è meglio salvarla in una memori, forse basterebbe la eeprom, ma il mio era solo per gioco :D
CIAO A TUTTI !

torn24
God
God
Messaggi: 5044
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da torn24 » mercoledì 9 marzo 2022, 9:50

Post cancellato ho ritenuto inutile :lol:
CIAO A TUTTI !

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » mercoledì 9 marzo 2022, 10:16

Il fatto è che bisognerebbe evitare di fare confusione tra ciò che è fattibile e ciò che è difficile per qualcuno.
È bene evidenziare le difficoltà nascoste in un progetto. Spesso e volentieri, i programmatori neofiti (sono stato buono, oggi) tendono a ignorare molti problemi che poi scappano fuori durante la realizzazione del progetto.

Portare a mano i motori in una posizione di "zero" prima di far partire un programma registrato è il modo migliore per andare a sbattere!
Mai fidarsi di qualcosa che deve essere fatto a mano!

Quello che deve emergere da questo thread è che il progetto ipotizzato è un po' troppo ambizioso per un programmatore che non sia in grado neanche di capire il funzionamento di librerie molto semplici.

P.S. Interessante il concetto di array paralleli. Non lo avevo mai sentito... :D

Avatar utente
tomas
Member
Member
Messaggi: 326
Iscritto il: giovedì 6 dicembre 2007, 22:16
Località: Imola
Contatta:

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da tomas » mercoledì 9 marzo 2022, 10:54

In realtà per come ho pensato io il braccio gli homing non servono, ma servono sicuramente gli extracorsa elettrici e meccanici.
Provo a spiegarmi meglio.
Ipotizziamo un braccio con tre motori per semplicità.
Tutto spento:
Per via della gravità, vincendo gli attriti che riesce, in base alla meccanica il braccio si sarà accasciato in una determinata posizione.

Accendo:
Il braccio è lì fermo ma gli encoder mi danno un numero.
Incomincio ruotando gli encoder a muovere il braccio e lo porto nella posizione iniziale che interessa a me.
Da questo punto faccio i miei movimenti e registro, poi quando ho finito la registrazione do lo start.
Pertanto gli homing penso non siano necessari.
Quando accendo il circuito postato nel link il motore sa dove è senza fare homing e ruotando l’encoder lui gira.
Poi se premo il pulsante encoder lui ritorna a “zero” ,che in realtà è la posizione di quando è stato acceso.

Sono d’accordo che il progetto non è da principiante, infatti è per questo che chiedevo aiuto a qualcuno.
La meccanica non è la moglie del meccanico !!!!
http://www.querciatomas.altervista.org/

torn24
God
God
Messaggi: 5044
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da torn24 » mercoledì 9 marzo 2022, 11:44

Basta google per sentirlo
Con array paralleli si intende un gruppo di due o più array dove gli elementi nella stessa posizione costituiscono un insieme di dati correlati.
Non dovrebbe neanche essere un problema portare un asse in posizione zero automaticamente, con una sequenza appropriata, credo posso sbagliarmi, che se si azzera gli assi dal più interno al più esterno non dovrebbe esserci collisioni tra i vari link. Posso sbagliare.

Comunque @ hellfire39 se frequentassi il mondo del modellismo, motori, aeromodelli o altro, ti accorgeresti che questo modo di approcciare ai problemi è molto comune, si inizia con un progetto si incontra un problema inaspettato, si cerca una soluzione a volte errata e si riprova, sembra strano ma normalmente porta al risultato finale :D
CIAO A TUTTI !

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » mercoledì 9 marzo 2022, 11:57

Senza un disegno del braccio, difficile fare ipotesi sensate.
In ogni caso è abbastanza difficile che il braccio ti si metta sempre nella stessa posizione, soprattutto se ha più assi.
Si tratta di una ipotesi molto forte!
Sono d’accordo che il progetto non è da principiante, infatti è per questo che chiedevo aiuto a qualcuno.
Riguardo questa affermazione, a te non serve qualcuno che ti aiuti.
Ti serve qualcuno che ti scriva il programma da zero, che è ben diverso.

Di solito ci si aspetta che chi chiede abbia delle solide conoscenze di base e abbia bisogno di iuti specifici, ad esempio per una libreria che non capisce bene o per qualche funzionamento strano del codice che ha scritto.

In questo caso, la mia personalissima impressione è che tu voglia fare il passo più lungo della gamba. Se vuoi essere parte attiva del progetto e non solo un "cliente" che riceve un prodotto, devi essere in grado almeno di capire il funzionamento delle librerie che utilizzerai e le basi di Arduino.

Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: ARDUINO STEPPER ENCODER ROTATIVO FUNZIONE RECORD AND PLAY

Messaggio da hellfire39 » mercoledì 9 marzo 2022, 12:03

@torn24
ah beh! Se lo dice google, alzo le mani e denuncio la mia ignoranza.

Il modo che descrivi di approcciare i problemi è comune, ma, secondo me, sbagliato. Poi ognuno è libero di fare come gli pare.

Riguardo all'azzeramento degli assi del robot, si, sbagli! La fai un po' troppo facile. Ma, anche per questo aspetto, bisognerebbe partire dal modello che si vuole realizzare, per discutere in modo razionale.

Te lo dice uno che impreca coi robot oni giorno!

Rispondi

Torna a “Elettronica”