Medida de frequência de um pêndulo com Arduíno

De Wiki Cursos IFPR Foz
Revisão de 18h43min de 17 de março de 2014 por Evandro.cantu (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegaçãoIr para pesquisar

Medida de frequência de um pêndulo com Arduíno

Ano: 2013
Alunos: Jeferson de Lara e Jhorranis B. dos Santos
Curso Integrado em Informática
Orientador: Prof. Evandro Cantú
Objetivo
O projeto tem como objetivo calcular a frequência de um pêndulo:.
Frequência de um Pêndulo

A frequência de um pêndulo é baseada no tempo que ele leva para completar um ciclo.

Um ciclo é completado quando o pêndulo que começa de um ponto,vai até um ponto 2 e volta para a posição incial que ele ocupava, então chamamos este tempo de "Período".

Para calcularmos a frequência utilizamos a seguinte equação:

1 / PERIODO

Essa equação nos dará a frequência que é medida em Hz.

Equipamentos usados

Fotos

LCD
LCD 16x2px








Potenciômetro
texto














Cabos
texto









Protoboard
texto






Esquema estrutural
Display LCD 16x2











Circuito
O display foi conectado a porta digital 2, 3, 4, 5, 11 e 12;
O potenciometro tem a funçao de aumentar e diminuir a luminosidade do visor do display;
O sistema esta alimentado por +5v e assegurado por GND(terra);

Código Fonte

Declaração de Variaveis

float tempo1;                             //variavel do tipo float
float tempo2;                             //variavel do tipo float
float cron = 0;                           //variavel do tipo float inicializada com valor 0
float tempofinal;                         //variavel do tipo float
const int sensorPin = 7;                  //atribui a porta numero 7 para ser utilizada pelo sensor do tipo inteiro
int sensorState = 0 ;                     //estado do sensor ( 0 = desligado ; 1 = ligado )
float frequencia = 0 ;                    //variavel do tipo float inicializada com valor 0
float periodo = 0 ;                       //variavel do tipo float inicializada com valor 0

#include <LiquidCrystal.h>                //chama a biblioteca para trabalhar com o display

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);    // portas digitais utilizadas pelo display

void setup(){ 
   
  Serial.begin(9600);                     // chama a comunicaçao com as portas do arduino
  lcd.begin(16,2);                        // especifica o tamanho do display (16 colunas, 2 linhas)
  pinMode(sensorPin, INPUT);              // modo do pino = saida
  tempo1 = millis();                      // atribui o tempo da maquina a variavel tempo1 quando iniciado o programa
}

void loop(){                             // repetiçao infinita
  sensorState = digitalRead(sensorPin);  // estado do sensor = usa a porta atribuida anteriormente para ser usada no sensor
 
   if (sensorState == LOW) {             // condicao se o estado do sernsor for igual a BAIXO

    tempo2 = millis();                   // atribui o tempo da maquina quando o sensor captura um movimento  
   
    delay(200);                          // tempo de espera de resposta do sensor
   
    cron = tempo2 - tempo1;              // equaçao para calcular o tempo que o pendulo levou para completar 1/2 periodo
   
    tempo1 = tempo2;                    
       
    periodo = (cron * 2) / 1000;         // equaçao para transformar o tempo de milisegundos em segundos( vezes 2 porque o sensor so capta o tempo de 1/2 periodo) 
    frequencia = 1 / periodo ;           // equaço para calcular a frequencia (baseada no tempo calculado )
    
    lcd.setCursor(0,0);                  // define a partir de que ponto sera escrito no display (coluna x linha)
    lcd.print("Periodo:");               // escreve no display
    lcd.setCursor(9,0);                  // escreve no display o valor da variavel periodo
    lcd.print(periodo); 
    lcd.setCursor(13,0);
    lcd.print("s");
   
    lcd.setCursor(0,1);                 
    lcd.print("Freq   :");
    lcd.setCursor(9,1);
    lcd.print(frequencia);              // escreve no display o valor da variavel frequencia
    lcd.setCursor(13,1);
    lcd.print("Hz");
   }
 }