collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Ontem às 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Fan RPM counter  (Lida 6007 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.921
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #15 em: 22 de Outubro de 2011, 10:07 »
ena..   :D voltando a este tópico

Tenho uma situação, colocando apenas o código para obter o valor pulsein funciona bem:

Código: [Seleccione]
void loop()  {
  Serial.println("-----FAN1");

  duration = pulseIn(pin1, HIGH);
  duration2=(duration*2);
  duration2=(1/duration2);
  duration2=(duration2*1000);
  duration2=(duration2*1000);
   duration=(duration2*60/2);

  Serial.println(duration);
}

Se colocar código associado a outras coisas já se atrofia todo.. exemplo:

Código: [Seleccione]
void loop()  {
  Serial.println("-----FAN1");

  duration = pulseIn(pin1, HIGH);
  duration2=(duration*2);
  duration2=(1/duration2);
  duration2=(duration2*1000);
  duration2=(duration2*1000);
  duration=(duration2*60/2);

  Serial.println(duration);

//Temperatura:
sensors.requestTemperatures();
Serial.print("Temperature for Device 1 is: ");
temperature=(sensors.getTempCByIndex(0));
Serial.println(temperature);
Serial.print("Temperature for Device 2 is: ");
temperature=(sensors.getTempCByIndex(1));
Serial.println(temperature);
}

Fico com valores de 18032 em vez de 3050  :o

Para obter os valores correctos de RPM tenho de executar o código pilsein sozinho?



Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Fan RPM counter
« Responder #16 em: 22 de Outubro de 2011, 16:39 »
Que tipo de variavel é esse duration?
É que estás a dividir por 1/duration, a seguir multiplicas por 1 milhão, e etc..
Avr fanboy

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.921
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #17 em: 22 de Outubro de 2011, 18:12 »
lol foi a maneira de chegar +/- aos valores reais  ;D

unsigned long duration;
float duration2;

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.921
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #18 em: 26 de Outubro de 2011, 01:12 »
Possa... é muito complicado obter valores certos, usando simplesmente este código:

Código: [Seleccione]
int pin = 7;
unsigned long duration;

void setup()
{
  Serial.begin(9600); // Inicializa a comunicação serial
  pinMode(pin, INPUT);
}

void loop()
{
  duration = pulseIn(pin, HIGH);
  Serial.println(duration);
}

Tenho valores completamente diferentes consoante as ventoinhas, com uma bastante potente de 80mm tenho 3600 de resultado, com uma ventoinha de 120mm já tenho
15084.

Pensei que fosse por ser de 120mm, mas testei uma outra de 80mm e tenho os mesmo valores ~14033..

Usando o attachInterrupt os valores batem sempre certo independentemente do tipo de ventoinha.. tem a ver com o tipo de hall effect sensor ?