Ir ao conteúdo
  • Cadastre-se

Ajuda com RPM para o PIC 16F877


absabs

Posts recomendados

Olá a todos!

Estou à um ano exato "futucando" um Pic 16F877 com o Mikro C PRO na modalidade "curioso" e simulando no Proteus. Sou eletricista e até consegui algum avanço manipulando as entradas e saídas utilizando o display LCD. Eu agradeceria muito se alguém pudesse me ajudar a ler o número de RPM na entrada do PIC. Será que alguém consegue me ajudar?

Link para o comentário
Compartilhar em outros sites

Amigo, primeiramente bem-vindo ao fórum.

Sugiro que dê uma lida em apostilas cujo tópico seja as interrupções de hardware do microcontrolador PIC. Se inglês não é o seu problema, é altamente recomendável a leitura do datasheet, pois esse é o seu mais completo guia.

Para se ler RPM, é necessário que haja interrupção externa em um dos pinos dedicados a isso no PIC. Uma interrupção de timer deve ocorrer a uma fração viável de minuto (segundo, milissegundos, etc) contando quantos pulsos externos foram dados nesse período. Por exemplo:

O timer definido com estouro a cada 500 milissegundos.

A cada estouro, é contabilizada 2 interrupções externas. Então, multiplica-se esse valor por 120, a fim de se obter a média de amostragem por minuto. No caso do exemplo, teríamos 240 RPM. Portanto, você conseguiria a cada 0,5 segundos obter uma nova amostragem de RPM. Caso ocorra muita oscilação, você pode utilizar média de amostragens, evitando assim a oscilação constante.

Espero ter ajudado. Desculpe-me pela falta de objetividade. Espero que tenha entendido a minha lógica um pouco bagunçada. :) Quaisquer dúvidas, não hesite em postá-las aqui.

Link para o comentário
Compartilhar em outros sites

seguinte:

medidores de RPM normalmente funcionam, do ponto de vista do software da seguinte maneira:

- habilitando uma entrada com um contador (/timer) do microcontrolador, ou seja à cada pulso na determinada entrada ele incrementa o contador por 1

- à cada exatos x segundos ou milisegundos vamos neste contador (/timer) e vemos qual o valor dele,

exemplo: o contador (/timer) me dá o valor de 126 à cada 100milisegundos então eu tive aprox. 1260 pulsos em 1 segundo ou 1260 * 60 RPM ....

simples não ?

Por aí você também percebe que se esperasse um pouco mais pra medir (maiores intervalos) sua precisão aumenta gradativamente.

O problema com este PIC que você quer usar é que ele só tem um timer (/ contador!) de 16bits e 2 timers de 8 bits, fazer algo simples/ bom precisaríamos de ao mesmo 2 timers de 16bits pra; por isto eu te sugeriria ir pra ir um PIC melhor ou mais atualizado pra não ter que ficar fazendo malabarismos de programas enquanto for iniciante. Sugestão: 18F4520

Mas se preferir faça assim:

1. use o Timer1 que é de 16 bits como contador de pulsos externos via RC0 (vide data sheet)

2. pegue o timer0 e acerte o timer 0 (talvez o tmr2 dê também) e acerte o preescaler e escolha o cristal de clock pra gerar uma interrupção à intervalos de tempo conhecidos e fáceis de fazer conta !!

3. Em cada interrupção leia o valor do timer1 (aí que terá a contagem de pulsos) em seguida zere ele pra contar novamente

qualquer dúvida posta aí

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...