Motori passo passo (steppers)
ATTENZIONE: Per abilitare i Pin di tipo Stepper, Stepper_Dir e Pwm_Fast è necessario usare almeno la versione 5.0 dell’HAL, e il modulo Theremino Master deve essere aggiornato con il firmware 3.2 o successivi.
Per scoprire di quale firmware si dispone basta usare l’HAL più recente, collegare il Master e contare i Pin. I firmware originali avevano solo sei Pin, dalla versione 3.2 ne hanno 10 e dalla versione 4 ne hanno 12.
I firmware più recenti (4.0) aggiungono sei nuovi Pin al Master (che passa da 6 Pin a 12 Pin). Perciò, con ogni modulo Master, si possono controllare, da tre motori più sei pin generici fino a cinque motori più due pin generici. Eventualmente si possono aggiungere ulteriori Master e Slaves.
Caratteristiche del controllo stepper con il firmware Theremino:
- Gestione ultra-semplice in classico stile thereminico.
- Il software deve inviare un solo dato, la destinazione in millimetri (Nota 1)
- Campo di lavoro utile da -10 a +10 Km (chilometri) (con steps per mm = 200)
- Gestione di macchine CNC fino a cinque assi.
- Gestione di macchine tipo RepRap fino a sei motori (x, y, z, secondo z in gantry e due estrusori). Si possono quindi estrudere anche due colori.
- Oltre 65 KHz di frequenza massima su tutti e cinque i motori contemporaneamente (Nota 2)
- Jitter inferiore ai 20 nano secondi (Nota 3)
- Velocità massima regolabile (da 1 a 18000 mm/min) (Nota 4)
- Accelerazione massima regolabile (da 5 a 1000 mm/s/s) (Nota 4)
- Report di controllo della posizione raggiunta, in millimetri, per ogni asse (Nota 5)
- Possibilità di usare assi indipendenti o coordinati in 2D e in 3D (Nota 6)
- Con assi coordinati in 2D o 3D, Scrivere applicazioni di controllo diventa facile. Non è necessario calcolare accelerazioni e velocità. Si possono inviare semplici comandi di destinazione, in millimetri. (Nota 7)
- Impulsi con larghezza automatica. L’uso è semplificato e non si rischiano perdite di passi, causate da una errata impostazione di questo parametro. Si possono usare foto-accoppiatori lenti, se si limita la velocità massima (Nota 8)
- Polarità automatica. L’uso è semplificato e si evitano perdite di passi, causate da errata impostazione di questo parametro (Nota 9)
(Nota 3) Come confronto: Mach3 ha un Jitter 500 volte maggiore (da 2 a 15 uS a seconda del PC). Avere un Jitter molto basso, permette di lavorare alla massima velocità senza rischiare di perdere passi. I difetti di temporizzazione del Mach3 sono ben spiegati in questo articolo.
(Nota 4) Il firmware protegge il motore da ogni errore. Se il PC si blocca per un certo tempo, il firmware rallenta gradualmente, senza perdere passi. Lo stesso accade se i dati vengono inviati con tempistica irregolare o contengono errori.
(Nota 5) Il software può leggere la distanza mancante, ogni millisecondo, per ogni singolo asse e con alta precisione (frazioni di millesimo di millimetro). Non è necessario usare queste informazioni, ma alcune applicazioni possono trovarle molto comode. Possono essere utili a scopo diagnostico, o per algoritmi che devono rispettare una tolleranza specificata. Disponendo di questa informazione il software può lavorare ad anello chiuso e sempre alla massima velocità. Controllando continuamente la distanza di ogni motore dalla destinazione, il software può rallentare esattamente quando serve, senza fare complessi calcoli di velocità, traiettorie e accelerazioni.
(Nota 6) Nella versione 5.0 dell’HAL il coordinamento degli assi non è completo. Le applicazioni importanti se ne occupano loro stesse, stiamo quindi privilegiando la applicazione Theremino CNC, e solo dopo finiremo il coordinamento degli assi.
(Nota 7) Le destinazioni intermedie vengono reimpostate, fino a 500-1000 volte al secondo. Il miglior percorso, viene continuamente ricalcolato. L’algoritmo di controllo tiene conto, delle effettive posizioni raggiunte da ogni motore e delle accelerazioni massime che può sopportare. Anche se la applicazione CNC calcola male il percorso, si evita in ogni caso di perdere passi.
(Nota 8) Solitamente si deve specificare la larghezza degli impulsi (con Mach3 da 1 a 15 uS). Questo è un parametro poco comprensibile e molti utenti lo regolano in modo casuale. Usare impulsi larghi permette di interporre dispositivi elettronici lenti, come alcuni foto-accoppiatori (ad esempio gli economici 4N25, 4N26 e 4N27). Ma impulsi larghi limitano la massima velocità usabile. Theremino regola questo tempo a 50 uS (permettendo di usare elettronica lenta per macchine lente), ma lo riduce automaticamente se si usano alte velocità e alti valori di microstep. Fino a un minimo di 7.7 uS, quando si usa la massima frequenza (65.535 KHz).
(Nota 9) Con altri generatori di impulsi (ad esempio Mach3) si deve specificare la polarità degli impulsi. Per impostarla si deve conoscere se il driver agisce sul fronte di salita o su quello di discesa. Questa informazione non sempre è disponibile e se si sbaglia possono avvenire sporadiche perdite di passi, molto difficili da individuare. Teoricamente usare il fronte sbagliato non dovrebbe causare problemi, perché ad ogni fronte di salita, segue necessariamente un fronte di discesa. Ma, se lo stato del segnale di direzione viene aggiornato nel momento sbagliato, possono verificarsi perdite di passi, o passi aggiuntivi. Il firmware del Theremino Master controlla il segnale di direzione con cura. Quindi il segnale può essere usato anche per pilotare drivers (una minoranza) che agiscono sul fronte di discesa. Eliminando questa regolazione, l’uso è più facile e si elimina il rischio di perdere passi.
Impostare i Pin di tipo Stepper nella applicazione HAL
Ogni motore stepper ha bisogno di due Pin fisici, uno per gli STEP e uno per la DIREZIONE. Il microcontrollore permetterebbe di posizionare i Pin a piacere, ma abbiamo deciso di limitare la confusione, specificando posizioni prefissate, per i Pin di tipo Stepper e Stepper_Dir.
I Pin di tipo Stepper leggono dallo Slot un valore, che è semplicemente la destinazione in millimetri. Le applicazioni più semplici, possono specificare una destinazione lontana, e lasciar fare tutto al firmware. Applicazioni più esigenti, possono calcolare loro stesse il percorso e inviare frequenti destinazioni intermedie. Con questa tecnica, una applicazione può controllare la velocità di lavoro (feed), e stabilire con precisione il percorso, anche in più dimensioni. Per ottenere un movimento fluido bastano 20 destinazioni al secondo (fino a 50 per le applicazioni più esigenti).
Ribaltare un asse:
Per ribaltare la direzione di movimento di un asse, si scambiano i valori “1000” e “0”, delle caselle “1000 means mm” e “0 means mm”.
Parametri specifici dei Pin di tipo Stepper:
Max Speed – Questa è la massima velocità, in millimetri al minuto. Il firmware controlla continuamente le destinazioni inviate dal software. Se il software sta chiedendo troppo al motore, il firmware limita la sua velocità, per evitare che perda passi. Alzare questo valore fino a vedere che il motore perde passi (fa un rumore acuto e si ferma) e poi diminuirlo di un 20..50%, per tornare in una zona sicura. Ripetere le prove anche sotto carico, o frenando il motore manualmente, in modo da assicurarsi di avere un certo margine.
Max Acc – Questa è la massima accelerazione (e decelerazione), in millimetri al minuto. Il firmware controlla continuamente le destinazioni inviate dal software. Se il software sta chiedendo troppo al motore, il firmware limita la sua accelerazione, per evitare che perda passi. Alzare questo valore fino a vedere che il motore perde passi durante i cambi di direzione (fa un rumore acuto e si ferma) e poi diminuirlo di un 20..50%, per tornare in una zona sicura. Ripetere le prove anche sotto carico, o frenando il motore manualmente, in modo da assicurarsi di avere un certo margine.
Steps per mm – Qui si devono impostare gli step, che il motore fa in una rotazione, moltiplicati per i microstep, impostati nel controller, e divisi per i millimetri, prodotti da una rotazione del motore. Se ogni rotazione, produce un millimetro di spostamento, e il motore è da duecento passi per giro, e non si usano i microstep, allora si imposta il valore: 200 (passi per giro) x 1 (microstep) / 1 (mm per giro) = 200. Se si usano sedici microstep allora si imposta il valore: 200 (passi per giro) x 16 (microstep) / 1 (mm per giro) = 3200.
Linked to previous – Abilitando questa casella, il motore viene collegato al precedente, e fa quindi parte di un pool, che esegue interpolazioni in 2D, 3D, 4D o 5D. Senza questa interpolazione, il motore che deve fare meno strada, arriverebbe in anticipo e quindi il percorso, sarebbe una linea spezzata, composta da due o più segmenti. Abilitando l’interpolazione, la velocità di tutti i motori viene coordinata, in modo che la traiettoria effettiva, sia una retta. Sfruttando questa coordinazione, il software di controllo può, in alcuni casi, semplificarsi notevolmente (nelle versioni attuali dell’HAL il coordinamento degli assi non è implementato, lo finiremo nelle prossime versioni)
Aggiornamento di febbraio 2015: Forse questa opzione non è così importante, come si pensava all’inizio. Probabilmente finiremo prima altri progetti più urgenti. Eventualmente scriveteci, se proprio vi serve urgentemente.
I Pin di tipo Stepper_Dir non hanno parametri da regolare. Sono solo un segnaposto per il Pin fisico di uscita, che stabilisce la direzione del motore. Non è necessario usare il valore, che questi Pin scrivono nello Slot, ma alcune applicazioni potrebbero trovarlo utile. Il valore che viene scritto nello slot, è la distanza dalla destinazione, in millimetri (e fino alle frazioni di millesimo di millimetro). Questa informazione può essere usata a scopo diagnostico, o per algoritmi che devono rispettare una tolleranza specificata. Disponendo di questa informazione il software può lavorare ad anello chiuso e sempre alla massima velocità. Controllando continuamente la distanza di ogni motore dalla destinazione, il software può rallentare esattamente quando serve, senza fare complessi calcoli di velocità, traiettorie e accelerazioni.
Visualizzare i dettagli del Pin
I dettagli del Pin mostrano l’accelerazione e la velocità massima in Hz (step per secondo). Questi valori sono utili per progettare l’elettronica, durante le prove e per stabilire quanti micro-step usare. In alcuni casi, può essere utile conoscere la destinazione grezza (in steps), al posto della destinazione in millimetri.
Nella applicazione HAL, fare doppio click sulla linea del Pin (di tipo Stepper). Nella seconda finestra, in basso, si leggono i dettagli del Pin selezionato. Fare click sulla immagine per ingrandirla.
Video che mostra la precisione degli impulsi prodotti dal modulo Master, rispetto a quelli di Mach3
Video su YouTube:
http://www.youtube.com/embed/CeC5WD4866o?fs=1&rel=0&loop=1&hd=1&autoplay=1
In questo video si vede lo sbandamento nel tempo, del periodo tra un impulso e il successivo. La scala dei due video è la stessa, 100 nS per quadretto. Il Theremino Master produce impulsi, con uno sbandamento di soli 20 nano secondi. Invece Mach3 supera continuamente i 2 micro secondi e negli istanti peggiori arriva a 10 micro secondi. Se si viaggia a 25 KHz, lo sbandamento del Theremino Master è solo lo 0.05%, mentre quello di Mach3 è pari al 25%. Quando si supera il 10% i motori stepper cominciano a risentirne e possono perdere passi. Nelle macchine lente il Jitter di Mach3 non crea problemi e usare i micro-steps migliora la situazione. In tutti i casi però, in presenza di Jitter, si deve diminuire la velocità massima. Per maggiori informazioni, sui difetti di temporizzazione del Mach3 (e sui difetti ancora peggiori di LinuxCNC – EMC2), leggere questo articolo e soprattutto guardare l’immagine alla fine di questa pagina.
Goniometro per i motori stepper
Scaricare la immagine con il tasto destro del mouse.
Questo goniometro da 200 passi (1.8 gradi per step), è utile per controllare il funzionamento, dei motori passo passo. Lo abbiamo cercato a lungo sul Web, e alla fine abbiamo dovuto farcelo. Le dimensioni di stampa attuali (75 x 75 mm) sono per i motori Nema 23. Con un programma per il disegno, o con le regolazioni della stampante, si possono adattare le dimensioni, a motori più piccoli, o più grandi. Il goniometro può essere stampato, con una stampante a getto di inchiostro, su cartoncino.
Incidere il goniometro con Theremino CNC
Abbiamo trasformato l’immagine del goniometro in GCode (con “Theremino ImgToGcode“). Il file GCode si trova tra gli “Engraving examples”, di Theremino CNC, e si chiama “StepperMotor Protractor.gc”.
Come base si consiglia il plexiglas, o la plastica colorata.
Per ottenere la massima visibilità, incollare un foglio di plastica sottile, su un foglio spesso, di diverso colore e incidere solo il foglio superiore.
Consigli per i motori stepper
Come principio base si deve evitare che i motori “sgranino” (si sente un “wiiii” e il motore si pianta). Se un motore sgrana il pezzo in lavorazione viene danneggiato. Non c’è modo di tornare indietro e si butta via il pezzo. Oltre a perdere ore di tempo macchina si perde anche il materiale semilavorato.
Per assicurarsi di non perdere passi procedere così: aumentare ogni regolazione, una per volta, fino a che il motore sgrana e poi tornare indietro di un 30%, o anche del 50% per stare sul sicuro. Le regolazioni sono: velocità massima e accelerazione (nell’HAL). Per ottenere le massime prestazioni si deve anche agire sulla corrente al motore (un trimmer sul modulo driver). Il piccolo trimmer va girato con un cacciavite adatto e con molta attenzione. Se il cacciavite scappa e fa un corto circuito, il driver frigge all’istante (e a volte scoppia).
Se il driver lo permette è sempre bene impostare i micro-steps almeno a 4. Se non si usano i micro-step il motore produce forti vibrazioni. Le risonanze meccaniche, innescate dalle vibrazioni, possono far perdere passi anche a velocità molto basse. Per evitarlo si dovrebbe aumentare la corrente sul motore, ma questo limiterebbe la velocità massima.
Limitare gli attriti meccanici e aggiungere giunti elastici per evitare che il motore sforzi a causa degli inevitabili piccoli errori di fuori asse. Inoltre i giunti elastici disaccoppiano il motore dalle risonanze delle parti meccaniche della macchina. Se la meccanica è ben fatta e il motore scorre libero, si può ridurre la corrente e questo è sempre un vantaggio.
Ridurre al minimo la corrente sul motore è importante. Non si deve impostare la corrente massima! La corrente specificata dal costruttore NON è la corrente che si deve usare. Ma si tratta della corrente massima, oltre la quale il motore scalderebbe così tanto da rovinarsi. Riducendo la corrente di lavoro, si minimizzano le vibrazioni e si aumenta la velocità massima. La migliore corrente di lavoro, solitamente è circa un quarto di quella indicata sul motore.
In presenza di forti attriti meccanici si è costretti ad aumentare la corrente. Ma questo aumento ha un benefico effetto, solo alle basse velocità. Alle alte velocità non si ottengono miglioramenti. Anzi il pericolo di perdere passi aumenta e si è costretti a limitare la velocità massima.
Drivers per gli stepper
Gli Stepper non possono essere alimentati direttamente come si fa con i Servo. Si deve necessariamente aggiungere un driver. Si consiglia di evitare i driver di vecchia progettazione contenenti gli integrati SA1042, SA1027, ULN2003, L297 e simili. I driver migliori contengono i circuiti integrati A4988 prodotti da Allegro.
La tensione massima degli A4988 è 35 Volt (per cui si consiglia di alimentarli a 24 Volt) e la corrente massima è 2 Ampere (ma in tal caso ci vuole un dissipatore e una ventola che soffia aria dall’alto su tutti i driver)
I driver non vanno regolati alla corrente massima sopportabile dal motore!!! La corrente indicata sul motore è il massimo, oltre il quale i motori si danneggerebbero!
Se i motori sono da 1 Ampere allora la corrente giusta è tra i 250 mA e i 500 mA. Così il motore non scalda, i driver scaldano poco e la velocità massima aumenta.
Riducendo la corrente si riduce un po’ la coppia, ma i motori girano più lisci e permettono una velocità massima maggiore, prima di sgranare.
Per regolare i trimmer della corrente, usare sempre un cacciavite di plastica, altrimenti può accadere di bruciare i driver o di far partire il fusibile sulla scheda CncShield.
Drivers per controllare i motor Stepper
Gli A4988 (immagine a sinistra), sono perfettamente compatibili con i DRV8825 (immagine a destra), ma si deve fare attenzione che vanno montati uno al contrario dell’altro (vedere le immagini seguenti).
Si consiglia di alimentare, sia i 4988 che gli 8825, con tensione di 12 o di 24 Volt e non di più. Con 24 Volt la velocità massima è leggermente maggiore. I 36 Volt è meglio non usarli mai perché i 4988 non li tengono proprio e gli 8825 lavorerebbero troppo vicini al limite.
Si consiglia di non usarli a corrente maggiore di 1 Ampere. Massimo 2 Ampere, ma con dissipatori su ogni driver e una singola ventola che li raffredda tutti dall’alto.
Anche se in queste immagini gli A4988 appaiono senza dissipatore, quasi tutti i venditori li offrono con il dissipatore.
Quali piastre porta-driver usare?
Sono assolutamente da evitare i cnc-controller con i driver saldati su un unica piastra. Al primo difetto si deve buttare l’intero controller. Quindi si spende molto, si spreca e si inquina, andando anche contro ai nostri principi per limitare gli sprechi.
I driver possono rompersi facilmente (basta un falso contatto momentaneo su un motore) e non è possibile sostituire i chip sulla piastra, quindi si butta via l’intero controller-driver, si perdono centinaia di Euro e si tiene ferma la macchina a lungo. Inoltre non è possibile saldare nuovi driver su una piastra, per cui se si parte, ad esempio, con tre driver, non si potrà aggiungerne un quarto e un quinto. Questo porterà a produrre controller con quattro o cinque drivers, anche se poi il quarto e il quinto non verranno mai usati, andando nuovamente contro ai nostri principi per limitare gli sprechi.
Una buona soluzione è invece usare i drivers con i connettori, in modo da poterli sostituire o aggiungere facilmente.
I driver di ricambio costano pochissimo (circa 3 Euro) e si sostituiscono in trenta secondi. Se ne acquista uno di scorta e si ha la sicurezza che la macchina non resterà mai ferma.
Non fatevi ingannare dai venditori che non pubblicano gli schemi e “lasciano pensare” che i loro driver siano migliori. Quando si va a controllare i chip sono gli stessi di questi driver, si tratta sempre degli ottimi A4988 (o equivalenti) prodotti da Allegro.
E fate anche attenzione ai controller saldati direttamente sul circuito stampato principale, senza ventola di raffreddamento e con chip senza dissipatore. I chip scalderanno moltissimo, aumentando la probabilità di guasti e di perdere l’intero controller.
Driver Board – Una base di supporto per i driver
Non acquistate costosi cnc-controller con i chip direttamente saldati sulla piastra! I driver devono sempre essere sostituibili, come nelle Driver Board di queste immagini.
Nella immagine in alto si vede la piastra Theremino_StepperDriver (informazioni in questa pagina), mentre nelle due immagini seguenti si vedono la “Ramps” e la “CncShieldV3”. Queste ultime costano meno, ma non sono fotoaccoppiate, per cui possono generare problemi di disturbi elettrici.
Consigliamo di mantenere la massima modularità, per permettere future modifiche, miglioramenti e sostituzioni. O con basette millefori e cavetti Dupont, oppure con la piastra adattatrice Theremino_StepperDriver, o con la Ramps, o con una CncShieldV3 (le ultime due le si possono trovare su eBay).
Piastre come la Ramps e la CncShieldV3, non sono costruite appositamente per il sistemaTheremino, per effettuare i collegamenti consultate gli schemi. In caso di dubbi scriveteci.
Posizionare i driver sulla CncShieldV3 e sulla Ramps
Queste immagini sono valide solo per i driver DRV8825, attenzione che gli A4988 vanno inseriti con il trimmer dal lato opposto. Per altri driver controllare sul sito del costruttore.
Un esempio di cablaggio
ATTENZIONE: Per abilitare i motori il segnale ENABLE deve essere collegato a GND. Quindi mettere sempre un ponticello su “EN / GND”. Se si dimentica di fare questo i motori non si muovono.
In questa immagine si vede un esempio di cablaggio tra Master e CncShieldV3.
In questo cablaggio nove dei Pin del master sono collegati a quattro drivers e a cinque InOut “di servizio”. Gli InOut possono servire per comandare la accensione del motore del mandrino e per leggere gli switch di fondo corsa. Non dovessero bastare, restano disponibili altri tre InOut, sul Master.
I fili dei segnali potranno essere scollegati e spostati in ogni momento, anche con tutto acceso, ma dato che c’è un alimentatore grosso e cattivo collegato al 220 Volt, si deve fare molta attenzione che i filo di massa, tra CncShield e Master, siano corti, robusti e sempre collegati.
Connessioni tra il Theremino Master e i driver
Qui si spiega come connettere direttamente i Master ai Driver, senza usare una Driver-Board.
Drivers A4988
Drivers DRV8825
Settaggi dei microstep
C (M0) (MS1) |
B (M1) (MS2) |
A (M2) (MS3) |
Microstep settings DRV8825 |
Microstep settings A4988 |
Low | Low | Low | Full step | Full step |
High | Low | Low | Half step | Half step |
Low | High | Low | 1/4 step | 1/4 step |
High | High | Low | 1/8 step | 1/8 step |
Low | Low | High | 1/16 step | – |
High | Low | High | 1/32 step | – |
Low | High | High | 1/32 step | – |
High | High | High | 1/32 step | 1/16 step |
Basso significa: “Connesso a GND” ovvero “Senza ponticello”
Alto significa: “Connesso al positivo” ovvero “Con ponticello”
Nelle schede CncShield e nelle Ramps i ponticelli portano i segnali al positivo, quindi con tutti e tre i ponticelli rimossi si ottiene il “Full step”. Usare sempre 8, 16 o 32 microstep, quindi inserire i primi due ponticelli oppure l’ultimo, o anche tutti e tre. E ricordarsi di moltiplicare, nell’HAL, il valore “Steps per mm” per il numero di microstep impostati.
ATTENZIONE: Alcune schede (Ramps 1.4 di alcuni produttori), hanno i ponticelli di selezione dei microstep che non funzionano. Qualche genio malefico ha modificato il PCB per impostarle fisse a 16 microstep (perchè così servono nelle stampanti 3D). Basta controllare con un tester i pin dei ponticelli di selezione, se le coppie di pin sono in corto, allora si tratta di una di queste schede. In tal caso togliendo la plastica dei ponticelli, con pazienza e con il Dremel, si può correggere lo stampato.
Regolazione del trimmer per le limitazione della corrente
Sul modulo A4988, prodotto a Pololu, il trimmer è da 10 Kohm ed è collegato al 5 Volt con un resistore da 20 Kohm. Per cui la tensione di riferimento, con il trimmer al massimo, è di 1.6 Volt. Questo riferimento viene diviso per otto internamente al chip e infine comparato con resistori da 0.05 ohm. Quindi si ottiene una corrente pari a due volte e mezzo la tensione di riferimento.
Sul modulo DRV8825, prodotto da Pololu, il trimmer è da 10 Kohm ed è collegato al 3.3 Volt stabilizzato. Per cui la tensione di riferimento, con il trimmer al massimo, è di 3.3 Volt. Questo riferimento viene diviso per cinque internamente al chip e infine comparato con resistori da 0.1 ohm. Quindi si ottiene una corrente pari a due volte la tensione di riferimento.
La tensione di riferimento si misura con un tester con il negativo a GND e il positivo sul centrale del trimmer.
Queste sono le regolazioni di corrente che si ottengono:
Posizione del trimmer | A4988 | DRV8825 |
Al massimo | 4.0 Ampere | 6.6 Ampere |
A tre quarti | 3.0 Ampere | 4.9 Ampere |
A due terzi | 2.7 Ampere | 4.4 Ampere |
A metà | 2.0 Ampere | 3.3 Ampere |
A un terzo | 1.3 Ampere | 2.2 Ampere |
A un quarto | 1.0 Ampere | 1.6 Ampere |
A zero | 0 Ampere | 0 Ampere |
ATTENZIONE: Come si può vedere, chi ha progettato questi moduli ha completamente sbagliato il fondo scala. La massima corrente sopportabile (pur con il massimo di dissipatori e ventole) è di 2 Ampere per i 4988, e di 2.2 Ampere per gli 8825.
Il fondo scala dei trimmer è quindi due o tre volte maggiore di quanto sarebbe ragionevole. Con un fondo scala così alto la regolazione dei trimmer diventa due o tre volte più difficile. Quindi fare molta attenzione a non andare mai oltre la metà (con il 4988) e mai oltre un terzo (con lo 8825).
Inoltre, tanto per rendere la regolazione ancora più difficile, alcuni trimmer non hanno il fondo corsa meccanico. Si arriva a zero, lo si supera senza accorgersene e si passa dall’altra parte, dando la massima corrente e facendo immediatamente saltare fusibili e drivers.
SUPER ATTENZIONE: Esistono driver con il trimmer che agisce al contrario. Per cui prima di fidarsi dei propri drivers, è bene misurare la tensione sul trimmer. Regolando al minimo, in senso antiorario, la tensione dovrebbe essere minima (da zero volt fino a 100 millivolt). Regolando al massimo, in senso orario, la tensione dovrebbe essere massima (da 1.5 a 3.3 Volt a seconda del driver). Se così non fosse fare molta attenzione a usare quei driver, ricordarsi sempre che agiscono al contrario (chi ha fatto quei PCB andrebbe trasferito al reparto “pulizia condotti fognari”, prima che possa fare altri danni).
Per regolare i trimmer si può procedere in tre modi
METODO 1 – LENTO: Questo metodo è adatto agli amanti della precisione, che vogliono conoscere con esattezza il valore numerico della corrente. Dare tensione ai driver (anche il 12 o 24 Volt che è necessario per alimentare internamente il 5 Volt di alcuni driver) ma non collegare i motori. Misurare la tensione tra massa e la parte metallica del trimmer. Regolare la tensione per ottenere una corrente che sia metà della corrente nominale (corrente = due volte e mezzo la tensione, con i 4988, oppure 2 volte la tensione, con gli 8825). Poi iniziare a far prove in su o in giù, sempre misurando con il tester ad ogni prova. Usare un cacciavite adatto (meglio in plastica) e fare molta attenzione. Naturalmente ad ogni prova si dovrebbe togliere la alimentazione, scollegare i motori e ridare la alimentazione. Per cui questo metodo è lentissimo.
METODO 2 – PER ESPERTI: Impostare i trimmer a occhio, secondo la tabella delle correnti. Quindi partire da un quarto e non andare mai oltre la metà (con il 4988) e mai oltre un terzo (con lo 8825). Per stabilire la posizione fare bene attenzione a dove si trova il minimo (usare molta luce e una buona lente).
METODO 3 – PER ESPERTI: Marcare la punta del trimmer (opposta alla zona piatta), con una piccolo segno di pennarello. Procurarsi un cacciavite di plastica, molta luce e occhialoni. Ruotare il trimmer a circa un quarto, o meno, prima di dare tensione. Provare ripetutamente il motore, in modo da ottenere la massima velocità e potenza (se si aumenta la corrente aumenta la coppia, ma con troppa corrente la massima velocità diminuisce). Si alza via via la velocità, fino a che il motore sgrana e si ferma, poi si prova a muoverlo più volte e a modificare la corrente per farlo andare meglio. Con un po’ di esperienza si riesce a sentire il punto migliore, ascoltando il suono dei motori. Le regolazioni vanno fatte con i microstep impostati in modo definitivo.
Chi conosce bene l’inglese potrebbe anche guardare questo simpatico video di Pololu che spiega come regolare i trimmer.
Considerazioni valide per tutti i Driver
Un singolo Theremino Master può controllare fino a cinque motori stepper. I due fili rosso e nero, che portano “+ 5 Volt” e “GND” al primo driver, possono proseguire e alimentare anche gli altri driver.
Connettere sempre, almeno il filo GND, tra il Master e i driver. Ricordarsi anche di connettere “Reset” con “Sleep”.
ATTENZIONE: Collegare sempre un condensatore da 100 uF tra “VMOT” e “GND”. Il condensatore deve essere elettrolitico, NON di tipo “Low ESR”, con il positivo collegato a “+”, e deve essere vicino al modulo driver (massimo qualche centimetro). La tensione di lavoro del condensatore, deve essere almeno 5 Volt maggiore, della tensione di alimentatore del motore.
In mancanza di questo condensatore, si possono creare extra-tensioni pericolose, che possono far perdere la comunicazione USB, danneggiare il driver e anche danneggiare il Master.
In questo particolare caso, per evitare fenomeni di risonanza prodotti dalle alte induttanze presenti, è bene NON usare condensatori a bassa resistenza in serie (Low ESR), ma dei comuni 100 uF, con circa 1 ohm di resistenza serie. Leggere gli avvertimenti di Pololu in queste pagine:
https://www.pololu.com/docs/0J16/all
https://www.pololu.com/product/1182
Prima di dare tensione TUTTO deve essere collegato in modo affidabile. Se si stacca un filo del motore, o un collegamento GND, il driver A4988 si danneggia. Se ruotando il trimmer si fa un corto con il cacciavite, il driver scoppia all’istante. In alcuni casi il suo chip esplode e si mette a fumare. Il Theremino Master dovrebbe resistere anche a queste torture, ma è meglio evitare di metterlo alla prova.
Con questo non vogliamo dire, che i driver siano poco affidabili. Se non si fanno errori, non si rompono mai.
Comunque consigliamo di collegare sempre i driver, con i connettori maschio e femmina, per poterli sostituire facilmente. Si consiglia di comprarne cinque o dieci, per averne un po’ di scorta, e far scendere il prezzo.
Drivers TB6600
Su eBay si possono acquistare drivers completi di foto-accoppiatori e abbastanza economici. Sono driver singoli, cioè se ne deve utilizzare uno per ogni motore.
Ci sono diversi modelli in commercio, tutti con caratteristiche abbastanza simili. In questa pagina descriviamo solo il TB6600, ma i consigli e gli schemi valgono anche per molti altri modelli, ad esempio il TB6560 che si può acquistare anche su Store-ino.
Nelle due prossime immagini si vede il TB6600, in versione senza contenitore e con contenitore.
Caratteristiche dei driver TB6600
- Tensione di alimentazione da 9 a 42 volt
- Corrente regolabile fino a un massimo di 4 ampere
- Protezione interna per temperatura e sovracorrente
- Regolazione dei Microstep da 1 fino a 32
- Ingressi fotoaccoppiati con positivo in comune
- Positivo degli ingressi da collegare al 5 volt
- Gli ingressi devono essere pilotati con un transistor open collector
Collegamenti tra il modulo Master e i driver TB6600
Internamente ai driver TB6600 (e simili), i foto-accoppiatori sono collegati al positivo tramite resistori da 330 ohm. Quindi per pilotarli in modo affidabile si deve utilizzare una tensione positiva di 5 volt. Le uscite del modulo Master, che forniscono tensioni tra zero e 3.3 volt, non possono essere collegate direttamente a questi driver.
Inoltre, dato che i foto-accoppiatori sono collegati stabilmente al positivo, e che li si pilota dal loro ingresso negativo, ne consegue che si deve pilotarli con un transistor open-collector. Il transistor effettua una inversione del segnale, per cui si ottiene di accendere i foto-accoppiatori quando il segnale di uscita del Master è alto.
Qualcuno potrebbe capire meglio la seguente immagine che è più realistica (un grazie ad Armando che l’ha inviata).
Nella prima immagine utilizzavamo resistori da 1k, che sono un po’ bassi e sprecano qualche milliampere. Dato che la corrente da pilotare è bassa si possono alzare fino a 10k. In pratica potrete utilizzare qualunque resistore anche intermedio, ad esempio 2.2k, 4.7k o 8.2k.
I due transistor e i due resistori, sono adattatori di tipo open-collector. Li si possono costruire sui fili stessi di collegamento come spiegato in questa sezione, oppure su un circuito stampato seguendo questo progetto.
Apparentemente questi driver potrebbero funzionare anche collegando le uscite del Master direttamente agli ingressi DIR- e PUL-, ma la immunità ai disturbi elettrici sarebbe scarsa e il rischio di perdere passi sarebbe molto alto.
Connessione per macchine predisposte con la Porta Parallela
Si stacca il cavo dalla parallela, lo si collega al Theremino CNC Adapter, e si ricomincia subito a lavorare. Questo adattatore può essere usato per Mach3 o LinuxCNC (con appositi PlugIn), ma meglio ancora, con la applicazione Theremino CNC, che è molto più facile da usare.
https://www.theremino.com/hardware/adapters#cnc
Servocomandi
Esistono servocomandi di ogni genere e potenza. I servo sono ideali per molte applicazioni, si collegano ad un qualunque Pin del Theremino Master (fino a 6 contemporanei) o ai Pin degli slave “Servo” che possono pilotarne fino a dieci ognuno. Si sceglie “Servo” come tipo di Pin e funzionano immediatamente. Per provarli, cliccare sulla colonna Value della applicazione HAL, e muovere il mouse, tenendo premuto il bottone sinistro.
Lo MG930 marchiato anche TGY930, ha una precisione di posizionamento almeno cinque volte maggiore, rispetto a tutti gli altri modelli. Essendo di tipo digitale, ha una corrente di spunto piuttosto alta ed un suono acuto a circa 400 Hz. La sua escursione è circa 140 gradi.
Lo HX5010 è molto potente, meno preciso del TGY930 ma molto economico, costa solo 4 euro e li vale tutti. Escursione = 200 gradi.
Lo HTX500 è piccolissimo, abbastanza preciso e costa poco, naturalmente non ha una grande potenza ma è sufficiente per molte piccole applicazioni, ha una escursione di 180 gradi e anche qualcosa di più.
Lo HXT900 e il TG9e costano meno di 2 euro, vanno bene per tutte le medie applicazioni ed hanno una escursione di 200 gradi.
Lo MG958 è un mostro di potenza da 15 Kg/cm e costa solo 11 euro. Attenzione che consuma molta corrente e non è possibile alimentarlo con la sola USB. La sua escursione è di 135 gradi.
Un servo molto simile a questo è il TGY-1501MG, anche lui da 15 Kg/cm, simile come dimensioni e più facilmente reperibile. Non lo abbiamo provato ma le caratteristiche sono OK.
Tabella riassuntiva delle principali caratteristiche dei servocomandi.
Questi servocomandi sono stati scelti per il prezzo, la precisione e la robustezza tra un gran numero di modelli che abbiamo testato comprandoli da: www.hobbyking.com (che ha ottimi prezzi e spedisce in breve tempo anche se si trova negli USA)
Un altro indirizzo per i servocomandi è: www.robot-italy.com Da RobotItaly non si trovano i modelli di questa lista, ma solo tipi molto costosi e versioni strane, tra cui quelli da tre rivoluzioni, otto rivoluzioni e movimento continuo. Sempre da Robot-Italy è possibile trovare sensori, motori, pinze robotiche e molti altri accessori interessanti e unici.
Servocomandi ad alte prestazioni
–
–
–
Questo DS8231 promette prestazioni molto superiori ai TGY930, non lo abbiamo provato ma è prodotto da JR e ci si può fidare.
http://www.jramericas.com/45190/JRPS8231/
Le sue caratteristiche sono: Risoluzione Ben 5900 passi su 120 gradi di rotazione DeadBand Molto bassa (il costruttore dice "inesistente") Cuscinetti Due cuscinetti spaziati per la massima precisione Pulse rate Loop di controllo da 250MHz per la massima precisione Corrente Consumo di corrente di poco superiore a un normale servo Lunghezza 39.1 mm Larghezza 19.1 mm Altezza 34.5 mm Peso 49 grammi Torque 1.26 Kg/cm Costo 70 Euro circa
Misurare Step e Dead-band
Misurare la precisione dei servo è facile, basta mettere sul servo uno degli adattatori a croce e poi infilare un tubetto di plastica rigida lungo 25 centimetri su uno dei bracci della croce. Poi si blocca il servo con con un morsetto girandolo con il perno in alto e con il tubetto parallelo al tavolo che termina su una riga millimetrata, stando qualche millimetro sopra alla riga senza toccarla.
Infine si muove il servo di quantità molto piccole con le frecce su e giù e si contano sulla riga quanti piccoli movimenti si vedono fare per ogni millimetro, questi sono gli “Step”
Per misurare la dead-band si va prima in un senso e poi si comincia a tornare indietro con le frecce su e giù fino a che si vede che inizia a tornare indietro, il numero di volte che si è premuto la freccia, con un semplice calcolo, indica la larghezza della Dead-band.
Servo con rotazione illimitata e coppia variabile
Normalmente i servo hanno una rotazione di circa 180 gradi, ma per alcune applicazioni sarebbero preferibili motori con rotazione illimitata. Normalmente in questi casi si usano i motori stepper, che però hanno degli svantaggi.
Gli stepper richiedono un complesso circuito di pilotaggio, richiedono rampe di accelerazione e decelerazione e hanno pochissima coppia. Con gli stepper se si accelera troppo velocemente, o si supera la coppia e la velocità critica, si perdono passi e quindi si perde l’allineamento tra software e hardware.
Per superare i limiti degli stepper, le macchine più costose usano motori in continua, con circuiti di retroazione e sensori di posizione esterni al motore. Con un servo modificato otteniamo esattamente questo, ma senza il circuito di pilotaggio a ponte, normalmente richiesto per i motori in continua. Il pilotaggio a ponte è già presente nel piccolo circuito integrato del servo e i meccanismi di retroazione li aggiungeremo, con sensori (magnetici o ottici) e software. Nei casi più difficili, grazie alla potenza del software su PC, si potrebbe anche aggiungere un algoritmo PID.
Con una semplice modifica si possono modificare i servo per farli lavorare in multigiri. Nei servo non modificati, il segnale di pilotaggio regola la posizione dell’albero motore. Dopo la modifica, il segnale regola la velocità e la coppia, nei due versi di rotazione.
Ecco come si comportano i servo multi giri, collegati a un PIN configurato come Servo_16.
Segnale | Forza e velocità |
1000 | Massima forza e massima velocità in senso orario |
750 | Mezza forza e velocità in senso orario |
600 | Minima forza e velocità in senso orario |
500 | Il servo sta fermo |
400 | Minima forza e velocità in senso anti-orario |
250 | Mezza forza e velocità in senso anti-orario |
0 | Massima forza e massima velocità in senso anti-orario |
Tutti i servo sono modificabili per il funzionamento multi-giri, ma abbiamo preparato gli schemi solo per gli HXT900. Questi servo hanno molti vantaggi, consumano poca corrente, possono essere alimentati dalla USB stessa e costano solo due Euro da HobbyKing: HobbyKing.com_HXT900 (quando ordinate da HobbyKing fare arrivare anche alcuni pacchi da 10 di prolunghe: da 30 centimetri e da 60 centimetri)
Con i servo HXT900 la velocità di rotazione è regolabile, da qualche giro al minuto fino a circa 80 RPM, e la coppia è regolabile da un minimo (si ferma appena si fa un minimo sforzo) fino a 1.6 Kg/cm (non si riesce a fermare il perno, stringendolo con le dita).
La tabella seguente indica forze e velocità ottenibili da un HXT900, trasformando la rotazione in un movimento lineare con barre filettate o pulegge.
Metodo |
Millimetri per giro |
Velocità massima (mm/min) |
Forza massima (Kg) |
Barra filettata da 1 mm/giro | 1 | 80 | 60 |
Barra filettata da 2 mm/giro | 2 | 160 | 30 |
Barra filettata da 4 mm/giro | 4 | 240 | 15 |
Puleggia diametro 3.2 mm | 10 | 800 | 6 |
Puleggia diametro 5 mm | 15 | 1200 | 4 |
Puleggia diametro 10 mm | 30 | 2400 | 2 |
Puleggia diametro 20 mm | 60 | 4800 | 1 |
Le caratteristiche degli HXT900 indicano 1.6 Kg/cm. Quindi un HXT900, con puleggia da 20 mm di diametro, potrebbe sollevare 1.6 Kg. In questa tabella, per andare sul sicuro, abbiamo calcolato 1 Kg.
Modificare un servo HXT900
Togliere le etichette adesive sui due lati, svitare le quattro viti, aprire il servo e tagliare i tre fili rossi, vicino al circuito stampato.
Tirare il perno motore, sfilando anche il potenziometro dalla sua sede. Tagliare con le tronchesine le linguette metalliche, dove sono saldati i fili.
Sfilare i due ingranaggi dal perno e eliminare con le tronchesine tutti i particolari interni, che impediscono la rotazione. Controllare che il perno giri liberamente.
Tagliare con le tronchesine i due denti che si trovano sull’ingranaggio più grande.
Infilare il potenziometro nella sua sede rotonda. Infilare gli ingranaggi sui perni, partendo dal più piccolo. Tutti gli ingranaggi vanno con la parte grande in basso, verso il motore. L’ingranaggio grande, che porta il perno motore, non deve essere premuto troppo, ma solo fino ad avvicinarsi agli altri ingranaggi, senza toccarli.
L’immagine di sinistra è uno schema elettrico e funzionale, quella di destra indica le modifiche da fare e dove posizionare i resistori.
Aggiungere due o tre resistori SMD piccoli (0603), come specificato (fare click sulle immagini per ingrandirle)
Esiste anche un HXT 900 con circuito diverso da quello qui mostrato. In questo file ci sono gli schemi e tutte le informazioni che siamo riusciti a trovare. Purtroppo il datasheet è in cinese: uploads/files/HXT900_Type2.zip
Infine richiudere il motore e provarlo.
Modificare servo diversi dallo HXT900
Non è possibile fornire istruzioni per ogni tipo di servo esistente. In questo file ci sono tutte le informazioni, gli schemi e i data-sheet, che abbiamo raccolto fino ad ora: uploads/files/ServoInfoAndDatasheets.zip
Servo multi-giri commerciali
Finalmente i costruttori hanno scoperto questa possibilità. Sul catalogo Pololu esistono già quattro modelli, con prezzi da 5 Euro fino a 15 Euro. Il collegamento seguente mostra il più piccolo, ma si consiglia di partire da questo link, ed esplorare tutto il catalogo Pololu, e non solo per i motori:
http://www.pololu.com/product/2820
Principi di funzionamento dei servo normali e multigiri
Ogni modello di servo è diverso meccanicamente ed elettricamente, ma i principi di funzionamento sono gli stessi per tutti i servo: uploads/files/ServoCircuitsAndTimings.zip
Funzionamento dei servo standard.
- Il segnale da 0.5 a 2.5 mS, viene convertito dentro al chip del servo, in un valore che va da 0 a 3Volt.
- Il piccolo potenziometro che c’è dentro al servo (a seconda di come è girato), fornisce anche lui un valore da 0 a 3 Volt .
- Se le due tensioni sono uguali, il chip non da tensione al motore.
- Man mano che le due tensioni si scostano una dall’altra, il chip da sempre più tensione al motore.
- La tensione al motore viene data in un senso, o nel senso opposto, a seconda che sia maggiore una tensione o l’altra.
Funzionamento dei servo multi-giri.
- Il potenziometro viene sostituito con due resistori fissi, che simulano il potenziometro sempre a metà della sua corsa.
- Tutto il resto è esattamente come nei servo normali.
- Se il segnale di comando è a metà (1.5 mS), allora le due tensioni si equivalgono e il chip non alimenta il motore.
- Man mano che le due tensioni si scostano una dall’altra, il chip da sempre più tensione al motore, in un senso o nell’altro.
Quanta potenza inviare al motore?
- Il chip dentro al servo agisce da “componente di reazione”.
- Nei servo normali la reazione avviene ad “anello chiuso” o “controreazione”.
- Nei servo multi-giri si tratta di una reazione semplice o “ad anello aperto”.
- In tutti e due i casi esiste una curva di reazione.
- La curva di reazione, in base al segnale di comando (scostamento tra le due tensioni), determina la tensione al motore.
- La curva di reazione è una specie di “S” con una zona piatta in centro.
- La pendenza della curva (forza di reazione) è regolata da un resistore.
- La zona piatta in centro (zona morta) è regolata con un secondo resistore, che determina la sua ampiezza.
- Teoricamente sarebbe meglio avere molta reazione e poca zona morta, ma non si può esagerare.
- Se si esagerano i parametri di reazione, il motore non sta più fermo e può anche mettersi a oscillare violentemente.
Servomotori senza spazzole
Esistono motori con o senza spazzole, di ogni tipo, a partire da qualche grammo di peso fino a circa 10 Kw di potenza
Sul catalogo: www.hobbyking.com si possono trovare motori con ottimi prezzi e controller per pilotarli con correnti fino a 300 ampere con i segnali standard del sistema Theremino.
Con ogni “Slave” di tipo “Servo” si possono pilotare fino a dieci motori indipendenti.
Le immagini mostrano un motore da 6 Kilowatt (125 Ampere a 48 Volt) e un piccolo controller per motori senza spazzole.
Esempi di motori scelti tra i più interessanti
Il catalogo HobbyKing è stato modificato. I motori che avevamo selezionato hanno cambiato link e questo per noi è un problema in quanto se pubblichiamo broken-links i cercatori ci penalizzano.
Inoltre il catalogo HobbyKing è diventato più difficile da consultare, perché non si possono ordinare i motori per potenza. Quindi il meglio che possiamo fare è indicare la prima pagina dei motori Outrunner, ordinati per dimensioni:
https://hobbyking.com/en_us/electric-motors-1/size.html
Esempi di controllers per motori
Controller da 6 Amp. per motori senza spazzole (BRUSHLESS) – circa 6 eurohttp://www.hobbyking.com/hobbyking/store/__4318__TURNIGY_Plush_6A_8bec_6g_Speed_Controller.html
Controller da 25 Amp. per motori senza spazzole (BRUSHLESS) – circa 8 euro
http://www.hobbyking.com/hobbyking/store/__11616__Turnigy_AE_25A_Brushless_ESC.html
Controller da 20 Ampere per motori con spazzole (BRUSHED) – circa 3 euro
http://www.hobbyking.com/hobbyking/store/__9090__Turnigy_20A_BRUSHED_ESC.html
Controller da 30 Ampere per motori con spazzole (BRUSHED) – circa 6 euro
http://www.hobbyking.com/hobbyking/store/__6468__Turnigy_30A_BRUSHED_ESC.html
Motori sul catalogo Pololu
Si consiglia di partire da questo link, ed esplorare tutto il catalogo Pololu, e non solo per i motori. Da Pololu si trova di tutto per il fai da te.
http://www.pololu.com/category/22/motors-and-gearboxes
Motori sul catalogo Solarbotics
Anche qui si trovano motori (e altri componenti utili ai Makers). Costano di più, ma vale la pena di dare una occhiata ogni tanto, anche a questo catalogo:
https://solarbotics.com/product/gm2/
https://solarbotics.com/catalog/motors-servos/gear-motors/
ATTENZIONE: I collegamenti a ditte commerciali potrebbero far pensare ad una pubblicità occulta, per cui è bene specificarlo: Nessuno ci sta pagando e non abbiamo mai scambiato una sola mail con nessuna delle ditte qui indicate. Siamo quindi liberi di parlare bene e male di chiunque e i nostri “consigli per gli acquisti”, sono solo indicazioni utili, ricavate durante le nostre ricerche di componenti.
ServoPID
Questo modulo è un ponte H che può controllare motori in continua fino a una cinquantina di Watt (fino a qualche ampere e oltre trenta volt) e farli diventare dei servo-motori.
Ringraziamo il produttore e venditore di eBay MaxTheremino, che ha prontamente preparato i circuiti stampati e i kit per questo progetto. Seguite il link di MaxTheremino su eBay e se non li avesse ancora in catalogo scrivetegli per farveli spedire.
Chi preferisse comprare da solo i componenti e stampare il PCB con tecniche fai da te, troverà nel seguente file compresso tutti i file necessari per costruire questo modulo.
Circuiti stampati in formato Eagle, immagini, simulazioni LTSpice e schemi:
ServoPID_V1.zip
Il segnale di controllo può essere un classico segnale “Servo” o “Pwm”, che può provenire da un modulo Master, da uno IotModule, da un NetModule, o anche da un radiocomando per aeromodelli.
Il ponte H è controllato da un micro-controllore PIC, programmabile con il firmware che abbiamo preparato per varie esigenze. Nel caso più semplice si fa girare un motore avanti o indietro, regolandone la velocità. Nei casi più elaborati si utilizza un potenziometro per misurare la posizione e si regola la posizione con un algoritmo PID.
Con il potenziometro e il PID si ottiene lo stesso funzionamento dei classici “Servo” ma, a differenza dei Servo commerciali, si ha la possibilità di variare ogni parametro, area morta, risoluzione di misura degli ADC e coefficienti del PID.
A differenza dei normali Servo il segnale di ingresso è isolato con un foto-accoppiatore. Questo permette di mantenere totalmente separata la massa del circuito di alimentazione del motore da quella del PC di controllo. In questo modo si eliminano radicalmente i disturbi elettrici che potrebbero creare malfunzionamenti.
SCHEMA ELETTRICO
Il segnale di controllo, di tipo Servo o Pwm, viene collegato al connettore CN2, attraversa R1 che ne limita la corrente a qualche milliampere e pilota il LED del foto-accoppiatore.
L’ampiezza del segnale di controllo deve essere da 3 a 6 Volt, il tempo dell’impulso positivo deve stare tra 500 a 2500 uS (circa), e la frequenza di ripetizione da 50 Hz fino a 500 Hz.
Il segnale di controllo prosegue attraverso il foto-accoppiatore IC1, attraversa R3 e arriva al pin 4 del micro, che ne misura il tempo con alta risoluzione (trentaduesimi di microsecondo).
Il connettore “ICSP” serve per programmare il PIC con il firmware di controllo e anche per collegare un convertitore seriale USB per il debug. Vedere la prossima sezione “FIRMWARE”.
Se si configura il firmware con il PID, allora il connettore “Feedback” va collegato a un potenziometro di misura della posizione. Solitamente questo potenziometro è solidale all’albero di uscita, che viene mosso dall’albero motore per mezzo di una riduzione ad ingranaggi o a cinghia. Il potenziometro Feedback può anche essere multigiri e deve essere un potenziometro lineare, con valori normalmente compresi tra 1 k ohm e 10 k ohm. Il centrale del potenziometro deve essere collegato al centrale del connettore, il filo che nello schema ha il nome FBK.
Nel caso che la controreazione avvenga al contrario si possono scambiare i due collegamenti laterali del potenziometro tra di loro. Ma attenzione che il centrale deve sempre essere collegato a FBK. Se si sbaglia il potenziometro potrebbe scaldare e rovinarsi.
Il trimmer “GAIN”, serve per regolare manualmente il guadagno del PID, lo si utilizza solo con alcune configurazioni del firmware e principalmente durante le prove di un nuovo motore, per mettere a punto i valori del PID. Il resistore R4 disaccoppia il trimmer dal segnale ICSPCLK, in modo da poter usare il segnale ICSPCLK per il debug con la seriale.
Il regolatore di tensione “IC3” crea una tensione di 3.3 volt molto stabile. Questa tensione alimenta il micro-controllore, il potenziometro di feedback, il trimmer TRIM1 e il fotoaccoppiatore IC1.
I due segnali di uscita del PIC, con nome PWM1 e PWM2, pilotano il ponte costituito dai quattro Mosfet contenuti nel chip SI4599. Il ponte viene chiuso con un segnale PWM ad alta frequenza (normalmente 16 o 32 Khz), che regola la velocità del motore e lo fa ruotare in un senso o nell’altro. Durante le commutazioni il PIC garantisce che i due rami del ponte non vengano mai chiusi contemporaneamente (il che metterebbe in corto la alimentazione).
La tensione di alimentazione deve essere adeguata al motore, se è troppa il motore potrebbe bruciarsi. Se non si fanno modifiche allo schema si possono utilizzare tensioni di alimentazione da 8 a 35 Volt. Nello schema sono indicate le modifiche da fare per permettere altri due range di alimentazione. Il primo range (da 3 a 15 Volt) richiede solo di mettere in corto R7 e R12. Il secondo range (da 4.5 a 35 Volt) richiede di sostituire R7 e R12 e anche di aggiungere due diodi Zener da 18 Volt.
FIRMWARE
Al connettore ICSP si collega un programmatore PicKit2 (vedere questa pagina). Attenzione che il file PK2DeviceFile.dat, che include anche il PIC12F1572 usato in questo progetto, è valido solo per il PicKit2. Quindi molto probabilmente con il PicKit3 non riuscirete a programmare questo PIC (o per lo meno noi non sappiamo indicarvi come fare).
Nello ZIP che si scarica alla fine di questa sezione troverete il file ServoPid35.hex già compilato e pronto per essere scritto nel PIC con il PicKit2.
Questo file è la versione più semplice di controllo. Variando il segnale di comando dal minimo al massimo muove il motore a velocità variabile nelle due direzioni. Con il segnale di comando in posizione centrale il motore si ferma.
MANDARE DATI DI DEBUG DAL FIRMWARE ALLA SERIALE
Il filo ICSPCLK del connettore ICSP è anche utilizzabile per inviare dati di debug dal firmware verso la linea seriale. Per utilizzarlo si devono collegare GND e ICSPCLK ai pin GND e RX di un convertitore Seriale-USB come ad esempio quello che si vede in questa immagine.
Poi si modifica il firmware per inviare i valori di debug alla seriale, si ricevono i dati con la applicazione Terminal e eventualmente li si visualizzano con il SignalScope o con altre applicazioni del nostro sistema.
EDITARE E RICOMPILARE IL FIRMWARE
Per modificare i parametri di funzionamento e implementare le versioni più complesse di controllo (controllo di posizione con retroazione e PID) si deve modificare il file ServoPid35.bas e ricompilarlo. La compilazione crea un file HEX che potrà essere scritto nel PIC con il PicKit2.
Per editare il file consigliamo di usare l’ottimo FineLineIDE e per compilarlo il ProtonCompiler.
Sono ambedue gratuiti e li potete scaricare dai link seguenti:
www.protonbasic.co.uk/content.php/2077-FineLineIDE
www.protonbasic.co.uk/vbdownloads
Le istruzioni e i commenti utili per modificare il firmware si trovano nel file ServoPid35.bas e alla fine del file troverete anche un glossario dei termini usati e le istruzioni passo passo per regolare i parametri del PID.
Tenete conto che si tratta di un firmware complesso e che non sarà facile imparare e usare nel modo adeguato tutte le sue opzioni. La parte più difficile è sicuramente regolare i parametri del PID in modo da evitare oscillazioni e nello stesso tempo ottenere una risposta pronta e un’area morta più piccola possibile.
Abbiamo fatto del nostro meglio per facilitare la regolazione dei parametri del PID, utilizzando il metodo Ziegler-Nichols e semplificandolo ulteriormente. Abbiamo anche corretto alcuni errori del metodo Ziegler-Nichols pubblicato su Wikipedia, ma la regolazione dei parametri per un nuovo sistema (motore, riduzioni e retroazione), resta comunque una operazione da specialisti.
Note per il firmware
Per diminuire la dissipazione sui MOSFET si consiglia di impostare nel firmware una frequenza più bassa per il PWM. Normalmente la frequenza è impostata a 20 KHz ma in alcune applicazioni la abbiamo abbassata a 2 KHz riducendo praticamente a zero il problema del riscaldamento dei MOSFET.
L’unica controindicazione è il rumore che aumenterà un po’. Per cui provate ad abbassare la frequenza del PWM e poi verificate con il vostro motore se l’aumento di rumore è tollerabile.
DOWNLOAD DEI FILE DEL FIRMWARE
Nello ZIP seguente troverete i file:
– ServoPid35.hex pronto per programmare il PIC in versione semplice ad anello aperto.
– ServoPid35.bas da editare e ricompilare con il FineLine IDE
ServoPid_Firmware.zip