Master and Slaves


I moduli del sistema Theremino

Questa pagina è dedicata ai commenti e alle idee per i moduli Master e Slaves


Alcuni utenti hanno chiesto come applicare una alimentazione esterna

La soluzione più semplice è usare un HUB USB con presa per i 5 Volt e alimentatore da 5 Volt esterno. Alcuni di questi HUB possono arrivare anche fino a 3 Ampere e oltre. Ma noi consigliamo di non esagerare con la corrente massima, per non rischiare di bruciare i delicati contatti delle prese USB.

Nel caso che il sistema sia composto da Master e Slaves si potrebbero usare gli adattatori visibili in fondo a questa pagina: www.theremino.com/hardware/actuators

Gli adattatori possono interrompere, e alimentare, tutta la catena di Slaves oppure possono essere usati su un singolo attuatore, interponendoli tra il Pin di InOut e l’attuatore con una prolunga standard.

Queste considerazioni valgono per disporre di più corrente sui pin di InOut e NON per alimentare il modulo master dall’esterno.

In tutti i casi si consiglia di non esagerare con la corrente massima e di usare alimentatori protetti contro i corto-circuiti. Fare anche attenzione che non producano disturbi ed extratensioni esagerate quando li si collegano al 220 Volt.

In caso di attuatori con forte corrente di spunto prima di passare alla alimentazione esterna provare con un condensatore da 4700 uF tra +5V e Massa. Il condensatore può essere saldato al master, oppure si possono usare i pin rimasti liberi per accedere al +5 e alla massa e collegare il condensatore con un piccolo connettore femmina.

Nel caso sia proprio necessario alimentare i PIN del master dall’esterno fare come indicato in questa immagine.

——————————————

Led del Master che non si accende

Se il led del Master non si accende non andate a cercare guasti nel sistema USB o nei driver di Windows, è più probabile che sia il led stesso.

——————————————

Scrivete qui domande e consigli, così saranno utili a tutti.

  1. Gianni.carr says:

    Ciao Livio sono Gianni (cnc modificato) mi sono arrivati i driver :TB6600 Upgraded Version 32 Segments 4A 40V 57/86 Stepper Motor Driver

    Ma non riesco a farli funzionare.
    Hai qualche indicazione da darmi sui collegamenti master e driver?
    Grazie molte

    • Livio says:

      Non dovrebbero esserci avvertenze speciali, colleghi GND con GND, poi colleghi il segnale STEP e il segnale DIR e dovrebbe funzionare.

      Avrai mica scambiato i fili dei motori? Vanno collegate le coppie giuste.

      Avrai mica i numeri di slot sbagliati nella applicazione HAL o nella app CNC?

      Stai tenendo la applicazione HAL avviata?

      Nella applicazione CNC tieni i due tasti “IN OUT enabled” e “HAL enabled” (in alto a destra) accesi?

      Non ho provato personalmente quei driver per cui non so se c’è anche una abilitazione da dargli, in tal caso devi dargli una massa o un +5 al filo di abilitazione.

      Se non riesci scrivimi a “engineering chiocciola theremino punto com” e ci sentiremo per telefono o skype.

      • Gianni.carr says:

        Ciao Livio.. questa mattina ho fatto qualche prova e ho trovato:

        master — driver
        gnd — dir –
        dir — dir +5v
        step — pulse –
        +5v — pulse +5v

        notare che la stampa sulla copertura dei driver non è corretta rispetto allo stampato interno:
        le diciture delle uscite dei motori sono invertite tra a e b ma le polarità sono rispettate, quindi non si sono problemi particolari se non l’inversione della direzione.

        i driver vanno benissimo e sono passato da vel 800 e acc 25 a vel 2000 e acc 1500 il tutto con 3,2 ah….posso aumentare fino a 4 ah

        Grazie Livio delle dritte

        • Livio says:

          Il collegamento dovrebbe essere così:

          master ......... driver
          -----------------------
          gnd ............ dir -
          dir ............ dir +
          gnd ............ pulse -
          step ........... pulse +

          • Gianni.carr says:

            avevo provato così come dici ma i motori andavano solamente in una direzione soltanto anche con comandi contrari

            • Livio says:

              La parte DIR (che determina la direzione) la avevi collegata come nella mia tabella. Per cui eventuali differenze potrebbero essere sui passi di movimento e non sulla direzione del movimento.

              Quindi probabilmente il problema del mancato cambio di direzione era dovuto ad altro.

              Collegando secondo la tua tabella hai gli impulsi di step (passi del motore) al contrario.

              Lavorare con impulsi al contrario non dovrebbe comportare problemi perché abbiamo curato il firmware in modo da poter lavorare indipendentemente sia con impulsi negativi che positivi (in altre parole facciamo in modo di finire ogni movimento con il fronte giusto e quindi evitiamo di perdere un passo ad ogni fine movimento).

              Però alcuni driver dei motori potrebbero non lavorare bene con impulsi che hanno la parte alta più larga di quella bassa. Ti consiglio di collegare come da tabella e se non funziona scoprire il perché.

            • Livio says:

              Mi sta venendo un dubbio….

              Non è che internamente al driver i due ingressi marcati +5V sono collegati insieme?

              Hai uno schema del driver?

            • Livio says:

              Sono andato a cercare lo schema e sembra essere questo:
              http://www.sainsmart.com/zen/documents/20-019-209/ST-M5045%20Instruction%20manual.pdf

              Si direbbe che i tre fotoaccoppiatori siano totalmente isolati uno dall’altro, quindi dovrebbe andare.

              Non è che hai unito Dir+ e Pul+ con un filo come indicano nella immagine “Typical connection”?

              Altra possibilità è che hai aggiunto i resistori “R” e che quindi i nostri 3.3 volt non bastino più. I resistori “R” esterni vanno eliminati di sicuro.

              Non riesco a trovare le caratteristiche di tensione minima. So che in molti li hanno usati con 3.3 volt e quindi dovrebbero andare. Eventualmente, per essere sicuri di pilotarli con abbastanza corrente, andrebbero ridotti anche i resistori interni da 240 ohm a 100 ohm o anche meno (il nostro master ha già i resistori sulle uscite).

  2. vital1 says:

    Sorry, posted in the wrong location. Please delete.

  3. Livio says:

    Marco ci ha scritto:
    … Cosi’ facendo, con Arduino create una brutta copia del Master che però fa delle cose che il Master non sa fare. Questo fa fare brutta figura al Master, perché mette in evidenza dei suoi presunti limiti…

    Risposta:
    Il nostro sistema è un InOut per PC usabile anche da chi non sa programmare. Se lo complichiamo troppo perde la sua caratteristica di minimalismo. Quindi ha per forza dei limiti.

    Marco ha scritto:
    … e presenta comunque Arduino come qualcosa di molto più limitato di quello che è, quasi denigrandolo, quando invece esistono Arduino, e compatibili ,molto più potenti del Nano e dell’Uno …

    Risposta:
    Le schede Arduino, per quanto potenti, quando usate come In Out per PC, risentono inevitabilmente del collo di bottiglia causato dalla seriale virtuale.

    Applicazione -> O.S. -> Seriale -> USB -> CH340 (o simili) -> Arduino -> CH340 -> USB -> Seriale -> O.S. -> Applicazione

    In tutti questi passaggi qualche millisecondo lo si perde per forza. E non è tanto l’Arduino a perderlo, ma il driver della seriale virtuale e il sistema operativo del PC. Il kernel che assegna i task sul PC (ma anche su Linux e Mac), lavora con granularità di un millisecondo, per cui si perde più o meno un millisecondo ad ogni conversione.

    E’ già un miracolo che il master arrivi quasi a 1000 scambi al secondo. Sono 1000 scambi completi, andata e ritorno, per tutti i Pin contemporaneamente.

    Ed è inevitabile che una seriale virtuale, con tutti i passaggi che deve fare, perda almeno quattro millisecondi e che quindi abbia un limite intorno ai 250 scambi al secondo. Per cui non si tratta di denigrare. Per le applicazioni stand alone Arduino va benissimo, ma come modulo di InOut sarà sempre inferiore al Master.

    Potrebbe sembrare che 1000 o 250 scambi al secondo non siano una grande differenza. Ma per gran parte delle nostre applicazioni lo sono. Con 1000 scambi si ha una banda passante di 500 Hz e quindi si vede fino alla decima armonica del 50 Hz. Questo rende possibile applicazioni come il FlickerMeter e il Wave Analyzer per analizzare la qualità del 50Hz.

    Invece 250 scambi al secondo fanno una banda passante di poco più di 100 Hz, che sono proprio il minimo sindacale. Vanno ancora bene per applicazioni di automazione, ma se si scende ancora di poco non si possono nemmeno più muovere bene i motori, o fare una retroazione che non dondoli e vada a scatti.

  4. Livio says:

    Riguardo al Post precedente ci hanno scritto:
    Tutto il ragionamento fila se nel trasferimento sei obbligato a mettere un solo valore per volta, vuoi per limiti di campionamento della periferica, vuoi per limiti del canale di comunicazione tra PC e periferica.

    Ma se, per esempio, una periferica riuscisse a campionare internamente con una frequenza 10 volte maggiore di quella di trasferimento e riuscisse a trasferire in una sola volta i valori dei 10 campioni al PC perché il canale di comunicazione glielo permette, e il PC fosse così potente da poter fare in una volta sola i calcoli di ognuno dei 10 nuovi valori, ripetendo il calcolo 10 volte includendo uno solo dei 10 nuovi campioni per volta, non si otterrebbe una banda passante effettiva di 10 volte superiore? Il ritardo nella elaborazione e nella fruizione dei risultati, pari al tempo di trasferimento dei dati, sarà sempre costante, tanto vale trasferire più dati che si può ad ogni trasferimento.

    Se ho capito bene ciò che ho descritto permetterebbe un aumento della banda passante, da non confondere con il sovracampionamento che aumenta il rapporto segnale/rumore, e si svolge esclusivamente lato periferica.

    Risposta:
    Quello che descrivi non è più lavorare in tempo reale ma in “batch”, cioè su lotti di campioni. Si deve quindi aspettare che tutti i campioni del batch siano arrivati prima di poter rispondere e si perde la possibilità di intervenire se, ad esempio, dopo il terzo campione si vede che è ora di modificare i dati di uscita.

    Inoltre.
    Fino allHAL si potrebbe inviare un pacco, ad esempio, di cento campioni. Ma poi dovrebbe lui stesso elaborarli e quindi si dovrebbe modificare l’HAL per ogni nuovo compito. Non si possono mandare 100 campioni alle altre applicazioni (attraverso il nostro meccanismo degli slot) se non con tecniche di sincronismo incasinate e comunque non più di un campione ogni due o tre millisecondi.

    E c’è anche un terzo aspetto che impedirebbe comunque di inviare troppi dati ad ogni scambio.
    Il massimo pacchetto USB per i dispostivi HID è limitato e basta appena per inviare i dati di tutti i Pin del Master e dell’Adc. Per inviare pacchetti più grandi si dovrebbe utilizzare un metodo non HID. E quindi si perderebbe una delle prestazioni più importanti del nostro sistema, cioè di collegare il Master e vederlo funzionare subito, su tutti i Windows, senza problemi di driver.

  5. Livio says:


    ——————————
    Luigi ci ha chiesto
    —————————–

    Come posso collegare più di 6 pulsanti capacitivi?


    —————————–
    Risposta
    —————————–

    I Master possono leggere 6 tasti capacitivi. Gli Slaves potrebbero leggerne 8, ma con complicazioni aggiuntive, per cui non li consigliamo. In alcuni casi si potrebbero usare più master, e collegarli con un HUB USB, per avere un solo cavo che va al PC.

    OnOff
    Si potrebbero collegare 12 tasti capacitivi OnOff ad ogni Master, con l’adattatore spiegato qui:
    https://www.theremino.com/hardware/inputs/sensors#caponoff

    Se si dispone ogni adattatore vicino al suo sensore, poi i fili verso il Master potranno essere di qualunque lunghezza.

    Questi adattatori sono acquistabili su eBay per circa un Euro.

    Usare Arduino
    Si potrebbe anche usare un ArduinoNano, collegato alla nostra applicazione ArduHAL. ArduHAL invierà i dati agli Slot e quindi da li in poi è come se avessimo utilizzato un nostro Master. Attraverso gli Slot si potranno collegare tutte le nostre applicazioni.

    L’Arduino andrebbe programmato con la libreria per i tasti capacitivi
    http://playground.arduino.cc//Main/CapacitiveSensor

    Non abbiamo provato, ma probabilmente con un Arduino Nano si possono leggere fino a 21 tasti capacitivi.

    Attenzione che i fili devono essere corti (massimo una decina di centimetri), e distanti uno dall’altro per non influenzarsi.

  6. Livio says:

    Fabio ci ha chiesto
    Ho un problema con Hal, ogni tanto, senza motivo apparente, si disconnette impedendo la lettura delle sonde e quindi blocca l’esecuzione del programma. Qualche idea?

    Risposta
    I moduli Master interrompono la comunicazione USB quando ricevono un tensione superiore a 3.3 volt su un Pin di Input.
    Basta che la tensione superi i 3.6 volt, con almeno 100 uA di corrente, per un brevissimo istante (pochi microsecondi) e la USB si blocca.
    Purtroppo è un, diciamo difetto, dei Micro utilizzati, i PIC prodotti da Microchip.
    Il modulo Master ha buone protezioni, per cui non si rompe niente, ma la USB si blocca e si deve premere Riconosci.

    Questo può succedere per i seguenti motivi:
    – Un sensore è alimentato a cinque volt e in alcuni momenti genera tensioni superiori a 3.3 volt.
    – Collegamenti lunghi e non schermati, che prendono disturbi capacitivi da altri cavi vicini.
    – Collegamenti di massa instabili, che toccano male o che sono lunghi e piccoli.
    – Disturbi sui collegamenti di massa, provocati dalla accensione di forti carichi o di alimentatori.
    – Alimentatori aggiuntivi collegati alla rete e con le masse cablate in modo errato.

    Ci sono varie soluzioni
    – Alimentare i sensori a 3.3 volt, invece che a 5 volt.
    – Utilizzare i Pin 7,8,9 che tollerano anche i 5 volt.
    – Aggiungere un resistore in serie all’ingresso (decine di Kohm) in modo da limitare la corrente a 50 uA o meno.
    – Non utilizzare collegamenti lunghi e non schermati.
    – Curare bene la distribuzione delle masse (robuste e a stella).
    – Non utilizzare alimentatori aggiuntivi, ma solo il 5 volt della USB.
    – Se si utilizzano alimentatori aggiuntivi, la loro massa (GND) va collegata a quella PC e non al Master.

    Una soluzione estrema (da applicare solo se non si può mettere a posto l’hardware).
    – Le ultime versioni di HAL scrivono nello Slot zero il numero di Master collegati.
    – Si utilizza un software apposito, o si modifica uno dei nostri.
    – Il software legge periodicamente lo Slot zero.
    – Se il valore dello Slot zero è uno, o maggiore di uno, tutto bene.
    – Altrimenti il software manda all’HAL un comando “Riconosci” (leggere le istruzioni dell’HAL).
    – Dopo un comando “Riconosci” Il software attende un secondo prima di ricontrollare.

    Vedere anche queste pagine:
    https://www.theremino.com/technical/connection-cables#long
    https://www.theremino.com/technical/communications#pullup
    https://www.theremino.com/technical/pin-types
    https://www.theremino.com/hardware/devices

  7. Livio says:

    Giorgio ci ha scritto
    Per una centrale termica dovrei misurare le temperature. Normalmente in termoidraulica si usano le NTC (per risparmiare) o le PT100 – PT1000. Le ultime sono più affidabili e ci si può allontanare di parecchi metri.

    Risposta
    Ti consiglio di usare gli LM35 per tutte le sonde da -55 a +150 gradi.
    Guarda in questa pagina come collegarli:
    https://www.theremino.com/hardware/inputs/meteorology-sensors#temperature

    Le PT1000 non sono più precise, hanno il solo vantaggio di poter leggere fino a 500 – 700 gradi
    In compenso le PT1000, e ancor peggio le PT100, sono più difficili da leggere (ci vorrebbe lo Adc24 con collegamento a 3 o 4 fili e funzione di linearizzazione) e se non le leggi bene sono notevolmente più imprecise degli LM35.

    Per lunghe distanze devi utilizzare un cavo schermato con due fili interni.
    Con sonde LM35 la resistenza del cavo non conta niente e, se il cavo è schermato, puoi andare lontano anche centinaia di metri. L’unica preoccupazione sono i fulmini, quindi prima di arrivare alla centralina dovresti collegare la calza del cavo schermato a terra.

    Per renderle stagne prendi un tubetto di plastica chiuso in fondo, che ci stia bene lo LM35 più connessioni e cavetto schermato. Poi lo riempi di resina bi-componente o anche solo di silicone. Ti posso assicurare che potrà stare alla pioggia e al gelo per decenni (prima di sigillare prova che funzioni bene, cioè che sia ben collegata e che non ci siano corti).

  8. Livio says:

    Giorgio ci ha scritto
    Dovrei misurare con precisione la frequenza di rete, come posso fare?

    Risposta
    Per leggere la frequenza di rete procurati un piccolo trasformatore da 220 a 6, 12 o 24 volt (con uscita in alternata) poi collegalo al master con il circuito per misurare la tensione che vedi in questa pagina: https://www.theremino.com/hardware/adapters#powermeter

    Il circuito è però adatto a misurare la tensione con un ingresso ADC, mentre nel tuo caso dovrai avere un segnale più alto e adatto per un ingresso “Period”. Quindi il circuito va modificato dimezzando R1

    Il valore di R1 dovrà essere:
    – 330K se il trasformatore è da 24 volt alternata
    – 150K se il trasformatore è da 12 volt alternata
    – 82K se il trasformatore è da 6 volt alternata

    Attenzione che il trasformatore deve essere “puro”, senza componenti (diodi o condensatori), e quindi deve dare in uscita 6, 12 o 24 volt in alternata.

    Poi il Pin di ingresso lo devi configurare come “Period” e gli devi abilitare il quadratino “Converti in frequenza”

    A questo punto nello Slot associato troverai il valore di frequenza in Hz preciso fino ai millesimi di Hz. Se la frequenza è instabile puoi fare la media nel tempo abbassando la velocità di risposta nell’HAL, e anche premendo il pulsante “Velocità di risposta” (“Response speed” se hal è configurato in inglese).

  9. Vincenzo says:

    Buongiorno Livio, sarebbe possibile usare un master per connettere un wired MPG al software MACH3?
    usando eventualmente la simulazione della pressione su tastiera come si fa con un Joystick e Keygrabber o similari.
    Saluti.
    Vincenzo

    • Livio says:

      No, mi dispiace, MACH3 funziona solo con la porta parallela e solo come è stato progettato.
      Quindi se usi Mach3 non potrai collegarlo a nulla del nostro sistema, non comunica con i nostri software e nemmeno con i nostri moduli hardware.

      • vincenzo says:

        Ok, pensavo che si potesse associare un evento elettronico in ingresso del master in simulazione pressione tasto del PC.

        • Livio says:

          Non conosco bene Mach3 ma mi sembra che abbia molte opzioni. Quindi credo che possa lui stesso leggere i tasti del PC.

          Se non può farlo allora dovresti vedere che informazioni puoi inviargli attraverso l’unica sua via di comunicazione hardware, cioè i fili della porta parallela.

          Se (nelle istruzioni del Mach3) trovi uno filo della parallela (o più fili) che, alzati o abbassati, facciano qualcosa di utile, allora poi potresti collegarli alle uscite del Master e pilotarli con tasti della tastiera. Non potrai fare gran che ma qualcosa forse ne viene fuori. Tutto dipende da cosa può fare Mach3 in risposta ai fili della parallela.

  10. vincenzo says:

    Ciao, quello che fai con un click del mouse su mach3 ha una corrispondente azione da tastiera.
    Usando Xpadder ho configurato un joystick che agisce sui comandi associati alla tastiera e funziona.
    ecco perchè pensavo che si potesse inviare tramite la combinazione master/hal/software un’azione pressione tasto come fa xpadder.
    saluti

Leave a Reply to Angelo Cancel reply

Your email address will not be published.