Aquisição de Luminosidade com DSP e FreeRTOS

Projeto prático de aquisição analógica, filtragem RC e processamento do sinal em tempo real no TI AM243x.

🛠 Pré-requisitos do projeto:
Este projeto envolve a implementação completa de um sistema de aquisição analógica com filtragem e processamento em tempo real. Para acompanhar todas as etapas com profundidade técnica, é recomendável possuir familiaridade com:
  • Eletrônica Analógica Básica: divisor de tensão, filtros RC, frequência de corte, constante de tempo e comportamento temporal de capacitores.
  • Teoria de Amostragem: conceito de Nyquist, aliasing, frequência de amostragem e limitação espectral antes da digitalização.
  • Microcontroladores e ADC: funcionamento de conversores analógico-digitais, circuito sample-and-hold e configuração de periféricos.
  • Linguagem C e Sistemas em Tempo Real: organização de código embarcado, tarefas periódicas e uso de FreeRTOS para aquisição determinística.

Este projeto está estruturado em duas etapas complementares, abrangendo tanto o domínio analógico quanto o domínio digital do sistema de medição.

Parte 1: Condicionamento analógico, Projeto e dimensionamento formal do circuito passa-baixa RC, responsável pelo condicionamento do sinal do sensor LDR, limitação espectral e prevenção de aliasing antes da digitalização.

Parte 2: Implementação do software de aquisição em tempo real no TI AM243x, incluindo configuração do ADC, definição da taxa de amostragem, sincronização via FreeRTOS e processamento digital das leituras de luminosidade.


O objetivo desta primeira etapa é desenvolver, modelar e dimensionar formalmente o sistema de aquisição analógica responsável por converter variações de luminosidade em um sinal digital processável pelo microcontrolador TI AM243x.

A aquisição de sinais físicos não consiste apenas em conectar um sensor a um conversor analógico-digital (ADC). Trata-se de um problema clássico de engenharia que envolve:

  • Modelagem elétrica do sensor;
  • Conversão da grandeza física em tensão;
  • Limitação espectral do sinal;
  • Compatibilidade com o circuito de amostragem do ADC;
  • Garantia de integridade espectral antes da digitalização.

Modelagem elétrica do LDR

O LDR (Light Dependent Resistor) é um componente passivo cuja resistência elétrica é função da intensidade luminosa incidente. De forma simplificada, pode-se expressar seu comportamento como:

RLDR = k · L

onde L representa a iluminância e α é um coeficiente dependente do material semicondutor. Isso implica que o sensor não gera tensão própria, mas altera sua resistência conforme a luz varia.

Conversão Resistência → Tensão

Para que o sinal possa ser convertido pelo ADC, a variação resistiva deve ser transformada em tensão elétrica. Isso é realizado por meio de um divisor de tensão resistivo alimentado em 3,3 V.

VADC = VCC · \frac{Rfixo}{RLDR + Rfixo}

Essa equação mostra que a saída é não linear em relação à luminosidade, mas fornece uma tensão contínua proporcional à condição luminosa.

Sensor LDR
Circuito divisor de tensão com LDR.

Necessidade de Limitação Espectral

Embora o fenômeno físico da iluminação ambiente seja predominantemente lento, o circuito pode captar componentes indesejados de alta frequência provenientes de:

  • Flicker - variação de rede elétrica que acontece normalmente em 50/60 Hz;
  • Interferências eletromagnéticas;
  • Ruído de chaveamento de fontes;
  • Ruído térmico e ruído do próprio ADC.

Caso essas componentes alcancem o ADC sem atenuação adequada, poderão provocar distorções espectrais irreversíveis após a amostragem, fenômeno conhecido como aliasing, por isso é necessário limitar a banda do sinal antes da digitalização, afinal de contas, não adianta nada coletar dados que não representem a realidade física que se deseja medir!

💡 Solução: Filtro Passa-Baixa RC

Para limitar a banda do sinal antes da digitalização, é introduzido um filtro passa-baixa RC de primeira ordem.

No domínio da frequência, sua função de transferência é:

H(jω) = \frac{1}{1 + jωRC}

A magnitude do ganho é dada por:

|H(jω)| = \frac{1}{\sqrt{1 + (ωRC)^2}}

A frequência de corte é definida quando:

|H(jωc)| = \frac{1}{\sqrt{2}}

Resultando na expressão clássica:

fc = \frac{1}{2πRC}

Essa frequência marca o ponto em que o sinal sofre atenuação de −3 dB. Acima dela, o ganho decresce a aproximadamente −20 dB por década, característica típica de filtros de primeira ordem.

O projeto do filtro, portanto, deve considerar simultaneamente:

  • Preservação da banda do sinal útil;
  • Redução de ruídos de alta frequência;
  • Prevenção de aliasing;
  • Tempo de resposta do sistema;
  • Compatibilidade com o ADC.

Em seguida, o dimensionamento será conduzido de forma formal, partindo da definição da frequência máxima útil, escolha da taxa de amostragem e aplicação direta do critério de Nyquist para determinar a frequência de corte apropriada.

Pinout da LaunchPad AM243x

Antes de realizar qualquer conexão física, é fundamental compreender a disposição dos pinos disponíveis na LaunchPad baseada no TI AM243x.

O sinal condicionado pelo filtro RC será aplicado ao módulo ADC0, especificamente ao canal ADC0_AIN0, exposto em um dos headers da placa.

O ADC (Analog-to-Digital Converter) é o periférico responsável por converter a tensão analógica contínua (0–3,3 V) em um valor digital discreto proporcional, permitindo processamento numérico pelo núcleo Cortex-R5F.

Pinout da LaunchPad AM243x com identificação dos headers e funções dos pinos
Mapeamento dos pinos da AM243x LaunchPad™ Development Kit. Fonte: AM243x LaunchPad™ Development Kit User's Guide, Texas Instruments. Disponível em: https://www.ti.com/lit/ug/spruj12f/spruj12f.pdf .

Sensor LDR

O sensor utilizado neste projeto é um LDR (Light Dependent Resistor), componente passivo cuja resistência elétrica varia inversamente com a intensidade luminosa incidente.

Seu comportamento não é linear e depende do material semicondutor utilizado, sendo tipicamente modelado por uma relação potencial entre resistência e iluminância.

Sensor LDR
Sensor LDR utilizado no experimento.



Cafeína para o Hardware

Se este mergulho técnico foi útil para você, considere apoiar a continuidade do DeepDive Embedded. Seu apoio nos ajuda com a manutenção de nossos servidores e financia as melhorias no site.

00020126580014BR.GOV.BCB.PIX013699c6c2a0-39e9-4dc3-ac57-950e0e886abb5204000053039865802BR5923Juan Pedro Baena Cassal6009SAO PAULO621405104dtCBAq9PJ6304056E
PIX copiado
QR Code Pix Scan me



Dimensionamento Formal do Filtro Anti-Aliasing

O dimensionamento do filtro analógico não deve ser baseado apenas em tentativa e erro ou valores comerciais disponíveis. Ele deve derivar diretamente da teoria de amostragem e da análise espectral do sinal. Nesta seção, o projeto será conduzido de forma sistemática.

1. Definição formal do sinal útil

O primeiro passo consiste em determinar a maior frequência presente no fenômeno físico que se deseja medir.

A iluminação ambiente varia tipicamente de forma lenta, associada a:

  • Movimentação humana;
  • Sombras;
  • Variação gradual de intensidade luminosa;
  • Transições dia/noite.

Mesmo considerando eventos rápidos (por exemplo, passagem de mão sobre o sensor), a variação dificilmente ultrapassa alguns hertz.

Adota-se, portanto:

fútil = 2 Hz

Essa frequência representa a banda máxima que deve ser preservada integralmente pelo sistema.

2. Escolha da frequência de amostragem

O Teorema da Amostragem de Nyquist-Shannon estabelece que um sinal limitado em banda pode ser perfeitamente reconstruído se:

fs ≥ 2 · fmáx

Onde fs é a taxa de amostragem e fmáx é a maior frequência do sinal.

Para fútil = 2 Hz, o mínimo teórico seria:

fs ≥ 4 Hz

Entretanto, operar próximo ao limite teórico não é desejável, pois reduz margem contra ruídos e não oferece boa resolução temporal.

Define-se então:

fs = 100 Hz

Essa escolha fornece:

  • Grande margem contra aliasing;
  • Boa resolução temporal (10 ms entre amostras);
  • Carga computacional baixa para o AM243x.

3. Frequência de Nyquist

A frequência de Nyquist é definida como:

fN = fs / 2

Logo:

fN = 50 Hz

Qualquer componente espectral acima de 50 Hz será refletida para dentro da banda útil após a amostragem, segundo:

falias = |f - k·fs|

Por exemplo:

  • 60 Hz → alias em 40 Hz
  • 200 Hz → alias em 0 Hz

Isso demonstra a necessidade de atenuação antes da digitalização.

Demonstração visual de aliasing ao amostrar um sinal de 60 Hz a 100 Hz
Figura — Efeito de aliasing provocado por subamostragem.

A linha contínua representa o sinal analógico real com frequência de 60 Hz. Os pontos discretos indicam as amostras coletadas com frequência de amostragem fs = 100 Hz (período de amostragem de 10 ms).

Como a frequência do sinal ultrapassa o limite de Nyquist (fN = 50 Hz), o sistema de amostragem não consegue representá-lo corretamente. Em vez disso, as amostras passam a formar um padrão equivalente a uma senoide de 40 Hz, mostrada pela linha tracejada.

Esse valor surge da relação de aliasing:

falias = |f − k·fs| = |60 − 1·100| = 40 Hz

Isso significa que o sistema digital interpreta o sinal de 60 Hz como sendo um sinal de 40 Hz. O fenômeno ilustrado não é ruído aleatório, mas sim uma dobra espectral determinística causada pela violação do critério de Nyquist. Essa distorção é irreversível após a digitalização, evidenciando a necessidade de um filtro analógico anti-aliasing antes da conversão analógico-digital.

Se ainda não ficou claro o conceito de aliasing assista ao vídeo abaixo:

4. Definição da frequência de corte

Uma regra prática amplamente utilizada é:

fc ≈ fs / 10

Para 100 Hz:

fc ≈ 10 Hz

Entretanto, como a banda útil é até 2 Hz, pode-se reduzir ainda mais para aumentar atenuação de ruídos:

fc = 3,4 Hz

5. Escolha do resistor

O resistor influencia:

  • A frequência de corte;
  • A impedância vista pelo ADC;
  • A constante de tempo do circuito.

O ADC do AM243x utiliza circuito sample-and-hold, que exige impedância de fonte moderada.

Escolhe-se:

R = 10 kΩ

Valor suficientemente baixo para carregamento adequado do capacitor interno do ADC e suficientemente alto para evitar consumo excessivo.

6. Cálculo do capacitor

O dado mais importante que temos até agora é a frequência de corte, que a base para proteger o sinal contra ruidos indesejaveis, sendo assim, podemos usar este valor junto com o valor do resistor escolhido para definir o valor do capacitor. A relação fundamental é:

fc = 1 / (2πRC)

Rearranjando:

C = 1 / (2πR fc)

Substituindo:

C = 1 / (2π · 10 000 · 3,4)

C ≈ 4,68 µF

Escolhe-se o valor comercial:

C = 4,7 µF

7. Verificação da atenuação em 60 Hz

A magnitude do ganho é:

|H(jω)| = 1 / √(1 + (ωRC)²)

Para 60 Hz:

ω = 2π·60 ≈ 377 rad/s

Como:

RC ≈ 0,047 s

ωRC ≈ 17,7

|H| ≈ 1 / √(1 + 313) ≈ 1 / 17,7

Atenuação aproximada:

≈ −25 dB

Ou seja, ruído de 60 Hz é reduzido para cerca de 5,6% da amplitude original.

8. Análise da latência (resposta temporal do filtro)

Todo filtro analógico não atua apenas no domínio da frequência; ele também apresenta um comportamento dinâmico no tempo. Para entender esse comportamento, utiliza-se um teste clássico chamado resposta ao degrau.

O que é um degrau de tensão?

Um degrau é uma variação instantânea da tensão de entrada de um valor inicial para um valor final constante.

Matematicamente, é representado como:

Vin(t) =

0,     para t < 0
Vfinal,     para t ≥ 0

Em termos físicos, isso significa que a tensão muda abruptamente, como se alguém ligasse uma fonte instantaneamente.

No contexto deste projeto, um degrau pode representar, por exemplo:

  • Acender uma lanterna diretamente sobre o sensor;
  • Descobrir o sensor que estava coberto;
  • Uma transição súbita de sombra para luz intensa.

Ou seja, uma mudança brusca na iluminação.

Por que usamos o degrau para análise?

Porque ele permite avaliar a velocidade de resposta do sistema. Se o filtro responde lentamente a um degrau, isso significa que ele suaviza variações rápidas.

No caso do filtro RC de primeira ordem, o comportamento temporal é governado pela chamada constante de tempo, definida por:

τ = R · C

Substituindo os valores adotados no projeto:

τ = 10 000 · 4,7 µF ≈ 0,047 s ≈ 47 ms

Essa constante representa o tempo característico necessário para que o capacitor carregue ou descarregue após uma variação brusca.

Equação da resposta ao degrau

A resposta do filtro a um degrau de tensão é descrita por:

V(t) = Vfinal · (1 − e−t/τ)

Essa equação mostra que a saída não atinge instantaneamente o valor final; ela se aproxima de forma exponencial.

  • Após 1τ (≈ 47 ms) → atinge ~63% do valor final;
  • Após 3τ (≈ 141 ms) → atinge ~95% do valor final;
  • Após 5τ (≈ 235 ms) → ultrapassa 99% do valor final.

Portanto, pode-se considerar que o sistema leva aproximadamente 235 ms para estabilizar completamente após uma mudança abrupta.

Esse atraso é chamado de latência do filtro. Ele surge porque o capacitor não pode variar sua tensão instantaneamente — isso exigiria corrente infinita, o que é fisicamente impossível.

Existe, portanto, um compromisso fundamental:

  • Maior R·C → mais filtragem (menos ruído), porém resposta mais lenta;
  • Menor R·C → resposta mais rápida, porém menos atenuação de ruído.

Para medições de luminosidade ambiente, cujas variações naturais ocorrem na ordem de segundos, essa latência de algumas centenas de milissegundos é perfeitamente aceitável e não compromete o desempenho do sistema.

Conclusão da parte 1

O filtro foi dimensionado com base em:

  • Teorema de Nyquist;
  • Análise de aliasing;
  • Compatibilidade com o ADC;
  • Critério de atenuação espectral;
  • Análise temporal do sistema.

Dessa forma, garante-se que o sinal entregue ao ADC esteja adequadamente limitado em banda, preservando o conteúdo útil e minimizando distorções espectrais antes da digitalização.

Conclui-se, portanto, que o estágio analógico foi devidamente dimensionado, garantindo limitação espectral adequada, atenuação de ruídos indesejados e tempo de resposta compatível com o fenômeno físico observado.

Sensor LDR
Circuito final.

Na segunda parte deste projeto, será implementado o software em tempo real responsável pela aquisição periódica das leituras de luminosidade através do ADC do TI AM243x. Essa etapa envolverá a configuração do periférico de conversão, definição da taxa de amostragem, sincronização temporal via FreeRTOS e posterior processamento digital dos dados obtidos.

Dessa forma, o sistema evolui do domínio analógico — onde garantimos integridade física e espectral do sinal — para o domínio digital, onde técnicas de filtragem e análise em tempo real poderão ser aplicadas com base em dados corretamente condicionados.

Referências Técnicas

  1. Oppenheim, A. V., Willsky, A. S., Nawab, S. H. Signals and Systems. Prentice Hall.
    Referência fundamental para análise de sistemas lineares, resposta em frequência, resposta ao degrau e modelagem de filtros RC.
  2. Proakis, J. G., Manolakis, D. G. Digital Signal Processing: Principles, Algorithms and Applications. Pearson.
    Base teórica para amostragem, aliasing, teorema de Nyquist-Shannon e processamento digital de sinais.
  3. Texas Instruments. AM243x LaunchPad™ Development Kit User’s Guide.
    Documentação da placa utilizada para aquisição analógica e acesso aos canais de ADC. Disponível em: https://www.ti.com/lit/ug/spruj12f/spruj12f.pdf .
  4. Texas Instruments. AM243x Sitara™ Microcontrollers Technical Reference Manual.
    Referência para arquitetura do ADC, núcleo Arm® Cortex®-R5F, subsistema de clock e funcionamento interno do conversor analógico-digital.
  5. ARM Ltd. ARM® Cortex®-R5 and Cortex®-R5F Technical Reference Manual.
    Base arquitetural do processador utilizado para execução do software em tempo real.
  6. Texas Instruments. MCU+ SDK for AM243x Documentation.
    Utilizado para configuração do ADC, inicialização do sistema e integração com FreeRTOS.
  7. FreeRTOS. FreeRTOS Kernel Developer Documentation.
    Referência para implementação de tarefas periódicas, temporização determinística e aquisição em tempo real. Disponível em: https://www.freertos.org .

Comentários e discussões