mercoledì 31 marzo 2021

Arduino N° 88 - Random Display 7 segmenti

< Arduino N° 87

 Achille De Santis

Arduino N°  89


Esempio su come gestire l'accensione e lo spegnimento dei singoli segmenti su un modulo display numerico a sette segmenti.

Non è stato implementato il segmento centrale (G) che, volendo, si può aggiungere.


Rotazione oraria e antioraria di un segmento acceso su un display a 7 segmenti.

L'inversione si ottiene premendo il pulsante.

In questo caso, l'unica resistenza di polarizzazione è collegata sul ramo comune e contribuisce alla giusta polarizzazione di tutti i segmenti accesi in sequenza.


Questa configurazione NON è adatta nel pilotaggio di più segmenti accesi contemporaneamente, dove invece è necessario predisporre una resistenza per ogni segmento.




Simulazione: 

Random Display7 segmenti


tecnatronATgmail.com

> Arduino n° 89


mercoledì 24 marzo 2021

Arduino N° 87 - Sirena Italiana con driver a BJT

< Arduino N° 86

 Achille De Santis

Arduino N°  88




In questo post vi presento la realizzazione di una "sirena italiana" di potenza, pilotata da uno stadio driver a BJT.

Il transistore usato è un NPN di potenza, del tipo TIP3055 o equivalenti (NPN).

Arduino fornisce il solo segnale di pilotaggio. Lo stadio di potenza può essere alimentato con una sorgente a 12 volt, massa comune con quella dell'Arduino.

Non ci sono particolari comandi, se non l'interruttore di abilitazione/disabilitazione della sirena.

Come trasduttore elettroacustico di uscita potete utilizzare un altoparlante o, meglio, un classico altoparlante a "tromba".

Una spia a led indica l'attivazione.


N.B.: E' severamente vietato l'uso sconsiderato di questo dispositivo. 


Simulazione: 

Sirena Italiana_V2 con driver BJT


Argomenti correlati: 

Sirena Italiana

Sirena Italiana V2

Sirena Bitonale


tecnatronATgmail.com


> Arduino n° 88


mercoledì 17 marzo 2021

Arduino N° 86 - Generazione di colori con LED RGB

< Arduino N° 85

 Achille De Santis

Arduino N°  87


I LED RGB ci permettono di utilizzare un solo elemento circuitale per la generazione di tutti i colori a noi visibili.

Per non cadere in errore alla prima prova è necessario conoscere alcuni principi di elettronica e di ottica.

Innanzitutto, i LED RGB generano i colori dello spettro per "somma" di opportuni "coefficienti tricromatici" sulle tre componenti di colori fondamentali, il ROSSO, il VERDE, il BLU, che con terminologia anglosassone abbrevieremo in R (red), G (green), B (blue) .

Un altro problema viene a complicare ulteriormente la vita dell'apprendista sperimentatore, spesso dotato di scarse conoscenze di elettronica e di ottica: la presenza, sul mercato, di due macro-famiglie di LED RGB: quelli a "Catodo Comune" e quelli ad "Anodo Comune".

In effetti, queste due famiglie sono state ideate per semplificare la progettazione di circuiti, dando due possibilità al progettista. Basta usare questi componenti in modo appropriato. 

Generalmente,
  • Quelli a 'catodo comune' si pilotano comandandoli dall'anodo, con catodo a massa. 
  • Quelli ad 'anodo comune' si pilotano comandandoli dal catodo, con anodo al positivo di alimentazione.
  
    Il principio comune è quello di creare sulla giunzione la giusta tensione di polarizzazione e la giusta corrente, determinata dal circuito di polarizzazione.

In generale, per abilitare l'emissione del colore rosso con Arduino: Basta l'istruzione: 

analogWrite(Rosso, r ), 

dove  "Rosso" è il piedino del LED e "r" il valore numerico da impostare.


LED a "catodo comune": 
il valore di "r" è il massimo, se vogliamo un rosso pieno, cioè 255.

In pratica, per accendere il rosso si opera con::

spento                                              analogWrite(Rosso, 0), 
acceso                                              analogWrite(Rosso, 255); 

Analogamente per gli altri coefficienti e per tutti i colori composti, con tecnica "additiva".


LED ad anodo comune:

Per generare il Rosso con lo stesso principio serve una istruzione analoga ma per avere lo stesso coefficiente di colore i valori vanno complementati a 255.

In pratica, per accendere il rosso si opera con:

spento                                              analogWrite(Rosso, 255), 
acceso                                              analogWrite(Rosso, 0); 



    Per ottenere colori composti si opera in modo analogo; ad esempio, per ottenere l'arancione si deve miscelare rosso e verde.

A "catodo comune" si imposteranno i valori:
 
spento                analogWrite(Rosso, 0);     analogWrite(Verde, 0);         analogWrite(Blu, 0); 
acceso                analogWrite(Rosso, 255); analogWrite(Verde, 128);     analogWrite(Blu, 0); 

dove il terzo colore non darà contributo.

Ad "anodo comune" si imposteranno i valori complementari:

spento:              analogWrite(Rosso, 255);     analogWrite(Verde, 255);  analogWrite(Blu, 255); 
acceso               analogWrite(Rosso, 0);         analogWrite(Verde, 127);  analogWrite(Blu, 255); 

 dove il terzo colore non darà contributo.

 
In pratica, se volessimo accendere l'arancione con un LED ad "anodo comune" (255,128,0) ed usassimo i valori del "catodo comune"  avremmo come risultato la generazione di un colore "complementare" (azzurro),  come derivato dei tre coefficienti tricromatici (0,127,255).

In conclusione, cambiando famiglia di LED RGB i valori da impostare vanno tutti complementati, compreso lo spegnimento!

Lo sketch e la simulazione del circuito sono disponibili per l'analisi e il download.

Nota:

Attenzione anche alla piedinatura: 

per LED a catodo comune: Rosso - GND - Blu - Verde !!!

GND ha il gambo lungo e si riconosce facilmente.

Analogamente, per quelli ad anodo comune, dove al posto di GND troveremo V+:

        Rosso - V+ - Blu - Verde !!!


Nota per gli aspiranti elettronici e soprattutto per gli aspiranti informatici:

La resistenza di polarizzazione dei diodi LED va sempre inserita! Serve a stabilire la giusta corrente nel diodo e, SOPRATTUTTO, serve a stabilizzare il punto di lavoro, cosa molto importante per farli durare a lungo, senza problemi!

  

Simulazione:


Argomenti correlati:  

Arduino N° 23 - Fader per canali RGB


> Arduino N°  87

mercoledì 10 marzo 2021

Arduino N° 85 - Gestione di LCD con scorrimento di stringa lunga

                                        

Arduino N° 84

 Achille De Santis

Arduino N°  86



Un display LCD 16x2 può visualizzare due righe di 16 caratteri.
Per visualizzare stringhe più lunghe si potrebbe operare in due modi, fondamentalmente:
  • dividere la stringa in più sottostringhe da 16 caratteri, da richiamare in sequenza;
  • memorizzare la stringa lunga e richiamarla facendola scorrere sul display.
Una soluzione per la prima strategia la trovate qui.

In questo caso, io vi presento la seconda strategia, realizzata attraverso una 'routine' opportuna.

In questo modo è comodo inserire le istruzioni, già organizzate come 'routine', in un nuovo listato. 

Capiterà più volte, infatti, di dover gestire delle stringhe lunghe e il fatto di dover riscrivere "ex-novo" le istruzioni significherebbe perdere molto tempo ed avere un programma poco strutturato.

Nota: In ogni caso, la gestione così concepita è "bloccante", a causa dei ritardi introdotti; va quindi utilizzata oculatamente e quando il sistema non stia svolgendo altre operazioni.   

La soluzione a questi problemi è rappresentata dalla funzione millis()... ma questa è un'altra storia!

Lo sketch e la simulazione del circuito sono disponibili per l'analisi e il download.



Simulazione:


Argomenti correlati:  





tecnatronATgmail.com

> Arduino N°  86

mercoledì 3 marzo 2021

Arduino N° 84 - Termometro LCD con TMP36


< Arduino N° 83

 Achille De Santis

Arduino N°  85









Termometro con display LCD 16x2 e sensore di temperatura TMP36.

Il sensore va collegato sul piedino analogico A0.

La temperatura viene calcolata campionando ed integrando le misure effettuate.

Lo sketch e la simulazione del circuito sono disponibili per l'analisi e il download.


Simulazione:

Termometro LCD con TMP36


Argomenti correlati:  







tecnatronATgmail.com

> Arduino N°  85