collapse

* Posts Recentes

+ LASERs por dropes
[Hoje às 12:57]


Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

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

0 Membros e 2 Visitantes estão a ver este tópico.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.959
    • 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.959
    • 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.959
    • 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 ?