Você já teve problemas de latência com seu projeto eletrônico, principalmente se ele usa um microcontrolador. Você parou para pensar se o problema se deve a um programa mal elaborado, um circuito que não funciona, desacoplamento ou ainda a latência? Neste artigo vamos analisar uma das principais causas de problemas de funcionamento de circuitos que envolvam processamento: a latência.

A latência existe em todos os circuitos eletrônicos podendo ocorrer por hardware (em todos os circuitos), e em por hardware e software nos casos dos microcontroladores.

O que ocorre é que existem um intervalo entre o instante em que um circuito recebe um comando e instante em que ele fornece uma saída.

Mesmo num simples controle de um relé, existe um tempo entre o instante em que o sensor tem a luz cortada e o relé fecha seus contatos, conforme o circuito da figura 1.

 

Figura 1 – Latência por hardware
Figura 1 – Latência por hardware

 

São apenas microssegundos, mas pode significar muito em uma aplicação em que esse tempo seja importante.

Todos os circuitos possuem latências, que podem variar entre nano segundos e microssegundos, dependendo dos componentes usados e do número de etapas.

Mas, o problema maior ocorre com os microcontroladores, pois a latência por hardware para estes componentes é pequena, mas a latência por software pode influenciar, e muito seu funcionamento num pprojeto.

 

Latência por Software

O que ocorre é que os microcontroladores realizam suas funções processando um programa sequencialmente. É uma instrução após outra, e isso leva tempo. Em alguns casos, até introduzimos um “delay” entre a execução e outra de propósito.

Por exemplo, se mandarmos um microcontrolador ler duas entradas em que estejam ligado dois sensores para verificar se foram acionados simultaneamente, ele o faz sequencialmente, primeiro uma e depois a outra conforme mostra a figura 2.

 

Figura 2 – Leitura sequencial
Figura 2 – Leitura sequencial

 

Pois bem, vamos supor que na aplicação desejada, os dois sensores ficam fechados por intervalos de tempo muito pequenos, conforme mostra a figura 3.

Se ao terminarmos de ler um o outro já não mais estiver ativado, a leitura não será de mesmo tempo, conforme mostra a figura 3.

 

Figura 3 – Leitura de tempos
Figura 3 – Leitura de tempos

 

Veja então que, quando é feita a leitura de A, o sensor se encontra no nível 1, mas quando a leitura é feita no sensor B, ele já voltou ao nível 0, e na comparação dos resultados o microcontrolador os toma como não simultâneos.

Isso se agrava se entre uma instrução e outro for introduzido um atraso. Neste caso, conforme vimos o atraso “delay 500” foi introduzido apenas no final da execução do bloco (sub-rotina). No entanto, se esse delay estiver entre uma leitura e outra o problema será maior.

Delay 500 significa meio segundo entre uma operação e outra e isso pode significar que uma leitura é feita de um sensor e a do outro apenas meio segundo depois o que para um circuito eletrônico é muito tempo.

Se o programa que você elaborou para seu projeto inclui muitos “delays” tome cuidado, pois eles podem influenciar no resultado que você vai obter.

Talvez aquele funcionamento esquisito que você obteve para seu projeto que não faz realimente o que você quer quando os sensores são ativados, ou existe um funcionamento errático dos dispositivos controlados como motores quando você liga seu projeto possa estar em latências produzidas na execução do programa.

Analise, pois talvez uma alteração no software pode resolver o problema.

Verifique também a possibilidade de contornar o problema usando lógica externa, ou shields lógicos de entrada.

 

Usando hardware

Você pode ter a leitura simultânea de dois sensores sem depender da execução sequencial do programa com circuitos externos (hardware) e alguns deles são simples.

Por exemplo, uma porta NAND ou AND permite saber se dois sensores são acionados simultaneamente mesmo que a duração de seu contato seja da ordem de microssegundos, conforme mostra a figura 4.

 

Figura 4 – Usando lógica externa
Figura 4 – Usando lógica externa

 

Veja que neste caso usamos apenas uma entrada do microcontrolador e, portanto, sabemos os estados dos sensores com uma leitura.

E, as funções lógicas também podem ser obtidas com diodos e transistores como descrevemos no artigo MIC185.

 

Importância de Conhecer Lógica Digital

Muitos desprezam o conhecimento de eletrônica digital, achado que basta saber usar um microcontrolador e seus programas, para que nenhuma funções lógica externa seja necessária.

No entanto, a lógica digital é importante justamente para os casos em que o microcontrolador não faz tudo, ou tem problemas quando desejamos que cfaça tudo.

É neste momento que um bom conhecimento de eletrônica digital (e analógica também) pode ajudar a resolver problemas de latência e muitos outros.

 

Nota: na introdução falamos de desacoplamento. Este é um outro problema que pode ocorrer com projetos que envolvem circuitos lógicos, analógicos e microcontroladores que estaremos explorando em outro artigo.