Decima parte del tutorial di Marco Gottardo sui PIC. In questo capitolo Marco presenta il prodotto ad uso hobbistico e didattico "Micro-GT mini". Un sistema di sviluppo Estremamente economico e efficace ottimo per le scuole e gli autodidatti.

Let's GO PIC !!!

Micro-GT mini

Ad un anno di distanza dalla creazione della Micro-GT PIC versatile I.D.E. decido di lanciare sul mercato hobbistico e didattico l'erede del noto sistema di sviluppo del quale sono stati distribuiti quasi duecento esemplari. La filosofia principale cambia passando dalla "all in one" ovvero tutto a bordo al sistema distribuito su più supporti che si chiameranno mini shield. Punto di forza sarà l'estrema economicità del sistema abbinata comunque a grande versatilità ed interfacciabilità.

Differenze con il modello superiore Micro-GT PIC versatile I.D.E.


La Micro-GT mini è un sistema di sviluppo esattamente come la versione precedente ma il supporto PCB risulta molto più compatto misurando solo 62x55mm contro i 164x155mm della sorella maggiore. La principale limitazione sta nell'evidente vincolo ad utilizzare solo i pic a 28  pin con piedinatura equivalente al 16F876A, anche della serie 18 e nella mancanza dello zoccolo textool, reso comunque inutile dalla filosofia di programmazione "incircuit" che sarà il tema dominante di questo e dei prossimi episodi del tutorial "Let's GO PIC". In pratica, una volta inserito il PIC in questa minuscola scheda non sarà più necessario rimuoverlo anche nel caso si volesse eseguire una riprogrammazione.

Vi sono due possibilità di programmazione del PIC:

Programmazione via ICSP

A vantaggio rispetto il modello superiore è la presenza, sul lato sinistro,  del connettore ICSP a 6 pin che permette la compatibilità diretta con i prodotti ufficiali di casa MicroChip pickit2 e pickit3 di cui sotto vediamo le immagini e i rispettivi pinout.

PICKit 3 connector PINOUT

Come possiamo notare le configurazioni dei connettori dei due modelli di PICKIT  sono identiche e quindi compatibili, sarà quindi sufficiente inserire questo strumento nell'apposito connettore ICSP della Micro-GT mini per programmare il PIC inserito nello zoccolo.

Attenzione: I pin 2 e 6 del connettore ICSP sono collegati alla piazzole LSP3 e LSP4 visibili nella foto immediatamente sotto il connettore, questo al fine di dare la massima interfacciabilità. Solitamente il pin 6 è sconnesso anche nel PICkit, mentre il pin 2 corrisponde alla tensione di alimentazione Vdd di +5V presente nella scheda. in caso servisse, cosa non sempre vera, saldiamo li un filo che all'altro estremo potrà essere chiuso nel morsetto X2 terminale 1, che corrisponde al quarto polo a partire dal lato alto (quello dei led) 

Punto di grande orgoglio è l'ampia scritta serigrafata  MADE IN ITALY ed invito tutti i colleghi a non dimenticare mai di imprimerla nelle proprie realizzazioni

Rispetto al modello superiore non vi è più la necessità di usare cavetto pentafilare colorato ICSP che viene fornito in dotazione.

Programmazione tramite bootloader.

Un bootloader è una sorta di "sistema operativo" scritto appositamente per il PIC avente la funzione di consentire la programmazione LVP (programmazione a bassa tensione) del dispositivo usando anche la sua sola porta seriale.

Il sistema è diviso in due software, uno il bootloader propriamente detto e il secondo è il downloader. di entrambi esistono molteplici versioni anche open surce e customizzabili secondo le rispettive licenze di rilascio.

In questo link il downloader aggiornato testato e funzionante  UserFiles/ad.noctis/downloader(2).rar.

Dai successivi due link è possibile scaricare i bootloader specifici per le velocità di cominicazione e frequenza del quarzo indicati: 
UserFiles/ad.noctis/bootloader 16F876A 4Mhz 9600.rar

UserFiles/ad.noctis/bootloader 16F876A 20Mhz 38400.rar

Operativamente si proceda come segue:

  1. Caricare il bootloader specifico nel PIC che si intenderà usare nella propria Micro-GT mini, tale scelta sarà subordinata al tipo di utilizzo e di programazione che si intende "mediamente" svolgere. Importante è montare il quarzo corrispondente e settare la porta seriale "anche virtuale convertita da USB come normalmente si fa nei portatili, alla velocità indicata. Nei numerosi test eseguiti i due bootloader sopra forniti si sono comportati magnificamente. Ovviamnete il bootloader va caricato usando un programmer, ad esempio la Micro-GT PIC versatile IDE, ma in mancanza di tale strumento potrete richiedere la vostra copia di Micro-GT mini con bootloader precaricato.
  2. scompattare il "downloader" sul desktop del vostro computer. Personalmente ho usato win7 a 64 bit. Si tratta di un file exe e non comporta una vera istallazione. Una volta lanciato, aprite il .hex ottenuto come sorgente compilato con i metodi spiegati nei precedenti episodi di "Let's go pic !!!" o qualsiasi altro metodo. Ricordatevi che l'impostazione dei fuse non è eseguita da questo downloader, quindi dovrà essere implementata all'interno del codice sorgente "C". Per intenderci, nei primi programmini quali ad esempio il classico supercar usato come test di funzionalità del PORTB e la sua connessione agli 8 led onboard, disabilitate il watchdog e ogni altro fuse tranne il LVP e il write enable.
  3. quando lancerete la scrittura sul PIC, il downloader risponde con "searching for bootloader", per agganciare la comunicazione dovete celermente agire sul tasto di reset della Micro-GT mini.  Vedrete la barra progresso avanzare con una velocità sorprendente, specialmente se avete usato il bootloader a 38400 (quello da 20Mhz), ed ovviamente avete impostato la velocità della porta a quel valore sul vostro sistema operativo.
  4. Naturamente, se avete un notebook o un netbook, siete collegati tramite un normale ed economico convertitore USB->RS232. Ne abbiamo provati diversi ed hanno funzionato tutti.

     

Per poter funzionare il sistema necessita di un cavo seriale che colleghi il tratto di uscita dal convertitore da USB a RS232 con la piedinatura indica in figura:

Attenzione: Non guardate i numeri interni sul lato frontale dei connettori, ma quelli posteriori sul lato saldature altrimenti rischiate di costruire un cavo non funzionante.
Se non avete un cavo a 9 conduttori si può usare un cavo a 4 più calza o più schermo. funzionerà esattamente nella stessa maniera.  in questo caso le conessioni essenziali sono:

L'aspetto finale del cavo ottenuto è noto a tutti, ma per i meno esperti ricordiamo che dobbiamo vedere un connettore maschio che andrà connesso alla Micro-GT e uno femmina che andrà connesso al convertitore USB->RS232 oppure alla porta com del PC desktop (ove provvisto di questa porta).

La tabellina riassuntiva del cavo a 5 conduttori, lato saldature, è:

femmina   maschio
5

>

1
2 > 4
3

>

3
8

>

7
7

>

8

Sempre a titolo di promemoria riporto anche le assegnazioni standard dei connettori Cannon DB9.

In alcuni siti, ad esempio in un sito di robotica danese, la Micro-GT mini è distribuita come "pacchetto completo" quindi il cavo è già incluso come anche il corso di utilizzo su CD rom, un servomotore, un PIC con bootloader precaricato e alcuni programmi dimostrativi che coprono grossomodo tutte le competenze richieste al programmatore di PIC comprese le gestioni dei segnali analogici, gli interfacciamti seriali al PC per il controllo di 14 servo, i motori stepper, i display LCD, ecc.   Il medesimo pacchetto mette a disposizione anche alcuni mini shield di uso fondamentale.

Ulteriore differenza con la sorella maggiore sta nel fatto che non è montato onboard alcun pulsante per la simulazione degli input, infatti l'unico presente, e anche indispensabile per l'utilizzo del bootloader, è il pulsante di reset.  Nel caso il prodotto abbia un riscontro positivo tra il pubblico verrà realizzato un mini shield che funga da pulsantiera. L'accessibilità ai punti di I/O è comunque totale e molto chiara dato che gli strip line seguono con buona approssimazione il pinout del PIC sul layout del PCB. 

Punto di forza di questa scheda rispetto al modello superiore è l'interfacciabilità diretta con ben 14 sermotori per i quali i connettori streep line a tre posizioni e i morsetti a viti per l'alimentazione separata sono stati appositamente studiati.

scarica immagine ad alta risoluzione ->UserFiles/ad.noctis/Mini microGT_con_8_servo.jpg

Nella foto sono rappresentati solo 8 dei possibili 14 sermotori collegabili, al fine di non avere troppi cavi nell'immagine che avrebbero reso poco chiara l'immagine, tuttavia è facilmente intuibile che tutti gli strip line alla destra del PIC possono ospitare un servo motore secondo la piedinatura standard a tre fili, Vcc a +5V (separata dall'alimentazione della logica) al centro, il pin più vicino al pico, generalmente Blu arancio bianco o giallo a seconda della casa costruttrice corrisponde al segnale mostabile ripetuto che posiziona in maniera agolare il servomotore, mentre il pin rimanente dei tre, ovvero quello dal lato della porta di comunicazione è la massa dei motori in comune con la massa della scheda. Questo tipo di collegamento crea una sorta di protezione intrinseca del servo dalle inversioni fortuite di innesto del connettore dato che il pin di alimentazione si trova al centro e quindi in una posizione simmetrica. Esso continua ad avere la tensione correta ma comunque il motore non si muoverà perché il pin a cui è destinato il segnale si troverà a massa.

Il quarzo potrebbe rimanere intercambiabile montandolo anziché saldato a stampato semplicemente su zoccolo a tulipano come anche i due condensatori ciramici con la nota equivalenza:

Nella foto vediamo chiaramente la soluzione per rendere intercambiabile il quarzo quando la scheda è usat come sistema di sviluppo e prove in laboratorio.

Al fine di garantire un buon contatto elettrico tra i sottili reofori dei condensatori e quarzo con i rispettivi zoccoli si consiglia di incurvarli un po' e di fare si che la loro apertura naturale li tenga pressati al metallo interno degli strip line femmina con cui si è costruita la piedinatura. chi si sente troppo incerto lasci perdere questa soluzione e saldi direttamente il quarzo da 4 Mhz sullo stampato tenendo conto che nel progetto finale la velocità di esecuzione risulterà sballata  usando le vecchie delay, invece sarà verosimile usando le nuove delay aggiornante. (ricordarsi di cambiare il #define del quarzo nella prima riga dell'header  define .h. 

Schema elettrico.
 


Lo schema elettrico è molto basilare ed essenziale, non ci sono cose misteriose o granché particolari tranne forse la soluzione con diodo 1N4148 e doppia resistenza al piedino MCLR.

-----------------------------------------------------------------------------------------------------------------------------------------------------

Lista dei componenti:

R1 = compresa tra 220 e 1K (buona 560)

R2 = 10k pull up per il comando di reset

R3 = 1K consente applicazionedella tensione di programmazione senza cortocircuitare

RN1 = rete resistiva con comune su pin 1 e 8 vie, in alternativa 8 resistenze di valore tra 220 e 1K.

D1 = 1N4148 impedisce alla tensione di programmazione di defluire selle alimentazioni danneggiano PIC e regolatore.

P1 = pulsante di reset, normalmente aperto per stampato (tipicamente omron)

C1=C2 = Condensatori ceramici 18pF se quarzo 20Mhz, 22pF se quarzo a 4Mhz

C3=C4=C5=C6 =  10uF 35VL lettrolitici per traslatore di livello MAX232

C7 = 100 nF poliestere  (filtro su alimentazione del PIC)

LD1 - LD8 = diodi LED rossi 3 mm (montare con catodi verso il PIC, quindi in giù)

power = diodo led verde 3 mm (montare con catodo verso il PIC, quindi in su)

Zoccoli  2 da 7+7 pin oppure 1 da 28 pin per il microcontrollore

zoccolo 8+8 pin per il traslatore di livello.

X1=X2=X4 = morsetti a vite a due vie per montaggio su stampato

X3 = connettore Cannon DB9 femmina per montaggio su stampato a 90 gradi.

LM7805 = regolatore di tensione positiva per alimentazione TTL della scheda

MAX232 = traslatore di livello per adattare le tensioni duali +/- 12VDC della trasmissione seriale a TTL UART PIC

PIC16F876 = microcontrollore PIC a 28 pin o equivalente pin to pin come ad esempio 18F2520 o 16F873

SV1 = strip line maschio a 6 vie meglio se lungo e 90 gradi per connessione con PICkit 2 o PICkit 3 passo integrato

Analog/digital = strip line maschio a 6 vie standard passo integrato

SV9 = strip line maschio passo 8 vie passo integrato

SV3-SV4-SV5-SV6-SV7-SV8 = strip line maschi a tre vie passo integrato

SV10-SV11-SV12-SV13-SV14-SV15-SV16-SV17 stri line maschi a tre vie passo integrato

uno trip line femmina a 40 vie per costruire i cavi flat e gli zoccoli del quarzo/condensatori rimovibili

piattina rosso nera per alimentazione del dispositivo

Fornire al morsetto X1 un tensione di alimentazione compresa tra 7 e 18 volt (sopporta i 24) X1-1 positivo, X1-2 gnd  

------------------------------------------------------------------------------------------------------------------------------------------------------------

Sempre di grande utilità è il tenere sottocchio il pinout del microcontrollore PIC a 28 pin per il quale la scheda è stata sviluappata.

Tempo permettendo verrà realizzato uno shield che implementa i giusti incroci di pin in modo da poter installare un microcontrollore Atmel. per il momento non è assolutamente compatibile quindi non tentiamo l'inserimento.

La realizzazione di una scheda così compatta è bene non lasciarla nelle mani di FidoCad ma ad uno strumento un po' più potente come Eagle. E' stata infatti realizzata in dual layer su laminato di tipo FR4.

Dopo la fase di sbroglio automatico eseguito con il comando di autorouting (si vedano i miei precedenti tutorial "esercizi di Eagle") si ottiene quanto vediamo qui sotto:

I tre morsetti a vite a due vie hanno il seguente significato, elencando dall'alto:

 

La fase successiva della lavorazione è l'esecuzione del CAM (vedere i tutorial esercizi di Cad Eagle che ho pubblicato su grix). L'uso degli strumenti di CAM integrati su Eagle producono dei files chiamati gerber. 

I gerber rappresentano le direttive di controllo che le macchine a controllo numerico attendono per la realizzazione fisica del PCB, ad esempio il fil .drd ottenuto tramite il passaggio di CAM con l'attivazione della macro excellion.cam restituisce coordinate e diametri di tutti i fori presenti nel supporto, analogamente il file .GKO restituisce i profili di fresatura alla macchina che monta gli utelsili da taglio, sarebbe come dire contorni e profili del PCB.

Il risultato finale è questo:

Micro-GT mini lato componenti. (62mm x 55mm)

La fase di assemblaggio non nasconde nessuna difficoltà e può essere realizzata da un esperto in circa mezzora. Un po' lunga è la fase di saldatura dei pin dei servo, che consiglio vivamente di saldare a righe di tre verticali (come indicato nella serigrafia) quindi si avrà un utile promemoria del fatto che questi connettori sono espressamente pensati per i sevomotori. Evitate quindi, anche se è possibile farlo, di saldare la riga di strip line maschi, da otto per il PORTB (il gruppo più a destra) e da 6 per il PORTC su tre righe orizzontali. Al PORTC mancano due punti di I/O perché sono impegnati dalla porta di comunicazione seriale, si è preferito sacrificarli piuttosto che complicare notevolmente il layout del PCB.

Si ricorda che sulla porta seriale arrivano segnali bipolari a +12 e -12 Volt, quindi i condensatori elettrolitici collegati al traslatore di livello MAX232 potranno avere un voltaggio di lavoro anche di soli 35VL risultando quindi molto compatti. In fase di montaggio teniamo tutti i positivi (reofori più lunghi) orientati verso il regolatore di tensione come chiaramente indicato nella serigrafia .

Ecco un esemplare della Micro-GT mini assemblato:

Le reti resistive sono oggi componenti molto comuni ed economici, ma può succedere che qualche piccolo negozio non ne disponga a magazzino, in questo caso non esitiamo a montare otto resistenze da 1/4w di valore compreso tra i 220 Ohm e 1K, in posizione verticale, tenendo presente che quella più a sinistra avrà il reoforo in alto non tagliato ma semplicemente piegato verso le altre resistenze per poi rientarre nello stampato nel pin 1 della rete resistiva (terminale comune) saldiamo tutti i reofori verticali rimasti liberi a questo trasverso prima di tagliarli a misura.

Abbiamo costruito manualmente la nostra rete resistiva.

Come sappiamo per questioni di compatibilità con alcuni file .hex che possiamo trovare in internet è bene che il nostro I.D.E. (sistema di sviluppo ovvero la Micro-GT mini) possa lavorare a più velocità, ecco perché nella foto, e come già spiegato in precedenza, i condensatori hanno i reofori cosi stranamente lunghi. difatti non sono saldati come anche il quarzo. Ovviamente questa soluzione va bene solo in laboratorio e in fase di sviluppo.  Se la scheda avesse una destinazione finale come controllo di qualsivoglia cosa, allora quarzo e condensatori ceramici vanno obbligatoriamente ben saldati al PCB.  
 

Muniamo adesso la nostra realizzazione di alcuni utili accessori, il primo è un cavetto flat a 8 conduttori che ha lo scopo di unire lo srip line dei LED con il PORT di cui vogliamo visualizzare lo stato.

Un secondo cavo, analogo ma a soli 6 conduttori dovrà essere costruito per essere inserito sul connettore indicato con analog/digital, avente appunto lo scopo di consentire il collegamento del PORTA con segnali TTL provenienti dall'esterno  oppure con segnali analogici. La simulazione di tali segnali anlogici potrà avvenire ad esempio collegando fino a 6 potenziometri da 10K ohm  aventi il cursore collegato a uno di questi pin, mentre i due laterali ai morsetti X2-1 (ovvero a +5V) e l'altro a X2-2, ovvero alla massa del circuito.

Alcuni programmi di test.

Questo decimo episodio di Let's GO PICe' il primo basato sulla piattaforma ridotta Micro-GT mini e apre un nuovo filone di esempi di programmazione e metodologie particolarmente adatte agli ambienti didattici, hobbistici o per l'auto apprendimento. Come per i precedenti episodi saranno presentati dei capitoli per specifici argomenti, quindi quanto si presenta ora e' da considerarsi solo appendice al lancio del nuovo Hardware G-Tronic Robotics. In sostanza verranno messi qui dei compilanti senza curarsi minimamente della fase di creazione del sorgente dato che questa si da o per gia' acquisita dalla lettura dei precedenti capitoli oppure verra' presentata e approfondita in capitoli successivi.

Quello che interessa ora e' testare bene l'Hardware.

Esempio 1: Bargraph su segnale analogico.

Si vuole accendere i led connessi al PORTB in funzione del valore analogico presente nel primo canale del PORTA del PIC 16F876A. Il range 0->5V viene quindi diviso in 8 livelli e il segnale analogico che simula ad esempio il volume di un liquido  dentro a una cisterna o una luminosita' ambientale o anche una temperatura, e' simulato tramite l'azione  manuale su un potenziometro.

scarica il file hex ->ADCsoglia.zip

scarica il downloader ->downloader.zip



Nella foto vediamo il corretto collegamento della scheda per il funzionamento di questo programa di test. il potenziometro da 10K ha il cursore (filo bianco centrale) collegato tramite uno strip line, ad una posizione, al connettore ANALOG/DIGITAL nel primo pin dal lato morsetti, risulterà connesso a RA0 ovvero al primo canale analogico. I fili rosso e neri lato potenziometro sono collegati rispettando i colori a 5Vcc della scheda (morsetto X2-1) e massa della scheda (morsetto X2-2).  Ruotando il cursore del potenziometro si simula un segnale analocico compreso tra 0 e 5V.

Una serie di comparatori software accenderanno i led connessi al PORTB, ad esempio a rampa.

ATTENZIONE: in alcuni casi si potrebbe verificare che il LED 4 (il primo spento della foto) non si accenda. Non si tratat di un problema hardware ma software da ricercarsi non nel sorgente "C" ma bensì nello specifico bootloader utilizzato che potrebbe tenere impegnato RB3 del 16F876A dato che questo, come si può notare guardando la piedinatura riportata poco sopra, è abbinato al segnale di programmazione PGM. Caricando il medesimo programma in un PIC privo di bootloader tramite il pickit o la Micro-GT pic versatile IDE, il problema sparisce.

Esempio 2: controllo di un servomotore da segnale analogico.

Il secondo esempio proposto è il controllo di un servomotore da modellismo. Come nell'esempio precedente non ci addentreremo nel sorgente, dato che sarà argomento di un episodio del tutorial "Let's GO PIC" e ci serve in questo momento solo dimostrare la funzionalità  della nuova piattaforma Micro-Gt mini.

Un servomotore collegato a RB0 deve essere controllato dalla posizione analogica imposta da un potenziometra da 10 k collegato a RA0.

scarica il file .hex che gestisce il servomotore ->mini1servo.zip

l'assemblaggio corretto è visibile nella foto sottostante:

 

Chi fosse interessato ad avere la Micro-GT mini, solo circuito stampato oppure già assemblata e collaudata con bootloader mi può contattare sulla mail di grix oppure all'indirizzo ad.noctis@gmail.com

 

E' possibile avere anche piccole serie del circuito stampato ad esempio per le scuole e centri di formazione.

auguro a tutti buon divertimento.

Marco Gottardo as ad.noctis

Licenza Creative Commons
This opera is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Italy License.