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