Elettronicamente.com
La risorsa Italiana per l'elettronica
e l'informatica applicata all'elettronica
  Sponsor
|Home| |Registrazione| |Login| |Disclaimer| |Contattaci| |Guida| |FAQs|
|Download| |Forum| |Links| |MySite|
Cerca in Elettronicamente:
 
I numeri di Elettronicamente.com:
  Iscritti: 12853
  Risorse On-Line: 508
  Links su siti di elettronica: 1304
  Sei il visitatore numero 1171359
Login non eseguito
Descrizione
ATTENZIONE! Questa risorsa è stata superata da una nuova versione.
Visualizza la nuova versione
ID #790  Microcontroller
XE164 Display a 7-segmenti per cruscotto Moto   21/02/2010
In questo tutorial mostro come costruire un display a LED 7-segmenti da usarsi tutte quelle volte che serve un elevato contrasto, come ad esempio nei cruscotti delle moto.
Tale display è progettato per poter visualizzare:
- numero giri motore
- velocità veicolo
- marcia inserita
Difficoltà:
Difficoltà di realizzazione o apprendimento. 2 stella/e.

Voto:
n.d.
Voto attuale (1/10) calcolato in base alla media delle votazioni di tutti gli iscritti che hanno votato questa risorsa.

Autore:
boldinid
Autore della risorsa:boldinid
HTML:
In questa casella viene indicato se è disponibile una pagina web da visualizzare.
File:
No
Allegato disponibile:
In questa casella viene indicato se è disponibile un file da scaricare.

Crediti Virtuali:
150
Crediti virtuali necessari per scaricare il file allegato:150

Status:
ONLINE
Cruscotto Moto a Led 7-segmenti con XE164

 
Introduzione

Il cruscotto di una moto necessita di una ottima luminosità per poter essere letto in qualsiasi condizione di contrasto. Per le competizioni sportive è altresì importante poter leggere i parametri più importanti con un colpo d'occhio. Per questo motivo è deciso di progettare un display per moto usando i "vetusti" display a 7-segmenti:

Fig. 1. il display progettato è quello con la scritta YAMAHA formato da 4 cisfre rosse e 2 verdi

Il progetto prevede la realizzazione di un display con 4 cifre per visualizzare:
 * velocità: da 0 a 999.9 KM/h
 * giri motore: da 0 a 99 x 1000 giri/minuto
 * temperatura liquido di raggreddamento motore (in colore verde): da 0 a 99 °C
 * luce flash di cambio marcia: 5 led ad alta luminosità biachi
 * spia riserva benzina (o mancanza olio motore).


Primi esperimenti


Inizialmente non avevo intenzione di disegnare un PCB, percui mi sono armato di scheda millefori e filo di rame molto sottile: per i collegamenti ho utilizzato filettini di rame presi da un cavo elettrico da 1.5mm2.

Fig. 2. il prototipo del display dopo la saldatura e connesso alla XE164 Key Chain


Fig. 3.a. il prototipo del display dopo la saldatura (zoom)


Fig. 3.b. il prototipo con i 5 LED Bianchi ad alta luminosità della luce Flash e i 5 LED rossi per l'indicatore della riserva

Progetto HW

Il progetto iniziale parte dallo schematico preso dall'ottimo FiserTek:
 


Fig. 4. il display così come proposto da FiserTek  
 

percui l'hardware è piuttosto semplice: il famosissimo decoder per display a 7-segmenti HC4511 pilota tutti i display in parallelo (percui si possono connettere quante cifre si vogliono: FiserTek ne ha connesse 4, io 6); la selezione dei display avviene mediate la connessione del Katodo comune mediante BC337 (o qualunque altro transistor NPN capace di sopportare alcune centinaia di mA).

Il pilotaggio di tale display avviene ne seguente modo:

  1. la CPU seleziona una cifra da visualizzare mediante l'accensione del relativo transistor NPN
  2. la CPU invia il codice esadecimale al decoder HC4511
  3. la CPU attende un tempo t*
  4. la CPU riparte dal punto 1.
Percui il pilotaggio di tale display avviene in maniera continua e necessita di un software ad interrupt per poter eseguire anche altri tasks (vedi paragrafo Progettazioen SW).

Progettazione della Luce Flash

La luce Flash per l'indicatore di cambiata è realizzata con 5 LED ad alta luminosità bianchi connessi secondo lo schema:
Il calcolo delle resistenze R è:
R = (5V - Vce - Vd) / Id
La Vce del BC337 è pari a circa 0.013V, Vd è la tensione di lavoro del LED: Vd = 3V e Id è la corrente di funzionamento del LED: Id = 20mA (questo valore per ottenere una luce molto intensa), percui:
R = (5V - 0.013V - 3V) / 20mA = 100 Ohm.
 

Connessioni al XE164

Il microcontrollore Infineon XE164 + connesso al display nel seguente modo:
Fig. 5. Layout grafico e connessioni del display prototipale

Dalla Fig.5 si vede come per pilotare la luce Flash basta settare la porta P10.5; quella della riserva si attiva settando la porta P10.6. Per selezionare il display della cifra più significatica si deve attivare la porta P0.0 (e così via...).

Le connessioni alla XE164 Key Chain sono:

 

Progettazione di un PCB:

Questo il mio schematico a 9 display:
Fig. 6. schematico a 9 display (Eagle 5.5.0)


Fig. 7. PCB a 7 display (4 cifre per RPM, 2 cifre per Temperatura e 1 cifra grande per visualizzare la marcia inserita)
 
 
Lista Componenti:

Exported from WeelingDsiplay.sch at 5/2/2009 5:07:31 PM
EAGLE Version 5.5.0 Copyright (c) 1988-2009 CadSoft

Part Value Device Package Library Sheet
C1 100uF 25V
C2 100uF 10V
DIS1 HD-H103
DIS2 HD-H103
DIS3 HD-H103
DIS4 HD-H103
DIS5 HD-H103
DIS6 HD-H103
DIS7 HD-H103
DIS8 HD-H103
GEAR HD-N103 display-hp
IC1 4511N
IC2 7805
POWER 12V
R-D 330 ohm
R1 330 ohm
R2 330 ohm
R3 330 ohm
R4 330 ohm
R5 330 ohm
R6 330 ohm
R7 330 ohm
R8 330 ohm
R9 330 ohm
R17 330 ohm
R18 330 ohm
R19 330 ohm
R20 330 ohm
R21 330 ohm
R_A 330 ohm
R_B 330 ohm
R_C 330 ohm
R_E 330 ohm
R_F 330 ohm
R_G 330 ohm
T1 BC373-NPN-TO92
T2 BC373-NPN-TO92
T3 BC373-NPN-TO92
T4 BC373-NPN-TO92
T5 BC373-NPN-TO92
T6 BC373-NPN-TO92
T7 BC373-NPN-TO92
T8 BC373-NPN-TO92
T_GEAR BC373-NPN-TO92-CBE TO92-CBE transistor 1
X1 2520- 2520- PAK100/2500-20 con-3m 1

 

Progetto SW

Il software è particolarmente semplice: si carica la stringa che si vuole visualizzare nell'array "ucDisplayDigit[]", e la subroutine temporizzata "GPT1_viTmr4" si incarica di visualizzarla:

//****************************************************************************
// @Function void Display
//
//----------------------------------------------------------------------------
// @Description Convert the Character code into I/O port level
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters
// num: 0-9 number to be displayed on the 7 segment LED
//
//----------------------------------------------------------------------------
// @Date 12/17/2008
//
//****************************************************************************

void Display(char num)
{
   IO_vWritePort ( P1, 0x0F & num );
}

//****************************************************************************
// @Function void SelectDigit
//
//----------------------------------------------------------------------------
// @Description Select one 7-segment display digit
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters
// num: 0-5 digit selector
//
//----------------------------------------------------------------------------
// @Date 12/17/2008
//
//****************************************************************************

void SelectDigit(char num)
{
   IO_vWritePort ( P0, 0x01 << num );
}

void GPT1_viTmr4(void) interrupt T4INT
{
   if ( ucDisplayDigit[ucIdx] != 0xFF )
   {
      SelectDigit ( 0 ); // Deselect any DIGIT
      Display ( ucDisplayDigit[ucIdx] );
      // DOT driver
      if ( ucDisplayDigit[ucIdx]>>4 )
         IO_vSetPin ( IO_P0_6 );
      else
         IO_vResetPin ( IO_P0_6 );

      SelectDigit ( ucIdx );
    }
    ucIdx++;
    if ( ucIdx > 5 ) ucIdx = 0;

} // End of function GPT1_viTmr4
  • La funzione "Display(num)" permette di mandare il codice della cifra da viasualizzare al HC4511.
  • La funzione "SelectDigit(i)" permette di selezionare la cifra da visualizzare (cioè di attivare il corrispettivo BC337).
  • La funzione temporizzata "GPT1_viTmr4()" è richiamata ogni 25msec (40Hz) e visualizza le sole cifre diverse da "0xFF", percui se non si vuole visualizzare nulla basta settare la stringa "ucDisplayDigit[]" con tutti "FF".  La frequenza di visualizzazione pari a 40Hz è stata scelta per non avere nessun effetto di "flickering".
Ecco alcuni esempi di visualizzazione:


Fig. 8. Alcuni esempi di visualizzazioni e relative stringhe

 

Conclusioni

Il display è funzionante e ben leggibile in ogni condizione di illuminazione: vedi MaxECU. 

 

L'utilizzo di tutte le informazioni illustrate e riportate in questo documento sono a proprio rischio e pericolo.
Tutte le informazioni vengono fornite “COSI' COME SONO”, senza nessuna forma di garanzia sulla loro validità.
Il presente documento ha uno scopo puramente informativo e didattico.
Ciascuna persona, nell'applicare le informazioni descritte, sarà pienamente responsabile delle
eventuali conseguenze che ne derivano. Elettronicamente.com e l'autore declinano
qualsiasi responsabilità nell'applicazione di tali informazioni, né saranno responsabili
in modo diretto e/o indiretto su eventuali danni provocati di qualsiasi genere a cose o persone.
E' vietata la pubblicazione totale e/o parziale di questo documento su altri siti
Internet diversi da Elettronicamente.com e in qualsiasi altra forma di diffusione
(esempio su riviste) senza il consenso scritto da parte dell'autore.
  Cloud
 Elettronicamente.com  PICmicro  RS232 FT232 P8X32A Parallax PIC16F84 Programmatore Elettronica PCB Circuito Stampato Fotoincisione Microchip PIC16F876 Linguaggio AVR Linux NE555 ARM HD44780 DISPLAY LCD Alimentatore XE164 Infineon LED Amplificatore Laboratorio Resistenza Condensatore Termometro PWM relazione
www.Elettronicamente.com
Utenti attualmente connessi:
(Nessuno)