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:
    http://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.

Leave a Reply

Your email address will not be published.