Medir frequência com contador.

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

Medir frequência com contador.

Mensagempor brasilma » 21 Set 2015 09:09

Olá Colegas,

Será que alguém já implementou um algoritmo de medição de frequência utilizando um contador (no meu caso externo)?

Estou desenvolvendo um sistema que poderá ler frequências de até uns 200 KHz e para conseguir realizar a leitura dentro da minha rotina de interrupção (que roda a 1.6 KHz) acrescentei um contador externo. Clareando: a frequência entra no contador e a cada 1/1.6 KHz eu leio e zero - isto está ok.

Para ler frequências mais baixas eu uso um divisor na rotina que lê a frequência. Clareando: para ler a frequência de 1 KHz de referência do osciloscópio, eu inseri uma divisão de 100x (lia com uma frequência de 16x) e mostra exatamente 62 (1000 / 16 = 62).

Minha dúvida é como seria o algoritmo para este fator de divisão automático, ou seja, como fazer para automáticamente quando a frequência for baixa ele aumentá-lo e alta abaixá-lo???
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Medir frequência com contador.

Mensagempor andre_luis » 21 Set 2015 09:18

Baseado no que vejo nos multimetros, parece que fazem uma mera varredura, escala por escala. Se fosse voce partiria primeiro para as mais altas, depois descando conforme ficasse muito abaixo do fundo de escala.

A propósito, precisa ser contador externo mesmo ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Medir frequência com contador.

Mensagempor brasilma » 21 Set 2015 10:11

Olá André, no momento eu "acho" que sim, o sistema possui duas rotinas de interrupção rodando (uma que gerencia I/O e outra da serial) e nesta situação não sei como fazer assim com um contador interno.

Por esta razão pensei no contador externo e ler com a interrupção de I/O.

Eu pensei em utilizar o pino 2^7 (mais significativo) apenas como estouro (e o s demais como dado) para determinar a mudança de faixa, mas algumas vezes a contagem pode passar por ele direto...
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Medir frequência com contador.

Mensagempor andre_luis » 21 Set 2015 11:03

Como voce mencionou que há somente 1 vetor de interrupção, ainda assim acho que tem como contornar tranquilamente, usando função de Contador externo do Timer. Essa recepção pela Serial vai ser muito frequente ? Se for o caso, no pior dos cenários, pode implementar uma rotina de média-móvel, eliminando as amostras que ocorrerm durante a recepção serial...só pra garantir.

A propósito, tem de ser muito preciso a contagem ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Medir frequência com contador.

Mensagempor brasilma » 21 Set 2015 11:47

Este é o problema André: tem!

Fiz algumas simulações no excel de como ficariam os erros com vários fatores de divisão diferente (obviamente os menores erros são obtidos com multiplos da frequência de interrupção).

Quatro faixas seriam suficientes para cobrir de 1Hz até os 200 KHz, porem os erros estão altos.

Com isso percebo que a melhor ideia é acrescentar mais um CI ao contador externo e ler o valor integral...
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Medir frequência com contador.

Mensagempor Red Neck Guy » 21 Set 2015 11:58

Quantos bits?
Se for 8, 12, 16 pq não usar um CPLD?
Aí você cria um lath com a contagem e "copia" ele assincronamente.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Medir frequência com contador.

Mensagempor andre_luis » 21 Set 2015 12:24

Sei que é uma sacanagem quando estamos no meio do projeto e alguém diz, muda pra isso ou aquilo :lol:,mas vamos lá....

Partindo de uma ideia parecida com a sua, já usei um Timer de 24 bits que pôde ser implementado tranquilamente num PSoC. Nesse caso, mesmo para uma contagem de 200KHz, bastaria ler o conteúdo do contador a cada 1s, sem risco de perda de informação. Acredito que a unica coisa externa nessa abordagem aí fosse um cristal de 32,768KHz.

Uma outra possibilidade que voce pode tentar avaliar para não ter de usar um CI externo, seria encadear a saída de um Timer na entrada de outro ( ambos internos ), mas provavelmente seu programa já deva estar usando algum. O ideal seria que o principal fosse feito num Timer de 16 bits e o segundo timer ajustado conforme o range.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Medir frequência com contador.

Mensagempor brasilma » 21 Set 2015 15:19

Boa Tarde Aquino / André,

Para os 200 KHz precisariam ser uns 18 bits, mas no momento estou aceitando 16.

Não posso usar nenhum timer do sistema, e para ter a precisão de contagem unitária, preciso contar todos os ciclos.

Vou fazer o encadeamento de mais um timer de 8 bits (externo) e copiar assincronamente como o Aquino sugeriu.

É a melhor solução para o momento.

Obrigado!!!
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Medir frequência com contador.

Mensagempor Red Neck Guy » 21 Set 2015 16:49

Dá um emaranhado de ligação, mas já vi uma placa que utilizava dois 74HC393 em série, depois as saídas eram ligadas em latchs 74HC574.
Então, os valores da contagem eram lidos assincronamente no loop do programa.
O Clock para os latchs não lembro de onde vinha não...
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Medir frequência com contador.

Mensagempor KrafT » 21 Set 2015 20:44

Uma vez fui fazer uma bagaça dessas com contadores assíncronos... Perdi um bom tempo para descobrir que o jitter causado pela cascata de flip-flops era que inviabilizava meu circuito...
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: Medir frequência com contador.

Mensagempor Red Neck Guy » 21 Set 2015 21:02

Mas essa placa que falei é de um treco homologado no INMETRO, era de um contador para o tensão-frequência de uma balança lá de 1998.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Medir frequência com contador.

Mensagempor KrafT » 21 Set 2015 21:16

Aquino escreveu:Mas essa placa que falei é de um treco homologado no INMETRO, era de um contador para o tensão-frequência de uma balança lá de 1998.


Não duvido, Aquino. Como o CD4060 que utilizei tinha um atraso razoável na saída Q14 em relação ao Q4, isso me causava problemas. Mas isso faz tanto tempo que não lembro dos detalhes, o que torna meu comentário inútil. Sorte que aqui não tem "Dislike" ou "Downvote".
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: Medir frequência com contador.

Mensagempor andre_luis » 22 Set 2015 08:37

Vou na mesma linha que o KrafT, os contadores assincronos são propensos a induzir a falsas contagens devido aos estados intermediários, sobretudo nesse caso aí onde serão usados N flip-flops ( sendo N >10 ), mas de qualquer modo via algoritmo é possivel detectar "pontos-fora-da-curva" de uma média-móvel e contabilizar apenas aqueles que parecerem corretos.

Coincidentemente, fiz uma simulação comparando os dois tipos aqui: Performance de contador Sincrono x Assincrono
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Medir frequência com contador.

Mensagempor brasilma » 22 Set 2015 10:48

O meu sistema usa o '393 como contador e o '245 como porta de entrada, funciona muito bem, ontem comecei a montar outro conjunto de '393 e '245 para colocar em cascata.

O interessante desta solução é que não utiliza nenhum recurso do micro.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: Medir frequência com contador.

Mensagempor ze » 22 Set 2015 11:32

O que vc vai ler a seguir é tão tão óbvio que se eu fosse uma pessoa normal acho que teria vergonha de escrever...
Aproveitado sua interrupt 1.6Khz, sinal num contador 16bits, captura o valor da contagem a cada segundo
algo como isso dentro da isr
Código: Selecionar todos
if (contador1600++>1599) {contador1600=0;freq=TIMER16bits;TIMER16bits=0;}

Usa pouco recurso de sw , zero de hw, e não deve gastar muito tempo prum mc rodando a algumas dezenas de MHz
Mas algo me diz que já pensou nisso, está fazendo em asm, quer precisão extrema ou etc
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Próximo

Voltar para Assuntos Gerais

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x