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 20xx 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. Luca says:

    Buongiorno a voi.
    Ho acquistato una scheda Theremino StepperDriver che servirà a sostituire l’elettronica orginale di una cnc cinese che utilizzo per produrre PCB. Ho visto che la suddetta scheda può gestire oltre ai motori anche 2 linee di potenza con mosfet, quindi immagino che ci si possa collegare anche un elettromandrino. Non ho trovato però istruzioni dettagliate su quali siano le porte per gestirlo e dalle immagini che trovo in rete, mi rimane qualche dubbio. Sapete anche se esiste un pdf con tutte le info per la schedaStepperDriver?
    Ringrazio anticipatamente per la vostra risposta.

    • Livio says:

      Solitamente i mandrini funzionano a tensione di rete, quindi i mosfet di questa scheda non possono pilotarli. Questi Mosfet sono pensati per regolare in PWM le resistenze di riscaldamento delle stampanti 3D.

      Per accendere e spegnere il mandrino dovresti utilizzare un relè meccanico o il nostro OptoTriac (ma attenzione alla potenza sopportabile e al raffreddamento del Triac). Per regolare il mandrino in velocità dovresti inviargli il Pwm da una uscita del Master e avere una adattatore Pwm che regga la potenza. Oppure il mandrino stesso dovrebbe accettare un segnale Pwm.

      La scheda Stepper Driver è spiegata in questa pagina:
      https://www.theremino.com/hardware/adapters

      I Pin e gli Slot da utilizzare sono spiegati nella documentazione della applicazione CNC (gli Slot da usare sono a pagina 43).

      Per i concetti generali sul funzionamento degli Slot dovresti anche leggere la documentazione della applicazione HAL e dei moduli Master.

      —-

      Se ti serve altro chiedi, ma spiega nei particolari quello che non ti è chiaro, così potremo concentrarci su quello che ti serve.

  2. Marco says:

    Qualche tempo fa ho chiesto consigli a Livio su come produrre un gcode per Theremino CNC con Eagle e Fastgcode.ulp. Se ricordi il gcode prodotto si limitava alle forature del circuito “stampato” e non disegnava le piste. Avevo fatto anche degli screenshot della pagina di configurazione di Fastgcode per farmi aiutare. Alla fine avevo rinunciato per questioni di tempo e avevo usato un altro software per il gcode. Ieri, però, ho finalmente risolto il mio problema e tutto funziona perfettamente con il tuo Fastgcode 7.9, era necessario impostare almeno due step di profondità sull’asse Z, in una qualunque delle caselle (io l’ho fatto per la fresatura del contorno della board). Grazie ancora per la tua disponibilità

    • Livio says:

      Grazie per le tue prove.
      FastGcode è una applicazione poco usata e alcune operazioni sono difficili da capire o anche difettose.

      E’ consigliabile provare anche le versioni precedenti, che non avevano la foratura per prima. Le ultime versioni, con la foratura all’inizio, sono state provate poco e potrebbero avere dei difetti.

  3. Luca says:

    Buongiorno,sono ormai tre anni che utilizzo theremino master per far funzionare una fresatrice a tre assi per legno con ottimi risultati. Ora ho provato a guidare una torcia al plasma per il taglio dei metalli ma ho subito incontrato delle difficoltà perchè quando si accende la torcia molte volte si interrompe la comunicazione usb e HAL va in errore. Sto usando un taglio plasma economico con accensione a contatto perchè macchine studiate per il cnc costano migliaia di euro. Ho preso un cavo usb schermato ma non ho migliorato di molto le cose. Volevo sapere se ci sono dei filtri o delle protezione per impedire le interferenze elettromagnetiche. La partenza del taglio è gestita da un pin del master che attiva un SSR che a suo volta attiva un relè elettromeccanico a 220 volt che chiude il circuito del tasto di partenza sulla torcia(ho fatto cosi’ per utilizzare le uscite a 220 volt comandate dal master per aspiratore e mandrino).
    Grazie , Luca Aste

    • Anonymous says:

      Non è il cavo USB a raccogliere disturbi, ma i fili che vanno dal Master verso i driver dei motori Stepper e verso i sensori (pulsanti manuali e finecorsa).

      Scollega dal Master tutti i fili (proprio dalla schedina del Master non dall’altro lato).
      E scollega anche i fili di massa che vanno ai driver e ai sensori.
      Il Master quindi sarà collegato solo alla USB.

      Controlla anche di avere la massa del PC collegata alla terra dell’impianto elettrico.

      In queste condizioni prova ad accendere e spegnere la torcia più volte e la comunicazione non dovrebbe mai staccarsi.

      Poi collega solo uno dei sensori e riprova

      Poi collega solo un motore stepper e riprova.

      Una volta individuato da quale filo (o da quali fili) i disturbi arrivano al Master, ci concentreremo su di lui e aggiungeremo dei resistori per eliminare completamente il problema.

      Per i finecorsa e i pulsanti manuali i disturbi si eliminano completamente aggiungendo due resistori come spiegato qui:
      https://www.theremino.com/technical/communications#pullup

      Se invece i disturbi arrivano dai driver degli Stepper, allora vanno collegati alla terra dell’impianto elettrico anche i negativi degli alimentatori dei driver degli stepper.

      • Luca says:

        Grazie, farò queste prove e poi vi dico!

        • Luca says:

          Finalmente ho potuto fare le prove. Dalle informazioni che ho trovato il sistema di accensione non è ad alta frequenza ma ha una bobina che manda delle scariche ad alto voltaggio(un po’ come un vecchio accendigas). Ho staccato tutto dal master ma,facendo partire l’accensione dopo due tre volte salta la comunicazione usb e si interrompe il programma cnc. Ho collegato la terra del banco di taglio al centro delle terre dell’impianto (facendo memoria dei consigli sulla messa a terra)ma il problema si è ripresentato. Ho fatto funzionare il plasma in una stanza vicina sotto un’ altra linea ma,se mi avvicino a un metro dal computer e faccio partire l’accensione,salta di nuovo la comunicazione. Se invece metto la tagliatrice vicino al computer ma sto lontano con la torcia allora posso accendere quanto voglio e non c’è nessuna interferenza.Poi ho notato che posso avvicinarmi con la torcia al computer facendo funzionare l’accensione senza provocare interruzioni solo se tengo nelle vicinanze del cavo della torcia quello della massa che si attacca al metallo da tagliare(?!!) Questo mi farebbe pensare che magari mettendo uno schermo in rame al cavo torcia e collegandolo a terra potrebbero migliorare le cose…. Cosa ne pensi?Grazie , Luca

          • Livio says:

            Dato che parli di alta tensione, immagino che la corrente che passa lungo il cavo della torcia sia molto piccola, quindi schermi elettrici (alluminio o rame sottile) dovrebbero schermare totalmente i disturbi.

            Quindi potresti provare ad avvolgere il cavo della torcia con un foglio di alluminio da cucina (almeno per prova, poi se funziona potresti studiare di meglio).

            All’inizio del cavo della torcia dovresti avvolgere, attorno all’alluminio, un po’ di spire di filo nudo e poi collegare questo filo alla terra.

            Poi forse dovresti anche schermare la torcia stessa.

            Controlla poi anche che la scatola da cui esce il cavo sia metallica e messa a terra. Prova con il tester, non ti fidare. Dopo molti anni che lo usavo, ho scoperto che il mio alimentatore da banco, aveva la scatola non collegata a terra. E infatti tutte le volte che lo accendevo e spegnevo generava disturbi. Gli ho spellato la vernice sotto la vite di messa a terra ed è andato a posto.

            Se non funziona allora ci sono accoppiamenti magnetici, ad esempio tra il trasformatore che genera l’alta tensione (che però dovrebbe essere fatto malissimo e avere normi perdite), e il cavo USB.

            Sono abbastanza stupito che sia possibile far perdere la comunicazione al Master nudo, senza alcun filo collegato ai Pin. Magari riprova ma con il cavo USB non disteso (tutto ammucchiato a “S”, vicino al PC e con il Master sopra). In questo modo verificherai se è il cavo USB a captare il disturbo.

            Prosegui con le prove, solo tu procedendo passo-passo e con metodo, come hai fatto finora, potrai capire cosa succede. E, per piacere, quando avrai ben capito cosa si accoppia e dove, scrivilo qui. Che sono davvero curioso di capire come succede.

            • Luca says:

              Grazie per l’idea dello schermo. Controllerò anche la messa a terra della scatola del plasma che è metallica.Poi ti farò sapere. Ho visto anche l’aggiornamento per la protezione ai pin di input con il condensatore oltre che i due resistori. Proverò anche quello in quanto la sola protezione con i resistori non era sufficiente e avevo dovuto staccare tutti i finecorsa perche’ mi si interrompeva la comunicazione usb (anche solo con la fresa)

              • Livio says:

                Avevi messo il resistore di protezione da 330k vicino al Master ?

                Se è così allora hai dei disturbi indotti sui fili veramente enormi, centinaia di volt. Se capita con tutto messo a terra, allora c’è qualcosa di molto strano e dovresti scoprire cosa è.

                • Luca Aste says:

                  Finalmente son riuscito a fare nuove prove con il plasma. Ho aggiunto uno schermo in maglia di rame sul cavo torcia ,ho aggiunto un filtro emi in entrata sul taglio plasma e uno sull’alimentazione computer-controllo ,ho fatto partire un gcode e ho continuato a innescare l’arco plasma e tutto funziona!

  4. Livio says:

    Leo ci ha chiesto

    Nella applicazione HAL le regolazioni dei motori stepper sono in “mm al minuto”, “mm al secondo per secondo” e “Steps per mm”. Questo mi rende difficile fare i calcoli quando invece che millimetri voglio usare i giri del motore, oppure i gradi.

    Risposta

    Abbiamo utilizzato i millimetri perché la maggioranza dei lettori ha un motore stepper che ogni giro muove una fresa di un millimetro, oppure di due millimetri. Per cui in questi casi diventa facile fare i conti.
    – Il motore ha 200 passi per giro
    – Se ogni giro fa un millimetro allora sono 200 step per mm

    Poi da qui si derivano facilmente gli altri casi:
    – Se ogni giro facesse due mm allora sarebbero solo 100 step per mm
    – Se poi regolassi il driver con i microstep per 8, allora sarebbero 800 passi per mm.

    In alcuni casi (raramente) potrebbe essere utile ragionare in unità di misura diverse dal mm. Ad esempio in pollici, o in gradi, oppure in giri del motore. In questi casi basterà sostituire mm con la nuova unità e procedere sempre nello stesso modo.

    Volendo si potrebbe anche aprire il file della lingua che si usa e cambiare il testo che si vuole far apparire in Label_MaxSpeed, Label_MaxAcc e Label_StepsPerMillim. Non consigliamo di fare questo perché è scomodo e perché non è nemmeno detto che si vogliano tutti i motori con la stessa unità di misura.

    Per cui semplicemente dove c’è scritto “mm”, fate conto che ci sia scritto “metri”, “gradi”, “pollici”, “giri”, o qualunque altra unità di misura lineare o circolare.

    Attenzione però che quando poi si invieranno dati al motore dovranno essere nella stessa unità che si è utilizzata per scrivere nelle caselle dell’HAL.

    ——————-

    Tanto per fare due esempi ecco come si fanno i conti, ragionando in giri motore o in gradi al posto che in mm.

    I prossimi due esempi rispondono alla domanda:
    “Considerando che il Master ha una massima frequenza di emissione degli Step di 65 Khz”
    “E considerando di avere un driver del motore regolato per 256 microstep”
    “Quale è la velocità massima del perno di uscita del motore, in gradi e in giri al minuto?”

    —————————————————————————————————–
    Max Speed in “degree”
    (for a stepper motor with 200 step per tourn and 256 microsteps)
    —————————————————————————————————–
    Motor = 200 steps / tourn
    Motor with microsteps = 200 x 256 = 51200 steps / tourn
    The same in degree = 51200 / 360 = 142.22 steps / degree

    Master max pulse frequency = 65500 pulses per second
    Motor max speed = 65500 / 142.22 = 461 degree / sec (approx)
    Motor max speed = 461 x 60 sec = 27660 degree / min (approx)

    —————————————————————————————————–
    Max Speed in “tourns”
    (for a stepper motor with 200 step per tourn and 256 microsteps)
    —————————————————————————————————–
    Motor = 200 steps / tourn
    Motor with microsteps = 200 x 256 = 51200 steps / tourn

    Master max pulse frequency = 65500 pulses per second
    Motor max speed = 65500 / 51200 = 1.28 tourns / sec (approx)
    Motor max speed = 1.28 x 60 sec = 76.8 tourns / min (approx)

Leave a Reply to Anonymous Cancel reply

Your email address will not be published.