sexta-feira, 22 de julho de 2011

LIQD com o Arduino: Descrição do Experimento

Este post é dedicado à investigação da Lei do Inverso do Quadrado da Distância (LIQD) com o auxílio do Arduino. 

A seguir, o roteiro resumido do experimento ( você pode ver o roteiro completo clicando aqui)


a) Material:  Régua,  Lanterna, Jumpers e Jumpers Garras Jacaré,   Papel cartão para construção da canaleta, Fita adesiva,  Sensor LRD,  Resistência de 33KOhms, Placa Arduino,  Computador;

      b) Montagem:
  •      Primeiramente montamos a placa Arduino segundo o esquema abaixo:

  •     O software da placa Arduino é livre é pode ser baixado em http://arduino.cc/  ( neste site você também encontra uma série de códigos e dicas de uso do Arduino). 
  •      A seguir programamos a placa Arduino para fazer a leitura da porta serial e retornar o valor da tensão e da resistência no LDR de acordo com a intensidade da luz no ambiente.
  •      Prendemos o sensor LDR numa canaleta graduada e protegida da luz do ambiente externo.
  •      Uma fonte de luz é movida ao longo da canaleta de 1cm em 1cm. Em cada posição, o LDR lê 10 dados e faz uma média dessas 10 leituras.
  •     Esses dados são coletados e transferidos para uma planilha eletrônica na qual a relação distância fonte de luz ao LDR versus resistância é obitda graficamente.
  •     Como a intensidade não pode ser calculada diretamente, optou-se por fazer uma relação entre a distância de separação da fonte luminosa com a condutância no LDR (em unidades arbitrárias).
  •      Por fim, um gráfico é construído com os dados, para analisar sua relação com a Lei dos Inversos dos Quadrados das Distâncias.
A seguir, o código do programa com o qual a placa Arduino foi alimentada e uma imagem da montagem experimental são fornecidos na sequência desse post.


unsigned long tempo; // float tempo; 

char leitura; // variável que armazenará a leitura na porta serial (LDR)
float myInts[10];       
int i = 0; //contador que vai determinar o no. de medidas em uma dada distância
int LDR;                // declara a variavel LDR (em bits)  
float VLDR;             // tensão no LDR (em Volts)
float RLDR;             //resistência no LDR
float CLDR;             //condutância no LDR
float I;                //corrente elétrica
float VRST;             //tensão no resistor
float somavldr = 0;     //variável de armazenamento dos valores de tensão no LDR
float somarldr = 0;     //variável de armazenamento dos valores de resistência no LDR 
float somacldr = 0;     //variável de armazenamento dos valores de condutância no LDR
float mediavldr = 0;    //valor médio da tensão no LDR 
float mediarldr = 0;    //valor médio da resistência no LDR
float mediacldr = 0;    //valor médio da condutãncia no LDR



void setup(){ 
pinMode(A0, INPUT);     //instruindo a ler no pino analógico 0 
Serial.begin(9600);     //definindo taxa de transmissão de dados (bauds)
Serial.print("VLDR");   //Imprime o rótulo "VLDR" na coluna superior de dados no monitor serial
Serial.print("       ");   // introduz um espaço para as colunas
Serial.print("RLDR");   //Imprime o rótulo "RLDR" na coluna superior de dados no monitor serial
Serial.print("        ");   // introduz um espaço para as colunas
Serial.print("CLDR");   //Imprime o rótulo "CLDR" na coluna superior de dados no monitor serial
Serial.println();       //Nova linha de texto
  }                                                                            
void loop()
leitura = Serial.read();  //leitura da porta serial - valores lidos estão em bits

somavldr = 0;  //armazenamento dos valores de tensão no LDR para um posterior cálculo da média
somarldr = 0;  //armazenamento dos valores de resistência no LDR para um posterior cálculo da média
somacldr = 0;  //armazenamento dos valores de condutância no LDR para um posterior cálculo da média
i = 0;         // zeragem do contador após a realização de 10 medidas a uma determinada distância

if (leitura =='l') { //caso o operador digite 'l' no monitor serial, o arduino realizará as medidas

  
while(i < 10){  // enquanto o contador i for menor que 10, o arduino continuará executando o bloco de instruções abaixo




tempo= millis();                     // base de tempo para a coleta de dados (microssegundos) 
LDR = analogRead(A0);                // leitura da porta serial (analógica) no pino 0 - aqui está ligado o LDR
VLDR = (LDR*5.00000)/1024.00000;    //conversão dos valores lidos em bits para tensão (em Volt) - a porta serial tem tensão máxima de 5,0 V
VRST = 5.00000 - VLDR;              // cálculo da tensão no resistor de 33 kOhm
I = VRST/33.00000;                  //(33kOhm)     
RLDR = VLDR/I;                     //cálculo da resistência no LDR (Ohm)
CLDR = (I/VLDR)*1000.00000;        //cálculo da condutância no LDR (C = I/V ou C=1/R) (unidades arbitrárias - .10^3 para facilitar gráficos)
somavldr =(somavldr + VLDR);       //armazenamento dos valores de tensão no LDR para um posterior cálculo da média
somarldr = (somarldr + RLDR);      //armazenamento dos valores de resistência no LDR para um posterior cálculo da média
somacldr = (somacldr + CLDR);      //armazenamento dos valores de condutância no LDR para um posterior cálculo da média

    Serial.print(VLDR,5);         // imprime o valor da tensão no LDR (VLDR - Volt)
    Serial.print("    ");         // introduz um espaço para as colunas 
    Serial.print(RLDR,5);         // imprime o valor da resistência no LDR (RLDR - Ampère)
    Serial.print("    ");         // introduz um espaço para as colunas
    Serial.print(CLDR,5);         // imprime o valor da condutância no LDR (Ohm^-1 = Siemens) 
    Serial.print("    ");         // introduz um espaço para as colunas
    Serial.println();             // imprime os dados e cria uma nova linha
    
    i++;                          //após uma iteração do loop de while, incrementa o valor do contador em 1
    
    delay(1000);                 //pausa o programa por um intervalo de tempo de 1000 ms = 1,0 s
  }                              //fecha o laço de while
mediavldr = somavldr/10;         //calcula o valor médio de tensão no LDR
mediarldr = somarldr/10;         //calcula o valor médio de resistência no LDR
mediacldr = somacldr/10;         //calcula o valor médio de condutância no LDR
    Serial.print("VLDR Medio: ");   //imprime o valor médio de tensão no LDR  
    Serial.println(mediavldr,5);     
    Serial.print("RLDR Medio: ");   //imprime o valor médio de resistância no LDR 
    Serial.println(mediarldr,5);     
    Serial.print("CLDR Medio: ");   //imprime o valor médio de condutãncia no LDR 
    Serial.println(mediacldr,5);    
} // fecha o laço de if
} //fecha o programa





Um comentário:

  1. Betting Sites in 2021: Make Money by Betting on Sports
    Betting is the most popular way to make money หารายได้เสริม on sports. Learn about the different types of bets and odds, where to 메리트카지노 bet on kadangpintar sports.

    ResponderExcluir