LinuxCNC + Breakout Board + Arduino

Sezione dedicata a Linuxcnc
Rispondi
Avatar utente
hellfire39
God
God
Messaggi: 3402
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da hellfire39 » lunedì 6 luglio 2020, 9:01

erto... i TB6600 sono immondizia rispetto agli MA860H... è vero e quasi certamente la colpa è la loro.
L'oscilloscopio dovrebbe togliere i dubbi.

Penso che tu non abbia ricevuto risposta perché si tratta di una configurazioni insolita.
Ad esempio: che significa che vuoi gestire gli estrusori con Arduino. Intendi solo il controllo di temperatura o anche lo stepper?

Io ho una 3drag la cui elettronica è basata sulla RAMPS. E non da nessun problema. Ripeto: molto probabilmente il problema non sta in Arduino, ma da qualche altra parte. Se usi driver con tensione e corrente minori, dovrai necessariamente adattare le velocità e le accelerazioni.
Non potresti utillizzare comunque i driver più grandi?

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » lunedì 6 luglio 2020, 9:45

Per usare gli MA860H dovrei smontare l'elettronica e rimontarla con altra configurazione. E preferirei non farlo, visto che uso anche la CNC.
Per dire... ho i camblaggi della CNC unici. Poi a seconda dell'elettronica, ci collego il cavo dell'elettronica grossa o quello dell'elettronica piccola.

So bene che devo abbassare i valori, ma dai 75mm/sec con accelerazione di 350 mm/sec2 dell'elelttronica grossa, sono sceso a meno di 10 mm/sec con l'elettronica piccola, accelerazioni lumacose, e nonostante questo, ogni tanto mi perde dei passi. Secondo me i TB6600 non sono adatti a muovere i Nema23. Anche perché gli stessi driver, con i Nema17, non sembrano dare questi problemi!

Arduino+Ramps con DRV8825 e Nema17, non mi hanno mai dato problemi di perdita di passi, anche spingendo al massimo la meccanica della vecchia stampante (una prusa i3 ricostruita con struttura in alluminio).


Quello che vorrei fare è leggere un cavolo di valore da Arduino tramite linuxCNC. Nient'altro.

Riesco a leggerlo da python in tempo reale, ma non riesco a collegarlo in LinuxCNC tramite il file .hal!
La mia piccolina....

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da ross » lunedì 6 luglio 2020, 13:31

Con la usb del pc e Arduino in Linuxcnc non ti so dire però per leggere un segnale analogico tramite Linuxcnc ti potrebbe essere utile il componente che ho fatto anni fa usando la SPI, utilizzando 2 pin d'ingresso e 1 di uscita. Ricompilando il componente per la lunghezza del treno di byte puoi leggere tutto ciò che vuoi e in realtime, togliendo di mezzo la usb però senza un oscilloscopio per il collaudo la vedo dura.

Il TB6600 è un buon driver, c'è da vedere se gli arrivano i giusti segnali, se la taratura della Iref è corretta e se l'alimentatore regge agli assorbimenti improvvisi.
Ricordo che un azionamento con un TBxxxx aveva una resistenza di valore errato nella sezione del clock interno e dava problemi simili (se non erro), forse quello che hai potrebbe avere una cosa simile.
Do per scontato che il cablaggio deve essere in ottime condizioni.

Ross

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » lunedì 6 luglio 2020, 16:15

Il cablaggio non ha problemi. Cioè... li sto risolvendo man mano. Ho smontato il 5° MA860H e l'ho sostuito ad uno dei TB6600 e non ha problemi.

Per togliermi un dubbio mi toccherà smontare il tb6600 per accertarmi che sia realmente questo.
So che ne sono stati venduti tanti che non erano 6600 ma inferiori, fatti lavorare al limite (se non qualcosa in più).

Comunque, ora in qualche modo faccio...

mi rompe perché leggo la temperatura del termistore da python tramite seriale...
ma quando vado a fare il passo successivo, ovvero la configurazione del custom_postgui.hal, qualcosa non va.
Ho seguito vari esempi e non sempre mi funzionano. Eppure la configurazione di LinuxCNC è corretta :(

vabbè. Ora devo fresare!
Proverò un altro giorno!
La mia piccolina....

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da ross » lunedì 6 luglio 2020, 19:37

Probabilmente il programma che hai fatto in python non si aggancia a Linuxcnc, dovresti scrivere un componente hal (tipo quello che ho fatto io) e aggiungerlo al servothread, solo così il kernel interroga il componente ed esegue l'acquisizione per l'elaborazione.

Puoi disegnare lo schema elettrico delle sezioni step e dir dell'azionamento TB6600 e l'uscita che lo pilota?

Ross

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » lunedì 6 luglio 2020, 21:36

I TB6600 vengono gestiti da Arduino + Ramps collegati a quest'ultima con cavetti lunghi 20 cm schermati.
Dai TB6600 parte un cavo schermato che si aggancia al connettore della CNC. Un secondo cavo collega un secondo connettore (DB37) per i segnali dei sensori fino alla RAMPS.

Domani smonto tutto e sostituisco temporaneamente i TB6600 con gli MA860H per vedere se, gestendo i Nema23 con quest'ultimi alimentati a 48 volt, le cose migliorano. Se ancora non funziona, allora butto anche l'arduino e la Ramps (che sono entrambi nuovissimi) e valuto alternative per la gestione della stampante 3D in fase di assemblaggio. Ma resta il fatto che devo stampare 4 pezzi che su una normale 20x20 non mi ci entrano. E sulle altre comunque richiedono decine di ore di lavoro :(
La mia piccolina....

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » giovedì 9 luglio 2020, 14:58

Giusto per....

ho rifatto nuovamente i cavi, controllando che le schermature scaricassero a massa, sia per i motori XYZ, sia per l'Estrusore, che cammina da solo.
Ho schermato anche i cavi dei sensori... giusto per....

Ho rifatto il firmware di arduino, ricontrollando ogni passaggio.

Poi ho smontato un driver... e ho constatato che non un TB6600, ma un TB67S109AFTG.

Ad ogni modo, i test effettuati fino ad ora, con diverse velocità e accelerazioni, hanno sempre fallito per layer-shift in direzione e posizione Z differenti.

Continuo a non capire quale sia il problema.

Volevo fare delle prove di stampa tramite LinuxCNC e l'elettronica "grande", ovvero con driver MA860H, ma non riuscendo a leggere la temperatura dalla seriale in AXIS, non posso fare nulla.

Pazienza! :(

Ormai è andata così. 6 mesi persi, ne perderò altri 2. A settembre prendo una stampante con piano di stampa sufficientemente grande, giusto per stampare i pezzi che mi servono per assemblare la mia...

Grazie a tutti per l'aiuto (non ricevuto)
La mia piccolina....

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da ross » giovedì 9 luglio 2020, 22:01

Dal datasheet del driver TB67S109AFTG leggo che è un driver da 47V 3A ed ha una risoluzione massima in microstep di 1/32 e mi vengono in mente alcune domande:
1)Che durata hanno gli impulsi di abilitazione, step e dir? Che settaggi hai inserito? Per gli step non deve essere inferiore a 300ns
2)Gli impulsi step lavorano con il fronte di salita del segnale, ad ogni passaggio da 0 a 1 si incrementa il passo/micropasso. Che tipo di segnale gli arriva all'azionamento?
3)Il driver TB67S109 è equipaggiato con un'uscita "Error detector" con una resistenza di pull-up, quando questo pin viene cortocircuitato a massa segnala un errore dovuto al surriscaldamento del chip o dovuto al sovraccarico dello stadio d'uscita, hai un led che lo segnala? Si accende a volte?
4)A pagina 22 del datasheet viene indicato come si calcola la resistenza di shunt e come settare la Vref, che settaggio hai eseguito? E' possibile che la corrente non è settata per il regolare funzionamento?
5)Qual'è la massima frequenza del segnale step che arriva al driver? Nel datasheet c'è scritto che il valore massimo è 100kHz.

Prova ad utilizzare un cavo twistato per step e per dir invece di un cavo schermato, non sempre con uno schermato si riesce a salire in frequenza a causa della capacità parassita dovuta alla schermatura.
Hai qualche loop di massa?

Un modo per verificare la perdita di passi consiste nell'eseguire un programma che muove svariate volte un solo asse alla volta alla massima velocità per una lunghezza definita (per esempio 100mm), con un tassello di legno leggero posizionato come riscontro dovresti riuscire a vedere se durante il movimento la testa va a urtare il tassello, spostandolo da dove l'hai messo, o si allontana.

Ross

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » venerdì 10 luglio 2020, 19:13

Oggi ho fatto una serie di prove e penso di aver capito qual'è il problema. E non è un problema meccanico o di impostazioni, ma di logica.

Mettiamo che con il primo comando Arduino ordina al driver dell'asse X di far spostare la testa dalla posizione Zero alla posizione 200.
E mettiamo il caso che con il secondo comando, Arduino ordina al driver dello stesso asse di far spostare la testa dalla posizione 200 alla posizione 100.

Per entrambi i movimenti serve un tempo ben preciso... calcolabile in base alla velocità iniziale, alla velocità finale, alla distanza da percorrere, all'accelerazione e nel caso delle stampanti 3D, al Jerk.

Ho l'impressione che questo tempo non venga atteso o venga calcolato male.

Questo significa che se l'accelerazione è sufficientemente alta per far compiere il percorso completo, allora il movimento viene effettuato correttamente. Se invece è bassa, allora si ha un layer shift... ovvero si passa al movimento successivo senza aver completato quello in corso.

Domani verifico meglio.


Al momento non so dare risposta alle tue domande Ross.
Perché la gestione dei driver e le impostazioni sono differenti da CNC a Stampante 3D.
In LinuxCNC il Jerk non c'è come impostazione. Nella stampante 3D c'è. Ma soprattutto... devo fare qualche prova con i driver TB6600 o quel che sono comandati da LinuxCNC tramite una Breakout Board. Altrimenti non riesco a capire se funzionano bene o male.
La mia piccolina....

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

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da hellfire39 » venerdì 10 luglio 2020, 21:08

Mi sembra una ipotesi improbabile.
Ad onor del vero non sono entrato in profondità nel codice di grbl, ma penso che si comporti esattamente come la libreria AccelStepper, in cui Arduino conta gli impulsi che deve inviare. Non è che attiva un'onda quadra a tempo!

ross
Member
Member
Messaggi: 351
Iscritto il: mercoledì 3 agosto 2011, 23:16
Località: Macerata (MC)

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da ross » venerdì 10 luglio 2020, 21:17

È importante rispettare la temporizzazione dei segnali dir e step, ad ogni cambio di direzione devi attendere il giusto tempo e poi partire con la giusta accelerazione, nel datasheet sono riportati.
Con Linuxcnc puoi fare tutto se hai disponibile un pc con un ridotto tempo di latenza, fai il test più volte e per lungo tempo, se è buono con la parallela piloti gli azionamenti.

Ross

kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » sabato 11 luglio 2020, 16:46

Sto effettuando delle prove con una breakout board st-v2 e con i 3 driver TB67S109AFTG alimentati a 24 volts.

Attualmente i valori di velocità e accelerazione con LinuxCNC sono:

Asse X
Velocità = 40 mm/sec
Accelerazione 375 mm/sec2

Asse y
Velocità = 60 mm/sec
Accelerazione 375 mm/sec2

Asse Z
Velocità = 30 mm/sec
Accelerazione 300 mm/sec2


Con gli MA860H la velocità è quasi doppia, ma sono driver alimentati a 48 volt ed è un po tutto diverso.

Nello stepconf c'è la modalità test che permette di far muovere un asse per volta avanti e indietro, con i valori specificati di velocità e accelerazione, e con un dato spostamento in mm. Ho fatto varie prove, anche su distanza di 1 mm (0->1->0->-1->0) e non sembrano dare alcun problema.

Con Arduino queste prestazioni sono da sogno. Quindi il limite è Arduino.... non so se a livello di Hardware o di Firmware!

Quindi si torna al discorso di partenza....

Qualcosa è stato fatto: https://reprap.org/forum/read.php?155,12143,page=2

Ora vedo se riesco a farlo funzionare.
La mia piccolina....

Rispondi

Torna a “Linuxcnc”