Venho perguntar se alguem sabe como ligar e enviar sinais de um Arduino para um tacômetro:
Em tempos fiz um circuito com um PIC18F2550 e funciona bem. Ele apenas tem estes fios:
Vermelho: Para ligar aos 12v (+)
Preto: Para ligar ao Ground (-)
Verde: Para receber o sinal do circuito/aplicação/arduino
Branco: Para ligar aos 12v (associado a um Led extra de 'shift indicator')
A minha questão é apenas saber se podemos ligar o fio verde directamente num pino do arduino e que tipo de sinais podemos enviar.. PWM?
O PIC que falas é semelhante a um arduino... que componentes meteste nesse circuito?
12V queima ambos os chips (AVR e PIC).
O programa que usaste no PIC também serve (conceptualmente) no Arduino. É só adaptar as funções... até deve ser mais simples no Arduino.
Duvido que funcione com PWM... pelo que li, esses dispositivos têm ligado a eles um sensor de rotações do eixo e isso é um sinal modulado em frequência e não em duty cycle como o PWM.
Tens o esquema do circuito que montaste com a PIC?
O problema é que agora não tenho a aplicação nem o ficheiro Hex, porque o site de onde os tirei está indisponível (já mandei um mail ao autor para ver se me envia mas não sei se responde).
Lembrei-me por isso se utilizar um arduino que penso que seja mais fácil, o tacômetro funciona com 12V, por isso tem mesmo de ser ligado aos 12V. O fio verde é apenas para receber uns impulsos mas nessa parte é que tenho as minhas dúvidas..
Em tempos fiz um circuito com um PIC18F2550 e funciona bem
Venho perguntar se alguem sabe como ligar e enviar sinais de um Arduino para um tacômetro:
Em que ficamos, apenas soldaste as coisas na placa com o PIC ja programado ou tu é que escreveste o codigo?
Se tiveres o codigo podes adapta-lo como o Bubulindo sugere para o arduino.
Se nao tens o codigo fonte entao tens de tentar "escutar" o passa nesse fio de sinal, se é PWM, frequencia, nivel de sinal ...
Um osciloscopio pode te dar essa resposta se nao tiveres a documentaçao tecnica dele.
Numa breve busca parece que um tacometro analogico conta os impulsos nesse cabo verde.
Aqui esta um esquema usando o famoso 555 em que na entrada de trigger o fio verde é ligado para assim contar as rotaçoes.
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...
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.
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.
Podes explicar melhor o que este if pretende fazer nao estou a entende-lo no que pode afectar a onda final
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
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
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 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
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:
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.