fbpixel
Etiquetas: , , , ,
0
(0)

Um fotorresistor é um componente eletrônico que permite medir a luminosidade ambiente. Ele é útil em projetos como um painel solar que segue a luz, ou, na automação doméstica, para criar uma lâmpada inteligente que só acende no escuro ou instalar um alarme com um díodo laser.

Pré-requisito: sensores para dar sentidos ao seu robô

Material

  • Computador
  • Arduino
  • Cabo USB
  • 1 resistência de 10kOhm
  • 1 fotorresistor

Esquema

O fotorresisistor, ou, em inglês, Light Dependent Resistor (LDR), é um componente passivo. Para medir uma mudança de resistência, precisamos enviar uma corrente no componente entre dois potenciais. Criamos então uma ponte divisora de tensão, com o fotorresistor e uma resistência de 10kOhm.

photoresistor scheme

Código

Para exibir o valor físico do sensor, precisamos conhecer a regra de conversão, que muitas vezes será linear como y= a*x+b. Para ter um código limpo e legível, é preferível inseri-lo numa subfunção. Assim, criamos uma função que lê o valor do sensor e converte-o num valor físico.

/* Photocell reading program */
// Constants
#define DELAY 500 // Delay between two measurements in ms
#define VIN 5 // V power voltage
#define R 10000 //ohm resistance value

// Parameters
const int sensorPin = A0; // Pin connected to sensor

//Variables
int sensorVal; // Analog value from the sensor
int lux; //Lux value

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  sensorVal = analogRead(sensorPin);
  lux=sensorRawToPhys(sensorVal);
  Serial.print(F("Raw value from sensor= "));
  Serial.println(sensorVal); // the analog reading
  Serial.print(F("Physical value from sensor = "));
  Serial.print(lux); // the analog reading
  Serial.println(F(" lumen")); // the analog reading
  delay(DELAY);
}

int sensorRawToPhys(int raw){
  // Conversion rule
  float Vout = float(raw) * (VIN / float(1024));// Conversion analog to voltage
  float RLDR = (R * (VIN - Vout))/Vout; // Conversion voltage to resistance
  int phys=500/(RLDR/1000); // Conversion resitance to lumen
  return phys;
}

Aplicação

Uma aplicação possível para um fotorresistor é o controle de uma lâmpada LED conforme a luminosidade ambiente. Para isso, não é necessário converter o sinal do sensor num valor físico, mas simplesmente convertê-lo num valor de controle para o LED.

wiring photoresistor and led
/* Photocell controlling lamp program */
// Constants
#define DELAY 200 // Delay between two measurements in ms
#define MIN_RAW 0 // Analog minimum value
#define MAX_RAW 500 // Analog maximum value
#define MIN_CMD 0 // Digital minimum value
#define MAX_CMD 255 // Digital maximum value

// Parameters
const int sensorPin = A0; // Pin connected to sensor
const int ledPin = 3; // Pin connected to sensor

//Variables
int sensorVal; // Analog value from the sensor
int cmd; //Led command value

//Main
void setup(void) {
  Serial.begin(9600);
  pinMode(ledPin,OUTPUT);
}

void loop(void) {
  sensorVal = analogRead(sensorPin);
  cmd=sensorToLed(sensorVal);
  analogWrite(ledPin,cmd);
  delay(DELAY);
  Serial.print("Sensor : ");
  Serial.println(sensorVal);
  Serial.print("Command : ");
  Serial.println(cmd);
}

//Functions
int sensorToLed(int raw){
  // The LED shine when the room is dark
  int val = map(sensorVal, 0, 500, 255, 0);
  val=max(val,MIN_CMD);
  val=min(val,MAX_CMD);
  return val;
}

Referências

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?