Resistenza variabile controllata in PWM

Un semplice metodo, che richiede giusto un pizzico di manualità, ci permette di avere una resistenza variabile (tra 0 ed 1 MOhm circa) controllata da un PWM a 5V.

L’idea è semplice: utilizzare una fotoresistenza illuminata da un LED. La luminosità del LED controllata dal PWM farà variare in maniera abbastanza lineare il valore della fotoresistenza. In questo modo otteniamo una resistenza variabile controllata da un PWM completamente optoisolata!

Resistenza PWM
Resistenza controllata da un PWM

Utilizzeremo a tale scopo un led rosso da 3mm, una fotoresistenza di quelle classiche per “arduino”, un tubetto di termorestringente nero di adeguata sezione (5mm) e della colla a caldo nera per chiudere le estremità (basta una goccia).

Il diodo e la fotoresistenza dovranno essre posti uno di fronte all’altro, senza impedimenti e senza toccarsi.

Chiaramente i valori forniti dipendono in larga misura dalla distanza alla quale si troveranno i due componenti, dalla luminosità propria del diodo LED e dalle caratteristiche della fotoresistenza. I valori indicati danno come risultato una variazione tra i 50 KOhm ed 1 MOhm, ma tutto dipenderà in larga parte da come realizzerete l’accrocchio. Aumentando la resistenza da 10K aumenteranno questi valori, al contrario diminuendola . Fate delle prove con un ohmetro ed il codice fornito una volta finita la realizzazione (Arduino UNO).

Questo circuito può essere utile, ad esempio, per realizzare un dimmer optoisolato a 220V, utilizzando gli schemi classici a triac sostituendone il potenziometro con la fotoresistenza.

Il condensatore in parallelo al LED aiuta ad eliminare il residuo della frequenza di PWM, se notate che si ripercuote anche sul circuito controllato dalla fotoresistenza dovrete aumentarne la capacità.

La resistenza variabile funziona anche con una semplice tensione continua da 0 a 5V, senza PWM. Ovviamente il PWM è il metodo più semplice da utilizzare con un uController.

Resistenza PWM
Realizzazione pratica della resistenza variabile

void setup() {
  pinMode(3, OUTPUT);
  pinMode(13, OUTPUT);
}

void LampLed() {
  digitalWrite(13, HIGH);
  delay(25);
  digitalWrite(13, LOW);
  delay(25);
}

void loop() {
  analogWrite(3, 255);
  LampLed();
  delay(2000);
  analogWrite(3, 192);
  LampLed();
  delay(2000);
  analogWrite(3, 128);
  LampLed();
  delay(2000);
  analogWrite(3, 64);
  LampLed();
  delay(2000);
  analogWrite(3, 16);
  LampLed();
  delay(2000);
  analogWrite(3, 0);
  LampLed();
  LampLed();
  LampLed();
  delay(2000);
}

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.