Medida de frequência de um pêndulo com Arduíno
De Wiki Cursos IFPR Foz
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
- Arduino UNO;
- Protoboard;
- LCD 16x2;
- Potenciômetro 10k Ω;
- Sensor Ultrassônico
- Cabos diversos.
Fotos
- LCD
- Potenciômetro
- Cabos
- Protoboard
- Esquema estrutural
- 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"); } }