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: Arduino+fan  (Lida 11209 vezes)

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

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Arduino+fan
« em: 30 de Julho de 2010, 02:06 »
Recebi hoje o meu arduino novo (tenho de comentar acerca do excelente serviço da loja lusorobótica -- a encomenda mais rápida que recebi, vinda do continente :D), e já comecei a fazer algumas experiências com o mesmo :P
Liguei uma fan de cooler de CPU antiga a arduino. Estas fans têm três cabos: um vermelho, um preto e um amarelo.
Deduzi que os cabos vermelho e preto são para alimentação, e o amarelo para dar informações acerca da velocidade da ventoinha. Por isso, liguei o cabo amarelo a um pino de analog input. No entanto, os dados que aparecem lá (uso o Serial.println para enviar os dados), não fazem sentido ... Alguém tem sugestões para eu conseguir perceber esses dados?

Offline ricardo-reis

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.338
Re: Arduino+fan
« Responder #1 em: 30 de Julho de 2010, 02:15 »
olá..

se tem três cabos e se se confirmar que são vcc, gnd e sinal, o sinal n é um valor que seja pra tu 'leres' mas sim pra ser 'escrito'.. ou seja.. esse pino deves ligá-lo a um pino digital (com pwm) e enviar-lhe um valor que varia entre 0 e 255..

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Arduino+fan
« Responder #2 em: 30 de Julho de 2010, 03:12 »
Tentei fazer o que sugeriste, mas não deu em nada.
Penso que para regular a velocidade da fan, é mesmo regulando a voltagem.
Além disso, caso o cabo amarelo fosse para controlar, não emitiria valores para o analog in (emite os valores, e consigo lê-los, mas não consigo percebê-los, pois a uma velocidade constante, eles variam, o único que faz sentido é o 6 que ocorre quando a fan está parada. Os outros, são o 5, 0, 1023, e mais alguns que agora não me lembro).
O que quero é saber como pegar nos valores e perceber o seu sentido (uma possibilidade é que os 10 bits lidos pelo leitor analog podem não corresponder aos bits da mensagem ... alguém sabe quantos bits usam as mensagens da fan? E se há alguma forma de mudar a resolução do leitor?).
« Última modificação: 30 de Julho de 2010, 03:20 por Cynary »

Offline Jay_OR

  • Mini Robot
  • *
  • Mensagens: 28
  • UA-TM & UBI-TSI
Re: Arduino+fan
« Responder #3 em: 30 de Julho de 2010, 04:43 »
Deixa-me ver se entendi, tu tens o fio preto que deves ligar em gnd e o vermelho no vcc de uma fonte exterior, penso que seria mais conveniente porque o arduino só te vai dar 5V e a FAN deve funcionar a 12V, deduzo que estas a usar uma fonte externa para te dar o valor máximo no analog os tais 1023.

Podes tentar fazer assim passar o valor que tens no analog.in para percentagem (Em que o valor que te dá 1023 ~=102%), se é isto que queres fazer.
Serial.println(analogRead(0)/10,DEC); //se ligado na entrada analógica 0

Coloca também um delay(1000) a seguir a leitura, até mesmo nos PC's tens +/- este atraso de leitura.
Verifica agora como esta o serial. Se tiver tempo no domingo testo a tua situação com uma FAN.

EDIT: Experimenta questionar o user que esta a fazer este projecto, sobre como é que ele esta a controlar as FAN's dele, se calhar esta mais dentro do assunto.
« Última modificação: 30 de Julho de 2010, 04:45 por Jay_OR »

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Arduino+fan
« Responder #4 em: 30 de Julho de 2010, 05:15 »
Deixa-me ver se entendi, tu tens o fio preto que deves ligar em gnd e o vermelho no vcc de uma fonte exterior, penso que seria mais conveniente porque o arduino só te vai dar 5V e a FAN deve funcionar a 12V, deduzo que estas a usar uma fonte externa para te dar o valor máximo no analog os tais 1023.

Podes tentar fazer assim passar o valor que tens no analog.in para percentagem (Em que o valor que te dá 1023 ~=102%), se é isto que queres fazer.
Serial.println(analogRead(0)/10,DEC); //se ligado na entrada analógica 0

Coloca também um delay(1000) a seguir a leitura, até mesmo nos PC's tens +/- este atraso de leitura.
Verifica agora como esta o serial. Se tiver tempo no domingo testo a tua situação com uma FAN.

EDIT: Experimenta questionar o user que esta a fazer este projecto, sobre como é que ele esta a controlar as FAN's dele, se calhar esta mais dentro do assunto.

Quanto à alimentação, estava a usar os 5v do arduino, que também achei estranho, dado os valores de 1023 :/
Eu tenho feito as leituras de 1 em 1 segundo, e o problema é que os dados não são regulares, variando entre 1023 e 0, sem eu alterar a velocidade da fan ...
A única vez em que se mantêm constantes é quando eu paro a fan com a mão, e ela dá-me um valor constante.
Por isso é que penso que a informação dada pela fan deve ser constituída de menos bits do que aqueles lidos pelo analog input.

Pelo que vi desse projecto, ele não está a ler as velocidades das fans, apenas a controlá-las por PWM, conforme a temperatura ... além disso, são ventoinhas diferentes (as dele têm quatro fios, a que estou a usar tem 3).

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Arduino+fan
« Responder #5 em: 30 de Julho de 2010, 11:15 »
Depois de alguma pesquisa (acho que ontem estava mesmo a ser muito preguiçoso xD), descobri alguma informação sobre como funciona a fan, e como ler os dados de RPM da mesma:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1152891511
e
http://www.arduino.cc/playground/Main/ReadingRPM

Aparentemente os dados que recebia eram porque a fan envia um pulso para cada meia rotação que faz ... a ideia é usar os interrupts para registar esses pulsos, e actualizar a contagem de rpms de x em x pulsos (vou ter de ler como funcionam os pulsos para perceber isto bem ...). Além disso, também vou ter de associar resistências, apesar de ainda não ter percebido porquê xD.

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Arduino+fan
« Responder #6 em: 02 de Agosto de 2010, 17:21 »
Depois de seguir os tutoriais consegui contar o número de rotações da fan facilmente ... No entanto, estou agora com uma dúvida: para que serve exactamente a resistência pull-up?
Já pesquisei, mas as explicações são um pouco confusas, pois não percebo a necessidade da resistência para puxar a diferença de potencial para 5V.
Além disso, como sabemos quando são necessários? E quando são, como sabemos quais os valores aconselhados? (no site que vi, aconselhavam 10K, mas estou a usar uma de 2K para experimentar -- a única que tinha xD -- e não tenho problemas ...).

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino+fan
« Responder #7 em: 04 de Agosto de 2010, 22:47 »
Um pull-up serve para fixar uma dada linha(fio) digital a um valor definido em meios com ruido ou por outras razões, mas se ligasses directamente aos 5v ou á massa, mais nenhum dispositivo ia conseguir mudar esse valor pois estava ligado directamente á fonte e mais ninguem tem tanta corrente como a fonte, então usa-se resistência de 10k ou mais, que apesar de puxarem a linha a um valor, seja ele 5v ou massa, é um valor fraco e outro dispositivo consegue alterar esse valor, no caso de uma resistência de 10k a corrente dada por esta é de apenas 0,0005A ou seja 0,5mA e com uma resistência de 2k esse valor passa para 0,0025A ou seja 2,5mA o que tambem não é assim  muito muito nesse caso especifico.
Avr fanboy

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Arduino+fan
« Responder #8 em: 05 de Agosto de 2010, 03:53 »
Obrigado pela explicação ... penso que percebi.
Então, os pinos analógicos do arduino funcionam basicamente como um voltímetro, medindo a diferença de potencial entre o que entra, e o GND, certo? Se não houvesse a resistência, essa diferença seria sempre a de 5V (neste caso), dado que estamos a medir o circuito todo.
Outra pergunta, então qual a diferença entre uma pull-up e uma pull-down? xD

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino+fan
« Responder #9 em: 05 de Agosto de 2010, 13:29 »
Mas os pull-ups estão ligados é ao sinal de rotação que vem da ventoinha e esse sinal é para ligar a uma das linhas de interrupção e o pull-up está lá para não se gerarem interrupções devido ao ruido gerado pelo motor da ventoinha, não estou a perceber para que usas o adc para isso.
Avr fanboy

Offline Cynary

  • Mini Robot
  • *
  • Mensagens: 182
Re: Arduino+fan
« Responder #10 em: 05 de Agosto de 2010, 15:52 »
Mas os pull-ups estão ligados é ao sinal de rotação que vem da ventoinha e esse sinal é para ligar a uma das linhas de interrupção e o pull-up está lá para não se gerarem interrupções devido ao ruido gerado pelo motor da ventoinha, não estou a perceber para que usas o adc para isso.

Pois, eu fiz isso xD
Falei no analógico, pois pensei que também se aplica da mesma forma :P
Então o pull-up serve para evitar o ruído também ...
Novamente, pergunto, qual a diferença entre o pull-up e o pull-down?

Obrigado pela paciência.

Offline AcidDagger

  • Mini Robot
  • *
  • Mensagens: 364
  • Make Bits, Making robotics in Portugal
    • Make Bits
Re: Arduino+fan
« Responder #11 em: 05 de Agosto de 2010, 18:07 »
uma fan é um motor dc, nao convem usar diodos de protecção?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino+fan
« Responder #12 em: 05 de Agosto de 2010, 19:40 »
Pull up é ligar com uma resistencia aos 5v, e pull down é ligar com uma resistencia á massa, depende do circuito em questão e como funciona para determinar se se usar pull up ou pull down.
Uma ventoinha usa um motor brushless com alguma electrónica de controlo e tem 2 ou 3 ou 4 fases, não é realmente um motor dc.
Avr fanboy