collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


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


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


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]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

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

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

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Fan RPM counter
« em: 30 de Abril de 2011, 15:34 »
Com arduino conseguimos facilmente contar as voltas de uma ventoinha..:



Como o Arduino não tem muitos pinos 'interrupt' só podemos utilizar no máximo 2 ventoinhas (pelo que percebi)!

Alguém sabe se é possível utilizar mais? de outra forma c/ outra configuração/esquema?
« Última modificação: 30 de Abril de 2011, 15:38 por almamater »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Fan RPM counter
« Responder #1 em: 30 de Abril de 2011, 17:08 »
Praticamente todos os pinos do Atmega328p têm a função de pin-change interrupt, pesquisa sobre isso no datasheet.
Basicamente é uma interrupção que é gerada assim que houver uma mudança de estado em qualquer um dos pinos do porto, depois entra na ISR e vez quem é que mudou de estado lendo o valor dos pinos e comparando com o antigo valor e assim incrementas a variavel devida, ou então, experimenta o pulse-in.
Avr fanboy

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #2 em: 01 de Maio de 2011, 11:54 »
A explicação do PulseIn na página http://www.arduino.cc/en/Reference/PulseIn parece adaptar-se ao que se pretende..

Fazendo o mesmo esquema do projecto "Reading Fan RPM" http://www.arduino.cc/playground/Main/ReadingRPM (imagem do 1º post) para qualquer um dos pinos digitais será que resulta com o código do PulseIn?
 Não sei se o sinal enviado através do fio amarelo da Fan pode ser tratado/reconhecido dessa forma..


Offline GnGz

  • Mini Robot
  • *
  • Mensagens: 665
Re: Fan RPM counter
« Responder #3 em: 01 de Maio de 2011, 18:23 »
A explicação do PulseIn na página http://www.arduino.cc/en/Reference/PulseIn parece adaptar-se ao que se pretende..

Fazendo o mesmo esquema do projecto "Reading Fan RPM" http://www.arduino.cc/playground/Main/ReadingRPM (imagem do 1º post) para qualquer um dos pinos digitais será que resulta com o código do PulseIn?
 Não sei se o sinal enviado através do fio amarelo da Fan pode ser tratado/reconhecido dessa forma..

Já agora podemos, controlar a fan por pwm sem que queime o arduino?

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Fan RPM counter
« Responder #4 em: 01 de Maio de 2011, 18:35 »
com um transístor podes, directamente não, a não ser aquelas com 4 pinos, mas não sei qual a tensão com que aquilo funciona...
« Última modificação: 01 de Maio de 2011, 18:37 por CBX »

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #5 em: 03 de Maio de 2011, 11:15 »
Secalhar posso ligar o fio amarelo da Fan a um pino digital do Arduino e utilizar algo como isto

Código: [Seleccione]
int sensor=5;
int val=0;
int ledPin=12;

void setup(){
pinMode(sensor,INPUT);
pinMode(ledPin,OUTPUT);
}

void loop(){
val=digitalRead(sensor);
if(val){
digitalWrite(ledPin,HIGH);
else
digitalWrite(ledPin,LOW);
}

Mesmo que não se consiga calcular a velocidade ao menos para saber se está parada ou a rodar

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Fan RPM counter
« Responder #6 em: 03 de Maio de 2011, 17:42 »
Mas a ventoinha dá-te uma onda quadrada, esse código vai estar sempre a ler HIGH's e LOW's, se usares a função pulsein ela dá-te a frequência dessa onda, se tens a frequência tens a rotação da ventoinha, para que complicar o que é simples?
Avr fanboy

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #7 em: 03 de Maio de 2011, 22:39 »
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);
}
;D


Assim retorna um valor de ~3600, através do outro método (interrupts) a fan devolve umas  4200 RPM..  tenho de fazer um cálculo qualquer agora, por default o PulseIn é 1 segundo, baixando de 1 segundo ele retorna sempre 0.. mas ao menos já se sabe se a Fan está parada ou nao
« Última modificação: 03 de Maio de 2011, 22:51 por almamater »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Fan RPM counter
« Responder #8 em: 03 de Maio de 2011, 23:02 »
Experimenta trocar para low por exemplo.
O pulsein retorna micro-segundos, converte para Hz e depois para rpm, deve dar igual
Avr fanboy

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #9 em: 04 de Maio de 2011, 16:09 »
Experimenta trocar para low por exemplo.
O pulsein retorna micro-segundos, converte para Hz e depois para rpm, deve dar igual

Só li agora, testei mudar para LOW duration = pulseIn(pin, LOW); e aumentou um pouco para ~3690..   quanto às conversões vou então aprender como se faz (google  ;D)

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #10 em: 17 de Maio de 2011, 11:00 »
Descobri que existem chips específicos para projectos de speedometers etc, como o LM2907

Nos exemplos de aplicações têm isto:



Em vez daqueles 2 fios no "Magnetic Pickup" secalhar dá para adaptar à Fan.. não há muita informação sobre circuitos com este chip, mas parece ser fixe 

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Fan RPM counter
« Responder #11 em: 17 de Maio de 2011, 16:40 »
Isso converte frequência em voltagem, mas assim vais precisar de um monte de chips desses, continuo a dizer, pin change interrupt ou mesmo o pulseIn serve perfeitamente para isso.
Avr fanboy

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.469
    • Pro - andrefcarvalho
Re: Fan RPM counter
« Responder #12 em: 17 de Maio de 2011, 19:11 »
Descobri que existem chips específicos para projectos de speedometers etc, como o LM2907

Nos exemplos de aplicações têm isto:



Em vez daqueles 2 fios no "Magnetic Pickup" secalhar dá para adaptar à Fan.. não há muita informação sobre circuitos com este chip, mas parece ser fixe

daria para utilizar este esquema ligado directamente aos platinados de um carro e dp ler com um pic a 5v?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Fan RPM counter
« Responder #13 em: 17 de Maio de 2011, 19:20 »
Não porque os platinados estão depois da bobine normalmente isso quer dizer que andam lá mais de 5kV garantidamente e alguns casos até mais de 10kV.
Avr fanboy

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.918
    • GrcByte - Projectos
Re: Fan RPM counter
« Responder #14 em: 17 de Maio de 2011, 21:32 »
eu só referi esta forma frequencia-> voltagem pq parece ser mais simples o cálculo das rpm e o chip tomava conta da situação.. mas foi uma ideia  :P