Ir ao conteúdo
  • Cadastre-se

dúvida: funcao p/ frequência


stephanokoppe

Posts recomendados

olá pessoal do Clube do Hardware !

como todo louco, resolvi arranjar uma sarna pra me coçar. aliando meus conhecimentos em mecanica/informatica/eletronica/programacao de microcontroladores, resolvi desenvolver alguma coisa pra exercitar o tico e o teco :D

tenho um VW Santana equipado com Sensor VSS (sensor de velocidade), q é acoplado no cabo q sai da caixa de cambio. para melhor entendimento de quem estiver lendo este topico, este sensor tem a finalidade de criar uma frequencia q é diretamente proporcional a velocidade do carro, para que a central eletrônica possa determinar diversas estratégias de injeção/ignicao, como cut-off, dash-pot, etc.

este sinal, q varia de 0-12V, geralmente fica no range de 0-500Hz, n passando disso. claro q existem varios tipos de VSS, mas posso com exatidao afirmar para vocês que o que equipa o Santana tem a proporcao de :

- 14Hz p/ 10Km/h (ou 1,4Hz a cada 1Km/h)

como podem ver, n é nenhuma frequencia absurda. barbada de trabalhar, ainda mais q é 12V DC

bem, eu desenvolvi com um PIC+LCD um velocímetro digital baseado nessa frequencia do VSS. só q, com o meu conhecimento restrito em programacao (nca mais mexi com isso, desde q me voltei a mecanica), consegui somente criar uma funcao q funciona basicamente assim:

- determina uma variavel x

- no tempo em o sinal VSS está em 1, incrementa x++

- quando o sinal for a 0, para de incrementar x e retorna esse valor a funcao

essa ideia veio do nada, foi a maneira mais *******, porém logica, q o desamparado aqui achou para fazer funcionar o velocimetro ;P

outra coisa é que eu teria q fazer uma relação inversamente proporcional, para que eu conseguisse ter uma segunda variável y compativel e proporcional a velocidade do carro, já que:

- quanto maior o tamanho da variavel x, menor a frequencia :D

funcionar? pfffff, claro q nao funcionou de prima. cheguei a conclusao q, em baixas velocidades (leia-se frequencia), o programa resetava. imaginei q a variável x estava estourando. setei ela como int32. melhorou um pouco, mas n era ideal. por ultimo, penei mas determinei um delay que eu conseguia obter uma leitura precisa, já convertida em caracteres para o LCD, da velocidade em relação ao ponteiro. só que, em alta velocidade, pro LCD n existe destinção entre 90 e 110, por ex. acredito q seja por causa deste mesmo delay, porque sem ele, em alta frequencia ele consegue destinguir perfeitamente. só nao consegue funcionar em baixa velocidade :D

- x -

finalmente, la duvida!

gostaria de saber se existe alguma funcao pré-determinada em C (ou assembly) q conseguisse retornar em uma variavel um valor correspondente e proporcional a frequencia obtida numa porta do PIC.

ex: estou com 10Hz em um momento na portb B3. chamo a funcao e obtenho x=10. daih, a frequencia muda pra 50Hz. chamo again a funcao e obtenho x=50, por exemplo

se eu conseguir isso, vou conseguir total precisão no LCD para com o velocimetro, tanto em baixa como em alta velocidade, e um sorriso brotará no meu rosto :D

espero q vocês possam me ajudar com dicas, ou seja com o q for

obrigado desde então!

Link para o comentário
Compartilhar em outros sites

Salve, stephanokoppe.

Bem-vindo.

Primeiro de tudo, é o condicionamento do sinal. Pega essa frequência de 12V, injeta num acoplador ótico com 5V na saída. Do acoplador, injeta o sinal em um driver schmitt trigger. Filtra o bichinho, e pronto! Tens aí um sinal condicionado em onda quadrada com intensidade de 5V. Programa um timer do PIC como contador de eventos externos (vou chamar de TIMER0). Programa outro timer pra te dar a base de tempo - 1ms, 10ms, 100ms, 1 segundo, depende da resolução que você precisa (vou chamar de TIMER1).

No início do programa, zere o TIMER0 e dispare o TIMER1. Programe o TIMER1 pra gerar interrupção. A cada interrupção de TIMER1, capture o valor de TIMER0, e zere TIMER0 pra começar a contar de novo. Pronto!

você capturou um dado que corresponde a frequência de entrada injetada no MCU.

A partir desse dado, dê seus "pulos", eheheheheeh

[]'s

Link para o comentário
Compartilhar em outros sites

dae Maurício2006, beleza?

antes de mais nada, brigadao pela paciencia e pela resposta, mas ...

... tenho umas duvidas, corrija-me se eu estou viajando :P

"Primeiro de tudo, é o condicionamento do sinal. Pega essa frequência de 12V, injeta num acoplador ótico com 5V na saída. Do acoplador, injeta o sinal em um driver schmitt trigger. Filtra o bichinho, e pronto! Tens aí um sinal condicionado em onda quadrada com intensidade de 5V"

eu tava usando o sinal cru mesmo, 12-0-12-0. é efeito hall, o pic pelo menos nao reclamou de estar levando 12V numa das pernas dele (até porque foi aquela coisa "será q dah?" neim tinha checado - e ainda continuo desconhecendo o Vmax de uma porta do PIC). então... eu preciso mesmo deixar essa onda quadrada de 12V-0V filtrada e bonitinha em 5V-0V?

"acoplador ótico com 5V na saída. Do acoplador, injeta o sinal em um driver schmitt trigger"

n seria mais fácil fazer isso com transistores? até porque n te esquece q num carro eu tenho muita interferencia vindo dos cabos de vela. qualquer coisa q precise de muita precisao é brabo de fazer. e lembro das epocas de senai dos acopladores oticos ... pelo menos nos q eu trabalhava era um pé no saudoso saco :D

"No início do programa, zere o TIMER0 e dispare o TIMER1. Programe o TIMER1 pra gerar interrupção. A cada interrupção de TIMER1, capture o valor de TIMER0, e zere TIMER0 pra começar a contar de novo. Pronto!"

xo v se eu entendi: timer0 seria a minha variavel no caso. proporcional a frequencia e tudo mais. timer1 seria o contador q forcaria timer0 (zerado primeiramente) a ter um valor de acordo com a frequencia que a perna do pic tá lendo? e, escrevendo aqui, n faco ideia de como se emprega no programa esses timers, estou tentando entender a logica. depois o F1 e/ou examples possam me ajudar!

de novo, valeu pela ajuda!

Link para o comentário
Compartilhar em outros sites

Salve, stephanokoppe.

PIC não é minha praia, portanto, só posso dar palpites, eheheheheh

eu tava usando o sinal cru mesmo, 12-0-12-0. é efeito hall, o pic pelo menos nao reclamou de estar levando 12V numa das pernas dele (até porque foi aquela coisa "será q dah?" neim tinha checado - e ainda continuo desconhecendo o Vmax de uma porta do PIC). então... eu preciso mesmo deixar essa onda quadrada de 12V-0V filtrada e bonitinha em 5V-0V?

Que eu saiba, os PICs trabalham somente com 5V (a não ser as versões de 3V3, lógico). Se você injetou 12, acho que esse daí já foi....

Carros são ambientes altamente ruidosos. Portanto, condicionar e deixar sua onda a mais perfeita possível, é condição inicial!

n seria mais fácil fazer isso com transistores? até porque n te esquece q num carro eu tenho muita interferencia vindo dos cabos de vela. qualquer coisa q precise de muita precisao é brabo de fazer. e lembro das epocas de senai dos acopladores oticos ... pelo menos nos q eu trabalhava era um pé no saudoso saco :D

Sim. você pode fazer com transistores. Só que esse arranjo vai tomar mais espaço do que usar um 74HC14, p. ex.

xo v se eu entendi: timer0 seria a minha variavel no caso. proporcional a frequencia e tudo mais. timer1 seria o contador q forcaria timer0 (zerado primeiramente) a ter um valor de acordo com a frequencia que a perna do pic tá lendo? e, escrevendo aqui, n faco ideia de como se emprega no programa esses timers, estou tentando entender a logica. depois o F1 e/ou examples possam me ajudar!

Não posso te ajudar muito, porque, como eu disse, eu não conheço os PICs. Só falei isso baseado na minha experiência com os 8051 e AVRs.

Nessas máquinas, você encontra 2, 3, ou mais timers de 8/16 bits, e configura os mesmos pra sua necessidade. Os temporizadores estão diretamente relacionados com o ciclo de clock da máquina. P. ex: no caso dos AVRs, com ciclo de clock de 1uS, você pode contar frequências de até 1Mhz, através da configuração adequada desses timers.

No caso dos PICs, seria melhor você colocar sua dúvida no fórum de eletrônica. O pessoal de lá programa PICs e pode ajudá-lo melhor.

Boa sorte.

[]'s

Link para o comentário
Compartilhar em outros sites

"Que eu saiba, os PICs trabalham somente com 5V (a não ser as versões de 3V3, lógico). Se você injetou 12, acho que esse daí já foi...."

n foi, estou olhando pra ele nesse exato momento :D

ele pode n gostar ihaeihaeiheaihea

"74HC14"

isso seria os acopladores oticos? posso tentar eles pra ver se fica joia

e sobre os 8051, interessante... pode funcionar mesmo :D

obrigado dnvo cara!

Link para o comentário
Compartilhar em outros sites

Salve, stephanokoppe.

74HC14

isso seria os acopladores oticos? posso tentar eles pra ver se fica joia

Esses são os schmitt-triggers. Acoplador ótico, você pode usar os 4N33, 35, os PC817, e tb os da série TIL. Tem vários outros modelos. Tem que saber qual deles você vai usar.

[]'s

Link para o comentário
Compartilhar em outros sites

pic 17F877-A

Desculpe a demora para responder, é que participo apenas do fórum de eletrônica e tinha me esquecido deste tópico aqui.

Certifique-se do modelo.

Seria o 16F877A?

Ele tem dois módulos CCP.

Estude sobre o funcionamento do modo Capture.

É ideal para a sua aplicação.

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

eu tambem estou tentando fazer um velocimetro para meu carro velho, mas estou esbarrando nas contas, pois vou usar leds. o primeiro pra 5 km por hora, o segundo led para 10 km por h e etc, até 220 km/h. como estou tentando em assembly não estou conseguindo fazer com que, por exemplo, se estiver em 3 km/h mostrar 0 km/h, ou seja nenhum led acesso e acender o led de 5 km/h quando a velocidade estiver entre 5km/h e 10 km/h. então pensei no seguinte: coloco um valor de 220 em uma variavel e vou decrementando de 5 em 5 este valor. a cada passagem de um certo tempo subtrai 5 do valor. e vai continuar subtraindo até o sensor da roda ativar uma interrupção. só não consegui calcular ainda os tempos.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!