Robotica e CNC


Blog per la Robotica e le macchine CNC


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 del dicembre 2014: il nuovo firmware dei Master, aumenta il numero di PIN da 6 a 10, quindi ora avanzano ben sei PIN per usi generici.

– – – – – – –

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.

Leave a Reply

Your email address will not be published.