Sensor de llum


En aquest projecte farem una cosa que si s'enten és molt senzill però per altra banda també és molt pràctic. Aquest projecte serveix per tal d'aprendre a calibrar un sensor (és el que apareix a la part del Setup del codi de l'inferior). Doncs bé, aquest circuit consisteix en un LED i un sensor de llum, de tal manera que el LED s'encengui molt o poc respectivament a la llum que capti el sensor. Resumint, és com els llums que podem trobar en alguns jardins d'algunes cases que s'encenen només quan es fa de nit. En aquest cas funciona igual però s'encén més o menys depenent de si hi ha molta llum o poca. El sensor que s'utilitza per a aquesta pràctica és el sensor de llum o LDR. Aquest component electrònic està format per una cèl·lula fotoresistor en el seu interior. Depenent de la quantitat de llum que rebi (sigui solar o artificial) oposa més o menys resistència; de tal manera que varia el voltatge que li envia a la placa arduino. Com mès llum hi ha, menys resistència oposa.





Per tal de realitzar aquest projecte necessitarem:
  • 1xArduino UNO
  • 1xProtoboard
  • 1xLDR
  • 1xLED
  • 1xResistència 220ohm
  • 1xResistència 10 kilo ohm
  • Cables
L'esquema elèctric que s'ha de realitzar per a dur a terme aquest projecte és el següent:



Una vegada ja fet el circuit elèctric, és l'hora de passar a la part de programar. El programa a realitzar és el següent.


const int sensorPin = A0;//Definim el pin al qual connectem el sensor
const int ledPin = 9;    //Definim el pin al qual va connectat el LED
int sensorValue=0;       //Li diem a la placa que el valor inicial que té el sensor és 0
int sensorMax=1023;      //Definim quin és el valor màxim que pot llegir el sensor
int sensorMin=0;         //Definim quin és el valor mínim que pot llegir el sensor
void setup() {
  // put your setup code here, to run once:
pinMode(9, OUTPUT);      //Li diem a la placa que el pin 9 és de sortida
digitalWrite(9, HIGH);    /Li diem a la placa que doni corrent al pin nou


/*En la següent instrucció li diem a la placa que fagi una presa de dades durant cinc segons, per tal de calibrar el sensor.
 Li diem a la placa que si llegeix un valor més alt que el valor més alt possible (1023) el posi com a nou valor més alt, 
 i fem el mateix per el valor mínim. D'aquesta manera estem comprovant que el valor mínim i màxim posats siguin correctes.
 Una vegada s'ha acabat la presa de dades definim els baudios del serial (9600).*/

while(millis()<5000){                   
  sensorValue=analogRead(A0);

  if(sensorValue>sensorMin){
    sensorMin=sensorValue;
  }
  if(sensorValue<sensorMax){
    sensorMax=sensorValue;
  }
  digitalWrite(9,LOW);
  Serial.begin(9000);
  
  }
}


void loop(){
  // put your main code here, to run repeatedly:
  
//Li ordenem a la placa que llegeixi el valor del sensor de llum, i el guardi en la variable de valor del sensor
sensorValue=analogRead(A0);                   

//A continuació mapegem aquest valor. Passem de que el seu màxim i el seu mínim siguin 1023 i 0, a 255 i 0
sensorValue=map(sensorValue,sensorMax, sensorMin,0,225);  

//Li diem a la placa que el valor mínim del sensor és 255 i el màxim 0 (o sigui que els intercanviem). 
//D'aquesta manera quan rebi molta llum, el LED no s'encendrà; i quan en rebi molta s'encendrà al màxim.
sensorValue=constrain(sensorValue, 225,0);

//Li ordenem a la placa que doni el voltatge guardat en la variable valor del sensor.
analogWrite(ledPin,sensorValue);

//Finalment aquest valor el printem per el Serial.
Serial.println(sensorValue);
}

Doncs una vegada fet el circuït i la placa programada ja tenim un LED que s'encén depenent amb la quantitat de llum que hi ha a l'ambient. A continuació podeu descarregar l'arxiu arduino del codi.


Cap comentari:

Publica un comentari a l'entrada

↓↓↓ Si vols deixar un comentari fes-ho aquí ↓↓↓