LinuxCNC + Breakout Board + Arduino

Sezione dedicata a Linuxcnc
Rispondi
kylotron
Senior
Senior
Messaggi: 993
Iscritto il: mercoledì 17 ottobre 2012, 17:06
Località: Sora

LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » giovedì 2 luglio 2020, 19:02

Ciao ragazzi,

devo controllare una stampante 3d tramite LinuxCNC e per farlo ho la necessità di interfacciarmi con Arduino per il controllo e la gestione degli estrusori, dei relativi hot-end, del piano riscaldato e dell'ambiente climatizzato (quest'ultimo verrà dopo... perché non ho soldi per comprare i pannelli di policarbonato).

Qualcuno di voi ha fatto qualcosa con LinuxCNC e Arduino?

Giorni fa avevo trovato un tutorial con un video, nel quale si illustrava il procedimento completo per arrivare a controllare la temperatura dell'hotend tramite LinuxCNC via Arduino. Ma non lo ritrovo (ho azzerato per sbaglio la cronologia proprio ieri :( ).

Qualcuno sa aiutarmi?

In pratica la parte Arduino è fatta.
Devo sistemare il file .HAL per fargli leggere il segnale tramite l'USB.
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ì 2 luglio 2020, 19:28

#-o perché complicarsi la vita con Arduino quando ci sono già le soluzioni collaudate?
Il mio consiglio: prendi una Beaglebone Black e una cape per le stampanti 3D, hai già tutto pronto e funzionante.
Non credo che puoi usare la porta usb con Linuxcnc, a memoria non mi pare si fattibile ma non so se con i continui aggiornamenti si è arrivati anche a questo.
Con la BBB invece hai moltissimi pin disponibili tra cui alcuni analogici, che segnale devi leggere attraverso la usb?

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ì 3 luglio 2020, 16:56

Devo leggere termometri e comandare l'hot-end dell''estrusore (o più di uno) o il piano riscaldato o il "climatizzatore"!


Poi, l'idea di abbandonare la configurazione già in uso per passare a qualcosa con tempi di latenza maggiori e poca possibilità di upgrade (da quello che so), non mi soddisfa molto.

L'accoppiata LinuxCNC+Arduino mi permette di avere un software che funziona a prescindere dal computer usato.

L'uso dell'USB con LinuxCNC è fattibilissimo perché l'USB non è altro che una seriale. E con l'espandibilità di Arduino, ho ampie possibilità di raggiungere il mio scopo senza spendere soldi.

Se devo ricomprare tutto prendo una scheda MESA o equivalente... almeno ho la sicurezza che sia un sistema collaudato!
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 » venerdì 3 luglio 2020, 19:39

Da quanto ho letto ieri sera, l'uso di Arduino comporta problemi con i tempi di latenza, sicuro che è un sistema affidabile? Io non credo sia così perché la usb ha già di suo un tempo di latenza alto.
Ho visto anche un tutorial dove si mostra il tempo di latenza ma è troppo alto per una stampante 3D, se Arduino viene usato solo ed esclusivamente per l'acquisizione dei dati analogici allora la situazione potrebbe cambiare ma a quel punto è inutile far lavorare un sistema così, è come avere un'auto con una ruota sgonfia e non ne vale la pena secondo me.

Quei segnali analogici, il riscaldatore, l'estrusore ... si gestiscono con la BBB (ha ingressi analogici, uscite digitali, uscite pwm...), è una delle schede più complete e usate per le stampanti 3D perché le due PRU ti consentono tempi di latenza molto bassi (lavorano a 200MHz) e hai un sistema molto reattivo, non a caso viene comunemente utilizzata proprio per le stampanti.
Se un domani ti occorre smantellare la stampante 3D e realizzare una fresa 3 assi con feedback con encoder, è sufficiente staccare la cape (se fatta ad hoc per la stampante ma ce ne sono diverse polifunzionali) e metterne un'altra, avviare la configurazione macchina ed è fatta. Se invece ti occorre una fresa 5 assi, è sufficiente staccare la cape ...ecc. La BBB è estremamente versatile, hai a disposizione tantissimi pin I/O.
Nella rete c'è un'azienda che usa una BBB per una fresa 5 assi, si chiama pocketcnc, è fantastica!

Con le schede Mesa hai un sistema ancora più performante ma spenderesti molto, e come sempre il tutto va messo sulla bilancia della convenienza.

Ross

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ì 3 luglio 2020, 21:23

Qui c'è un video della PockeNC in azione.

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 4 luglio 2020, 14:19

c'è qualcosa che non mi convince nella Beaglebone Black.
Perché dovrei usare una scheda del genere con un processore ARM con 512 Mbyte di RAM quando ho a disposizione PC con I3 o I5 con almeno 4 Gbyte di ram?

Per gli ingressi?

Non lo so....

Poi... perché affermi che Arduino è lento quando la stragrande maggioranza delle stampanti in circolazione lo usa?
Forse è la comunicazione seriale con un PC che lo rallenterebbe... ma a quel punto potrei sempre usare l'Arduino solo per la gestione dei termistori...

boh! :(
La mia piccolina....

mimoletti
Senior
Senior
Messaggi: 1098
Iscritto il: giovedì 4 dicembre 2008, 17:56
Località: Torre del Greco (NA)

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da mimoletti » sabato 4 luglio 2020, 15:21

Le stampanti 3D basate su Arduino e non funzionano in stand alone. Che motivo hai di lasciare la stampante collegata al computer durante tutto il tempo di stampa?
Tornio Wabeco D6000; Fresa Wabeco F1210; Segatrice Nebes TM125 Inverter; Tavola a dividere Vertex HV-6,Morsa meccnica Allen MAP/78-N

https://www.youtube.com/watch?v=cobEZI8KvOk

73 IU8NNS.

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

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da ross » sabato 4 luglio 2020, 16:25

Ho usato la BBB per una macchina 4 assi indipendenti, con le uscite digitali delle due PRU ho generato i segnali step/dir per gli azionamenti e un pwm per il controllo della temperatura, senza contare gli ingressi. È vero che ha 512Mb di ram ma quando la macchina sta lì a lavorare non devo vedere un film o navigare in internet, non è fatta per quello anche se lo può fare. Puoi considerare la BBB come una macchina industriale collegata in rete con la sua porta lan, la puoi configurare per tutti gli usi che ne vuoi fare proprio come si fa con Linuxcnc.
Ha tanti vantaggi che Arduino non ha e il più importante a mio avviso è quello di non usare la usb per il trasporto dati tra cpu e le periferiche oltre ai tempi di latenza nettamente migliori.
C'è molta documentazione nella rete.
Cos'è che non ti convince?
Arduino non è altro che un microcontrollore atmel che va programmato, io uso i pic e dspic ma riguardo a questo uso specifico ho preso la BBB e la variante di Linuxcnc che si chiama machinekit proprio perché è tutto già ampiamente collaudato.
Ognuno è libero di perseguire la strada che preferisce ma informati bene altrimenti rischi di realizzare una macchina che ti da noie invece di soddisfazioni.

Ross

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

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da hellfire39 » sabato 4 luglio 2020, 17:02

Per quanto non sia un amante di grbl non riesco a seguire il tuo discorso fino in fondo.
Neanche a me piace molto utilizzare la usb in ambiente industriale (ma non ho nessun problema nell'usare la usb con la stampande 3d sul tavolo di casa (con arduino a bordo).

Non capisco bene il discorso sulla latenza. Latenza di cosa, nello specifico?

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

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » sabato 4 luglio 2020, 20:40

Secondo me alla base del discorso di ross c'è una non corretta comprensione di cos'è arduino, di cos'è LinuxCNC e di cos'è la BBB.
Che Arduino non sia una BBB o un PC normale lo so benissimo... (non sono un novellino). Ma affermare che la BBB va sicuramente meglio di LinuxCNC + Arduino non lo so. Temo sia falso.

Motivo?

Semplicemente perché LinuxCNC è un software che gira su un PC. Che sia un PC industriale con processore ARM, RISC, intel o altro, non ha alcuna importanza. Linux gira su un sistema operativo installato sulla macchina. E se i componenti del sistema Hardware e Sowftware sono correttamente scelti e settati, i tempi di latenza possono essere notevolmente abbattuti.

Perché, quindi, scegliere una BBB con machinekit se posso continuare ad usare il PC che ho assemblato con 4 Gbyte di RAM con LinuxCNC?

Arduino... è un coso che deve fare solo delle semplici e banalissime operazioni. Niente di complicato. E la velocità dell'USB penso sia più che sufficiente per fare il lavoro per il quale intendo programmarlo.


Il motivo dell'uso di LinuxCNC, ovvero della stampante collegata al PC è semplicemente che, al momento, non riesco a far funzionare la meccanica che ho con l'elettronica tradizionale della stampante 3D. Motivo? Semplice... è una stampante extra-large con motori Nema23 che, se alimentati a 48 volts con l'elettronica di LinuxCNC fanno muovere il tutto come fosse un fruscello, arrivando a compiere movimenti che simulano la stampa fino a 4 metri al minuto. Se li controllo con Arduino+Ramps, oppure Raspberry o altrre elettroniche tipiche per le stampnati, la velocità scende del 95% e ho continue perdite di passi.

Sono 10 mesi che progetto questa stampante... che al momento ha un piano di stampa utile di soli 600x600x600 mm, ma ho già in mente di farne una ancora più grande.

L'unico problema è che non ho più soldi e non posso permettermi, al momento, elettroniche professionali basate, magari su MESA o quant'altro.

Quindi pensavo di far gestire gli estrusori e i sensori di temperatura ad arduino. E tutto il resto gestirlo tramite l'elettronica a 48Volts (Breakoutboard + driver MA860H + Alimentatore 48volt).


Tutto qua!

Ma vabbè... troverò il modo per far funzionare il tutto!
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 » domenica 5 luglio 2020, 15:39

Kylotron, conosco bene Linuxcnc e diversi anni fa ho scritto un componente per l'acquisizione di dati a 16 bit da un pic16f676 (2 canali ADC) con la SPI via parallela per conoscere il livello dei liquidi in una macchina che ho costruito per il deposito del poliuretano. Conosco bene la BBB perché l'ho usata in un'altra macchina e conosco bene la usb e i problemi che ha perché ho sviluppato e realizzato una macchina per la fotoincisione laser dei circuiti stampati. Tutta la mia esperienza è fatta negli anni sul campo, progetto sviluppo realizzo e collaudo con la dovuta strumentazione, ho lavorato nel settore dell'elettronica per tanti anni e so bene di cosa si parla.

Linuxcnc è un ottimo software per cn che deve lavorare in un sistema operativo realtime, un pc potente o con tanta ram o con una scheda video tosta non è detto che sia idoneo per il sistema operativo in realtime, si fanno i test di latenza perché le operazioni elaborate dalla cpu e i segnali in uscita devono avere una cadenza temporale regolare/costante. La BBB scavalca questo problema in quanto usa le due PRU.
Normalmente tutti i pc lavorano per Interrupt, quando un evento si verifica si procede alla sua elaborazione e qui nasce la cadenza temporale irregolare.
I tempi di latenza dipendono dalla scheda madre e dalle priorità degli interrupt, spesso cambiando la scheda video o facendo lavorare un solo core della cpu i tempi migliorano rendendo il pc idoneo fino ad un certo limite, dal test di latenza si calcola la massima velocità del generatore di step/dir per gli azionamenti.
Se vai nel sito di Linuxcnc tutto questo è spiegato bene.

Muovere una grande macchina o piccola che sia non ha importanza la potenza di calcolo ma il modo in cui esegue il calcolo. Se programmi Arduino o un microcontrollore qualsiasi per generare una serie di impulsi a frequenza costante non hai problemi e lavora meglio del pc 8 core da 32Gb di ram, è programmato per fare quello e non deve verificare tutti gli altri eventi di tutte le periferiche che il pc ha a bordo.

Se con Arduino gestisci una stampante 3D senza l'ausilio del pc (ovvero gli dai in pasto il file g-code e da sola fa tutto) il sistema funzionerà molto meglio dell'abbinamento pc+Arduino. Se hai perdite di passi potrebbe esser dipeso non da Arduino ma da un settaggio non corretto, occorre analizzare con la strumentazione i segnali.

Se usi la BBB hai già tutto e non ti occorre altro, è un pc con a bordo la ram, la scheda video hdmi, due porte usb, una porta ethernet (che puoi usare come master o slave in un sistema ethercat) e diversi pin di I/O configurabili (Pwm, SPI, I2C, 3 ingressi per encoder in quadratura, ingressi analogici...) ed è un sistema già collaudato che va nettamente meglio del pc o pc+Arduino.
Nel web ci sono tante informazioni al riguardo, sia per le stampanti 3D che per le frese e torni.

Il raspberry purtroppo non ha nessuna PRU, per generare i segnali di step/dir deve farlo tramite software, proprio come in un normale pc con tutti i relativi problemi di latenza.

Ross

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

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da hellfire39 » domenica 5 luglio 2020, 16:10

Gli ultimi due post mi hanno confuso ancora di più #-o
Ha tanti vantaggi che Arduino non ha e il più importante a mio avviso è quello di non usare la usb per il trasporto dati tra cpu e le periferiche oltre ai tempi di latenza nettamente migliori.
Non ho capito che c'entra Arduino coi tempi di latenza. Come hai detto tu, Arduino fa solo una cosa: riceve percorsi, li elabora e genera impulsi.
Per quanto limitato nella potenza di calcolo, e pur con qualche limite, riesce a stare dietro bene alla maggior parte delle esigenze cnc/3dprint.

Tra l'altro, oggi, con l comparsa di sempre più processori a 32 bit e con clock veloci, la potenza di calcolo sta aumentando molto.

Per esperienza personale, mi viene da pensare che la perdita di passi con arduino possa essere imputata solamente al volerlo spingere oltre i limiti "naturali" (o a problemi hardware, ma tralasciamo l'incompetenza di chi fa le cose a pene di segugio).
Se metti un micropasso spinto e poi vuoi andare pure veloce, è ovvio che si arrivi ad un limite per il quale Arduino non riesce a fare contemporanemente calcoli e generazione dei passi. Ma ciò non avviene in condizioni hobbistiche.

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

Re: LinuxCNC + Breakout Board + Arduino

Messaggio da kylotron » domenica 5 luglio 2020, 21:21

la perdita dei passi è dovuta ai driver che sto provando ad usare, per ora in test ma non mi piacciono affatto. E' un'elettronica economica che sono riuscito a trovare alla spicciolata anche a causa del COVID19 che mi ha tenuto fermo per 4 mesi. Ho abbassato il microstep e ridotto sia le accelerazioni che le velocità. Non c'è verso. Nonostante tutti gli sforzi, gli assi X e Y perdono passi e lo fanno dopo un certo numero di layer che non è mai costante.
Simulando la stampa tramite LinuxCNC, con l'elettronica "grossa", invece, posso più che raddoppiare i microstep e portare al massimo sia la velocità che l'accelerazione, che non perdo nessun passo.

Ora quello che vorrei fare è solo riuscire a far leggere un sensore di temperatura da LinuxCNC tramite Arduino. In questo modo potrò far funzionare il tutto per stampare gli ultimi 4 pezzi che mi servono per assemblare la stampante 3D che sto assemblando.
Siccome sono pezzi che devo stampare e provare e ristampare e riprovare... non mi va di farlo con le normali stampanti che ho a disposizione... perché per ogni pezzo impiegano più di 20 ore l'uno. Con questa che sto provando ad usare ne stampo anche 20 contemporaneamente... visto che ha un piano molto più grosso e preciso.

Per i tempi di latenza di LinuxCNC ultimamente sono un tantino aumentati salendo oltre quota 1000. Ma fino allo scorso anno, erano molto più bassi. Poi ho avuto un problema dovuto da un fulmine caduto vicino casa ed è successo qualcosa. Al momento non posso fare altrimenti.

Che la BBB possa essere più performante di un normale PC ci posso credere. Ma se hai un PC ottimizzato e con debian o meglio ArcLinux installati a dovere, con una scelta oculata dei componenti e con tutto ciò che non serve disattivato, hai un PC estremamente performante.
Considera che il pc che uso sulla CNC è una lumaca ingestibile per la navigazione in internet. Mediamente il browser lo uso solo per consultare qualche manuale online. Per il resto uso gli altri 3 PC che ho in laboratorio.
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 » domenica 5 luglio 2020, 23:06

La porta usb che si usa per collegare Arduino al pc genera il peggioramento dei tempi di latenza, se la stampante 3D viene gestita solo da Arduino senza l'uso del pc il problema non si crea ma quando Linuxcnc deve acquisire un dato dalla usb...
Per capire meglio il tempo di latenza e le temporizzazioni occorre immaginare un treno composto da diversi vagoni di carico/scarico merci che deve caricare/scaricare alle rispettive stazioni entro certi limiti di tempo, fino ad un tot di tolleranza ci riesce poi perde la coincidenza delle stazioni ...e non consegna la merce.

Per verificare una possibile causa della perdita dei passi occore usare un oscilloscopio digitale, impostando il trigger appositamente si memorizza a video la forma d'onda del segnale e si verifica l'ampiezza e la forma, se questi due parametri non sono rispettati, che sono dovuti alla caratteristica dell'ingresso dell'azionamento, sono una probabile fonte di perdita di passi, più si sale in frequenza e più la forma d'onda si deforma quindi lo stadio d'ingresso dell'azionamento non riesce più a leggerla correttamente.
Senza la dovuta strumentazione per l'analisi si fa poca strada e quindi ci si affida a quanto descritto nei datasheet, andando alla cieca o cambiando i componenti.

Nella BBB puoi installare Debian, Ubuntu ed altri sistemi operativi realtime, e confermo per esperienza diretta che è altamente performante.
Machinekit è derivato da Linuxcnc, è praticamente identico e cambia solo alcune piccolezze nella videata di Axis ma nessuno ti vieta di installare Linuxcnc (uno dei primi test delle stampanti 3D sono proprio con Linuxcnc), nel mio caso ho scaricato tutto il pacchetto Debian + Machinekit già pronto ed ho fatto la configurazione macchina proprio come si fa con Linuxcnc.

Kylotron, prima di iniziare la macchina per le guarnizioni in poliuretano ho cercato un pc che settato a dovere potesse avere tempi di latenza accettabili, ho fatto fatica a trovarne uno decente e mi sono dovuto accontentare per ciò che ho trovato ma non è performante, è solo accettabile per quell'uso.
Devi realizzare una stampante 3D come questa?

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, 8:43

Ross, quella che devo far funzionare come stampante 3D è la mia CNC "piccolina", 750x460 mm utili (100 mm di altezza per la stampa 3D). La macchina, in versione fresa CNC, lavora il polistirolo a 2 metri al minuto ed effettua gli spostamenti rapidi fino a 4.5 metri al minuto (con microstepping 1/16). Viene gestita da LinuxCNC tramite BreakoutBoard e Driver MA860H alimentati a 48Volt. Non perde mai passi a queste velocità... nonostante le accelerazioni/decelerazioni e la massa del ponte che non è bassa.

Usando l'elettronica di prova della stampante, Arduino+Ramps con driver esterni TB6600 alimentati a 24 volts, la "Piccolina" perde continuamente passi sia su X che su Y. E lo fa praticamente a caso... senza un'apparente logica.

Certo... i TB6600 sono immondizia rispetto agli MA860H... è vero e quasi certamente la colpa è la loro.

Ma ho l'assoluta necessità di far funzionare la "Piccolina" come stampante... perché devo stampare i pezzi che mi servono per assemblare la stampante grande. Altrimenti ci metto mesi con le stampanti che ho a disposizione (e tra l'altro avrei difficoltà a farci stare sul piatto 2 dei pezzi che devo stampare).

Ecco perché chiedevo.... devo solo leggere un sensore di temperatura tramite Arduino. La domanda era, penso, abbastanza chiara e non ho ancora ricevuto nessuna risposta in merito.
La mia piccolina....

Rispondi

Torna a “Linuxcnc”