Com mesurar el nivell de llum amb Arduino i una LDR

  • Una LDR és una resistència que en varia el valor en funció de la llum percebuda.
  • El principi de funcionament d‟una LDR es basa en la conductivitat de materials semiconductors.
  • El muntatge bàsic amb Arduino es basa en un divisor de tensió entre la LDR i una resistència fixa.
  • Les LDR són útils per mesurar tendències de llum, però no són necessàries per mesurar il·luminància en luxe.

sensor de llum LDR

Si mai t'has preguntat com mesurar eficientment el nivell de llum en un entorn amb Arduino, ets al lloc adequat. En aquest article, t'explicarem pas a pas com fer-ho usant una fotoresistència LDR, també coneguda com a fotoresistor. Aquestes petites meravelles tecnològiques són components electrònics capaços de canviar la seva resistència segons la quantitat de llum que reben, cosa que obre una infinitat de possibilitats per a projectes electrònics i d'automatització.

Les aplicacions del sensor de llum amb Arduino són moltes: des de sistemes de llum automàtica fins a robots que s'orienten en funció de la llum. El millor de tot és que és un component assequible i fàcil dutilitzar. Aquí et donarem tota la informació necessària perquè puguis construir el teu propi sistema de mesura de llum amb Arduino i aprofitar-ne tot el potencial.

Què és una LDR i com funciona?

Una LDR (Light Dependent Resistor) és una resistència la magnitud de la qual varia depenent de la quantitat de llum que hi incideix. En condicions de foscor, la resistència és molt alta, arribant a valors de fins a 1 MOhm. Per contra, quan la LDR rep abundant llum, la resistència disminueix considerablement, arribant a valors entre 50 a 100 Ohms sota llum intensa.

El funcionament es basa en el principi de conductivitat de materials semiconductors. En rebre llum, els fotons energitzen els electrons del material, cosa que facilita el flux de corrent i, per tant, disminueix la resistència. Aquest tipus de sensor és molt útil per a aplicacions on es requereixi una mesura relativa de la llum a l'entorn.

Característiques de la LDR

Aquest component és molt popular a causa del seu baix cost i facilitat dús. Els valors típics de la seva resistència van des de 1 MOhm en completa foscor fins a 50-100 Ohm en llum brillant. Tot i això, cal esmentar que no són els sensors més precisos si el que busques és mesurar amb exactitud la il·luminància (llum en lux), ja que poden veure's afectats per factors com la temperatura.

La variació de resistència és força lenta, trigant entre 20 a 100 mil·lisegons depenent del model. Això significa que no és adequat per detectar canvis ràpids de llum, com els produïts sota llums alimentades per corrent altern, però ofereix una estabilitat excel·lent en condicions de llum més constants.

Si bé les LDR són més adequades per mesurar tendències de llum que per proporcionar dades exactes, el baix cost i la facilitat d'integració amb les plaques Arduino les converteixen en un sensor ideal per a projectes DIY.

Circuit i Esquema de Connexió

Perquè l'Arduino pugui mesurar la variació de resistència del LDR, cal muntar el sensor en allò que es coneix com un divisor de tensió. Aquest és un circuit molt simple compost per la LDR i una resistència fixa connectades en sèrie. Es col·loca la LDR entre el voltatge d'entrada (per exemple, 5V a la placa Arduino Uno) i el pin dentrada analògica, i la resistència fixa es connecta entre el pin i la massa (GND).

El valor de la resistència fixa sol ser de 10 kOhms, encara que pot variar depenent de la sensibilitat que vulguis aconseguir en la teva mida.

Muntatge i Exemples de Codi

Per muntar un sistema bàsic amb Arduino i una LDR, el primer que has de fer és connectar els elements següents:

  • Un extrem de la LDR a lalimentació de 5V.
  • L'altre extrem de la LDR a l'entrada analògica (A0, per exemple) i alhora una resistència fixa que anirà connectada a massa.

Amb aquest muntatge podeu començar a llegir els valors que la LDR proporciona a través de l'entrada analògica. El codi següent és un exemple bàsic per llegir aquests valors:

const int pinLDR = A0;
void setup() {
Serial.begin(9600); // Iniciar monitor serie}
void loop() {
int valorLDR = analogRead(pinLDR); // Leer valor de LDR
Serial.println(valorLDR); // Imprimir valor en monitor
delay(500);
}

Aquest codi imprimirà valors compresos entre 0 (és a dir, quan no hi ha llum) i 1023 (màxima llum rebuda). Aquests valors són proporcionals a la llum percebuda per la LDR.

El comportament de la resistència en funció de la llum

Com ja s'ha esmentat, la resistència de la LDR disminueix a mesura que rep més llum. mesurament precís de la quantitat de llum, cal conèixer els valors de resistència del teu LDR en diferents condicions d'il·luminació.

A la sèrie GL55, per exemple, els valors van de 5 kΩ a 200 kΩ en presència de llum i des de 500 kΩ fins a 10 MΩ en condicions de foscor. Aquests valors poden variar d'un model a un altre, per això sempre és recomanable consultar el full de dades del fabricant del sensor.

Una peculiaritat interessant de les LDR és que la seva sensibilitat és més gran en la porció de l'espectre de llum verda, aproximadament en longituds d'ona de 540 nm. Això vol dir que les LDR responen millor a la llum verda que no pas a altres parts de l'espectre visible.

Aplicacions Pràctiques

Les possibles aplicacions de les LDR connectades a un Arduino són gairebé infinites. Entre les més pràctiques hi ha els sistemes d'il·luminació automàtica, on el circuit pot activar o desactivar llums segons els nivells de llum detectats. També es fan servir per robots seguidors de llum i sistemes domòtics.

Pots, per exemple, crear un sistema on a mesura que els nivells de llum disminueixin, un LED s'encengui per compensar la manca de llum. Aquí un exemple senzill de codi:

int LDRPin = A0; // Pin para la LDR
int LEDPin = 13; // Pin para el LED
int threshold = 500; // Umbral para encender el LED
void setup() {
pinMode(LEDPin, OUTPUT);
pinMode(LDRPin, INPUT);}
void loop() {
int valorLuz = analogRead(LDRPin);
if (valorLuz < threshold) {
digitalWrite(LEDPin, HIGH); // Enciende el LED
} else {
digitalWrite(LEDPin, LOW); // Apaga el LED
}
delay(100);}

Aquest petit programa llegeix el valor de la LDR i, si el nivell de llum és inferior al llindar establert, encén el LED. En cas contrari, ho apaga. Un exemple fàcil però molt funcional en projectes d'automatització d'il·luminació.

Limitacions i precaucions

Tot i que l'ús d'una LDR és molt convenient en molts projectes, cal tenir en compte algunes de les seves limitacions:

  • No són gaire precises si el que busques és mesurar la intensitat exacta de la llum a lux.
  • El comportament pot variar segons la temperatura.
  • Funcionen millor per detectar canvis més grans de llum i no variacions ràpides.