Bom dia pessoal!

tenho que desenvolver um projeto para calcular a velocidade media de uma material( imã) que passa por dentro de tubos de alumino e tubo de PVC( é a experiencia do Tubo anti gravidade- Lei de Lenz) a ideia inicial seria unir os dois tubos, sendo que o tubo de PVC ficaria na parte superior, instalar 3 sensores infra vermelhos, 1 na entrada do tubo de PVC, 1 na saída do tubo de PVC, 1  na saída do tubo de alumínio, assim que o material passar pelo primeiro sensor será iniciado a contagem de tempo, quando passar pelo 2 sensor será informada a velocidade media do período no display e armazenada, e abrira a contagem de tempo novamente, ao passar pelo terceiro sensor será informada no display a velocidade media do segundo período.

alguém pode ajudar?

Exibições: 1834

Responder esta

Respostas a este tópico

Julio, bom dia.

Este projeto é um TCC?

O que voce já tem pronto deste projeto?

Parte mecânica, eletrônica, código, desenhos, fórmulas, etc?

Posta aqui e tb se tiver, fotos?

Assim poderemos auxilia-lo.

Rui

Não é TCC,  

existe uma experiencia, que mostra a velocidade media de um imã quando passa por um tubo de alumínio,  que explica lei de Lenz, o vídeo esta no link https://www.youtube.com/watch?v=Sdoq9Q4D-dg a ideia é complementar esta experiencia inserido um tubo de outro material, do mesmo comprimento e analisar a velocidade media percorrida nos dois materiais. A mecânica é bem simples seria, cada tubo tem o comprimento de 1 metro sendo emendado através de uma liva de pvc, vou enviar um esquema da mecânica.

esquema de montagem mecanica

Oi Julio,

com o arduino,o código pra fazer isto é bem simples.

Modifique este código para fazer tb a 2a. medida.

Rui

// measures velocity of projectiles
// baseado no código postado por Bruno Godoi Eilliar

unsigned long Inicio=0; // variavel interia positiva para guardar o inicio da medida
unsigned long finish=0; // variavel interia positiva para guardar o fim da medida
float distance=10; // variavel floatpoint para informar a distancia para medida
// informar aqui a distancia entre os sensores em cm
float interval; // variavel floatpoint para guardar o calculo ente inicio e fim
float velocity; // variavel floatpoint para guardar guardar o calculo da velocidade

int done=1; // Flag para informar que foi feita a medida

int FlagInicio = 0; // Flag para informar que foi medido o tempo inicial
int FlagFinal = 0; // Flag para informar que foi medido o tempo final

int startPin = 4; // pino de entrada para sensor de inicio
int finishPin = 8; // pino de entrada para sensor de inicio
// -----------------------------------------------
void setup()
{
Serial.begin(9600); // Inicialização da serial
pinMode(startPin, INPUT_PULLUP); // definição do pino startPin como entrada e pull-up resistor
pinMode(finishPin, INPUT_PULLUP); // definição do pino finishPin como entrada e pull-up resistor

Serial.println("Medida de velocidad de projetil "); // Msg inicial
}
// -----------------------------------------------
void loop()
{
while(digitalRead(startPin) == LOW) // Faça se pino startPin esta obstruido
{
if (FlagInicio == 0) // Faça se ainda não tem medida inicial
{
Inicio = millis(); // Salva medida inicial em miliseg
Serial.println("Inicio "); // Informa que tem medida inicial
// Serial.println(Inicio); // informa valor da medida inicial
FlagInicio = 1; // informa que já tem medida inicial
}
}

while(digitalRead(finishPin) == LOW) // Faça se pino finishPin esta obstruido
{
if (FlagInicio == 1) // Faça se tem medida inicial
{
if (FlagFinal == 0) // Faça se ainda não tem medida final
{
finish = millis(); // Salva medida final em miliseg
Serial.print("Final "); // Informa que tem medida final
// Serial.println(finish); // informa valor da medida final
Serial.println(" "); // new line
done = 0; // informa que tudo foi medido
FlagFinal = 1; // informa que já tem medida final
}
}
}
while(!done) // fa;ca se tudo foi medido
{
interval = float(finish-Inicio); // calcula a diferença entre o inicio e o final em miliseg
velocity = (distance/interval)*60*60; // Divide distancia pelo tempo e multiplica por 3600(miliseg --> minuto
Serial.println("Velocidade do projetil "); // Msg
Serial.print(velocity,4); // Imprime velocidade em cm/min com 4 casas decimais
Serial.println(" cm/min"); // msg sufixo
Serial.println("-----------------------"); // separador de msg
done = 1; // prepara para nova medida
FlagInicio = 0; // prepara para nova medida
FlagFinal = 0; // prepara para nova medida
finish = 0; // prepara para nova medida
Inicio = 0; // prepara para nova medida
}
}

valeu obrigado!

JCP, segue o novo code,

testa e diga se ficou ok, pois aqui não tenho IDE.

Rui

// measures velocity of projectiles
// baseado no código postado por Bruno Godoi Eilliar

unsigned long Inicio=0; // variavel interia positiva para guardar o inicio da medida
unsigned long Meio=0; // variavel interia positiva para guardar o meio da medida
unsigned long finish=0; // variavel interia positiva para guardar o fim da medida
float distance=10; // variavel floatpoint para informar a distancia para medida
// informar aqui a distancia entre os sensores em cm
float interval1; // variavel floatpoint para guardar o calculo ente inicio e meio
float interval2; // variavel floatpoint para guardar o calculo ente meio e fim
float velocity1; // variavel floatpoint para guardar guardar o calculo da velocidade inicio meio
float velocity2; // variavel floatpoint para guardar guardar o calculo da velocidade meio fim
int done=1; // Flag para informar que foi feita a medida

int FlagInicio = 0; // Flag para informar que foi medido o tempo inicial
int FlagMeio = 0; // Flag para informar que foi medido o tempo meio
int FlagFinal = 0; // Flag para informar que foi medido o tempo final

int startPin = 4; // pino de entrada para sensor de inicio
int HalfPin = 6; // pino de entrada para sensor de meio
int finishPin = 8; // pino de entrada para sensor de inicio
// -----------------------------------------------
void setup()
{
Serial.begin(9600); // Inicialização da serial
pinMode(startPin, INPUT_PULLUP); // definição do pino startPin como entrada e pull-up resistor
pinMode(halfPin, INPUT_PULLUP); // definição do pino halfPin como entrada e pull-up resistor
pinMode(finishPin, INPUT_PULLUP); // definição do pino finishPin como entrada e pull-up resistor
Serial.println("Medida de velocidad de projetil "); // Msg inicial
}
// -----------------------------------------------
void loop()
{
while(digitalRead(startPin) == LOW) // Faça se pino startPin esta obstruido
{
if (FlagInicio == 0) // Faça se ainda não tem medida inicial
{
Inicio = millis(); // Salva medida inicial em miliseg
Serial.println("Inicio "); // Informa que tem medida inicial
FlagInicio = 1; // informa que já tem medida inicial
}
}


while(digitalRead(halfPin) == LOW) // Faça se pino finishPin esta obstruido
{
if (FlagInicio == 1) // Faça se tem medida inicial
{
if (FlagMeio == 0) // Faça se ainda não tem medida final
{
Meio = millis(); // Salva medida final em miliseg
Serial.print("Meio "); // Informa que tem medida final
Serial.println(" "); // new line
FlagMeio = 1; // informa que já tem medida final
}
}
}


while(digitalRead(finishPin) == LOW) // Faça se pino finishPin esta obstruido
{
if (FlagInicio == 1) // Faça se tem medida inicial
{
if (FlagFinal == 0) // Faça se ainda não tem medida final
{
finish = millis(); // Salva medida final em miliseg
Serial.print("Final "); // Informa que tem medida final
Serial.println(" "); // new line
done = 0; // informa que tudo foi medido
FlagFinal = 1; // informa que já tem medida final
}
}
}
while(!done) // faca se tudo foi medido
{
interval1 = float(Meio-Inicio); // calcula a diferença entre o inicio e o meio em miliseg
interval2 = float(finish-Meio); // calcula a diferença entre o meio e o final em miliseg
velocity1 = (distance/interval1)*60*60; // Divide distancia pelo tempo e multiplica por 3600(miliseg --> minuto
velocity2 = (distance/interval1)*60*60; // Divide distancia pelo tempo e multiplica por 3600(miliseg --> minuto
Serial.println("Velocidade do projetil 1a Parte"); // Msg
Serial.print(velocity1,4); // Imprime velocidade em cm/min com 4 casas decimais
Serial.println(" cm/min"); // msg sufixo
Serial.println("Velocidade do projetil 2a Parte"); // Msg
Serial.print(velocity2,4); // Imprime velocidade em cm/min com 4 casas decimais
Serial.println(" cm/min"); // msg sufixo
Serial.println("-----------------------"); // separador de msg
done = 1; // prepara para nova medida
FlagInicio = 0; // prepara para nova medida
FlagMeio = 0; // prepara para nova medida
FlagFinal = 0; // prepara para nova medida
finish = 0; // prepara para nova medida
Meio= 0; // prepara para nova medida
Inicio = 0; // prepara para nova medida
}
}

problema

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço