Eng David M Risnik                                                                               E-mail: dmrsp@terra.com.br  

 

CANTINHO DO HOBYSTA

PROJETO N.1

  GERADOR BASE DE TEMPO 

ESTABILIDADE + PRECISÃO = CONFIABILIDADE

Muitas vezes necessitamos de BASES DE TEMPO confiaveis , seja para AFERIR equipamentos como por exemplo osciloscopio (especialmente os com mais de 10 anos de uso ...) , seja para executar determinadas tarefas que exijam esta precisão . Dentre os efeitos que mais prejudicam estes requisitos , sem sombra de duvida estão a TEMPERATURA e a UMIDADE . De forma geral qualquer componente eletronico quando submetido aos efeitos da TEMPERATURA e/ou UMIDADE , tende a ter suas caracteristicas principais DESVIADAS do valor nominal . Somente para citar os principais :  CAPACITOR , INDUTOR e  SEMICONDUTOR  .

TEMPERATURA - O VILÃO DOS OSCILADORES

Um oscilador convencional , utiliza normalmente componentes reativos para definir a BASE DE TEMPO das oscilações . Assim , o capacitor + resistor , ou capacitor + indutor constituem este circuito de sintonia . O efeito da TEMPERATURA , dependendo da configuração do circuito pode ocasionar verdadeiras CATASTROFES , alterando de forma brutal as caracteristicas principais para o qual o circuito foi desenvolvido  . 

OSCILADOR A CRISTAL 

Para encarar estes vilões (temperatura x umidade) é bastante comum o emprego dos CRISTAIS na construção de osciladores confiáveis . Um cristal é constituido por uma estrutura (cristalina) que "ressona" em uma determinada frequencia (muito precisa e estavel) em função principalmente das suas dimensões mecanicas. Existe duas opções na utilização do cristal como oscilador : a) para cada frequencia que desejarmos produzir , utilizaremos um cristal , ou b) a partir de um UNICO cristal , iremos gerar outras frequencias , valendo-nos dos DIVISORES DE FREQUENCIA .Quando for interessante dispor de varias frequencias , obviamente que a segunda opção é a melhor.

DIVISOR DE FREQUENCIA  

Os divisores de frequencia são circuitos LOGICOS que operam na base dos flip-flop (unidade logica divisora por 2) seja da familia TTL ou CMOS , existem circuitos integrados que realizam esta tarefa facilmente . Porém , hoje com a facilidade permitida pelos MICROCONTROLADORES , isto tornou-se mais simples ainda , e com uma vantagem: podemos ALTERAR o modulo de divisão com uma simples tecla . Vou dar um exemplo aqui bastante simples como isto pode ser feito utilizando um microcontrolador .

89C51SB um pratico divisor de frequencia  

A familia dos microcontroladores 8051 é bastante facil de se operar mesmo em linguagem assembler . A partir de um cristal de 12Mhz , apos uma divisão interna por 12 , temos internamente um ciclo de INSTRUÇÃO de UM MICRO SEGUNDO (numero redondo !)Todos os micros possuem a estrutura chamada TIMER , que permite definir um periodo EXATO . Neste exemplo eu não vou utilizar os TIMERS do 8051 , pois ... como pretendo gerar base de tempo (frequencias) próximas ao do CICLO DE INSTRUÇÃO ( 1useg) o proprio atraso gerado pela EXECUÇÃO DA INSTRUÇÃO (de 1 a 3 ciclos por instrução) pode causar ERRO no final do ciclo gerado . Iremos portando , GERAR tempos de retardo utilizando o delay (bem preciso) conhecido de cada instrução . Cada uma das instruções CONSOME de 1 a 3 ciclos de tempo . Como sabemos que um CICLO possue exatamente UM MICROSEGUNDO , torna-se simples determinar o periodo correto que desejamos gerar .

Definindo retardos precisos !

Como ja disse , pelo uso de INSTRUÇÕES com tempos definidos de retardo (a propria instrução CONSOME este tempo para ser executada na CPU) , eu posso GERAR um atraso muito bem definido , e se ao final do atraso promover uma MUDANÇA DE ESTADO em um pino de saida , terei ai gerado uma BASE DE TEMPO , precisa , estavel e confiavel inclusive para AFERIR outros equipamentos . Vou utilizar somente 3 instruções nesta tarefa , a seguir descritas juntamente com o tempo que CONSOMEM na execução:

  cpl = INVERTE o estado de um BIT (ex. um pino de saida) - consome 1 ciclo (1useg) 

nop = NO OPERATION - não realiza nada - consome 1 ciclo (1useg) 

jmp = desvia para um endereço - consome 2 ciclos (2 useg)

 

ROTINA ASSEMBLER PARA GERAR 10 useg  

Vou utilizar nesta rotina bem simplificada o conjunto de instruções apresentado acima , numa configuração tal que produza um CONSUMO de EXATOS 10useg , chaveando o pino 1 de saida - porta 1.0 ou P1.0 . 

                        ciclo:    cpl P1.0

                        nop 

                        nop

                        nop

                        nop 

                        nop 

                        nop 

                        nop 

                        jmp ciclo

 Vamos examinar passo a passo o que vai ocorrer quando esta rotina ser "rodada" no micro. A primeira linha (marcada pelo label ciclo:) executa uma INSTRUÇÃO cpl P1.0 , trocando o estado logico deste pino 1 , qual seja: se ele estiver em nivel alto (5V) vai a nivel baixo (0v) ou vice-versa. Esta instrução consome EXATOS 1 micro segundo . Na sequencia temos 7 vezes a execução das instruções NOP que nada produzem  , mas consomem EXATOS 7 X 1 micro segundos , somado ao 1 useg anterior ja totalizam 8 useg. A ultima instrução é um JUMP que produz um RETORNO ao "label" (identificador) ciclo , apontando exatamente para a primeira instrução desta rotina . Este jmp consome EXATOS 2  micro segundos  que somado aos 8 useg anteriores , totalizam os 10 useg , conforme havia proposto !!!

 Conclusão: a cada 10 useg o pino 1 mudara de estado logico , definindo um SEMI CICLO da frequencia de saida (onda quadrada) . O PERÍODO desta frequencia gerada sera composto por DOIS SEMI-CICLOS de 10 useg , totalizando 20 useg . A frequencia é calculada pelo INVERSO do periodo , então teremos no pino 1 , uma ONDA QUADRADA COM 50.000 hertz ou 50 Khz com EXCELENTE ESTABILIDADE E CONFIABILIDADE .

Utilizando esta técnica , outros períodos (retardos) poderão ser facilmente obtidos e assim "sintetizar" frequencias diferentes , garantindo EXTREMA PRECISÃO ! O esquema que apresento acima ilustra a utilização de um 89C51 operando com um cristal de 12 Mhz. Este micro da familia 8051 (mesma arquitetura) permite ser gravado e re-gravado por várias vezes (FLASH) , tornando um êconomico método de aprendizado . 

Observação: é necessario possuir o gravador de EEPROM

Para aqueles que se interessarem em aprender novas técnicas e dicas praticas em assembler na programação de micros da familia 8051 , este autor apresenta seu novo manual: 

DICAS PRÁTICAS EM ASSEMBLER - 8051

Vol. I

São Paulo-SP

This page hosted by Get your ownFree Home Page

retorno a pagina principal
 
Counter