TIMER PROGRAMÁVEL – COM PIC 16F628A E DISPLAYS DE 7 SEGUIMENTOS (REF189)  

  RSS

0

Boa tarde Cláudio,

Você pode nos explicar como funciona a ‘rotina de acúmulo de erros’ baseada no algorítimo ‘Bresenham‘, utilizada nesse timer?

Ela melhora a precisão da contagem de tempo? Somente se aplica quando se usa cristal externo? O método só funciona com o Timer 0?

Montei o projeto, mas, notei que ocorrem alguns atrasos na temporização.

Não tenho conseguido uma boa precisão com o PIC 16F628A, seja utilizando o oscilador interno ou um cristal externo. Os atrasos chegam a 3 segundos em 1 hora de funcionamento.

 
0

Olá Nelson

A rotina de acumulo de erro visa eliminar pequenas diferenças de tempo que podem ocorrer entre as  chamadas de interrupção. Isto tem a ver com a natureza de funcionamento interno do pic.
A rotina usa um acumulador que consiga comportar o valor da frequência usada. Basicamente somamos o tempo de  duração do intervalo da interrupção. Se a soma alcançar o valor da frequência do Xtal, então alcançou um segundo e subtraimos o valor da frequência deste registrador. O que sobra nele é um valor pequeno referente ao erro acumulado gerado pelas chamadas da interrupção. Se pudéssemos colocar isto em um gráfico veríamos algo mais ou menos assim:

1ºsegundo=0,99
2ºsegundo=1,01
3ºsegundo= 0,99
4ºsegundo= 1,01
......

Apesar dos segundos não serem exatos, a somatória será sempre exata, pois o valor menor de um é compensado pelo seguinte, um pouco maior.
Este método melhora a precisão, pode ser usado qualquer timer interno do PIC e obrigatoriamente tem de usar um cristal externo de excelente precisão.

Você não está conseguindo precisão porque o seu cristal deve ser de uma qualidade inferior. Use cristal que tenha inscrito nele todos os números. Por exemplo:
cristal escrito 4,000MHZ e outro 4,000000 Mhz. O segundo tem melhor precisão. Os cristais tem tolerância na precisão:
Vão desde 0,05 ppm (parte por milhão) até os mais comuns de 500ppm.
A precisão do cristal é imprescindível na precisão do relógio que deseja construir.
Outro fator a levar em conta é tolerância do cristal em relação ao que está marcado na embalagem: Pode ser de 5 ppm, 7,5ppm, 10ppm, até 400ppm.
A temperatura ambiente também altera o funcionamento.
O melhor é usar o TCXO, um integrado que gera a frequência com estabilidade térmica e alta precisão, com um tamanho bem reduzido.

Esta é a forma de obter excelente precisão no relógio.

Outro método é usar um cristal normal. Após montar todo o relógio e faze-lo funcionar ele deverá ser "calibrado". O princípio é o seguinte:
Funcione o relógio por um período de tempo grande como por exemplo, um mês. Anote o quanto ele adiantou ou atrasou. Determine o erro obtido em cada minuto. Na rotina do programa do PIC, deverá ser acrescentado um fator de correção que deverá ser somado ou subtraido, dependendo se atrasa ou adianta, do contador de erro, a cada minuto.
Este processo de calibração tem que ser repetido várias vezes, até obter uma boa precisão (1 minuto a cada mês pelo menos).
Note que é um método que exige paciência e é usado para um único cristal. Se trocar o cristal irá alterar todo o ajuste.

Espero que tenha sido de ajuda.

 
Share: