A cura di Giampaolo Pucci e Nicola Amoroso
Introduzione
Il “Kit GpBoard” è stata sviluppato da alcuni docenti dell’Istituto Tecnico Industriale
“G.Cardano” di Monterotondo (Roma)
per
affiancare allo studio teorico della
progettazione di sistemi a microcontrollore la verifica sperimentale di laboratorio.
Il sistema, pur essendo sviluppato per supportare i corsi di elettronica, informatica e
sistemi automatici in cui si preveda la realizzazione di minirobot didattici e da competizione
(RoboCup Junior, Robot Explorer e RoboSumo), grazie alla sua architettura modulare è
estremamente flessibile e può essere utilizzato per ridurre i tempi ed i costi nello sviluppo
di piccoli e medi sistemi di controllo didattici, hobbistici ed industriali.
Il “Kit Gp_Board” è costituito da:

Scheda a microcontrollore Gp_Board;

Moduli di espansione hardware;

Routine software di controllo;

Programmatore (ICP).
C - Asm
Library
In Circuit
Programmer
Gp_Board
Fig1: Kit Gp_Board
Il Kit permette di configurare l’hardware del sistema da realizzare montando sulla scheda
“Gp_Board” solo le sezioni necessarie all’applicazione da realizzare, eventualmente
aggiungendo funzionalità tramite i moduli di espansione.
Una volta definito l’hardware, il sistema è programmabile in linguaggio C (compilatore
CCS, Hitec, etc), in Basic (PicBasicPro etc.), in assembler (MPASM etc..) o in qualsiasi
altro linguaggio capace di supportare il linguaggio Pic Micrpchip. Compilato il programma,
il codice macchina viene scaricato direttamente nella memoria del microcontrollore, quindi
il processore viene automaticamente resettato ed il programma è mandato in esecuzione.
Il download del software avviene tramite un’apposita scheda programmatore connesso
da un lato alla porta parallela del computer e dall’altro, serialmente, alla scheda GpBoard
(In Circuit Programming).
Essendo la memoria del microcontroller di tipo flash, ovvero programmabile e cancellabile
elettricamente (EEPROM), il processo di programmazione è velocissimo e può essere
ripetuto centinaia di volte.
Caratteristiche tecniche
Il cuore del sistema è costituito dalla scheda a microcontrollore Gp_Board , basata su un
microcontrollore Microchip PIC 16F877 con frequenza di lavoro fino a 20MHz e memoria
Flash da 8K.
Tramite 3 connettori (denominati Expansion slot) presenti nella ‘Gp_board’ è possibile
connettersi direttamente ai pin del microcontroller. Si rendono così disponibili all’uso i
seguenti dispositivi presenti all’interno del micro:
o N.32 bit Digital Port in-out;
o N.8 Analog input (ADC a 10 bit);
o N.3 Timer (in-out);
o N.4 Interrupt hardware;
o N.2 PWM (Pulse Wide Modulation);
o N.3 Serial Interface (USART, I2C, SPI).
La scheda Gp_Bus offre la possibilità di interfacciare il microprocessore ai seguenti
dispositivi hardware predisposti sulla scheda:
o N.1 LED;
o N.1 Buzzer;
o N.1 Display LCD 4x20
o N.1 Rs232 serial port;
o N.4 Switch;
o N.2 Drive motors;
o N.1 Logic power;
o N.1 Motor power;
o N.1 In Circuit Programmer;
o N.3 Expansion slot;
Lo schema a blocchi della scheda Gp_Board è rappresentato in [Fig. 2], mentre lo schema
elettrico è riportato in allegato.
Bumpers
Switch
LED
Reset
Clock
Rs232
Buzzer
PIC
Display
LCD
In Circuit
Programmer
Drive
Motors
Logic
Power
Motors
Power
Expansion
Slot
Fig.2: Schema a blocchi della scheda Gp_Board
Mediante gli Expansion Slot possono essere connessi i seguenti moduli di espansione:
o Gp_Bus - Estende a sei il numero di slot;
o Gp_Tx-Rx – Modulo trasmissione dati seriali a radiofrequenza (433MHz);
o Gp_Compass – Modulo bussola magnetica (1 grado di risoluzione);
o Gp_Motors – Modulo driver motors (2 A max);
o Na_RTC – Modulo data e ora (Real Time Clock);
o Gp_Relè – Modulo relè;
o Na_Temp & Lux - Modulo sensore temperatura e luce;
o Gp_Key - Modulo tastierino numerico;
o Gp_IR - Modulo sensori infrarossi (rilevatore palla robocup j.);
o Gp_Step – Modulo driver motore passo-passo;
o Gp_Gas – Modulo sensore gas;
o Gp_Rs422 – Modulo ricetrasmissione dati seriali (lunghezza max cavo 1.2Km);
o Gp_PID – Modulo controllore PID;
o Na_BreadBoard - Bus connessione per basette sperimentali bread-board.
Descrizione tecnica
Analizziamo in dettaglio la funzionalità di ciascun blocco della scheda, iniziando dai
blocchi fondamentali al funzionamento del sistema.
Logic
Power
Blocco alimentazione dei circuiti logici
Fornisce l’alimentazione a tutti i circuiti logici (Vcc) presenti sulla scheda, ad eccezione dei
motori.
Tramite il connettore JP10 deve essere collegato all’ alimentazione esterna, proveniente
da una batteria o da un alimentatore ed il cui valore di tensione deve essere compreso tra
6 e 9 Volt.
Lo stabilizzatore di tensione U4 (LM2940-5) garantisce una tensione di uscita (Vcc) pari a
5 Volt ed una corrente massima di 1 A.
L’attivazione del circuito avviene tramite l’interruttore S3 ed è segnalata dal LED verde
DL4 in qualità di spia dell’alimentazione logica.
Clock
Blocco circuito oscillatore
Determina la velocità di elaborazione del microcontrollore.
Il circuito oscillatore è implementato all’interno del PIC; è sufficiente collegare un quarzo
(XTAL1) e da due condensatori a disco (C2 e C3) per completare tale blocco.
Il valore del quarzo deve essere scelto considerando la massima frequenza operativa del
PIC, desumibile facilmente dalla sigla. Ad esempio utilizzando il PIC 16F877-4 il quarzo
dovrà essere minore o uguale a 4MHz, mentre per il PIC 16F877-20 il quarzo dovrà
essere minore o uguale a 20 MHz.
Il segnale ai capi del quarzo è prelevabile dai connettori di espansione (segnali OSC1 e
OSC2 dell’ Expansion Slot) nel caso in cui si vogliano connettere sistemi a
multiprocessore sincroni.
Reset
Blocco circuito di reset
Consente di effettuare il reset, sia automatico che manuale del microcontrollore.
E’ costituito semplicemente da una resistenza di pull-up (R1) che mantiene alto il piedino
di reset (/MCLR), ovvero non attivo nello stato di reset, durante il normale funzionamento.
All’accensione, oppure premendo manualmente il tastoS1, il pin /MCLR è forzato basso ed
il circuito è posto nello stato di reset finchè su tale piedino il segnale non torna a livello
logico alto.
E’ possibile effettuare un reset hardware anche tramite l’ Expansion Slot cortocircuitando a
massa il segnale MCLR.
PIC
Blocco microcontrollore PIC
La scheda Gp_Board è stata progettata per utilizzare il PIC 16F874, dotato di 4K di
memoria flash o il PIC 16F877 con 8K , entrambi con frequenze di lavoro fino a 20MHz.
Si consiglia di montare il microcontrollore tramite uno zoccolo di tipo ‘professionale a
tulipano’.
Completa il blocco il condensatore di filtraggio C1 che deve essere montato
orizzontalmente sotto il PIC in mezzo allo zoccolo.
In Circuit
Programmer
Blocco programmazione ICP
Compito di questo blocco è quello di collegare il microcontrollore PIC ad un circuito
esterno chiamato programmatore In Circuit Programmer.
Tale circuito permette di effettuare le operazioni di lettura, cancellazione e scrittura della
memoria del processore rendendo possibile effettuare il ciclo di sviluppo programmazionetest-debug.
Dal punto di vista circuitale il blocco ICP è costituito essenzialmente dal connettore JP7 a
cui va connesso il programmatore esterno e dal diodo di protezione D1 il cui scopo è
quello di evitare che la tensione di programmazione fornita dal programmatore esterno
possa danneggiare il PIC stesso.
La programmazione In Circuit programming avviene serialmente attraverso i pin RB6 ed
RB7 del PIC. Occorre fare attenzione che durante la fase di programmazione tali pin non
siano collegati ad altri dispositivi.
Ovviamente è possibile effettuare la programmazione del microcontrollore togliendo il PIC
dallo zoccolo della scheda ed inserendolo in un programmatore dotato di textools, anche
se la lentezza, la scomodità ed infine la possibilità di danneggiare il PIC sconsigliano di
adottare tale procedura.
E’ sufficiente eseguire il montaggio dei blocchi precedenti per disporre di un sistema a
microcontrollore programmabile funzionante.
I blocchi seguenti potranno essere montati in base alle singole necessità d’uso.
LED
Blocco LED
E’ costituito da un singolo diodo Led (DL1) di colore verde, dalla resistenza limitatrice di
corrente R2 e dal Jumper J1.
Cortocircuitando con un ponticello il jumper J1 il Led risulterà controllato direttamente dal
pin RD3 del PIC. Nel caso in cui tale pin venga successivamente utilizzato per un altro
impiego, sarà sufficiente togliere il ponticello per escludere il Led evitando di dissaldare il
componente.
Buzzer
Blocco Buzzer
E’ composto da un buzzer sonoro autoscillante (DZ1) e dal Jumper J2.
Cortocircuitando con un ponticello il jumper J2, il buzzer risulterà controllato dal pin RC0
del PIC.
Per escludere il buzzer sarà sufficiente togliere il ponticello.
Display
LCD
Blocco Display LCD
La scheda è predisposta per essere collegata ad un display LCD standard, ad esempio del
tipo 16X2 (16 colonne e 2 righe), 16X4, etc, dotate di controller HITACHI HD44780.
Il display è esterno alla scheda ed è collegato tramite un flat pin to pin al connettore DIS1.
E’ possibile effettuare la regolazione della luminosità tramite il trimmer TR1.
Blocco alimentazione dei motori
Nel caso in cui la scheda Gp_board venga utilizzata per controllare dei motori elettrici in
corrente continua (ad esempio per realizzare dei piccoli robot mobili), questo blocco ha il
compito di fornire l’alimentazione per tali motori (Vmot).
Il connettore JP11 fornisce l’ingresso dell’alimentazione a tale circuito, normalmente
connesso ad una apposita batteria.
Come nel blocco precedente, lo stabilizzatore di tensione U5 stabilizza il valore della
tensione in uscita. Tale stabilizzatore deve essere montato nel caso in cui si utilizzino
piccoli motori (ad esempio i servi da modellismo) il cui assorbimento di picco è inferiore ad
1 Ampere totali. In questo caso si avrà una velocità del motore indipendente dalla scarica
della batteria; in altre parole il robot avrà una velocità costante finchè la batteria risulterà
carica.
Nel caso in cui i motori utilizzati siano, compatibilmente con le caratteristiche del blocco
driver motors, di un valore superiore di tensione e corrente, è possibile montare sulla
scheda un appropriato stabilizzatore di tensione (es. la serie 78xx) o scegliere di non
montarne nessuno.
In quest’ultimo caso occorrerà cortocircuitare il pin 1 e 3 del circuito stampato relativo allo
stabilizzatore U5.
L’attivazione del circuito motori avviene tramite l’interruttore S4 ed è segnalata dal LED
rosso DL5 in qualità di spia di alimentazione motori.
Infine é possibile monitorare dal microcontrollore il valore della tensione di alimentazione
esterna applicata al circuito motori, utile soprattutto nel caso in cui sia una batteria.
Nel caso in cui interessi tale modalità occorrerà saldare sulla scheda il partitore resistivo
costituito dalle resistenze R12-R13 e chiudere tramite un ponticello il jumper J6.
Il valore di tensione presente ai capi del partitore risulterà connesso al pin RE2 del PIC per
poter essere convertito dall’ADC.
I valori delle resistenze R12-R13 dovranno essere dimensionati in modo tale che la
tensione ai capi del pin RE2 non superi mai il valore di riferimento dell’ADC del PIC,
ovvero 5V .
Istruzioni per il montaggio
Modalità di impiego
Test di funzionamento
Progetti e applicazioni
Lezioni
Motors
Power