Sommario:

Candele elettroniche multiple: 3 passaggi
Candele elettroniche multiple: 3 passaggi

Video: Candele elettroniche multiple: 3 passaggi

Video: Candele elettroniche multiple: 3 passaggi
Video: 87 - Come si sceglie il grado termico della candela? 2024, Dicembre
Anonim
Candele elettroniche multiple
Candele elettroniche multiple

Le candele elettroniche sono state pubblicate molte volte su Instructables, quindi perché questa?

A casa ho queste piccole casette di Natale semitrasparenti che hanno un'intuizione LED e una piccola batteria. Alcune case hanno LED con effetto candela e alcune hanno LED appena accesi. Le batterie piccole si scaricano in tempi relativamente brevi e siccome volevo avere un effetto candela in tutte le case ho deciso di farne un progetto PIC. Ovviamente puoi trasformarlo anche in un progetto Arduino.

Quindi cosa rende speciale questa candela elettronica? PIC e Arduino hanno tutti l'hardware Pulse Width Modulation (PWM) a bordo che può essere utilizzato per creare un effetto candela usando un LED ma nel mio caso volevo avere 5 candele elettroniche indipendenti usando un controller e che non è presente, almeno non che so fuori. La soluzione che ho usato è quella di rendere questi cinque segnali PWM indipendenti completamente nel software.

Passaggio 1: modulazione dell'ampiezza dell'impulso nel software

La modulazione dell'ampiezza dell'impulso è stata descritta più volte, ad es. in questo articolo Arduino:

PIC e Arduino hanno a bordo uno speciale hardware PWM che semplifica la generazione di questo segnale PWM. Se vogliamo creare uno o più segnali PWM nel software, abbiamo bisogno di due timer:

  1. Un timer utilizzato per generare la frequenza PWM
  2. Un timer utilizzato per generare il ciclo di lavoro PWM

Entrambi i timer generano e interrompono una volta completati e quindi la gestione del segnale PWM viene eseguita completamente guidata dall'interruzione. Per la frequenza PWM uso il timer 0 del PIC e lo lascio traboccare. Con un clock dell'oscillatore interno di 8 MHz e una prescala di 64 la formula è: Fosc/4 / 256 / 64 = 2.000.000 / 256 / 64 = 122 Hz o 8, 2 ms. La frequenza deve essere sufficientemente alta da non essere rilevata dall'occhio umano. Per questo è sufficiente una frequenza di 122 Hz. L'unica cosa che fa questa routine di interruzione del timer è copiare il ciclo di lavoro per un nuovo ciclo PWM e accendere tutti i LED. Lo fa per tutti e 5 i LED in modo indipendente.

Il valore del timer per gestire il ciclo di lavoro PWM dipende da come realizziamo l'effetto candela. Nel mio approccio simulo questo effetto incrementando il duty cycle con un valore di 3 per aumentare la luminosità del LED e decrementandolo con un valore di 25 per diminuire la luminosità del LED. In questo modo si ottiene un effetto a candela. Poiché utilizzo un valore minimo di 3, il numero di passaggi per controllare il ciclo di lavoro completo con un byte è 255 / 3 = 85. Ciò significa che il timer del ciclo di lavoro PWM deve funzionare con una frequenza di 85 volte la frequenza del Timer di frequenza PWM che è 85 * 122 = 10,370 Hz.

Per il duty cycle del PWM utilizzo il timer 2 del PIC. Questo è un timer con ricarica automatica e utilizza la seguente formula: Periodo = (Ricarica + 1) * 4 * Tosc * Valore di prescala Timer2. Con una ricarica di 191 e una prescala di 1 otteniamo un periodo di (191 + 1) * 4 * 1/8.000.000 * 1 = 96 us o 10.416 Hz. La routine di interruzione del ciclo di lavoro PWM verifica se il ciclo di lavoro è passato e spegne il LED per il quale il ciclo di lavoro è completato. Se il ciclo di lavoro non viene superato, decrementa un contatore del ciclo di lavoro di 3 e termina la routine. Lo fa per tutti i LED in modo indipendente. Nel mio caso questa routine di interrupt impiega circa 25 us e poiché viene chiamata ogni 96 us, già il 26% della CPU viene utilizzato per gestire il duty cycle PWM nel software.

Passaggio 2: l'hardware e i componenti necessari

L'hardware e i componenti necessari
L'hardware e i componenti necessari

Il diagramma schematico mostra il risultato finale. Sebbene io controlli solo 5 LED in modo indipendente, ho aggiunto un sesto LED che funziona insieme a uno degli altri 5 LED. Poiché il PIC non può pilotare due LED su un pin della porta, ho aggiunto un transistor. L'elettronica è alimentata da un adattatore CC da 6 volt/100 mA e utilizza un regolatore di tensione a bassa caduta per creare un 5 Volt stabile.

Sono necessari i seguenti componenti per questo progetto:

  • 1 microcontrollore PIC 12F615
  • 2 condensatori ceramici: 2 * 100nF
  • Resistori: 1*33k, 6*120 Ohm, 1*4k7
  • 6 LED arancioni o gialli, alta luminosità
  • 1 transistor BC557 o equivalente
  • 1 Condensatore elettrolitico 100 uF / 16 V
  • 1 regolatore di tensione a bassa caduta LP2950Z

Puoi costruire il circuito su una breadboard e non richiede molto spazio, come si può vedere nell'immagine.

Passaggio 3: il software rimanente e il risultato

La parte restante del software è il ciclo principale. Il ciclo principale aumenta o diminuisce la luminosità dei LED regolando il ciclo di lavoro in modo casuale. Poiché incrementiamo solo con un valore di 3 e decrementiamo con un valore di 25, dobbiamo assicurarci che i decrementi non avvengano con la stessa frequenza degli incrementi.

Dal momento che non ho utilizzato alcuna libreria, ho dovuto creare un generatore casuale utilizzando un registro a scorrimento a feedback lineare, vedi:

en.wikipedia.org/wiki/Linear-feedback_shif…

L'effetto candela è influenzato dalla velocità con cui viene modificato il ciclo di lavoro PWM, quindi il ciclo principale utilizza un ritardo di circa 10 ms. Puoi regolare questo tempo per modificare l'effetto candela in base alle tue esigenze.

Il video allegato mostra il risultato finale in cui ho usato un cappuccio sopra il LED per migliorare l'effetto.

Ho usato JAL come linguaggio di programmazione per questo progetto e ho allegato il file sorgente.

Divertiti a creare questo Instructable e attendo con ansia le tue reazioni e i tuoi risultati.

Consigliato: