|
MICRO-GT 18 mini inizio semplice |
|
Identificazione progetto
progetto |
autore |
|
note |
Gioco luci comandato da pulsanti |
Daniele Scaranaro |
daneel16@gmail.com |
Ide MPLABX v2.10 compilatore XC8 v1.30 program. PICKIT3 |
Premessa
Lo scopo del progetto è prendere "confidenza" con la programmazione dei PIC18 su piattaforma Micro-GT 18 mini con PIC 18F2550 SMD.
La prima impressione è quella di trovarsi di fronte a una scheda davvero molto compatta, solo 5 x 5 cm che mette comunque a disposizione moltissime cose, ad esempio la porta USB oltre che la porta COM, e ovviamente l'immancabile ICSP per programmare il chip tramite altri device, ad esempio la Micro-GT IDE o un comune PICKIT2 o PICKIT3.
E' possibile collegare 6 servomotori direttamente negli strip line appositamente studiati, e il display LCD 16x6 ha un connettore predisposto con contrasto e resistenza al D7 già onboard.
Molto comodi sono i tre ingressi con pullup a cui si può semplicemente collegare i pulsanti N.A. tramite il connettore strip a due vie.
Un consiglio a tutti gli appassionati dei MicroPIC è quello di partecipare a questa community... Qui non ci sono punteggi... non ci sono invidie... non ci sono maldicenze e cattiverie.. ed anche un LED lampeggiante può essere utile per chi inizia.
Alimentazione della Micro-GT 18 mini.
In molti casi la scheda potrà essere autoalimentata tramite la porta USB, in altri la potremmo alimentare al morsetto indicato con X2 facendo attenzione a non invertire la polarità. In questo caso X2-1 è il morsetto positivo e X2-2 è la massa. Il regolatore interno è un 78L05, quindi fate attenzione a non superare la corrente massima di assorbimento per la quale è progettato, nel qual cosa si spegnerà. Potete portare al morsetto X2 una tensione continua stabilizzata compresa tra 7 e 12V, usando ad esempio un vecchio alimentatore di qualsisi dispositivo in disuso come un hub, un vecchio modem, ecc. Si ricorda che questo Microcontrollore è alimentabile sia a 5V che a 3,3V come le moderne famiglie di PIC.
Schema
elettrico con descrizione
IL PIC utilizzato è il 18F2550,
ovvero quello consigliato per muovere i primi passi nella famiglia enanched per
le sue analogie con il 16F876A, il pin out è nella foto qui sotto.
PIC 18F2550.
Scarica lo schema elettrico della piattaforma Micro-GT 18 mini dal link sottostante.
Circuito stampato descrizione
Per chi non se la sente di affrontare l'assemblaggio in SMD può chiedere un esemplare già montato e collaudato all'ing. Marco Gottardo all'indirizzo ad.noctis@gmail.com
Sono possibili anche forniture per le scuole e i laboratori di formazione.
Io ho personalmente assemblato il mio esemplare e nonostante l'impatto iniziale dovuto alla novità dei componenti SMD ha funzionato subito. Esiste una pubblicazione del prof. "SMD no fear" che trovate usando google, oppure su GRIX, oppure su questo sito, che vi guida passo passo all'assemblaggio.
Layout componenti della Micro-GT 18 mini
Tutti i componenti sono visibili con i loro valori nell'immagine qui sopra.
Alle uscite RB0-1-2-3-4-5 sono stati collegati 6 led definiti nel codice come "led0-->5".
Ai 3 ingressi RC0-1-2 sono stati collegati 3 pulsanti P1-2-3 che, nella scheda MICRO-GT 18 mini, hanno già integrato 3 resistenze di PULL-UP
Una foto del sistema durante
il primo test.
Foto del sistema Micro-GT 18 mini collegato al PICKIT3.
Vedi il filmato online del sistema in funzione. La pressione dei tre tasti collegati agli ingressi con pullUP predisposto lanciano tre diversi effetti di luce sei led collegati ai pin indicati nello schema.
Se ti piace questo semplice progetto introduttivo clicca su "mi piace" nella pagina youtube. Grazie.
Descrizione del firmware
Per semplificarne la lettura, tutte le istruzioni sono state inserite in un unico file.
Alla pressione di ognuno dei 3 pulsanti i led lampeggiano rispettivamente a 3 frequenze diverse fisse.
All'inizio vi è il settaggio della frequenza del quarzo (#define _XTAL_FREQ 20000000) a 20MHz e la definizione dei bit di settaggio (#pragma).
/************************************
* File: pic18testdani.c *
* Author: SCARANARO DANIELE *
* EMAIL: daneel16@gmail.com *
* scheda MICRO-GT 18 mini *
* programmatore PICKIT 3 Microchip *
* DATA: 04/05/2014 *
************************************/
#include <p18f2550.h>
#define _XTAL_FREQ
20000000 //imposto frequenza quarzo 20Mhz
/******************settaggio
bits di configurazione PIC************/
#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC4_PLL6
#pragma config USBDIV = 2
#pragma config FOSC=HSPLL_HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config BORV = 1
#pragma config VREGEN = ON
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN=OFF
#pragma config CCP2MX = OFF
#pragma config STVREN = ON
#pragma config LVP=OFF
#pragma config XINST = OFF
#pragma config DEBUG = OFF
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
#pragma config EBTRB = OFF
#define led5 PORTBbits.RB5
#define led4 PORTBbits.RB4
#define led3 PORTBbits.RB3
#define led2 PORTBbits.RB2
#define led1 PORTBbits.RB1
#define led0 PORTBbits.RB0
#define P1 PORTCbits.RC0 //pulsante il pullup su RC0
#define P2 PORTCbits.RC1 //pulsante il pullup su RC1
#define P3 PORTCbits.RC2 //pulsante il pullup su RC2
void main (void) {
TRISA = 0x00; //setto come uscite il portA
PORTA = 0x00; //metto a zero tutte uscite portA
TRISB = 0x00; //setto come uscite il portB
PORTB = 0x00; //metto a zero tutte uscite portB
TRISC = 0xFF; //setto come ingressi il portC
while(1){
//ciclo infinito
/*************************P1=0**********************/
if(P1==0){ //verifico se P1 è premuto
_delay(100); //ritardo antirimbalzo
if(P1==0){
//se premuto P1 attivo lampeggio led
led0=1;
_delay(190000);
led0=0;
led1=1;
_delay(190000);
led1=0;
led2=1;
_delay(190000);
led2=0;
led3=1;
_delay(190000);
led3=0;
led4=1;
_delay(190000);
led4=0;
led5=1;
_delay(190000);
PORTB=0x00;
_delay(190000);
}
}
/*************************P2=0**********************/
if(P2==0){ //verifico se P2 è premuto
_delay(100); //ritardo antirimbalzo
if(P2==0){ //se premuto P2 attivo lampeggio led
led0=1;
_delay(100000);
led0=0;
led1=1;
_delay(100000);
led1=0;
led2=1;
_delay(100000);
led2=0;
led3=1;
_delay(100000);
led3=0;
led4=1;
_delay(100000);
led4=0;
led5=1;
_delay(100000);
PORTB=0x00;
_delay(100000);
}
}
/*************************P3=0**********************/
if(P3==0){ //verifico se P3 è premuto
_delay(100); //ritardo antirimbalzo
if(P3==0){ //se premuto P3 attivo lampeggio led
led0=1;
_delay(50000);
led0=0;
led1=1;
_delay(50000);
led1=0;
led2=1;
_delay(50000);
led2=0;
led3=1;
_delay(50000);
led3=0;
led4=1;
_delay(50000);
led4=0;
led5=1;
_delay(50000);
PORTB=0x00;
_delay(50000);
}
}
}
}
Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia
Note aggiuntive
Facoltative: Qui l’autore puo’ inserire tutto cio’ che ritiene utile o comunque collegato all’argomento. Avrai una certa liberta’ ma evita impressioni politiche, razziali, e che comunque possano offendere qualcuno per qualsiasi motivo. Il webmaster si assumera’ il diritto di togliere dalla tua pubblicazione quelle cose che ritiene non conformi. J
Coclusioni: Compatta tutto dentro a un file zip di dimensioni accettabili, immagini tutte sotto i 100k, i sorgenti e il file hex, per questo potrai usare anche il tool di compattazione integrato su mplab (se questa e’ la tua piattaforma). Invia il tuo zippatto a -> ad.noctis@gmail.com
Buon divertimento e buon lavoro.
Ing. Marco Gottardo as ad.noctis