Salve a tutti, sto progettando una fresatrice a controllo numerico che verrà poi gestita con Arduino; i movimenti verranno controllati col software GRBL.
Volevo però aggiungere un visualizzatore di quote per poter tenere sempre sotto controllo la precisa posizione dell'utensile e quindi vi chiedo un parere : che sensori potrei utilizzare per crearlo e per avere una discreta precisione? Posso calcolare la posizione anche contando il numero di passi dei motori? Se si potesse quale scelta sarebbe migliore? Grazie in anticipo
Usa mach3 per per fresare... No?
Dipende se vuoi solo "visualizzare" la posizione che il software manda alla macchina, e allora ti basta la parte software, oppure se vuoi proprio leggere fisicamente la reale posizione, ed allora ti servono delle righe magnetiche ed un'apposito visualizzatore (o un circuito autocostruito per la visualizzazione, ma non e' esattamente semplice da replicare ... ;)) ... il link e' solo per darti l'idea del tipo di sensori lineari che ti servirebbero ...
Etemenanki:
oppure se vuoi proprio leggere fisicamente la reale posizione, ed allora ti servono delle righe magnetiche ed un'apposito visualizzatore
In alternativa un encoder con medio/alta risoluzione montato su i motori degli azionamenti, più semplice da mettere in opera.
Normalmente sulle macchine cnc amatoriali la posizione viene visualizzata partendo da quella nota al software, solo sulle cnc professionali ci sono reali sistemi di misura della posizione assi, incidono non poco su i costi della macchina però permettono di accorgersi se c'è una discrepanza tra posizione reale e posizione imposta dal software, ovvero se i motori stepper hanno perso passi oppure i motori brushless non riescono a tenere la velocità richiesta.
Grazie delle risposte, intanto vorrei provare a visualizzare solo le coordinate fornite dal software anche se non potrò verificare se i motori perderanno passi.
Sto analizzando tutte le librerie per interfacciare i motori col firmware GRBL e sono le seguenti:
#include <config.h>
#include <coolant_control.h>
#include <cpu_map.h>
#include <defaults.h>
#include <eeprom.h>
#include <gcode.h>
#include <grbl.h>
#include <limits.h>
#include <motion_control.h>
#include <nuts_bolts.h>
#include <planner.h>
#include <print.h>
#include <probe.h>
#include <protocol.h>
#include <report.h>
#include <serial.h>
#include <settings.h>
#include <spindle_control.h>
#include <stepper.h>
#include <system.h>
Sapreste consigliarmi quale andarmi a studiare bene per rilevare le quote che verranno inviate al software?
Grazie
Ciao,
io ho usato gli stepper in tutte le salse e potenze... tra cui una CNC autocostruita e ho fatto parecchi lavori anche con lavorazioni gravose... e gli stepper non hanno mai dato problemi/errori...
chiaramente devi studiarti e dimensionare bene la macchina e non lesinare sopratutto nei driver...
concordo inoltre di utilizzare Mach3
ciao
Scusa ma non ho capito una cosa: se usi GRBL allora la tua fresa (credo, almeno io ho sempre fatto così) deve essere collegata ad un computer con un software (universal Gcode sender, bCNC, ecc) che invia a GRBL i vari comandi in G-CODE. Ma a questo punto , visto che vuoi solo visualizzare le coordinate, è lo stesso software che te le visualizza a schermo.
oppure, semplicemente... non ho capito.
ciao
pippo72
0101001000:
Ciao,
io ho usato gli stepper in tutte le salse e potenze... tra cui una CNC autocostruita e ho fatto parecchi lavori anche con lavorazioni gravose... e gli stepper non hanno mai dato problemi/errori...chiaramente devi studiarti e dimensionare bene la macchina e non lesinare sopratutto nei driver...
concordo inoltre di utilizzare Mach3
Ciao, grazie della risposta;
mi sono già dimensionato i motori in relazione alla grandezza della struttura e dei pezzi che andrò a fresare.
Ho scelto di utilizzare 4 NEMA 23 (due per l'asse X) da 3 Nm l'uno circa.
Inoltre, nel caso la coppia non fosse sufficiente, applicherò dei riduttori per aumentarla.
pippo72:
ciaoScusa ma non ho capito una cosa: se usi GRBL allora la tua fresa (credo, almeno io ho sempre fatto così) deve essere collegata ad un computer con un software (universal Gcode sender, bCNC, ecc) che invia a GRBL i vari comandi in G-CODE. Ma a questo punto , visto che vuoi solo visualizzare le coordinate, è lo stesso software che te le visualizza a schermo.
oppure, semplicemente... non ho capito.
ciao
pippo72
Ciao,
si Universal G-Code sender mi mostra già le coordinate, ma per comodità volevo visualizzarle su un display che andrà fissato alla macchina.
Sul display poi potrò vedere varie funzionalità (es. temperatura elettromandrino, velocità di rotazione di esso, coordinate, tempo di lavorazione...).
Quindi sto spulciando per le librerie per trovare dove vengono calcolati questi valori (in questo particolare caso delle coordinate X, Y, Z).
hai provato a vedere l'output seriale dell'arduino demandato a controllare gli assi della fresa mentre gli dai in pasto un lavoro da eseguire? se nel seriale hai le coordinate impartite ai motori penso che sia l'unico modo di "intercettare" tali dati. ovviamente potrebbero non essere "in chiaro", ma codificati con una specie di protocollo che arduino interpreta ed associa a variabili. anche perché serial.h è inclusa come libreria. vedi a che velocità viene inizializzata
poi sta a te implementare un lcd...
miky_police:
hai provato a vedere l'output seriale dell'arduino demandato a controllare gli assi della fresa mentre gli dai in pasto un lavoro da eseguire? se nel seriale hai le coordinate impartite ai motori penso che sia l'unico modo di "intercettare" tali dati. ovviamente potrebbero non essere "in chiaro", ma codificati con una specie di protocollo che arduino interpreta ed associa a variabili. anche perché serial.h è inclusa come libreria. vedi a che velocità viene inizializzata
poi sta a te implementare un lcd...
In effetti ho notato una comunicazione seriale quando i motori ruotano, solo che se uso la stessa scheda Arduino, nella quale è caricato il programma per l'interfacciamento col firmware GRBL, non riesco a compilare lo sketch se scrivo qualche riga di programma, e mi da il seguente errore:
Arduino:1.8.3 (Windows 10), Scheda:"Arduino/Genuino Uno"
libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read() ':
(.text+0x0): multiple definition of `__vector_3'
libraries\grbl\limits.c.o (symbol from plugin): (.text+0x0): first defined here
libraries\SoftwareSerial\SoftwareSerial.cpp.o (symbol from plugin): In function `SoftwareSerial::read() ':
(.text+0x0): multiple definition of `__vector_4'
libraries\grbl\system.c.o (symbol from plugin): (.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.
In questo caso ho solo provato ad aggiungere la libreria <SoftwareSerial.h>.
Da ciò presumo che debba usare un'altra scheda per poter leggere la comunicazione seriale sui piedini TX e RX, giusto?
io dicevo di fare questa semplice prova:
- carica il fw grbl sulla scheda Arduino dove sono incluse tutte quelle librerie postate da te (tra cui la serial.h);
- controlla nel void setup (del fw grbl) alla voce Serial.begin (.....) a che velocità (che sarebbe il numero tra parentesi) viene inizializzata la seriale;
- senza modificare nulla apri la seriale e imposta la velocità seriale corretta;
- avvia il software con il quale eseguirai la fresatura;
- fai partire l'engraving di un tuo progetto;
A questo punto cosa leggi nella seriale aperta dall'ide di arduino???
ripeto, non devi aggiungere o togliere nulla dal fw originale grbl...
miky_police:
io dicevo di fare questa semplice prova:
- carica il fw grbl sulla scheda Arduino dove sono incluse tutte quelle librerie postate da te (tra cui la serial.h);
- controlla nel void setup (del fw grbl) alla voce Serial.begin (.....) a che velocità (che sarebbe il numero tra parentesi) viene inizializzata la seriale;
- senza modificare nulla apri la seriale e imposta la velocità seriale corretta;
- avvia il software con il quale eseguirai la fresatura;
- fai partire l'engraving di un tuo progetto;
A questo punto cosa leggi nella seriale aperta dall'ide di arduino???
ripeto, non devi aggiungere o togliere nulla dal fw originale grbl...
Senza modificare il codice non è presente la stringa Serial.begin. Inoltre se prima apro il monitor seriale e poi provo a stabilire la connessione tra Universal Gcode Sender e arduino mi avvisa che c'è un errore nella connessione (Port busy). La stessa cosa succede se provo a fare il contrario, quindi se provo prima a connettere Gcode sender ad arduino e provo poi ad aprire il monitor seriale.
Posso dedurre quindi che sono due cose separate, e che quando provo a metterle in comunicazione vanno in conflitto
Scusa, quale fw grbl stai utilizzando? puoi postare il link da dove l'hai scaricata?
miky_police:
Scusa, quale fw grbl stai utilizzando? puoi postare il link da dove l'hai scaricata?
Questo è il ink di GitHub dove ho scaricato tutti i file: GitHub - grbl/grbl: An open source, embedded, high performance g-code-parser and CNC milling controller written in optimized C that will run on a straight Arduino
Comunque ho provato a collegare le porte TX e RX ad un altro arduino (sempre sulle seriali) e quando leggo le stringhe sul nuovo arduino e le stampo sul monitor seriale visualizzo per un attimo quello che mi viene scritto sulla riga di comando di Universal Gcode sender, ma poi mi da errori