Arduino + Tacômetro

Eu experimentaria o circuito que o Hugo meteu aqui.

Acho muito estranho essa ligação directa com os 5V de alimentação da PIC a um dispositivo alimentado a 12V... no entanto, os 12V podem ser apenas por facilidade (as baterias dos carros são de 12V) e para fornecer potência para mexer o ponteiro (que não será por aí fora...).

Se funcionou assim, eu diria que funciona com o Arduino...

Experimenta algo assim para o código:

void setup() {

pinMode(PINO_SAIDA, OUTPUT);
digitalWrite(PINO_SAIDA, LOW);
}

unsigned int freq = 1; 
unsigned int counts = 0;

void loop() {

digitalWrite(PINO_SAIDA, HIGH);
delay(freq);
digitalWrite(PINO_SAIDA, LOW);
delay(freq); 

if (++ counts >= 65000) {
    i++; 
    counts = 0; 
    }
}

Isto vai criar uma onda com uma frequência variável e dará para teres uma ideia das frequências a que o velocímetro responde.
A variável counts está lá para te dar algum tempo entre cada frequência... se bem que talvez seja necessário aumentar isso para ver o que se está a passar.

Tens um osciloscópio aí à beira?

O tacômetro só liga ao Arduino através do fio de 'pulse', independentemente de estar ligado aos 12V acho que não interfere com o Arduino, pois deve ser a mesma coisa do que com o PIC.
Vou testar ligá-lo com o fio verde num pino do Arduino e usar o código referido (que agradeço desde já) para gerar a onda com frequência, penso que quanto mais impulsos forem enviados mais a agulha sobe, se calhar meto um potenciometro para ver o valor máximo ou assim.

osciloscópio não tenho não..

Obrigado!

if (++ counts >= 65000) {
    i++; 
    counts = 0; 
    }

Podes explicar melhor o que este if pretende fazer nao estou a entende-lo no que pode afectar a onda final :fearful:
a var i nao foi declarada por isso deve dar erro na compilaçao, mas supondo que a avaliaçao do if ocorre passados 65000 ciclos incrementada por ++ counts o que irá executar??

almamater:
O tacômetro só liga ao Arduino através do fio de 'pulse', independentemente de estar ligado aos 12V acho que não interfere com o Arduino, pois deve ser a mesma coisa do que com o PIC.
Vou testar ligá-lo com o fio verde num pino do Arduino e usar o código referido (que agradeço desde já) para gerar a onda com frequência, penso que quanto mais impulsos forem enviados mais a agulha sobe, se calhar meto um potenciometro para ver o valor máximo ou assim.

O GND tem de ligar a algum lado para dar uma referência ao pulse, não?

HugoPT:

if (++ counts >= 65000) {

i++;
    counts = 0;
    }



Podes explicar melhor o que este if pretende fazer nao estou a entende-lo no que pode afectar a onda final :fearful:
a var i nao foi declarada por isso deve dar erro na compilaçao, mas supondo que a avaliaçao do if ocorre passados 65000 ciclos incrementada por ++ counts o que irá executar??

O i é para substituir por freq. LOL

Basicamente esse pedaço de código serve garantir que a mesma onda corre durante 65000 vezes, depois incrementa freq, a frequência da onda diminui e volta a correr 65000 vezes até incrementar de novo. Isto dará para ter uma ideia da frequência de pulsos que o velocimetro usa.

Se não houvesse esse pedaço de código e apenas incrementasse a variável freq, cada frequência só era visível por um ciclo... isso ia ser um pouco difícil de visualizar, acho. LOL

agora sim faz sentido a tua explicaçao. :grin:

bubulindo:
O GND tem de ligar a algum lado para dar uma referência ao pulse, não?

Ah sim.. tenho que ligar o Grnd do Arduino ao Grnd da fonte do Tacômetro..

Já agora, só por curiosidade, porque é que vais ligar isso a um Arduino e não a um sensor de rotações?

É para fazer uma brincadeira? :slight_smile:

sim é para brincadeira :slight_smile:

Inicialmente foi para mostrar a utilização do CPU e seria para implementar numa caixa de PC (gosto de modding) mas de facto nunca o usei e lembrei-me ontem de o tirar da caixa e como agora tenho o Arduino pensei em usá-lo mas sem nenhum projecto para já em mente :slight_smile:

O efeito deve ser interessante.Ja agora como estas a pensar ler a utilizaçao do CPU e depois envia-la atraves do arduino?

Bem, se utilizar o circuito que já tenho com PIC já consigo usar a aplicação que falei acima, o autor da mesma já me enviou por mail :slight_smile: assim como o código fonte e o hex.

No caso de utilizar o Arduino poderia usar o VB ou adaptar o código já feito para o PIC.. mas para já quero apenas testar o funcionamento dele enviando uns impulsos a ver se funciona desta forma :slight_smile:

Coloca entao o codigo fonte do autor para ver como ele faz mexer o Tacometro.

Está em anexo um .rar com os 3 ficheiros (Source, binaries e o firmware para o PIC).

Tachometer.rar (219 KB)

Infelismente do que vi dentro do rar nao tem da o codigo fonte do PIC apenas o HEX ja gerado e o projecto da aplicaçao do autor, por isso o misterio permanece :~

Já estive a testar.. com o código referido não consigo grande coisa, a agulha inicialmente ficava sempre nas 7 (x1000) RPM, depois resolvi adicionar um debug e meti Serial.Begin(9600); no setup do código e a agulha passou para os 3 (x1000) RPM.. alterando o número no ciclo (de 65000 para outro qualquer) não influência, pelo menos com os valores que meti (10000, 40000,110000, etc..).

Encontrei no entanto um tópico a falar também disto, o user utilizou este código:

void setup()  { 
pinMode(9, OUTPUT);
} 

void loop()  { 
    tone(9, 33.3333333333333);
    delay(2500);
    tone(9, 66.66666666666667);
    delay(2500);
    tone(9, 100);
    delay(2500);
    tone(9, 133.3333333333333);
    delay(2500);
    tone(9, 166.6666666666667);
    delay(2500);
    tone(9, 200);
    delay(2500);
    tone(9, 233.3333333333333);
    delay(2500);
    tone(9, 266.6666666666667);
    delay(2500);
    noTone(9);
    delay(2500);
}

e por acaso funciona +/-, fazendo o cálculo referido nesse tópico: "Use the calculations he provided, or to put is another way, frequency = RPM * cylinders/120." a agulha mantêm-se fiel até às 6 mil RPM depois é que começa a ficar mais atrás do objectivo.. não testei ajustar os valores das frequências mas se calhar é a solução.

Vídeo:

Não funciona porque a frequência é muito baixa. Ao meteres o Serial.print a frequência ainda baixou mais.
Mas pelo menos já estás no caminho correcto.

Existe uma maneira de alterar a frequência de saída do PWM (lembrei-me agora) que é usando o registo OCRx como topo da contagem. Depois com ajustes nos prescalers dá para fazer uma gama relativamente alta de frequências.

Tenta ver os modos dos timers se quiseres aprofundar isto, ou então usa o tone que deve fazer a mesma coisa.

Boa noite, pessoal
sou novo aqui no fórum...
queria saber se tem como fazer um tacometro pelo arduino...
é que tenho um projeto de montar um toca-discos.. e queria usar o Arduino para controlar a velocidade (por hora).
dei uma busca, e achei só esse link: http://labdegaragem.com/profiles/blogs/projeto-tac-metro-com-arduino
esse sistema, mediria com precisão, a velocidade? E ele teria algum problema em "trocas constantes" de velocidade (de 32RPMs para 75RPMs)?
existe outros projetos alternativos que funcionariam melhor?

vlw!!!

jardim, bem-vindo ao fórum.

Aqui não se paga para criar tópicos e como tal acho que será melhor criares um tópico com as dúvidas que tens para que toda a gente responda dentro do mesmo contexto a colocares dúvidas em threads de outras pessoas ou não necessariamente no mesmo contexto.
Abre um novo tópico e a gente responde.

oh..
desculpa!
nos fóruns que eu participei, eramos obrigados a usar um tópico, no minimo parecido, senão, trancavam o mesmo... (1 deles até tinha sentido fazer isso)
bem, sem mais delongas, já irei fazer o tópico
vlw!

Não é preciso desculpar... o motivo pelo qual disse isto é que assim a informacão fica organizada. Se encontrares a resposta no fórum, usa essa informacão, se não encontrares abre um novo tópico para discutir. Senão torna-se difícil discutir dois problemas que podem parecer similares, mas não o serem.