Controllo uscita RGB con PWM.

ArduinoUNO ha 6 ingressi analogici (A0 A1-A2-A3-A4–A5) e 6 uscite PWM (PD3-PD5-PD6-PD9-PD10-PD11), le uscite PWM possono essere utilizzate in modo da fornire una uscita variabile tra lo zero e la tensione di alimentazione (Analogico), oppure in modo che da variare il rapporto tra il segnale allo stato logico zero e lo stato logico 1, (Digitale).

Questo programma utilizza i potenziometri per simulare i sensori con uscita analogica (NTC,PTC,LDR).

I potenziometri sono collegati agli ingressi analogici di ArduinoUNO, che controllano l’uscita PWM in modalità analogica.

La tensione inviata all’ingresso analogico proviene dal pin centrale del potenziometro che ha le stremità collegate tra la massa e la tensione di riferimento; lo slider si comporta come un partitore resistivo che parzializza la tensione di riferimento.

L’uscita analogica PWM, è rappresentata da una barra nera verticale con un cursore rosso, che si sposta in funzione della tensione collegata all’ingresso.

gli ingressi analogici pilotano l’uscita del segnale PWM in modalità analogica

Tre ingressi e tre uscite

Per gestire i tre canali Rosso, Green (verde) e Blue, è necessario definire le tre variabili che conterranno il Byte corrispondente alla conversione analogico/digitale della tensione presente agli ingressi analogici A0, A1 e A2.

Per ciascun ingresso analogico, definisco una Variabile di tipo Byte che associo a ciascun ingresso collegato agli slider.

In Project Explorer inserisco le tre Variabili “ ADC_in” di tipo Byte.

Dal menu Inputs, seleziono e inserisco nella DashBoard i tre potenziometri (slider).

Dal menu Outputs, seleziono e inserisco nella DashBoard, i controlli PWM in modalità analogica in modo da visualizzare l’uscita del Pin come una barra verticale nera con una tacca rossa che si sposta che su è giù in funzione dello slider di controllo.

  • Slider 1 collegato all’ingresso A0 è associato alla variabile ADC_in A0 che controlla il Rosso.
  • Slider 2 collegato all’ingresso A1 è associato alla variabile ADC_in A1 che controlla il Verde.
  • Slider 3 collegato all’ingresso A2 è associato alla variabile ADC_in A2 che controlla il Blue.

Definizione delle Variabili  ADC_inA0, ADC_inA1 e ADC_inA2

PWM RGB 1

in Project Explorer aggiungo le variabili per controllare l’ingresso analogico per il controllo RGB, tramite slider collegati agli ingressi A0,A1 e A2

collego gli slider ai Canali An1, An2 e An3

collego gli indicatori ai canali 1,2 e 3

rappresentazione analogica della uscita PWM

  • PWM1: channel 1  - pin 6  Porta D.
  • PWM2: channel 2  - pin5  Porta D.
  • PWM3: channel 3 - pin 1  Porta B.
PWM RGB Enable

abilitazione uscite PWM

per utilizzare l’uscita PWM è necessario abilitare l’ uscita con PWM enable.

  • PWM1 per l’ingresso associato al RED, rosso.
  • PWM2 per l’ingresso associato al Green, verde.
  • PWM3 per l’ingresso associato al Blue, blu

 

PWM1

PWM2

PWM3

RED

GREEN

BLUE

dopo le istruzioni che abilitano il PWM, inserisco il “Ciclo” del programma che conterrà le istruzioni di acquisizione A/D e il controllo del segnale PWM in uscita.

PWM RGB getByte

acquisizione segnale analogico

Ogni slider collegato all’ingresso analogico controlla un colore.

  • ADC_inA0, controlla il RED.
  • ADC_inA1, controlla il GREEN
  • ADC_inA2, controlla il BLUE

RED

RED

GREEN

BLUE

GREEN

BLUE

GetByte contiene la conversione A/D dell’ingresso A0

GetByte contiene la conversione A/D dell’ingresso A1

GetByte contiene la conversione A/D dell’ingresso A2

ADC_inA2

ADC_inA1

ADC_inA0

PWM RGB DutyCycle

dipendenza del segnale di uscita PWM dall’ ingresso analogico

Il segnale acquisito con GetByte controlla l’uscita PWM con l’istruzione setDutyCycle.

  • l’uscita PWM1 dipende dall’ingresso ADC_in A0.
  • l’uscita PWM2 dipende dall’ingresso ADC_in A1.
  • l’uscita PWM3 dipende dall’ingresso ADC_in A2.

ADC_inA0

ADC_inA1

ADC_inA2

PWM3

PWM2

PWM1

RED

GREEN

BLUE

Il pilotaggio di un carico collegato all’uscita PWM, può essere fatto con l’utilizzo di un transistor di potenza o di un Mosfet.

PWM shield
PWM mosfet

in commercio esistono gli shield per ArduinoUNO, già predisposti per questo tipo di applicazione.

C Code

Riccardo Monti