collapse

* Links de Robótica

* Posts Recentes

Medir Agua que está no Poço por Hugu
[Hoje às 19:57]


URGENTE - display de 7 segmentos com backpack por helderjsd
[Ontem às 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Palavras Cruzadas por Njay
[19 de Setembro de 2017, 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]

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

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

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.505
    • 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.390
  • 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.505
    • 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.505
    • 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.390
  • 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.505
    • 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.390
  • 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.505
    • 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.505
    • 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.390
  • 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.457
    • 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.390
  • 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.505
    • 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