Como funciona o sensor LDR?

 SENSOR DE LUMINOSIDADE LDR(Light Dependent Resistor, ou Resistor Dependente de Luz)



  O LDR é um componente eletrônico cuja resistência elétrica varia de acordo com a luminosidade que incide sobre ele, ou seja, quando ocorre a ausência de luminosidade a resistência do LDR é muito grande, no entanto, quando este é iluminado, a resistência diminui, resultando em um grande aumento da corrente elétrica em seus terminais.

  No projeto, utilizamos o sensor LDR para que o carrinho fosse acionado no mesmo instante que a bolinha chegasse ao fim da rampa e, assim, conseguiríamos ter maior certeza que a bolinha e o carrinho iam ter a mesma velocidade na componente Vx. Além disso, o sensor foi utilizado para a determinação da velocidade da bolinha no final da rampa.


💡USO DO LDR PARA O ACIONAMENTO DO CARRINHO

  Nessa etapa, utilizamos o sensor LDR e um led posicionados de frente um para o outro. O led foi programado para ficar o tempo todo aceso para que, dessa forma, o LDR recebesse sempre a mesma luminosidade vinda do led. 

  Antes de utilizar o LDR para o acionamento do carrinho, fizemos um código para verificar exatamente a o valor da luminosidade que o LDR estava recebendo do led quando algum objeto interceptava a luz e quando não interceptava. O código está disponível abaixo:


const int LDR = A0;             // Pino analógico que o sensor LDR está conectado
const int luz = 2;              // Pino digital em que o led está conectado. O led recebeu o nome de ¨luz¨ nesse código
int valorLDR ;                  // Variável onde será armazenado o valor do LDR
void setup() {
  pinMode(luz, OUTPUT);         // Indica que ¨luz¨ envia dados externos, no caso sua luminosidade
  pinMode(LDR, INPUT);          // Indica que ¨LDR¨ recebe dados externos, no caso, a luminosidade de ¨luz¨
  Serial.begin(9600);           // inicializa a comunicação serial com a taxa de 9600 bps
}

void loop() {
  valorLDR = analogRead(LDR); // Faz a leitura do pino analógico LDR e armazena o valor na variavel valorLDR
  Serial.println(valorLDR);      // Mostra o valor do LDR no monitor serial
}

  Os valores obtidos foram de, respectivamente, 300 e 800, aproximadamente. 

  A partir disso, fizemos o código de acionamento do carrinho, definindo que o carrinho do LDR fosse ligado a partir que a leitura do LDR fosse menor que 400. A seguir, o código:


const int LDR = A0;
const int luz = 2;
int IN1 = 4;
int IN2 = 5;
int IN3 = 6;
int IN4 = 7;

#define velocidade 200

int valorLDR ;
                         
void setup() {
  Serial.begin(9600);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);        
  pinMode(LDR, INPUT);
  pinMode(luz, OUTPUT);                  
}

void loop() {

  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  valorLDR = analogRead(LDR);
  Serial.print("LDR : " );      
  Serial.println(valorsensor);
  digitalWrite(luz, HIGH);

  if (valorLDR < 400) {      
    analogWrite(IN1, velocidade);
    digitalWrite(IN2, LOW);
    analogWrite(IN3, velocidade);
    digitalWrite(IN4, LOW);

  delay(3000);

  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
   }              

}


💡USO DO LDR PARA ACHAR A VELOCIDADE DA BOLINHA NA COMPONENTE Vx

  Nessa etapa, contamos com a ajuda da professora Marisa Cavalcante. Ela deu a ideia de calcularmos a velocidade na componente Vx utilizando a forma da velocidade(V= variação do espaço/variação do tempo), considerando o espaço como sendo o diâmetro da bolinha. Utilizamos o LDR para determinar o tempo. O tempo foi calculado considerando o momento em que a bolinha intercepta o LDR (tempo inicial), e o momento em que ela sai da rampa(tempo final). Seguindo essa lógica, o tempo inicial começa quando a leitura do LDR está abaixo de 400 e o tempo final é contado quando a leitura do LDR retorna a ser maior que 400. Segue abaixo, o código:


#define LDR A0
#define luz 2

long startCount = 0;
long endCount = 0;
int valor;
bool counting = false;

void setup() {
  pinMode(luz, OUTPUT);
  pinMode(LDR, INPUT);
  Serial.begin(9600);
}

void loop() {
  valor = analogRead(LDR);

if (valor < 400 && !counting) {

    startCount = millis();
    counting = true;
  }
 
  else if (valor >= 400 && counting) {
   
    endCount = millis();
    counting = false;

 
    long Tempo = endCount - startCount;
    Serial.print("Tempo: ");
    Serial.print(Tempo,6 );
   
    Serial.print(" vx = ");
    Serial.println( 4000/Tempo);
  }
}

Comentários

Postagens mais visitadas deste blog

Teste: Motores do Carrinho

Primeiro projeto: Experimento sobre o lançamento de projéteis em MRU