Micro-GT Smart Controller per robotica semovente
per 16F876A oppure 18F2559
Variante del sistema di sviluppo Micro-GT mini per applicazioni robotiche
semoventi. Lo smart controller può fare da scheda madre del sistema di
controllo di potenza e può essere interfacciata ad un numero piuttosto elevato
di minishield power inverter per il controllo di altri motoriduttori con
analoghe caratteristiche dei principali.
Il microcontroller onboard è predisposto per pilotare, oltre ai motori di potenza, anche 14 servomotori e/o elettrovalvole nel caso fossero presenti nell'automa parti pneumatiche.
Il sistema è in grado di acquisire 6 canali analogici per quegli apparati sensoriali che lo richiedessero.
La piattaforma e' open Hardware e open source, e si accettano con entusiasmo collaborazioni e suggerimenti per le versioni future.
in figura un esempio di automazione semovente, si tratta di una foto dalla missione Mars Pathfinder (luglio-agosto 1997, con il robot semovente Sojourner attivo per tre settimane, da cui si e' preso spunto per la realizzazione).
Questo articolo prevede la programmazione di un microcontrollore PIC della famiglia midrange, il famoso PIC16F876A. Se non hai confidenza con i rudimenti della programmazione scarica gratuitamente l'ebook "Primi passi con i PIC sul sistema Micro-GT mini." .Dal link sottostante. Potrai apprendere come muoverti nell'ambiente MPLAB X e alcuni concetti basilari della programmazione "C". -> Download ebook gratuito introduttivo
Buona lettura.
ad.noctis as Marco Gottardo.
Schema elettrico.
Lo schema elettrico è modulare e si compone di:
Scarica lo schema elettrico in formato Eagle da questo link -> Micro-GT smart controller
Sezione alimentazione dei solenoidi:
Alimentazione impostata a 12V tramite regolatore L200
Il circuito integrato L200
La sezione di alimentazione dei solenoidi e' soggetta al problema di dover attingere l'energia necessaria da una fonte robusta ma non molto stabile quale e' l'alimentazione dei numerosi motori DC che movimentano l'automa. Dato che gli spunti di assorbimento di corrente durante la fase di avvio sotto carico possono comportare delle oscillazioni della "raddrizzata-livellata" i normali regolatori della serie 78xx non sono adatti a lavorare in condizioni cosi' impegnative in input, tanto e' vero che durante alcune prove al banco, sono esplosi.
Molto più adatto e' il regolatore L200 che dichiara di poter resistere fino a 60v come leggiamo nelle prime righe del data book riportate nell'immagine sotto.
scarica il databook dell'L200 -> download.
Tra le protezioni integrate nel chip abbiamo un limitatore di corrente programmabile tramite una resistenza, un limitatore di potenza, una protezione termica che spegne in caso di necessita' il dispositivo, e come già accennato una protezione dalle sovratensioni in ingresso per una applicazione di 60V per oltre 10 ms che ne impedisce l'esplosione, e ovviamente la protezione contro i corti circuiti. Anche se non molti conoscono e usano questo dispositivo sarebbe l'ottima soluzione per eliminare gli stock di regolatori fissi in magazzino, anche se bisogna ammettere che molti altri regolatori potrebbero farlo.
Altre importanti caratteristiche sono:
Guardando lo schema elettrico postato sopra potrebbe sembrare che la resistenza R14 sia posta in seri all'uscita, ma in realtà non e' cosi dato che il pin 5 e' in realtà l'ingresso usato dal dispositivo per l'impostazione della limitazione di corrente e l'effettiva uscita di potenza è in realtà il pin 2.
La programmazione del limitatore di corrente avviene tramite i pin 2 e 5, tra i quali e' posta la resistenza R14 di valore 4,7 ohm. Tale valore fissa la massima corrente erogata a valore che si ottiene sottraendo 2 volt al valore impostato in uscita diviso per il valore R14 ovvero 4,7 ohm.
La corrente è quindi limitata a (12-2)/4,7= 2,1 ampere
Ho pensato di limitare la corrente a questo valore massimo dato che la casa costruttrice del dispositivo dichiara che è in grado di lavorare, anche in condizioni estreme, sopra a questo valore di corrente.
La tensione e' impostata dalla somma dei valori delle resistenze (R15+R16) a cui si somma 1, il cui risultato lo moltiplichiamo per la tensione presente al pin 4 usato come riferimento.
Nel nostro caso al pin 4 giunge il valore ripartito con la formula V4 = 12xR16/(R16+R15)
Invertendo la formula è possibile fissare la tensione di uscita avendo nota la Vref al pin 4.
Con i valori indicati nello schema di R15 pari a 2700 ohm, e R16 pari a 820 ohm, ed assunto il valore tipico di Vref internamente generato con un Vin di 20 volt allora la formula restituisce Vo=11,59 volt che grazie alle varie tolleranze sui resistori potrà restituire alla misura circa 12Volt come ci serve.
Nel caso si volessero utilizzare relè con la bobina a 24Volt bastera' ricalcolare i valori di R15 e R16 con la medesima formula e viene lasciato come utile esercizio.
Sezione alimentazione della logica:
Grosso modo si tratta di un semplice regolatore di tensione LM7805 in grado di fornire circa un amper al sistema con i suoi bravi condensatori da 100nF nella che dovrebbero impedire le autoscillazioni. Il diodo D18in alcuni casi potrà salvaguardare il regolatore in caso di "contro pilotaggio".
L'attenzione va focalizzata sui due Morsetti X7 e X5 e sul jumper JP10.
Il morsetto X7 e' impiegato per applicare dall'esterno una tensione robusta ai servomotori quando questi siano piuttosto numerosi, ma nel caso si volesse impiegarne uno solo o si stesse adoperando lo smart controller solo per prove al banco allora si potrà sfruttare la tensione proveniente dallo stesso regolatore 7805 (anche se sconsigliato) chiudendo il jumper J10.
Il morsetto X5 da invece la possibilità di sfruttare la sorgente interna, rappresentata dal 7805, per portare i 5volt a sensori disposti al bordo macchina. Anche questa possibilità va sfruttata con attenzione dato che lo stesso regolatore va ad energizzare il microcontroller. Come è evidente dallo schema al morsetto X5-1 abbiamo i +5V, mentre X5-2 e' connesso alla massa, ovvero gli zero volt.
L'alimentazione esterna dei servomotori ha il +5V sul morsetto X7-1, mentre X7-2 e' ancora la massa.
Sezione PWM hardware:
Il progetto permette di regolare la velocità dei motori in due maniere.
La prima maniera consiste nello sfruttare i canali PWM integrati nell'architettura del PIC con il vantaggio di poter effettuare la regolazione in funzione della risposta da parte del processo in campo oppure tramite una regolazione effettuata nell'interfaccia grafica a PC, Nella seconda maniera viene impostata la velocità agendo sui trimmer e si presume che non ci sia necessità di cambiamenti durante l'uso dell'automa.
Sarà l'applicazione che deciderà se usare uno o l'altro metodo.
Vediamo un po’ di teoria a riguardo della tecnica PWM in sintesi e con chiarezza:
Sistema di controllo in PWM.
La tecnica PWM è impiegata per il controllo della velocità dei motori in continua, ad esempio del tipo con indotto a spazzole e collettore a lamelle ed eccitazione a magnete permanente. L’obbiettivo è quello di ridurre il numero dei giri senza perdita significativa di coppia utile all’albero.
Facciamo le seguenti considerazioni:
La tecnica PWM (modulazione dell’ampiezza dell’impulso) è una maniera per presentare all’indotto una tensione di picco tipicamente come da dati di targa (a mio avviso anche di una qualche decina percentuale più alta) e nel contempo variare la tensione media presente al medesimo collegamento elettrico.
Da quanto detto si ha che si abbassa il numero di giri rispetto ai dati di targa ma rimane costante la coppia.
Operativamente vediamo come fare:
In appendice ho messo l’importante definizione di “grandezza continua” che vi invito ad andare a leggere ora. Secondo quella definizione un motore D.C. non disdegna nessun tipo di tensione continua per quanto fluttuante questa sia, anche se ovviamente qualche affetto c’è.
E’ possibile perfino alimentare un motore D.C. con una tensione sinusoidale-raddrizzata semplicemente tramite un diodo di potenza applicato in serie ad una fase del secondario di un trasformatore. Farà male questa tensione al motore? Risposta: No ! non è nelle condizioni ottimali ma comunque funziona. La prima cosa che notiamo è una “perdita di giri” che dipenderà dal fattore di forma che solo nel caso di una sinusoide coincide con la radice quadrata di due.
Alimentazione accettabile dal motore D.C. (pulsante a 100Hz)
Se il motore è in grado di accettare questa forma d’onda, diciamo “inusuale” per la sua destinazione costruttiva a maggior ragione potrà accettare un’alimentazione ad onda quadrata (vedi appendice).
Analizziamo un solo periodo di questa forma d’onda: Come vediamo agevolmente dal disegno la tensione di picco è pari alla parte stazionaria alta nel semiperiodo. La tensione media, ottenuta campionando il segnale alla frequenza minima ammessa dalla regola di shannon,(vedi appendice) risulta pari a Vp mezzi.
I nostri nonni, nel veneto, avrebbero enunciato questo teorema dicendo “un alto e un basso fa un gualivo” che in effetti, nel nostro dialetto rende benissimo l’idea.
Scherzi a parte, proviamo ad immaginare l’effetto della degenerazione dell’onda quadra in onda rettangolare, ovvero di una variazione del duty cycle.
Se spostiamo avanti il fronte di discesa, tenendo costante la lunghezza del periodo, la tensione media sale di una quantità proporzionale, vedi figura
Se la spostiamo all’indietro scende di una medesima quantità proporzionale, vedi figura.
In definitiva spostando avanti il fronte di salita il motore aumenta il numero dei giri dell’asse, se lo spostiamo indietro diminuisce il numero di giri all’asse, ma la coppia rimane costante perché il valore massimo della tensione all’indotto non è cambiata. Rimane il problema di come spostare questo fronte di discesa tramite un circuito elettronico.
Oggigiorno il problema è semplice quasi banale dato che esistono una quantità infinita di circuiti integrati dedicati al PWM, ma essendo questo un tutorial di taglio elettronico vorrei fare ragionare i lettori sulla costruzione manuale di questa forma d’onda.
Alcuni calcoli fondamentali.
Con riferimento allo schema elettrico visibile più avanti, La frequenza di oscillazione e' data dalla fomula f=1/T dove con T si indica il periodo [s]
Il perido T vale 0,693*(R1+2*R2).
Il tempo in cui l'uscita e' attiva vale Ton= 0,693*(R1+R2)*C1
Il tempo in cui l'uscita e spenta vale Toff=0,693*(R2)*C1
Il rapporto tra il tempo in cui l'uscita e' alta e quello totale del periodo e' il ciclo utile pari a D=T1/T
Online e' possibile trovare degli abachi che permettono il calcolo della frequenza di oscillazione del multivibratore astabile eseguito nella modalità che ho descritto, ovvero che suggeriscono il corretto valore di R1,R2, C1 in base alla frequenza che si desidera ottenere.
Consiglio i volenterosi ad inserire le formule soprascritte in un foglio excell e auto costruirsi questo abaco.
La generazione del segnale PWM, utile come regolatore della potenza trasmessa, e' ottenibile come variante di questa soluzione circuitale.
Si tratta di mantenere costante il periodo T (inverso del frequenza) e dare la possibilità a un controllo manuale di variare il latch alto rispetto a quello basso, ovvero quello normalmente conosciuto come ciclo utile (D.C. duty cycle).
Il trucco consiste nel costringere le correnti di carica e scarica del condensatore C1 a transitare in porzioni di resistenza variabile diversa e manualmente regolata. Tale trucco si attua inserendo due diodi 1N4148 .
Ecco come diversificare i percorsi di carica e scarica della capacita':
La fase di carica, internamente soggetta alle comparazioni con le due soglie 1/3Vcc e 2/3 Vcc, avviene nella maglia R1+R2 a cui si aggiunge la porzione di trimmer inserita. Si giunge al condensatore C1 tramite il diodo D2, l'altro ramo risulta interdetto a causa del diodo D1 in contro polarizzazione. Nella fase di scarica si interdice D2 e va in conduzione diretta D1 che permette la scarica tramite la porzione inserita del trimmer (anche nulla) attraverso il pin 7 dietro a cui abbiamo visto esserci il BHT, npn interno al chip comunemente chiamato discharge. Anche se non e' proprio vero il periodo è pressoché' costante (all'oscilloscopio noterete delle piccole variazioni).
Rimane il probelma della frequenza di risonanza dell'eventuale motore DC collegato, questa e' specifica del motore in uso e andrebbe chiesta al costruttore perchè le misure e i calcoli da farsi non sono semplici.
Tipicamente tra i 12 e i 22 Khz si ha una buona resa.
Empiricamente si ha una frequenza accettabile quando il motore non emette strani rozii e fischi.
Quasi certamente si cade in errore nelle frequenze foniche attorno al chiloHertz.
Esistono due blocchi hardware identici, uno per la regolazione della ruota motrice principale destra e uno per la sinistra.
La sezione PWM hardware è basata sulla modulo di controllo PWM presentato in un precedente capitolo di "Let's GO PIC !!!" dato che il circuito risulta ottimale non si sono portate variazioni o migliorie. La realizzazione è sviluppata sulla base del timer NE555. Per i motori che normalmente impiego (motoriduttori DC a 24V, oppure a 36VDC), la frequenza ottimale di funzionamento è di 22Khz. Per approfondimenti sul funzionamento del Timer NE555 usato come generatore PWM si rimanda al capitolo ottavo del tutorial.
Nella prossima immagine vediamo una delle sezioni gemelle realizzate in Eagle e integrate nello smart controller.
Focalizziamo l'attenzione sui jumper JP2 e JP1. Questi sono stati introdotti per rendere possibile in bypass del sistema hardware consentendo il controllo direttamente dalla sezione Micro-GT mini integrata. Tale controllo può avvenire su due livelli:
Il controllo hardware e' delegato alla generazione pwm tramite i timer NE555 quando il jumper JP2 è chiuso. In queste condizioni vedremo accendersi il LED "ENABLE" che consente al segnale PWM di arrivare fino al jumper JP1. Se quest'ultimo risulta chiuso il motore viene portato al gate del Mosfet di potenza abilitando il ponte H. Le ruote del rover comunque non si muoveranno a meno che non sia portato il segnale TTL di controllo ai BJT di controllo delle bobine dei relè come vedremo nella prossima sezione.
Nel controllo ibrido sarà invece possibile generare il pwm internamente al PIC e farlo entrare in vari punti della catena di pilotaggio del gate del mosfet tramite connessione con streep maschio-femmina. Il segnale pwm direttamente generato dal PIC potrà essere inserito al pin 2 del jumper JP1 .
Sezione inversione di potenza:
:
Sezione di comunicazione.
La sezione integrata nativa di comunicazione per questa scheda e' basata su MAX232 e quindi pensata per una comunicazione seriale standard EIA-RS232C. Troviamo a bordo la porta COM tipo Cannon sub miniature a 9 pin femmina. L'interfaccia tra l'USART integrato nel PIC 16F876A e questa porta COM è il classico traslatore di livello della maxim di cui si è parlato nel precedente articolo sulla nuova scheda Micro-GT 18 mini. Lo schema elettrico dell'interfaccia è la medesima ed e' mostrato qui sotto.
Va considerato che nello zoccolo possiamo ospitare il chip PIC18F2550, e quindi possiamo optare per il collegamento della porta seriale sopra mostrata oppure della porta USB. In questo caso dobbiamo predisporre il circuito con semplici aggiunte che non comportano delle modifiche alle piste.
Sul pin 14 del PIC dovremmo collegare un condensatore ceramico di valore compreso tra 470nF e 220nF affinché' possa stabilizzare il generatore a 3,3V interno essenziale per il funzionamento della periferica USB.
I pin 15 e 16, che corrispondono rispettivamente a RC4 e RC5, saranno sacrificati come I/O digitale perché impegnati come linee D+ e D- della porta USB. E' bene inserire delle resistenze di limitazione di basso valore, qui proposte e testate e 27 ohm, in modo da proteggere la porta da eventuali picchi di corrente.
Lo schema elettrico mostra il pinout del PIC e della porta USB con in mezzo le resistenze da 27 ohm.
Nella successiva immagine vediamo dove inserire la capacità Vusb, non indicata nella serigrafia, e dove portare i due fili D+ e D- provenienti dalla porta USB tenuta volante e ai cui pin siano state collegate le due resistenza da 27 Ohm.
Il rettangolo bianco rappresenta il condensatore mettendo in evidenza che la fila di pin indicati con 1 sono tutti a massa.
Ho testato con successo il valore di 220nF. Non si è notata alcuna differenza nel funzionamento della porta USB.
Sezione di controllo motori ausiliari.
La sezione di controllo motori ausiliari è quella in grado di gestire la potenza maggiore della scheda infatti la limitazione in corrente sarà imposta solo dal tipo di Mosfet impiegato dato che le piste nel PCB sono ampiamente sovradimensionate. Gli IRFP sono disponibili in un'ampia gamma di versioni tutti in grado di trasferire potenze di anche di 280 e oltre watt operando nel prodotto tensione di interruzione per corrente drain surce. Va detto che in molti casi l'IRFP460 non sarà l'elemento più azzeccato dato che è in grado di interrompere ben 500V per una corrente di 20A. In applicazioni di robotica semovente, spesso alimentate a batteria le tensioni in gioco sono quelle sviluppate dagli accumulatori al piombo utilizzati. Nel caso normale avremo a che fare con 12V, se dovessimo avere una situazione particolare potremmo trovarci davanti a serie di due batterie, quindi 24V. Solo in casi particolari, in cui i motori DC dovessero essere particolarmente potenti, potrebbero essere a 48V, ma già è una situazione un po’ estrema.
In queste situazioni di bassa tensione la corrente Drain-Surce aumenta notevolmente, cambiando la sigla del MOSFET di conseguenza.
Non sara' difficile trovare elementi in grado di portare più di 100A con tensioni interrompibili di, ad esempio, 70V.
In questo caso saremo tutelati anche da condizioni estreme di funzionamento del tipo il blocco delle ruote dell'automa.
Moriduttore a 12V prodotto dalla Servotrade con ottime prestazioni, basso consumo elevata coppia.
Per condizioni normali di funzionamento, in cui si usino dei motoriduttori di dimensione contenute, come quelli della foto sovrastante, potremmo attaccare ben 4 esemplari tenendo presente che il controllo di velocità funzionerà per coppie. in questo caso i morsetti saranno X4 e X9 per la prima coppia, ad esempio semiassi del lato destro del rover, e X10 con X8 per i semiassi del lato sinistro, vedi schema della sezione tra qualche riga.
Molto importanti per il "robottaro" sono le informazioni riguardanti la flangiatura (modalità di vincolo allo chassy) quindi le misure e le posizioni dei fori filettati e il diametro dell'asse, ovviamente fondamentali sono peso e misure totali dell'ingombro del motore.
Personalmente me li sono fatti assemblare dal costruttore "Servotrade" in modo che presenti all'asse 33 rpm dato che considero ottimale questa velocità per questa applicazione e come servomotore di potenza per le spalle e l'avanbraccio.
La targhetta riporta i seguenti dati:
casa costruttrice: Servotrade
nome prodotto: D.C. Motorgearbox
sigla identificativa assemblaggio: MG-S-3736-01-90 (definisce il rapporto di riduzione desiderato)
tensione di indotto: 12V
speed: 33 rpm
Le tabelle costruttive fornite dalla Servotrade definiscono per questa combinazione i seguenti valori:
Rapporto di riduzione: 1/90 (riferito alla velocità prescelta all'asse di 33 rpm)
coppia all'asse: 7Kg cm (notevole per un motore cosi piccolo)
corrente a vuoto: 0,2 A
corrente a carico: 0,7A (riferito alla coppia all'asse del dato precedente)
Ecco la tabella completa fornita dalla casa sulla quale basarci per fare assemblare il motoriduttore dimensionato sulle specifiche esigenze.
Osserviamo i morsetti X9-2 e X10-2. Questi permettono il collegamento in parallelo dei MOSFET quando tra questi venga effettuato un robusto ponte con filo di opportuna sezione. Un unico potente motore potrà essere collegato indifferentemente al morsetto 8, ad esempio con la spazzola positiva a X8-2 e quella negativa a X8-1, o analogamente al morsetto X4. I rimanenti morsetti vanno lasciati aperti. Va detto che questa situazione di funzionamento, per i piccoli rover sara' un optional non utilizzato perché i motori saranno certamente più piccoli della dimensione di cui stiamo parlando ora. Predisponiamo comunque l'eventualità dato che questa scheda potrà trovare anche impieghi diversi. Un esempio potrà essere in potenti carrelli con operatore a bordo, o macchine operatrici di qualche genere.
Affinché il parallelo dei MOSFT possa essere controllato con un unico segnale PWM sara' necessario spostare il Jumper JP11 da 1-2 (modalità di controllo separata) a 2-3 modalità parallela dei MOSFET.
Attenzione, JP12 può trarre in inganno a causa della sua forma e potrebbe venire spontaneo chiuderlo con un ponticello per jumper. Se lo fate commettete un errore non distruttivo ma non succede nulla, nel senso che non arriva alcun segnale di comando ai gate. Il sistema e' progettato affinché in fase di sviluppo si possa portare in maniera separata ai PIN 1 e 2 i segnali provenienti da un qualsiasi pin del PIC. Se la connessione sara' poi definitiva dovrete prendervi cura di bloccare il cavetto oppure di effettuare un ponte definitivo ad esempio non montando il jumper i sfruttando i buchi predisposti per esso.
In qualche potrebbe essere utile sviluppare un comando a controllo manuale, ad esempio per pilotare in velocità dei nastri trasportatori tramite dei potenziometri posti nella console di bordo macchina. In questa situazione potrete anche non montare il microcontrollore e portare i due pin del JP12 alle uscite dei due canali PWM hardware, ovvero JP1 al pin 1 e analogamente all'altro canale ovvero JP5 pin 1. Sempre in caso di comando manuale potremmo bloccare la scheda in modalità senza consenso, ovvero chiudendo i jumper JP6 e JP2, oppure collegarci dei pulsanti, fine corsa o cose simili, in cui agendo si avvia il corrispondente motore.
Nella sostanza si può avere piena manovrabilità dei motori in senso di marcia e velocità anche bypassando il Micropic e agendo manualmente con opportuni controlli (pulsanti e potenziometri).
Detto questo la scheda si presta in maniera ottimale per la costruzione di piccole automobiline elettriche in cui può salire a bordo il vostro bambino e passarci delle belle ore. (negli anni 70 il mio carrellino andava a spinta !!!, la mia generazione non e' stata cosi' fortunata). :-)
Il Mosfet IRFP 460 ha l'aspetto mostrato qua sotto:
la piedinatura da sinistra è Gate, Drain, Surce.
Si deve fare attenzione all'isolamento del corpo del dispositivo rispetto alla superficie alettata per il raffreddamento benché il corpo di alcune versioni del TO-247 siano isolati. Consiglio comunque viti di plastica e miche isolati (o isolatori che potrete ricavare da un vecchio alimentatore ATX bruciato).
scarica il data book del IRFP460
Il Mosfet è un canale N, come si vede anche dal simbolo grafico, del tipo ad arricchimento. L'applicazione di una tensione tra Gate e Surce, nel databook consigliata tra 2,5 e 5 volt, comporta la creazione del canale conduttivo tra Drain e Surce, che nel funzionamento "tutto chiuso come un interruttore", ovvero canale completamente formato, garantisce (fonte databook) una resistenza residua tra il terminale centrale (Drain) e il terminale di destra (Surce) di 0,27Ohm. Questo valore è molto buono dal punto di vista della dissipazione che alla fine verrà dissipata, ma non è difficile trovare dei Mosfet con questo parametro residuo di un'ordine di grandezza più basso. Il componente risulta quindi più freddo a parità di corrente che lo attraversa. Nel funzionamento impulsivo, come nel caso di controllo PWM la corrente può raggiungere anche gli 80 ampere.
Il problema delle correnti di Gate.
E' risaputo che i Mosfet sono controllati in tensione anziché in corrente come i BJT, tuttavia questa cosa non deve trarci in inganno e va ben distinto il funzionamento statico o quasi statico, in cui il gate é controllato con rari segnali di comando ON/OFF e quelli in cui un segnale di controllo, ad esempio un veloce PWM, fa assumere alle "armature" del gate un comportamento capacitivo rispetto al bulk. Alzando la frequenza dell'onda rettangolare compaiono due effetti "parassiti" rispetto alla normale funzione del componente. Il primo riguarda la necessità di drenare le cariche dal gate allo scopo di spegnere il dispositivo, il secondo e' una "conduzione" verso il bulk perché la capacità viene vista come una sorta di impedenza che permette il passaggio di una corrente lineare, o simil lineare.
Quando si e' in condizioni statiche o quasi statiche una resistenza al gate, pur sembrando inutile secondo la sola teoria elementare, aiuta molto al controllo della corrente di drenaggio, ovvero impedisce la scarica traumatica della capacità presente tra gate e bulk. Il problema ora diventa il presentarsi di una costante di tempo che non deve superare certi valori per non creare evidenti dissimmetrie tra il tempo di conduzione e interdizione del canale. Nello schema ultimo riportato, le resistenze R33 e R25 di basso valore, limitano l'impulso della corrente di gate durante la chiusura del canale Drain -> Surce, mentre le resistenze R32 e R34 limitano la scarica delle capacità verso massa ovvero permettono il drenaggio delle cariche che portano alla chiusura del canale e quindi allo spegnimento del MOSFET.
Questa tecnica e' la più elementare e va bene nelle condizioni di potenza e frequenza gestite dal progetto dello Smart controller, ma in casi in cui ci siano da gestire potenze e frequenze più elevate e' bene documentarsi leggendo l'articolo di Driussi dell'università di Udine.
http://www.diegm.uniud.it/driussi/biografia/tesi/node37.html
Esistono specifici circuiti integrati, anche comuni, da utilizzarsi come driver dei gate dei Mosfet di potenza:
Il circuito stampato.
Una delle cose più impegnative, e che definisco in una certa maniera l’abilità
del progettista del PCB è il layout. Questa fase è piuttosto impegnativa perché
non sempre una bella disposizione dei componenti è compatibile con le misure
massime disponibili e con l'ordine delle sezioni che si vorrebbe tenere.
Gli strumenti di autorouting non spesso sono abbastanza potenti da risolvere qualsiasi tipo di percorso, ammesso che esista.
Un buon utilizzo dei piani di massa aiuta minimizzando i percorsi di ogni componente verso questa e fornendo anche una buona schermatura e altri vantaggi anche ecologici.
Va detto che un prodotto professionale va eseguito con materiali adatti, ad esempio il FR4 come è il caso di questa scheda.
Nel caso che la connessione tra il diodo D19 e il mosfet Q5 potesse sembrare un po’ debole si può rinforzare con un tratto di filo tra l'anodo e il terminale centrale del MOSFET. Ma sarà solo una precauzione perché la scheda è stata ben testata.
I piani utilizzati per la realizzazione sono due, il bottom layer (piano inferiore) visualizzato in blu, e il top layer (piano superiore), visualizzato in rosso. Gli altri piani visualizzati, e presenti sulla realizzazione sono il 25 e il 27 che mostrano i nomi dei componenti e il loro valore. Ovviamente è attivo un altro layer che mostra il footprint (impronta) dei componenti. Essenziale è anche il piano di taglio e fresatura, di solito è il 20 nel cad Eagle.
Per questa realizzazione è stato usata la versione 6.3.
Layout componenti.
Sul lato sinistro del PIC si vedono tre file di pin header, di tipo maschio. Vanno usati a file di tre verticalmente rispetto al pin a cui quello più a destra è collegato. Questi sono pensati per ospitare direttamente i servomotori.
La fila centrale è l'alimentazione di potenza di tutti i servo motori.
La fila più a destra è riferita alla massa.
Analogamente per i connettori collegati dal pin 2 al pin 6 del PIC, ma a questi possiamo togliere via firmaware il controllo dei servo e abilitare l'acquisizione dei canali analogici.
Uso degli ingressi digitali.
Per utilizzare gli ingressi come digitali e' possibile usare i connettori sfruttando la vicinanza della Vdd. Tra la piazzola connessa la pin del PIC e la fila centrale saldiamo verticalmente una resistenza da 10K. Questa fungerà da pullUP.
Questa cosa è utile per il PORT C e al PORT A perché per il PORT B, benché possibile, si consiglia di abilitare via firmware i pullup interni.
Una foto di insieme della scheda e del connettore pullu-up chiarisce meglio la situazione.
Un robot del tipo a cui è destinata questa scheda di controllo può necessitare di molti ingressi da collegarsi agli apparati di comando e sensoriali. Se questi sono costituiti da semplice contatti on-off, o assimilabili, allora il collegamento potrà essere effettuato semplicemente collegando un capo del contatto a uno dei fili che vediamo partire dal connettore, ad esempio il giallo, e l'altro capo riferito alla massa della scheda.
Vediamo una foto presa da un'altra angolazione.
Assemblaggio e collaudi.
I componenti con cui si è deciso di progettare il circuito sono tutti PTH
e i facile reperibilità. Come si vede dallo schema molti pezzi potranno essere
sostituiti con pezzi di recupero, ad esempio usando i MOSFET recuperati da
vecchi alimentatori ATX da PC ecc.
La lista dei componenti, direttamente esportata dal disegno Eagle, è scaricabile da questo link.
download lista componenti Smart Controller
Il display LCD.
Lo smart controller è predisposto per poter essere collegato a un display LCD a riga di caratteri.
Ho predisposto il programma di base, scritto in hitech C che potrete modificare a vostro piacimento semplicemente inserendo le stringhe che vorrete visualizzare in funzione degli eventi.
Il codice sorgente è scaricabile da questo link che fa riferimento alle librerie Micro-GT dell'omonima community.
scarica la libreria LCD 2x16 per lo Smart controller -> Download libreria LCD 2 x16 PIC16F876/7A.
Il collegamento del Display è nella foto qui sotto.
Va tenuto presente che la piedinatura di questo tipo di display è standard e segue lo schema sotto rappresentato.
In questo esempio è riportato il controllo a 8 bit che in qualche caso potrebbe essere un po’ troppo oneroso di risorse. Sarà l'utente finale a decidere se usare questo oppure la modalità a 4 linee. Si ricorda che in questo caso è meglio non lasciare flottanti le linee da D0 a D3 ma vincolarle alla massa.
Collegamento dei servomotori.
Le applicazioni di robotica semovente potrebbero richiedere, oltre al normale utilizzo dei motori di trazione, anche di alcuni asservimenti per uno o più bracci robot, o utensili di varia natura retraibili. Si rende necessaria la possibilità di installare dei servomotori.
Benché la scheda presenti ben 20 connettori per questi attuatori, e che in via teorica sia possibile l'installazione di un numero così elevato, nella pratica non lo faremo perché significa dovere rinunciare a altri punti di I/O sicuramente necessari ad altri scopi, ad esempio al controllo delle ruote di trazione.
Come già avveniva nella Micro-GT mini è possibile l'inserimento diretto delle spinette dei servo e di sfruttare un canale di alimentazione di potenza separata da quella della logica.
Nella foto vediamo un esempio di collegamento di 8 servomotori.
E' stata sviluppata per la Micro-GT mini, e compatibile con lo Smart Controller un'interfaccia in dotnet per il controllo via PC dei servomotori.
Questa è liberamente scaricabile dal link -> Download interfaccia controllo 14 servomotori.
La versione in Visual basic 6 si può scaricare da qui -> Download interfaccia 14 servo VB6
Chiunque volesse partecipare all'evoluzione di questo progetto software farebbe una cosa gradita se lo pubblicasse nella comunity Micro-GT. potete contattarmi alla mia mail ad.noctis@gmail.com
Da questo link scarica il programma per PIC16F876A con quarzo a 20 Mhz -> Download controllo servo firmware
La programmazione del PIC
Vi sono varie maniere per flaschare il PIC a bordo dello Smart Controller, ma le principali sono:
Nel primo caso potremmo usare il PICPROG2009 come software di caricamento che riconoscerà facilmente lo smart controller.
Nel secondo caso l'interfacciamento è diretto tramite il connettore strip line maschio a 6 vie indicato con SV1. I dispositivi PICKIT potranno essere inseriti direttamente anche a scheda spenta purché sia chiuso il jumper JP9.
Nel terzo caso si potrà procedere con due passi, il primo è l'inserimento del bootloader nel PIC usando lo zoccolo textool della Micro-GT versatile IDE, e successivamente usando il downloader software già presentato in una precedente edizione del corso.
Programmazione dello Smart Controller usando PICKIT3
La prossima immagine mota il circuito in fase di programmazione usando una fonte di alimentazione esterna. I morsetti per il power supply esterno sono la coppia penultima e sono chiaramente indicati in serigrafia.
Programmazione con alimentazione esterna.
Il firmware.
Forniamo ora un firmware che vi permetterà di testare lo Smart controller, ma
che vi tornerà utile anche in molte occasioni.
Procuratevi e installate il Realpic simulator, dopo di che impostate due pulsanti su RD0 e RD1 con azione normal 1 e pressed zero.
Impostate un cursore analogico sul canale analogico AN0.
Impostate le sonde dell'oscilloscopio virtuale sulle uscite RC1 e RC2.
Il file rpp che troverete nel link di download sotto l'immagine si carica da solo le impostazione sopra dette ed inoltre carica il file hex che è stato preimpostato.
Non vi resta che premere il triangolo verde, che diventerà il pallino rosso visibile nell'immagine. Inizialmente non vedrete nulla quindi spostate il cursore per fare comparire l'azione PWM mostrata in giallo dalla prima sonda.
Analogamente agite sui pulsanti per fare comparire l'azione PWM con azione di aumento e diminuzione a impulsi digitali.
Scarica il file hex di test per il doppio canale PWM da analogico (potenziometro) o da due tasti aumenta e diminuisci
download hex e file Realpic simulator
Di certo avrete notato che il sistema di simulazione e di conseguenza l'hex che esegue è stato programmato per MCU 16F877a, ma non vi sarà difficile capire come farlo funzionare per 16F876A, analizzando i pezzi di sorgente che fornisco sulla community Micro-GT scaricando dal link -> download PWM Micro-GT
L'interfaccia software
In passato è stata realizzata un'interfaccia in dotnet per il controllo dell'I/O digitale della Micro-GT mini. Date le molte analogie circuitali funzionerà perfettamente anche per il controllo via PC dello smart controller. Il progetto è stato curato dall'ing. Alejandro Gatto, il quale potrebbe rendersi disponibile per chi avesse bisogno di customizzare il programma sulle proprie esigenze.
Nell'immagine vediamo l'aspetto attuale dell'interfaccia.
scarica l'interfaccia e i sorgenti dotnet
Cliccando sui LED virtuali, a partire da sinistra, si ottiene l'attivazione delle uscite RB0 fino a RB7, ma e' possibile modificare sul sorgente scaricabile sia il numero di I/O controllabili che gli indirizzi di questi. In definitiva ogni pin del PIC e' controllabile modificando opportunamente questa interfaccia messa gratuitamente a disposizione.
Per quanto riguarda i sorgenti, utili per la comunicazione seriale e per il controllo da PC, sono disponibili al link qui sotto che fa riferimento alla communty Micro-GT.
http://www.gtronic.it/community/cap11_direct_IO.htm
Sarebbe molto gradito avere notizie delle varie modifiche e applicazioni pubblicate in questo sito www.grix.con ed avere l'autorizzazione di replicare l'articolo nella nascente comunity Micro-GT che si raggiunge in questo link:
http://www.gtronic.it/community/community.html
L'interfaccia in questione funziona bene anche sulle porte USB convertite in RS232 tramite gli opportuni ed economici adattatori/convertitori. Il test e' stato eseguito con diversi modelli, per citarne uno il Manhattan del costo di pochi euro.
Anteprima di applicazioni.
Verranno presentati svariati progetti basati su questa piattaforma hardware. Probabilmente il primo riguarderà un modello di pannello solare ad inseguimento che potrà essere preso come spunto per le tesine scolastiche.
Lo schema di principio è nella foto.
Si suggerisce di usare il disegno sovrastante come sfondo della modifica da apportare all'interfaccia dotnet scaricabile sopra e di indicare su quattro pulsanti le direzioni zenit+, zenit-, tilt+, tilt-.
Il pannello in scala che si potrà costruire a scopo di tesina ha in realtà un alterego funzionante, con potenza installata di circa 9Kw/h. è stato realizzato nel 2008 e si trova in una località dell'alto vicentino, a una trentina di km dall'altopiano di Asiago.
All'epoca della realizzazione di questo impianto si era deciso di controllare il puntamento con un PLC SIEMENS S7-200. In un articolo che seguirà questo capitolo realizzeremo il controllo con il Micro-GT Smart Controller. Probabilmente realizzeremo l'impianto in due maniere e cioè montando il 16F876A e in maniera più performante, e munendolo di interfaccia USB e/o remota via TCP/IP, con il PIC 18F2550.
Appendice.
Grandezza continua: una grandezza (tensione o corrente) si dice continua
quando per quanto fluttui e sia instabile rispetto a un valore nominale
dato, non passa mai sotto la linea di zero. Il passaggio sotto lo zero
implica infatti una inversione del verso di deriva degli elettroni divenendo
così alternata.
Onda quadra: dicasi onda quadra una particolare forma di segnale continuo (vedi grandezza continua) costituita da un tempo di permanenza stazionaria (vedi sopra) alta pari al tempo stazionario basso. Ovviamente si intende che il segnale si ripete uguale ne tempo per un tempo indefinito, è cioè periodico. Dato che si definisce “Duty cycle” la percentuale della parte alta rispetto alla parte bassa di un segnale costruito come appena esposto, allora possiamo definire l’onda quadra come quella particolare onda rettangolare caratterizzata da un duty cycle del 50%.
Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia