Robotica e CNC


Consigli per le macchine CNC

Chi avesse bisogno di consigli sui motori da usare, sui componenti meccanici o su come montarli e acquistarli, può rivolgersi a Fabio di Arezzo che negli ultimi anni ha raccolto molta esperienza sulle frese CNC e le macchine per incisioni con i laser.

Nelle prossime immagini si vedono alcune sue realizzazioni. Cliccando le immagini si ingrandiscono e si può notare che sono macchine combinate, cioè che si può montare sia un laser che una fresa.

Cnc machine     CNC machine      CNC with laser

Scrivete a Fabio per consigli, per acquistare insieme componenti o per farvi procurare da lui dei kit di componenti. Oppure potreste anche accordarvi per costruire delle parti o delle macchine complete.

Fabio di Arezzo – Civitella in Val di Chiana (AR) – fabio.cve31@gmail.com


Radar e bracci robotici


Questo è il primo sonar di Mauro Riboni, l’applicazione ThereminoRadar è nata da questo prototipo. Ringraziamo ancora Mauro, per averci coinvolto e per aver insistito, fino a farlo funzionare.
Download del ThereminoRadar qui: /downloads/automation#radar e informazioni sui sensori qui: /hardware/inputs/sensors#usound

– – – – – – –

Mauro Riboni sta anche sperimentando diverse versioni di bracci meccanici. Le sue meccaniche sono studiate e realizzate molto bene. Questa è una versione con servo di grande potenza. Questi servo non sono adatti per scrivere a causa della loro dead band, ma sono ottimi per prendere e sollevare oggetti. I due servo alla base e la costruzione molto robusta, permettono di sollevare oggetti abbastanza pesanti.

– – – – – – –



Uno dei primi prototipi di ThereminoArm. Questa versione usava ancora un Master e uno Slave, perché i primi Master non avevano PIN configurabili. Ora si fa tutto con il solo Master e avanzano anche due PIN. Aggiornamento dell’aprile 2017: il nuovo firmware dei Master, aumenta il numero di PIN da 6 a 12, quindi ora avanzano ben otto PIN per usi generici. Inoltre i nuovi firmware possono pilotare anche i motori stepper.

Si possono quindi costruire bracci robotici molto precisi utilizzando piccoli motori stepper e cinghie dentate. Si consiglia di usare un rapporto di demoltiplicazione molto alto, almeno cinque ma meglio se si riesce ad arrivare a dieci. In questo modo i 200 passi per giro diventeranno 2000 passi per giro e si potrà ottenere una precisione di 0.7 mm con bracci lunghi mezzo metro. Precisione che aumenterà a circa un decimo di mm e oltre utilizzando i microstep.

– – – – – – –

Un Robot non è necessariamente un braccio articolato. Con un po’ di fantasia, si possono comporre macchine semplicissime ed efficaci.

Un robot “didattico” costruito dagli allievi dell’istituto I.C. di Corniglio

La motivazione proposta dell’istituto I.C. di Corniglio è: “…ricongiungere il mondo digitale col mondo reale e concreto” ed è proprio per questo che è nato il sistema Theremino. Un caloroso grazie per le vostre ricerche!


Sketch e Firmware

Molti dopo aver imparato il linguaggio sketch di Arduino, ci hanno scritto che vorrebbero usarlo, anche per Theremino. Purtroppo il linguaggio sketch è stato pensato, solo per i processori dell’Arduino e trapiantandolo su altri “micro”, diventerebbe così diverso, da perdere ogni possibilità, di scambiare i programmi tra i due.

I nostri PIC si programmano in C o in C++, usando un IDE standard e compilatori standard, noi usiamo il GNU Compiler, che è Open Source.

Per quanto la enorme popolarità di Arduino, possa farci apparire “diversi”, in realtà è vero proprio il contrario, è Arduino che usa un linguaggio non standard, fatto apposta per Arduino e valido solo per Arduino.

Gli sketch non sono vera programmazione del firmware, ma una programmazione semplificata, che nasconde tutto il “contorno”. Con gli sketch, l’efficienza è le possibilità di manovra, sono limitate.

Inoltre gli sketch provocano una deformazione didattica, si impara a usare una astrazione del micro, al posto del micro stesso. Per imparare a usare un micro, si dovrebbero studiare i data-sheet del costruttore, non le istruzioni di Arduino.

Detto questo, per fortuna, il firmware del sistema Theremino, non richiede programmazione. Siamo nel 2014 e si suppone che gli InOut di un PC, così come il firmware di un telefonino, o di una lavatrice, siano funzionanti “come sono”, senza doverli ri-programmare ogni volta, a seconda che si vogliano lavare camicie, oppure blue jeans.


Spostamento di prospettiva

Lo spostamento di prospettiva, tra Arduino e Theremino è di fatto, spostare l’intelligenza dal firmware al software. Questo spostamento moltiplica per mille la velocità disponibile, la potenza di calcolo, la memoria, e la facilità di programmazione.

Per questo approccio, si deve essere costantemente collegati a un PC (o un NetBook, un eeeBox, un Tablet, un MiniPC o un Raspberry Pi, come spiegato qui: blog/standalone-applications#standalone, e anche qui: downloads/notes-on-software#computers)

Molti dispositivi, come le stampanti, i monitor e i mouse, sono costantemente collegati al PC e tutti lo trovano “normale”. Eppure molti pensano che un “dispositivo”, come ad esempio un braccio robotico, o una stampante 3D, dovrebbero essere autonomi, e probabilmente anche a pile…


Bracci robotici e intelligenza

Facciamo l’esempio, guarda caso, di un “braccio robotico”. Molti costruttori di bracci robotici Arduinici, si sono accorti che il loro braccio “autonomo a pile”, alla fine fa sempre la stessa cosa. Cosa gli manca? La comunicazione e il software, algoritmi potenti che tengono in contatto i dati 3D, con il mondo esterno, sensori, WebCams, microfoni, capire i GCode, e comunicare con altre applicazioni, in tempo reale.

I micro non sono concepiti per gestire file 3D, o decodificare segnali audio, non hanno potenza adeguata, per suonare file midi, o decodificare il video di una WebCam. E se anche li si costringe a farlo, lo fanno male. Detto con altre parole: “Il luogo adatto per il cervello, non è vicino ai muscoli”

Un altro motivo, che rende molto furbo, collegare stabilmente bracci e stampanti 3D al PC, è che si deve fornirli di alimentazione. Quando si supera la fase giocattolo, le esigenze di alimentazione, diventano troppo pesanti, per le pile.

Come sono fatti i bracci robotici professionali ?

  • Hanno grossi cavi, che portano alimentazione e dati.
  • Comunicano costantemente con un PC di controllo.
  • Contengono solo il firmware, gli algoritmi intelligenti, sono tutti sul PC.

Fate click sulla immagine, per vedere meglio.


Quale linguaggio usare?

Una volta deciso di spostare l’intelligenza, dal firmware verso un linguaggio ad alto livello, quale è il migliore linguaggio da imparare?

Qui è una questione di gusti, alcuni dicono che esiste solo il C++, e trattano con disprezzo, ogni altro linguaggio.

Altri, come noi, pensano che il C++ sia ormai un linguaggio vecchiotto, che richiede molto più tempo e energie, dei linguaggi recenti. E pensano anche che C++ e simili (C, Java e tutti i linguaggi con il punto e virgola a ogni riga) siano linguaggi mal strutturati e poco formali, che invogliano a scrivere, in modo “sporco” e confuso. In questi linguaggi è possibile scrivere, cose accettabili dal compilatore, ma assolutamente illeggibili, per gli umani.

Noi preferiamo linguaggi più strutturati, che aiutano a scrivere bene, e a minimizzare gli errori. Questo processo di allontanamento graduale, dal linguaggio macchina, è in atto da cinquant’anni e ad ogni nuovo passo, c’è chi si lamenta e rimpiange i vecchi linguaggi. Ma il processo proseguirà, e alla fine arriveremo a programmare, in linguaggio umano. Attualmente il linguaggio più umano è VbNet.

Come contorno i linguaggi moderni (VbNet e C#), hanno una potenza e una velocità di esecuzione impressionante, perché le loro funzioni di base, non vengono riscritte ogni volta da zero, ma sono invece pronte nel “RunTime” e scritte con algoritmi ottimizzati, e adattati al sistema operativo.

Un secondo vantaggio dei linguaggi moderni, è di essere indipendenti dal sistema operativo. Una applicazione scritta in C# o in VbNet, gira senza cambiare una virgola anche su Mac, Linux e Unix. (questo almeno in teoria… in pratica solo su Windows funziona tutto bene, mentre sugli altri sistemi operativi, le implementazioni sono incomplete e piene di errori)

Concludendo noi suggeriamo di usare VbNet oppure C# (molto simili tra loro) Quasi tutte le applicazioni, del sistema Theremino, sono scritte in VbNet, perché lo troviamo più “umano”, ma si può facilmente passare da un linguaggio all’altro, usando SharpDevelop per tradurre.

Per installare gli strumenti di sviluppo, leggere qui: downloads/notes-on-software#instruments

  1. Italo Driussi says:

    Sto usando theremino su una proxxon 70 con ottimi risultati.
    Ho acquistato una cnc cinese 3040 (e in arrivo) la sua elettronica di potenza e fatta per il mach3 e da quello che ho capito leggendo il manuale e confrontando con schede simile il segnale step e’ invertito, attivo basso.

    Esiste qualche settaggio di theremino per adattarlo, oppure posso invertire il segnale con un 74ls04.

    Grazie

    • Livio says:

      Il segnale Step generato dal master è stato curato con attenzione nel firmware in modo da poter funzionare anche su driver che ragionano al contrario. Non dovrebbero quindi verificarsi perdite di passi e nessun altro malfunzionamento.
      Inoltre il nostro collaboratore Leo, che vive a Shenzen (cina) ha provato il funzionamento su una 3040 e finora non ha riscontrato problemi.
      Quindi, per mantenere la massima semplicità possibile, non abbiamo previsto controlli per invertire i segnali. Nel caso si volesse invertirli si dovrebbe farlo in hardware con un inverter, oppure collegando il positivo dei LED di ingresso dei fotoaccoppiatori (su macchine che li hanno) al 3.3 Volt e il negativo alla uscita del Master.

      • Italo Driussi says:

        Grazie
        Appena mi arriva faccio delle prove e vi sapro’ dire.
        Male che vada acquistero’ una nuova elettronica di potenza a theremino cnc non ci rinuncio.

        • Livio says:

          Funzionerà di sicuro. Al massimo, se proprio necessario e non si riesce a invertire il segnale collegando i foto accoppiatori al positivo, allora si possono inserire degli inverter, come giustamente hai suggerito.

  2. mirko says:

    salve vorrei proporre un idea, ora che ho visto il funzionamento del programma point follower. se si utilizza il valore ottenuto dallo sfasamento lungo l’asse orizzontale di un indicatore laser si possono anche misurare le distanze facendo un breve calcolo. si usa lo stesso principio dei lidar, anche se molto più lentamente a causa del refresh della webcam

    • Livio says:

      Si, funzionerebbe.
      Abbiamo già valutato questa possibilità ma non la abbiamo mai provata perché facendo i calcoli si scopre che la precisione ottenibile è scarsa.
      Comunque potresti provare e poi scriverci che caratteristiche riesci a raggiungere.

  3. mirko trinca colonel says:

    salve sto usando felicemente theremino con theremino cnc per far funzionare la mia cnc. ci sono solo un paio di cose che mi sfuggono: se fermo la lavorazione e anche il pc per riprendere il giorno dopo devo segnarmi la linea del gcode a cui sono arrivato e poi il giorno seguente ricercarla per poi farla ripartire da li. esiste un modo più veloce come un salvare la posizione in automatico o una sorta di ricerca per numero di linea del gcode? grazie in anticipo. Ah comunque lavoro perfetto il vostro ho fatto una lavorazione molto lunga (circa 30 ore in tutto) con cam 3d e cambi utensili in più giornate e non ha mai sbagliato di un millimetro

    • Livio says:

      Quello che stai facendo è sorprendente. Spezzare una lavorazione su più giorni non era previsto. Si pensava al massimo di poter rifare lo stesso pezzo il giorno dopo senza rifare gli azzeramenti, quindi la linea non viene ripristinata.

      Se il tuo GCode ha il numeri di linea puoi ritrovare la linea con:
      – Tasto destro sul GCode
      – Find and replace
      – Find nnnn (dove nnnn è il numero di linea)

      Se fermi la lavorazione ad un cambio utensile potresti ritrovare la linea con:
      – Tasto destro sul GCode
      – Find and replace
      – Find M06
      – Find Next fino a che arrivi alla linea giusta

      Se modifichi qualcosa per sbaglio nel GCode, fai molti undo con CTRL-Z fino a che sparisce la scritta “Modified” dal titolo della finestra del GCode

      Fai comunque attenzione, quando riparti da punti casuali, che il primo movimento parta dall’alto, per non rigare il pezzo o rompere punte.

      Se non bastano questi metodi scrivici di nuovo e vedremo, se possibile, di aggiungere il ripristino della linea nelle prossime versioni.

      • mirko trinca colonel says:

        ecco cosa mi mancava :D il tasto destro. grazie 1000. comunque non ho fatto nulla di speciale il fatto è che theremino non perde passi e nemmeno la posizione, poi la meccanica che ho preso da creostamp fa la sua con viti a ricircolo e guide su pattini si viaggia che è una bellezza

  4. mirko says:

    salve sono sempre io il rompiballe del quartiere :D. Di recente sto usando molto spesso la cnc e faccio macinare i gcode da theremino uno dietro l’altro. sto anche cercando di far andare sempre più veloce il sistema e facendo qualche prova sto notando che il sistema di controllo della traiettoia di theremino cnc è molto più preciso e veloce di quello che attualmente uso su Autodesk Fusion 360(un ottimo programma sotto ogni punto devo dire e in + free … consigliatissimo) dato che quello di theremino gestisce anche le accellerazioni. l’unica cosa è che theremino cnc non mi sembra far distinzioni fra il feed in orizzontale e quello in verticale e questo porta le frese che uso ad essere stressate un poco. mi chiedevo se c’era modo di separare i due tipi di feed oppure se c’è una qualche scappatoia tipo di limitare la max velocità da theremino master. grazie 1000 in anticipo :D

    • Livio says:

      Se muovi gli assi contemporaneamente allora il Feed si riferisce al movimento combinato (velocità lungo la diagonale che viene percorsa). Di conseguenza l’asse che fa un percorso maggiore andrà più veloce e l’altro andrà più piano. Se il feed è troppo per le frese e il materiale che usi, basta abbassarlo. Lo si deve impostare nel GCode, non nell’HAL o nel Feed manuale. Il cam può preparare il GCode cambiando Feed in qualunque momento della lavorazione.

      Se muovi un asse per volta puoi far precedere ogni movimento da un Feed diverso, e anche in questo caso si parla di Feed nel GCode.

      Theremino CNC fa quello che gli dice il GCode e gestisce il comando Gcode di Feed esattamente come ogni altro CNC.

      Le velocità di Feed vanno scritte nel GCode, il campo Feed che si regola manualmente serve solo per fare prove manuali.

  5. Livio says:

    Ferdinando ci ha scritto
    Su alcune macchine, non su tutte, ho notato un comportamento strano come se venissero saltate delle righe di programma durante lettura di codici G002/03. Se ripeto la lavorazione, l’errore risulta sempre uguale.

    Risposte

    Saltare linee di programma
    ———————————————————————————————
    Quasi certamente il difetto che hai riscontrato non era dovuto ai G02 e G03 ma alla mancanza del prefisso G02 o G03 a inizio riga.

    Nelle versioni passate se non venivano ripetuti i codici G02 G03 in tutte le righe si verificavano dei difetti. Le G01 non ne risentivano di questo problema me le G02/G03 senza codice venivano eseguite come se fossero delle G01. Nelle ultime versioni (4.4 e 4.6) questi errori sono eliminati. Ma ugualmente è buona pratica iniziare tutte le righe con il loro codice G.

    Per spiegarmi meglio, le righe seguenti:
    G01 Z-5.825
    X105.996 Y22.525
    G02 X94.972 Y.335 I-76.369 J56.873
    X104.896 Y21.69 I-34.014 J43.69

    andrebbero corrette con:
    G01 Z-5.825
    G01 X105.996 Y22.525
    G02 X94.972 Y.335 I-76.369 J56.873
    G02 X104.896 Y21.69 I-34.014 J43.69

    La mancanza del G02 all’inizio della quarta riga poteva, nelle versioni passate, causare un difetto apparentemente attribuibile al G02.

    Tagliare le curve
    ———————————————————————————————
    Per come funziona Theremino CNC saltare righe di GCode è impossibile, ma potrebbe verificarsi un comportamento di tipo “tagliare le curve”, e quindi simile al saltare righe, determinato da una incomprensione su come si devono impostare Rapid e Feed.

    E’ essenziale non impostare mai “Rapid” o “Feed” (anche nel Gcode) maggiori di quelli sopportabili dai motori e che sono scritti nel parametro Max Speed dell’HAL. Se si supera questo valore l’HAL protegge ugualmente i motori dal perdere passi, ma la punta potrebbe arrivare in ritardo alla destinazione e quindi essere costretta a tagliare le curve e saltare pezzi di lavorazione. Se si sbaglia di molto si potrebbero anche rompere utensili e rovinare il pezzo.

    Un ulteriore difetto derivante da una errata impostazione di “Rapid” è che joggando manualmente la fresa continua a muoversi per un certo tempo anche dopo aver rilasciato i tasti. Anche in questo caso c’è il pericolo di collisioni e di rompere utensili. Se si jogga a lungo quando ci si ferma la punta è rimasta così indietro che non si ferma più e va a sbattere da qualche parte.

    Non impostare mai “Rapid” o “Feed” maggiori di “Max Speed” è scritto dappertutto ma può capitare di non leggerlo o di sottovalutarne l’importanza.

    Macchine con motori piccoli e grande massa
    ———————————————————————————————
    Gli errori di percorso possono essere causati anche da motori con accelerazione molto bassa rispetto alla velocità massima. Se nell’HAL il valore MaxSpeed è maggiore di dieci volte il valore MaxAcc allora è bene fare attenzione a questo aspetto.

    Leggere nelle istruzioni di Theremino CNC le note che riguardano “Options” / “Compensate acceleration effects” (pagine 26 e 65 nelle ultime versioni delle istruzioni da ottobre 2016 in poi).

  6. Roberto says:

    Vorrei poter usare dei motori step controllandoli con il theremino. In particolare controllare del motore posizione, velocità, accelerazione. Ad esempio poter far seguire allo step un segnale spazio tempo di tipo sinusoidale (anche la velocità varia sinusoidalmente in modo continuo). Come posso fare? Se ad esempio collego un servo motore sullo slot 1 pilotato con l’applicazione WaveGenerator questo si muove di moto rotatorio alternato come vorrei riuscire a pilotare lo step. Dovrei poter variare la frequenza di alimentazione delle bobine dello step in modo continuo. Con gli slot riesco solo a dare una destinazione finale da raggiungersi a velocità costante dopo la rampa di accelerazione. Inoltre al valore di velocità ed accelerazione degli slot non si arriva da altra applicazione.

    • Livio says:

      Collega il motore stepper e pilotalo con WaveGenerator attraverso uno Slot. Vedrai che si muoverà esattamente come se fosse un servo, con velocità “sinusoidalmente variabile in modo continuo” come hai scritto. Nessun bisogno di variare la “frequenza di alimentazione delle bobine”, pensa a tutto l’HAL.

      Per ottenere questo però devi regolare tutti i parametri correttamente, se non riesci scrivici a engineering@theremino.com e ti aiuteremo telefonicamente a capire come si fa.

      Per muovere uno stepper in maniera controllata non si devono cambiare la MaxAcc e la MaxSpeed dell’HAL. Quei parametri sono solo dei massimi di sicurezza per evitare che lo stepper possa perdere passi. Sono parametri da regolare una volta per tutte su un certo motore e da non cambiare più.

      E qui tu chiederai:
      “Come posso rallentare il movimento se non diminuisco questi parametri”?

      Risposta:
      Per muovere uno stepper (ma anche un servo) in maniera controllata, a qualunque velocità, anche bassissima e con qualunque accelerazione da zero a MaxAcc lo si “tiene al guinzaglio” e si continua a inviargli nuove destinazioni (in millimetri) molto frequentemente (almeno cinquanta volte al secondo ma meglio se oltre cento).

      Se le nuove destinazioni sono vicine una all’altra la velocità di movimento è bassa, poi man mano che si danno destinazioni più lontane una dall’altra si può aumentare la velocità e la accelerazione.

      Se si esagera e si superano la massima velocità o la massima accelerazione (cosa che non si dovrebbe mai fare) allora il servo viene protetto dall’HAL, non perde passi ma resta indietro e non segue più il percorso che si vorrebbe fargli fare. In questi casi il guinzaglio si allunga come un elastico e il servo inizia a tagliare le curve cercando sempre di venirti dietro.

      Questo è il modo con cui funziona Theremino CNC. il quale guida i servo a tutte le velocità e accelerazioni possibili da zero fino alle MaxSpeed e MaxAcc scritte nell’HAL.

      Naturalmente fare queste cose in un proprio software richiede capacità di programmazione adeguate, saper usare i timer e i thread e anche saper trattare i numeri con virgola mobile e fare i calcoli giusti per determinare di continuo le nuova destinazioni (in millimetri o gradi) da inviare allo slot che controlla il motore stepper.

      Tutte queste considerazioni sono esattamente le stesse anche se si tratta di muovere i servo. Anche i servo, se non li muovi un passetto alla volta, schizzano alla destinazione finale con la massima accelerazione e velocità che riescono a produrre.

  7. Livio says:

    Ferdinando ci ha scritto:
    Alcuni amici che hanno frese cnc homemade, mi dicono che Theremino cnc è ottimo, ma che se avesse la possibilità del recuperare il backlasch sarebbe perfetto, perché nelle meccaniche fatte in casa, il gioco è sempre presente, e con pochi mezzi a disposizione, è difficile toglierlo meccanicamente.

    Risposta:
    La Proxxon che usiamo qui in laboratorio non è certo una macchina di precisione, ha i “lardoni” (guide a coda di rondine) che ciloccano se li lasci molli e che si inchiodano se li stringi troppo.

    Anni fa, quando usavamo ancora Mach3, abbiamo provato a lungo a correggere il backlash. E correggi da un lato, e peggiora dall’altro, venivano sempre stampati con le piste tutte sfrangiate.

    La soluzione è stata di assestare un po’ meglio la meccanica e ora con Theremino CNC e senza nessuna correzione vengono stampati come da immagini pubblicate.

    La compensazione del backlalash “non può superare i problemi con la macchina in taglio continuo” (come scritto nel manuale di Mach3) ma solo in particolari situazioni.

    In altre parole aggiusti in certi punti della lavorazione ma peggiori in altri punti. Inoltre si creano altri difetti, come spiegato a pagina 37 del manuale di Theremino CNC.

    Quindi il non voler aggiungere la compensazione del backlash non è per risparmiare lavoro (sarebbe facilissimo implementarlo) ma per evitare agli utenti inutili tentativi, con apparenti miglioramenti in certi casi per poi scoprire di aver peggiorato altre lavorazioni e in definitiva molte perdite di tempo senza nessun miglioramento reale.

    Lo stesso tempo sarebbe meglio impiegato per migliorare un po’ la meccanica.

  8. Giuseppe Pederzolli says:

    Salve Livio, complimenti ancora per Theremino CNC va che è una meraviglia. Devo ancora prendere confidenza con alcuni parametri, ma è tutto molto preciso e funzionale. La mia fantasia però mi spinge sempre verso cose che conosco poco…pertanto una domanda: sono molto incuriosito dalle performance dei robot (o stampanti che usano la stessa meccanica) tipo Delta (con le tre colonne a 120 gradi…oppure a bracci oscillanti)…..per fare quello con Theremino CNC bisogna riscrivere il firmware vero? Immagino sia un lavoro lungo e difficile ma che si affiancherebbe a altri progetti che avete già pubblicato tipo il riconoscimento visuale….
    Scusa la domanda…ancora grazie di quello che fate
    Giuseppe

    • Livio says:

      Il firmware, che si trova dentro ai moduli Master, va già bene come è ora e potrebbe guidare macchine con qualunque struttura (Cartesiane come le solite frese, Delta come i ragni che arrivano dall’alto e anche Scara come i bracci dei granchi).

      E oltre al firmware anche il software (Theremino CNC) sarebbe in grado di eseguire correttamente GCode creati per macchine Delta o Scara. basta creare questi Gcode con un CAM configurato per la macchina specifica che si vuole guidare (molto più difficile però rispetto a una cartesiana con assi paralleli).

      L’unica parte che non abbiamo ancora implementato, e che non credo implementeremo dato l’esiguo numero di utenti che hanno macchine Delta o Scara, è la visualizzazione del GCode per macchine diverse dalle cartesiane. E in questo sarebbero da includere anche le macchine per il taglio polistirolo.

      Detto in altre parole: anche senza visualizzazione, che si può fare benissimo nel CAM, la lavorazione viene perfetta per ogni tipologia di macchine.

  9. Vincenzo says:

    Salve, sto per iniziare la costruzione di una CNC che ha nel progetto stepper con formato nema23 e disponendo già dei moduli dvr8825 e master V4 avrei bisogno di capire quali motori comprare. Area di lavoro di 80cm x 55cm circa.
    Posso pilotare anche motori che richiedano più ampere?
    Eventualmente ci sono tabelle che rappresentino ideali abbinamenti?
    Grazie infinite.

    Vincenzo.

    • Livio says:

      Non ci sono tabelle che conosco ma non c’è molto da calcolare.

      Consigliabile mettere una ventola sopra ai DRV8825 che li raffredda tutti insieme con aria fredda dall’alto e naturalmente dotarli di dissipatore. In queste condizioni si possono regolare i driver fino a due ampere e avere ancora un certo margine.

      Ma questo non vuol dire che si debbano usare motori da due ampere, se possibile sarebbe meglio metterli anche da tre o quattro ampere e utilizzarli, come si dovrebbe sempre fare, non al massimo della corrente sopportabile,

      Però, e questo può deciderlo solo chi conosce la specifica fresa e i suoi attriti, si potrebbero anche usare motori più piccoli, ad esempio da uno e mezzo o due ampere. E pilotarli poi con 700 mA o 1 A al massimo (sempre circa metà della corrente massima).

      In altre parole tutti i motori vanno bene ma la velocità massima raggiungibile non sarà la stessa e non è possibile calcolarla a priori, solo l’esperienza con la specifica macchina può arrivare a definire se serve più potenza o magari motori con meno potenza (meno corrente) ma in compenso con una velocità massima maggiore.

      • Vincenzo says:

        Salve Livio, nel ringraziarti anticipatamente avrei bisogno di un aiutino. Devo realizzare il circuito Pwm to CV che monta l’integrato lmc6482. Dalle mie parti non si trova e non trovo quale sia un eventuale equivalente. Cosa posso utilizzare? Ci sono “PWM to CV”già realizzati ed in commercio? Dovrò pilotare un elettromandrino con inverter.
        Grazie.
        Vincenzo

        • Livio says:

          Per pilotare un motore non c’è bisogno del PwmToCv con alta velocità di risposta e basso rumore (filtri del quarto ordine) come per la musica. Ma basta un filtro semplice, con un resistore in serie al segnale seguito da un condensatore verso massa. Come indicato nei tre primi schemi che si vedono qui: http://www.theremino.com/hardware/adapters#pwm

          Sarebbe anche utile aggiungere un fotoaccoppiatore subito alla uscita del Master e prima di ogni filtro, ma attenzione che ci vuole un fotoaccoppiatore molto veloce (frazioni di microsecondo), ad esempio un 6N137 che è facile da trovare e costa poco.

          Con un foto-accoppiatore si dovrebbe poi disporre di una tensione da 5 Volt dal lato motore (non è possibile usare quella del Master altrimenti si rovina l’isolamento tra master e motore che è l’unico motivo per cui si aggiunge un foto-accoppiatore).

          Infine il tutto andrà coordinato con l’effettivo circuito di pilotaggio del motore. E qui tutto cambia a seconda se il motore va a 220 volt o a tensione continua. Se ci fosse già un foto-accoppiamento nel circuito di pilotaggio del motore allora il foto-accoppiatore sarebbe inutile.

          In tutti i casi attenzione a non unire le masse per mezzo dei cavetti che portano il segnale. Se si devono unire masse di grosse apparecchiature tra loro (ad esempio motori e computer) si devono usare tecniche professionali di “masse a stella”. Tutte le masse unite in un punto comune (il centro stella) collegato a sua volta alla terra dell’impianto elettrico.

          Mai si devono utilizzare i cavetti di segnale per collegare la massa di un grosso dispositivo (come un motore) alla massa del Master, la quale poi attraverso il debole cavetto USB va al computer.

          Fare collegamenti di massa approssimativi può far perdere la comunicazione USB, durante lo spunto del motore o di altri grossi carichi della macchina. Se questo succede si rovina il pezzo e poi si deve premere “Recognize” sull’HAL per ripartire.

          Se non riesci scrivici e ti aiuteremo a mettere a punto lo schema specifico per il tuo caso.

          • vincenzo says:

            Buongiorno, per pilotare un inverter con 0-10v ed ottenere la variazione di velocità dell’elettromandrino direttamente da software mi era sembrato di capire che il citato circuito potrebbe trasformare i o-3,3v a 0-10v necessari. oppure ho capito male?
            Buon lavoro
            Vincenzo

            • Livio says:

              Hai capito giusto. Il circuito PwmToCv può generare una tensione da 0..10 volt, alimentandolo a 12 Volt e modificandolo come spiegato.

              Ma, sempre a patto di disporre del 12 volt. allora si potrebbe utilizzare lo schema “Da Pwm o FastPwm a 5 Volt” che si trova in questa sezione: http://www.theremino.com/hardware/adapters#pwm

              Questo schema non usa lo LMC6482 ma due semplici transistor facili da trovare ed è così semplice da poter essere montato su un pezzetto di millefori in dieci minuti.

              Per ottener la escursione da 0 a 10 volt si deve scollegare il filo che va dall’emettitore del transistor BC557 al 5 Volt del Master e collegarlo a un alimentatore da 10 volt.

              Oppure si potrebbe collegarlo a un alimentatore da 12 Volt aggiungendo un resistore da 39 ohm in serie al collettore del transistor BC557, il quale farà cadere i due volt di troppo e regolerà l’uscita esattamente da 0 a 10 volt.

              Volendo una maggiore velocità di risposta e un minore rumore, si potrebbe pilotarlo con una uscita FastPWM regolata a 15 KHz, cambiare C1 da 100 uF a 10uF e (ma solo se si vuole ottenere la massima linearità fino a zero volt) aggiungere anche un resistore da 100 ohm tra base e emettitore del transistor BC557.

              Appena possibile pubblicheremo gli schemi anche per queste versioni.

              • Vincenzo says:

                grazie.

                dimenticavo… ma quando saranno in commercio i Master v5?

                risultano non disponibili al momento.

                • Livio says:

                  I Master sono già in viaggio dalla Cina e li hanno spediti con un corriere veloce. Credo che in una settimana si ristabilirà il normale funzionamento del sito ThereminoStore (che lo ricordiamo è gestito dai cinesi mentre noi siamo del tutto no-profit). Nel mese passato hanno avuto molti problemi speriamo che non gli succeda mai più un periodo così scarognato.

                  Attenzione che abbiamo aggiunto alcune righe al messaggio precedente…

                • Livio says:

                  Abbiamo aggiunto gli schemi per convertire le uscite Pwm_16 e Fast_Pwm in tensione 0..10 volt.
                  http://www.theremino.com/hardware/adapters#pwm16to010
                  http://www.theremino.com/hardware/adapters#fastpwmto010

                  • Vincenzo says:

                    Eccomi, soprattutto per ringraziare all’infinito.
                    Fra mille difficoltà meccaniche appena ho qualche minuto, gioco con i master. Domanda: ma come si devono collegare più master affinché uno dei due diventi slave? Oppure occorre una connessione USB per ognuno di essi?
                    Grazie.

                    • Livio says:

                      Occorre una connessione USB per ogni Master. Puoi usare un qualunque HUB USB. Abbiamo provato sia con gl HUB USB2 che con gli USB3 e anni fa anche con gli USB1 e hanno sempre funzionato bene. C’è chi usa anche otto Master e sono sempre risultati affidabili.

  10. Giuseppe says:

    Salve Livio, scusa se sono sempre qui a chiedere informazioni. Sempre in merito alla questione di pilotare con Theremino cnc un robot delta ….(tu mi avevi consigliato di trovare un cam in grado di generare gcode adatti al delta). Ho visto che tra le configurazioni di Theremino Arm c’è anche la Delta e la domande sarebbero queste:
    1) potrebbe essere il software adatto per estrapolare i gcode?
    2) sarebbe possibile interfacciarlo con Theremino cnc?
    3) forse mi è sfuggito qualcosa (anzi …di sicuro) ma ho visto le descrizioni che si riferiscono solo al braccio robotico….e non alle possibilità della configurazione Delta
    Grazie ancora
    Giuseppe

    • Livio says:

      1) potrebbe essere il software adatto per estrapolare i gcode?
      Theremino Arm esegue i GCode, non li crea.

      2) sarebbe possibile interfacciarlo con Theremino cnc?
      Non è possibile interfacciarlo perché Theremino ARM è un CNC lui stesso e quindi sostituisce del tutto Theremino CNC.
      Forse però intendevi interfacciarlo con il Theremino Master che poi va a muovere dei motori Stepper al posto che muovere dei Servo. E questo è teoricamente possibile. Nessuno lo ha ancora fatto ma si tratta solo di far corrispondere gli “Step Per Millimetro” sull’HAL con quello che è la meccanica, e poi considerarli StepPerGrado. Si tratta solo di fare in modo che alla fine di tutto, demoltiplicazioni meccaniche comprese, 90 gradi software corrispondano a 90 gradi hardware.

      3) forse mi è sfuggito qualcosa (anzi …di sicuro) ma ho visto le descrizioni che si riferiscono solo al braccio robotico….e non alle possibilità della configurazione Delta
      Se vai sul Robot Arm in alto c’è una finestrina di selezione e li si cambia da Articolato a Scara, Delta e Cartesiano. Non ci sono istruzioni, solo una immagine nella cartella “Docs” con i nomi degli assi “Delta_Names.jpg” e un file che spiega il significato dei parametri “Delta_Names.txt”.

  11. Livio says:

    Daniele ci ha chiesto:
    Nel caso che metto una condizione IF, tipo se c’è uno scarto vai a tal punto è prendi il pezzo, ma non subito, dopo per esempio 4 volte, come se contasse. Per essere più chiaro dal collaudo allo scarico del pezzo la tavola rotante fa altre 4 fermate. Quindi dalla partenza il primo e buono il secondo e scarto il terzo e buono. Diciamo che dopo la macchina che collauda mi ha dato uno scarto il braccio lo prende e poi quando si è allontanato da un segnale pulito come uno microswich, non so se mi sono spiegato, per dare un input.

    Risposta
    Prima di poter programmare una procedura si deve scriverla o immaginarla mentalmente con precisione. Imparare a programmare non è facile, ci vogliono anni prima di iniziare a scrivere software decente. Per poi scriverlo davvero bene ci vogliono decenni di esperienza.

    Solo per dare una idea, la domanda iniziale diventerebbe qualcosa come le linee seguenti:
    Variabile1 = 0
    IF LeggiSlotScarto > 500
    Variabile1 = Variabile1 +1
    IF Variabile1 > 4
    ScriviSlotX 120
    ScriviSlotY 150
    Gosub PrendiPezzo

    Questo pezzo di programma è scritto in italiano per capirci facilmente, ma va ri-scritto con le istruzioni del linguaggio di programmazione che si usa (Theremino Automation / Theremino Script / VbNet / CSharp )

    Ma prima di iniziare si deve scriverlo (o immaginarlo mentalmente) con precisione, con frase italiane tipo:
    1) se accade questo allora incremento il contatore
    2) se il contatore supera 4 allora faccio quest’altro
    3) altrimenti torno al punto (1)
    e così via…

    Se il problema è ben funzionante a parole, allora funzionerà anche nel programma, altrimenti sarà impossibile tradurlo in un software. Questa fase preliminare si chiama “analisi”.

    Senza esperienza è molto difficile scrivere procedure complesse, che siano qualcosa di più di “accendi un led /attendi 10 secondi / spegni il led”.

    Si possono iniziare a imparare le basi della programmazione esplorando uno per uno tutti gli esempi che sono nelle cartelle di Theremino Automation. Si possono quindi fare esperimenti con questi esempi e con lo SlotViewer ma sempre ricordando che sono solo semplici basi. Procedure di automazione complesse richiedono per forza di passare a linguaggi più potenti.

    La domanda iniziale è già complessa al punto che sarebbe meglio usare VbNet (con VisualStudio 2008).

  12. Livio says:

    Luca ci ha scritto:
    Alcuni mesi fa ho costruito una fresa controllata dal Theremino Master. Le cose vanno molto bene, soprattutto con l’ultima versione del Theremino CNC, con la compensazione delle basse accelerazioni. Ora vorrei accendere l’elettromandrino e l’aspirazione da programma e ho preso due relè a stato solido pilotabili con 3-32 V DC.

    Ho due domande:
    1- posso collegare direttamente il relè al master( il pin al + e GND al – ) o serve qualcos’altro?
    2-posso comandare due relè con un solo Pin, semplicemente sdoppiando il segnale?

    Risposta:
    Si possono collegare i relè direttamente al Master
    – Signal al + del relè
    – GND al – del relè

    Se i relè commutano con 3 Volt allora hanno un margine di 0.3 volt (dai 3.3 volt teorici del Master). E’ poco ma gli basta di sicuro, perché se li danno da 3 volt allora vanno sicuramente anche a 2.5 volt, e quindi hanno quasi un volt di margine.

    Quasi sicuramente se ne possono collegarne anche due in parallelo. Si potrebbe dirlo con sicurezza solo conoscendo la corrente che i relè assorbono con circa 3 Volt di alimentazione.

    Per essere sicuri si dovrebbe provare a collegarne due in parallelo, accendere l’uscita del Master, e poi misurare la tensione che il Master riesce a inviare ai due relè in parallelo.
    Se questa tensione è almeno 3 volt allora non ci sono problemi. Altrimenti si potrebbe riprovare usando una uscita da 7 a 12 (che non hanno il resistore da 100 ohm in serie e quindi danno una tensione leggermente maggiore a parità di corrente assorbita).

    Se in nessun caso si riesce ad arrivare a tre volt con due relè sullo stesso Pin, allora sarebbe meglio collegarli a due Pin diversi e poi unire i Pin, impostandoli con lo stesso Slot nel Theremino HAL.

  13. Livio says:

    Daniele ci ha scritto
    Sto provando a utilizzare VbNet con Visual Studio 2008 ma è complicato iniziare. Con Theremino Automation riesco a fare una buona parte di quello che mi serve… La versione script quante funzioni in più avrebbe? Quali sono le differenze maggiori tra Theremino Script e Theremino Automation?

    Risposta
    Theremino Script è una via di mezzo tra Automation e VisualStudio.

    Con Theremino Script puoi fare tutto quello che si farebbe con Visual Studio, hai la completa potenza e tutte le funzioni di VbNet. Però scrivi tutto in un solo file e se questo all’inizio semplifica l’apprendimento, alcune operazioni diventano poi molto più difficili che con il Visual Studio vero.

    Ecco una lista delle difficoltà di Theremino Script:
    – Fare la finestra che comunica con l’utente è difficile. Si deve essere degli esperti per sapere quali controlli usare (pulsanti, caselle di testo ecc..) e come scriverli, mentre con Visual Studio lo faresti graficamente e ti aiuterebbe lui a impostarli.
    – I suggerimenti per le funzioni sono molto limitati e a volte fuorvianti
    – Non puoi seguire l’evoluzione del programma (come facevi con Automation) e nemmeno puoi aggiungere punti di controllo (break point) e esplorare il valore delle variabili come invece potresti fare con VisualStudio.
    – L’editor è limitato e molto più lento di quello di Visual Studio.

    Comunque Theremino Script è di molto più potente di Theremino Automation. Eventualmente prova a usarlo, contiene molti esempi già pronti da cui partire.

    Un differenza importante da Automation è che Theremino Script può anche produrre vere applicazioni. Cioè file eseguibili (.exe) che possono poi essere avviati facendoci doppio click sopra, anche senza aprire la applicazione Theremino Script.

  14. Gianni says:

    Buon giorno Livio,
    ho visto la vostra scheda Theremino StepperDriver, che supporta due diversi driver.
    Non riesco a trovare da nessuna parte sul vostro portale come collegare il master alla scheda stepper driver, per installare i driver DVR8825 o il A4988 visto che sono differenti come layaout, li installo
    indifferentemente?
    Scusa se sono domande banali ma non ho molta dimestichezza con l’elettronica.
    Grazie
    Gianni

    • Livio says:

      Non sono domande banali, anzi grazie di averci fatto notare questa mancanza.
      Abbiamo aggiunto una immagine che spiega come posizionare i driver:
      http://www.theremino.com/hardware/adapters#stepperdriver

      Riguardo ai collegamenti devi semplicemente collegare la massa del Master con quella della scheda driver con cavetti Dupont femmina-femmina. Quindi GND del Master con Gnd-IN della scheda drivers. Per sicurezza ti consiglio di collegare le masse con almeno due o tre cavetti femmina-femmina.

      Poi, per ogni motore collegherai due cavetti Dupont femmina-femmina tra i SIGNAL del Master e DIR e STEP della scheda drivers.

      Ecco come collegare il primo motore:
      Master Pin1 SIG < ---> Driver1 STEP
      Master Pin2 SIG < ---> Driver1 DIR
      Gli altri motori si collegano nello stesso modo ma con i Pins 3-4, 5-6, 7-8 e 9-10.

      Puoi trovare altre utili informazioni qui:
      http://www.theremino.com/hardware/outputs/motors

  15. Gianni says:

    Grazie 1000
    Gianni

  16. Marco says:

    Caro Livio, Ti disturbo ancora perché ho sostituito la mia vecchia macchina cnc autocostruita con una molto più compatta e, dai primi test, più precisa. Vengo al punto: ho installato un nuovo motore per le frese, un classico dalla Cina da 400W 48V diametro 52mm. Insieme al motore è arrivato un regolatore di velocità relativamente “sofisticato” che può essere pilotato con un potenziometro oppure tramite un connettore “PWM” (siglato Mach3). Il problema che non sono riuscito a risolvere è che il motore non arriva al massimo numero di giri usando l’ingresso PWM collegato a Theremino, paragonato ad orecchio con la velocità ottenibile tramite il potenziometro. Ho provato a pasticciare con i valori dello slot, sia in modo PWM che PWM_fast ma la velocità massima è sempre la stessa, sensibilmente minore di quella possibile. Può essere un limite del circuito del controller o sono io che non riesco a regolare lo slot per avere un duty cicle “continuo” e arrivare al massimo delle prestazioni? Di seguito gli unici dati che ho recuperato sul controller. Grazie!

    1: Default potentiometer control (5K-100K),defaults 10K;

    2: MACH3 -PWM speed control signal input, external PWM input requirements: level 3.5-12V VPP, frequency 1K-10KHZ, suitable for MACH3 spindle speed control.

    3. Rated current: 10A, overload and short circuit protection current 12A. (Over-current cut output, overcurrent indicator flashes, the potential light is off, overcurrent lift).

    4.soft-start function. Prevent excessive current caused by the motor and power damage (default 0 seconds soft start), 0-5 seconds adjustable.

    5.Control power: 12V120W, 24V240W, 36V360W, 48V480W, 60V600W

    6.Pulse width modulation range: 0% -100%

    • Livio says:

      Dato che vuole una frequenza da 1 kHz a 10 kHz dovresti usare il PwmFast e regolarlo da 2 a 5 kHz

      Poi semplicemente metti il “Value” dell Slot del Pwm al massimo (di solito 1000) e il Master emetterà il massimo del tempo, cioè un segnale sempre a 3.3 volt. Se vuoi puoi controllare con un oscilloscopio ma sono certo che è così.

      Se non hai un’oscilloscopio puoi misurare con un tester e quando arrivi al massimo dovrebbe uscire un 3.3 volt fisso.

      Loro però scrivono da 3.5 a 12 volt.
      Non sono sicuro che il 3.5 gli sia proprio necessario ma forse il problema è quello.
      Per verificarlo prova a inviargli un 5 volt fisso e vedere se gira al massimo.
      E poi un 3.3 volt fisso e vedere come gira.

  17. Marco says:

    Grazie per i suggerimenti! Mandando all’ingresso Pwm del controller 3.3V il motore non gira al massimo. A 5V invece gira al 98% (a orecchio…).
    Ho provato con un alimentatore a voltaggio variabile e con quello ho potuto controllare la velocità del motore da zero al max.
    Sto già costruendo l’adattatore da Pwm a 0..5V come da vostri progetti e se mi dici che non ci sono controindicazioni, credo che risolverò il problema. Grazie ancora.

    • Livio says:

      Dovrebbe funzionare.
      Potresti anche eliminare il condensatore C1 e quindi creare un vero PWM (non tensione variabile ma vero pwm da 0 a 5 volt).
      Sarebbe più semplice da costruire e più piccolo. E rispetterebbe le specifiche del tuo motore che (mi sembra di aver capito) vorrebbe un PWM da 1 a 10 KHz e non una tensione variabile.

      • Marco says:

        Ok, fatto! Senza condensatore, funziona benissimo. Quando riuscirò a trovare il tempo, pubblicherò un filmato su Youtube. Un po’ di pubblicità è il minimo che possa farvi. Grazie ancora.

        • Livio says:

          Grazie!!!
          Se vuoi un posto fantastico dove pubblicare le tue creazioni e anche un forum dove discutere di ogni argomento di elettronica e automazione… ti consiglio GRIX.

          I link l trovi in questa pagina:
          http://www.theremino.com/contacts/references#grix

          Il sito theremino è molto tecnico e ha tante (troppe) pagine, ma non ha un forum e quindi non è una vera “community”. Abbiamo però trovato su GRIX un ambiente sereno che ci ospita volentieri.

          Gradualmente le discussioni si sposteranno li.

Leave a Reply

Your email address will not be published.