Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Tecnologia industrial

Relógios em tempo real (RTCs) em temporizadores de microcontrolador

Este artigo é o terceiro de uma série sobre temporizadores de microcontrolador que descreve os RTCs dentro de um microcontrolador.


Este artigo é o terceiro de uma série sobre temporizadores de microcontroladores. O primeiro artigo descreve os principais recursos da maioria dos tipos de temporizadores e abrange os temporizadores periódicos, e o segundo abrange os temporizadores MCU de modulação por largura de pulso.

Relógios em tempo real (RTC) são cronômetros dedicados a manter uma base de tempo de um segundo. Além disso, um RTC é freqüentemente usado para controlar a hora do relógio e a data do calendário em software ou hardware. Muitos dos recursos de um RTC são muito especializados e necessários para a manutenção de alta precisão e operação muito confiável. Existem dispositivos RTC externos a um microcontrolador que fazem interface com um I 2 Barramento C ou SPI.

Este artigo descreve RTCs dentro de um microcontrolador.


Visão geral dos relógios em tempo real


A função básica do relógio em tempo real é produzir intervalos de um segundo e manter uma contagem contínua.

Você pode ver uma representação disso no diagrama abaixo.


Figura 1. Este diagrama de tempo descreve a função básica de um RTC



Também é mostrada uma função de programa, A, lendo um contador de segundos e agendando um evento, B, para ocorrer três segundos no futuro. Esta ação é chamada de alarme. Observe que o contador de segundos funciona continuamente e não para e nem inicia. Dois requisitos principais de um RTC são precisão e operação contínua.

O próximo diagrama mostra os recursos de hardware comuns de um RTC.



Figura 2. Recursos de hardware de relógio em tempo real



Um RTC geralmente tem seu próprio oscilador interno com um cristal externo e uma opção de usar uma referência de frequência externa. Todas as fontes de relógio funcionam a 32.768 Hz. Uma fonte de relógio externa permite o uso de um dispositivo muito preciso e estável, como um TCXO (oscilador de cristal com compensação de temperatura).

Uma fonte de relógio é selecionada com um multiplexador e entrada em um prescaler que divide o relógio por um fator de 32.768 (215) para produzir um relógio de um segundo.

Um RTC básico tem um contador de segundos que geralmente é de 32 bits ou mais. Alguns RTCs têm contadores especializados para controlar a hora do dia e a data do calendário.

Um RTC básico sem contadores de hora e data usa um software para essa finalidade. Uma opção comum é uma onda quadrada de 1 Hz de um pino de saída. Um RTC terá vários eventos possíveis para gerar uma interrupção do processador.

Um RTC geralmente tem um pino de alimentação dedicado para permitir a operação quando o resto do microcontrolador está desligado. Este pino de alimentação é normalmente conectado a uma bateria ou fonte de alimentação separada.


Compensação de frequência e precisão RTC


A precisão de um RTC depende da fonte de relógio de 32.768 Hz. Em um oscilador de cristal bem projetado, a principal fonte de erro é o cristal. Um TCXO externo pode ser usado para temporização altamente precisa, ou técnicas especiais de compensação de frequência são usadas com cristais mais baratos e o oscilador interno. Existem três fontes principais de erro em um cristal.

O gráfico abaixo mostra vários conceitos relacionados à precisão do RTC.



Figura 3. Gráfico que mostra a medição do erro usando a temperatura usada, cortesia da Texas Instruments



O traço azul escuro neste gráfico mostra uma tolerância inicial típica e a mudança com a temperatura. O traço rosa mostra apenas o erro de temperatura. A chave para compensar a temperatura é o fato de que o comportamento de um cristal é bem conhecido e previsto com uma equação quadrática. Se o erro inicial for medido após a fabricação da placa de circuito e a temperatura conhecida, é possível compensar as maiores fontes de erro.

A faixa amarela é um alvo razoável para precisão após uma compensação cuidadosa. Lembre-se de 1 ppm ao longo de um ano é cerca de 30 segundos. O envelhecimento do cristal é difícil de compensar. Felizmente, o envelhecimento geralmente é de apenas algumas ppm por ano.


Como alterar o tempo RTC


Aqui estão duas maneiras de alterar o tempo de um RTC como parte de um sistema para compensar os erros.

O primeiro diagrama (Figura 4) mostra o número de ciclos do oscilador contados pelo prescaler para cada período do contador de segundos.

Os primeiros dois segundos são os habituais 32.768 ciclos. O software usa leituras de temperatura e o erro inicial para determinar que o oscilador está funcionando um pouco rápido e 32.768 ciclos é na verdade um período de 0,999990 segundos. Para compensar esse pequeno erro, o software informa ao RTC para alterar o módulo do prescaler para 32.781 a cada quatro segundos para adicionar algum tempo.



Figura 4. Uma representação dos ciclos do oscilador contados por um prescaler



Essa técnica tem a vantagem de uma pequena mudança no período de segundo para segundo. No entanto, a técnica requer um prescaler ajustável e registros adicionais para manter a contagem de pré-escala especial e o número de segundos entre a aplicação da contagem especial. Eu acho isso muito legal. Um pouco complicado, mas muito legal.

E se o RTC não tiver um prescaler especial para ajustar o tempo? Este diagrama mostra outro método.



Figura 5. A mesma situação mostrada na Figura 4, mas sem um prescaler



Nesse caso, o número nas caixas é o contador dos segundos. A contagem mostrada é 100251 seguido por 100252. O software tem calculado continuamente o ajuste e mantendo o controle da contagem de segundos do RTC. Quando o erro acumula para exatamente um segundo, o software adiciona ou subtrai um segundo para ajustar o erro acumulado.

Uma desvantagem dessa técnica é que a mudança de segundo para segundo é grande quando um ajuste é feito. Essa técnica tem a vantagem de ser compatível com qualquer RTC.


Segurança em RTCs


A segurança é um requisito interessante. Existem aplicações em que o tempo é usado para cobrar os clientes pelo uso de um serviço ou consumo de um recurso. Há um amplo conjunto de práticas em torno da prevenção ou detecção de hacks de RTCs. As técnicas variam de detecção de intrusão para gabinetes a recursos especiais dentro do microcontrolador.

O RTC em um microcontrolador que estou usando atualmente tem registros especiais para permitir que o software bloqueie permanentemente os registros críticos. Uma vez bloqueados, eles não podem ser alterados e estão protegidos contra hackers ou código fora de controle. Alterar a hora requer uma reinicialização completa do microcontrolador.


Hora e data


Alguns RTCs têm contadores de hardware para manter a hora do dia e a data do calendário. Isso requer contadores para minutos, horas, dias, meses, anos e consideração para anos bissextos. A hora do dia e as datas do calendário também podem ser mantidas pelo software.

Um exemplo proeminente seriam as funções da Biblioteca C padrão vistas no arquivo time.h. Para um microcontrolador, este sistema pode ser baseado no contador de segundos de um RTC. Quatro pequenas funções personalizadas devem ser escritas para dar suporte total à biblioteca time.h.

A única função de interesse aqui é chamada pela função time () na biblioteca, que retorna o tempo como o número de segundos desde um ponto de partida chamado de "época", geralmente 1º de janeiro de 1970. Normalmente, a função personalizada para ler o temporizador do hardware é denominado get_time () ou uma variação semelhante. Tudo o que get_time () faz é ler o contador de segundos e retornar o valor. A biblioteca faz o resto para transformar esse tempo em segundos na hora e data atuais.


Problemas com contadores de segundos de 32 bits


Um contador de segundos de 32 bits é executado por muito tempo, mas não para sempre. Pode haver problemas sérios devido ao intervalo de contagem limitado. Por exemplo, um horário do sistema baseado em um contador de 32 bits usando a biblioteca padrão C e uma época de 1º de janeiro de 1970 pode falhar em janeiro de 2038, quando o contador rola após a contagem máxima. Esse problema é conhecido como problema Y2038.

Ocorreu uma falha durante a missão espacial Deep Impact da NASA para estudar um cometa. O objetivo principal da missão foi alcançado e a espaçonave continuou a estudar outros objetos. No entanto, a comunicação foi repentinamente perdida em 2013. Aqui está um comentário oficial da NASA.



“Embora a causa exata da perda não seja conhecida, a análise revelou um problema potencial com a marcação de tempo do computador que poderia ter levado à perda de controle da orientação do Deep Impact.”

- Comunicado de imprensa da NASA em 2013



Uma causa provável de falha é que um cronômetro de 32 bits estava mantendo o tempo em incrementos de 0,1 segundos e rolou causando o “término” da missão.

Minha sugestão, quando a hora e a data estão envolvidas, é usar um tempo de vida mais longo do que o esperado em seu projeto.


Próximos passos


O próximo artigo conclui a série com cronômetros de Watchdog.

Tecnologia industrial

  1. É hora de tornar o gerenciamento em nuvem uma prática real de TI
  2. Carregamento e descarga do capacitor
  3. Cálculos de tensão e corrente
  4. A oportunidade real é a oportunidade industrial
  5. Equipamento de trabalho:é hora de um upgrade?
  6. 7 Motores da Transformação Digital
  7. É hora de adotar a usinagem de alto desempenho?
  8. Robot detecta e compartilha alterações em 3D em tempo real
  9. Um sensor melhor detecta o acúmulo de gelo, em tempo real
  10. Interoperabilidade empresarial em tempo real