EFFETTO FUOCO LED CON MICROCONTROLLORE

Schema con Microcontrollore per Realizzare l’Effetto Fuoco a LED per Modellismo o Presepe…

 

 

 

 




 

INTRO

Per il modellismo o specialmente per il presepe si può utilizzare il seguente schema che grazie a tre LED simula l’effetto fiamma tremolante. In questo schema sono stati usati un LED giallo, uno rosso chiaro e uno rosso scuro per simulare le varie sfumature della fiamma. Questi tre LED possono essere del colore desiderato. Lo schema presentato è per due diversi microcontrollori, uno molto piccolo e senza necessità di circuito di clock e l’altro più grande. Questi due microcontrollori sono in ordine il PIC12F675 e il PIC18F252. Il codice è scritto in C per Mikroc.

 




 

CODICE PIC12F675

Il codice deve semplicemente accendere e spegnere 3 LED con tempi random. Si utilizza quindi la funzione rand() che genera un numero random da 0 a 32767. Il codice è:

#define LED1 GPIO.F0                  //Definizione nomi LED
#define LED2 GPIO.F1
#define LED3 GPIO.F2

int rand1, rand2, rand3;              //Definizione variabili

void main() {                         //Programma principale

  TRISIO = 0;                         //PIN definiti come uscite
  LED1 = 1;                           //Accendi LED
  LED2 = 1;
  LED3 = 1;

  while(1){                          //Ciclo infinito

     rand1 = rand() % 60 + 1;        //Ritardo random 1
     rand2 = rand() % 50 + 1;        //Ritardo random 2
     rand3 = rand() % 40 + 1;        //Ritardo random 3

     LED1 = LED1^1;                  //Cambia valore LED1
     Vdelay_ms(rand1);               //Attendi rand1

     LED2 = LED2^1;                  //Cambia valore LED2
     Vdelay_ms(rand2);               //Attendi rand2

     LED3 = LED3^1;                  //Cambia valore LED3
     Vdelay_ms(rand3);               //Attendi rand3
  }
}

Prima di tutto si definiscono le porte GPIO 0, 1 e 2 con i nomi dei LED1, LED2 e LED3. Si definiscono i tre ritardi di accensione e spegnimento dei tre LED e nel programma principale si inizializzano tutti i pin di I/O come uscite e si accendono i LED.

Nel ciclo infinito si calcolano i tre ritardi, il primo è la divisione di un numero random per 60 e infine si somma 1, il secondo è simile ma il numero random è diviso per 50 e infine il terzo per 40. Questi tre ritardi vengono infine usati per accendere e spegnere secondo essi i tre LED.

I fuses se si usa questo PIC sono così configurati.
 

CODICE PIC18F252

Anche questo codice deve semplicemente accendere e spegnere 3 LED con tempi random. Si utilizza quindi la funzione rand() che genera un numero random da 0 a 32767. Il codice è:

#define LED1 PORTB.F0                  //Definizione nomi LED
#define LED2 PORTB.F1
#define LED3 PORTB.F2

int rand1, rand2, rand3;              //Definizione variabili

void main() {                         //Programma principale

  TRISB = 0;                         //PIN definiti come uscite
  LED1 = 1;                           //Accendi LED
  LED2 = 1;
  LED3 = 1;

  while(1){                          //Ciclo infinito

     rand1 = rand() % 60 + 1;        //Ritardo random 1
     rand2 = rand() % 50 + 1;        //Ritardo random 2
     rand3 = rand() % 40 + 1;        //Ritardo random 3

     LED1 = LED1^1;                  //Cambia valore LED1
     Vdelay_ms(rand1);               //Attendi rand1

     LED2 = LED2^1;                  //Cambia valore LED2
     Vdelay_ms(rand2);               //Attendi rand2

     LED3 = LED3^1;                  //Cambia valore LED3
     Vdelay_ms(rand3);               //Attendi rand3
  }
}

Prima di tutto si definiscono le porte TRISB 0, 1 e 2 con i nomi dei LED1, LED2 e LED3. Si definiscono i tre ritardi di accensione e spegnimento dei tre LED e nel programma principale si inizializzano tutti i pin di I/O del PORTB come uscite e si accendono i LED.

Nel ciclo infinito si calcolano i tre ritardi, il primo è la divisione di un numero random per 60 e infine si somma 1, il secondo è simile ma il numero random è diviso per 50 e infine il terzo per 40. Questi tre ritardi vengono infine usati per accendere e spegnere secondo essi i tre LED.

Per quanto riguarda i fuses, è tutto disabilitato tranne il BROWN OUT RESET e lo STACK OVERFLOW mentre l’oscillatore selezionato è HS.
 




 

SCHEMA

Lo schema se si utilizza il PIC12F675 è il seguente:

Il clock viene generato internamente mentre il pin di reset è disattivato, quindi serve solo l‘alimentazione di 5V connessa al pin 1 e 8 rispettivamente positivo e negativo oltre che i LED. Si utilizzano due resistenze da 390ohm per i LED rossi e una da 220ohm per il LED giallo. Il valore della resistenza di protezione è R=(5-Vled)/Iled dove Vled è la tensioni dei LED e Iled è la corrente che assorbono.

Lo schema per il PIC18F252 è il seguente:

L’alimentazione è sempre 5V ed è connessa ai pin 20, 19 e 8. Viene utilizzato un circuito di clock formato da C1, C2 e il cristallo da 4MHz X1 mentre la resistenza R1 serve per evitare che il pin di reset sia abilitato.

Per quanto riguarda i LED le protezioni di protezione sono uguali e calcolate nello stesso modo.


 

DOWNLOAD
Potete scaricare le simulazioni dei due circuiti e i codici sia con MIKROC che già compilati al seguente LINK!!!




 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *