Projeto integrador de Eletrônica Digital: sistema com botões, lógica, contador e acionamentos

Capítulo 15

Tempo estimado de leitura: 12 minutos

+ Exercício

Visão geral do projeto integrador

Este projeto reúne, em um único sistema, os principais blocos estudados ao longo do curso: entrada por botões (com condicionamento), geração e distribuição de clock, controle de estado com flip-flop, contagem para criar sequências, indicação por LEDs e uma saída de potência para acionar um relé via transistor. A proposta é construir em módulos, testar cada módulo isoladamente e depois integrar tudo com critérios de aceitação bem definidos.

Objetivo funcional (o “produto” final): ao pressionar um botão de START, o sistema entra em modo de operação e passa a avançar uma sequência de LEDs em passos sincronizados por clock. Um botão de STOP pausa a sequência. Um terceiro botão (RESET) retorna o sistema ao estado inicial. Em um passo específico da contagem (por exemplo, quando o contador atinge um valor pré-definido), o relé é acionado por um tempo determinado (ou enquanto durar aquele estado), permitindo controlar uma carga externa.

Arquitetura: diagrama de blocos e sinais principais

Diagrama de blocos (texto)

[Botões] --> [Condicionamento (pull + debounce)] --> [Controle de estado (FF)] --> [Habilitação de clock] --> [Contador] --> [Decodificação/LEDs] --> [Driver transistor] --> [Relé/Carga]

Definição de sinais (sugestão)

  • START_P: pulso limpo gerado pelo botão START.
  • STOP_P: pulso limpo gerado pelo botão STOP.
  • RESET: reset do sistema (pode ser assíncrono para o contador e o FF, conforme o CI escolhido).
  • RUN: estado “rodando” (1 = sequenciando; 0 = parado).
  • CLK: clock base (oscilador).
  • CLK_EN: clock habilitado (clock “gated” ou clock passando por enable).
  • Q[n:0]: saídas do contador.
  • RELAY_ON: sinal lógico que comanda o transistor do relé.

Escolha de família lógica e justificativa

Recomendação prática para o projeto

Opção A (recomendada): CMOS 4000/74HC para todo o caminho lógico (botões, FF, contador, decodificação e LEDs), e estágio de potência separado para o relé. Motivos: alimentação típica em 5 V, boa imunidade a ruído, consumo baixo, facilidade de interface com LEDs (desde que respeitando corrente) e ampla disponibilidade.

Opção B: TTL 74LS (ou mistura com CMOS) só se você já tiver os CIs e souber lidar com as particularidades de corrente e níveis. Em integração mista, prefira usar buffers/nível quando necessário e garanta que as entradas não fiquem flutuando.

Decisão de alimentação

  • Lógica: 5 V regulados.
  • Relé: 5 V ou 12 V (conforme o relé disponível). Se for 12 V, mantenha o 12 V fora do domínio lógico e una os GNDs em um ponto bem definido (estrela), com desacoplamento.

Definição de comportamento (máquina de estados simples)

Estados e transições

  • IDLE (RUN=0): contador parado e LEDs indicando estado inicial.
  • RUN (RUN=1): contador avança a cada pulso de clock habilitado.

Transições:

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

  • START_P coloca RUN=1.
  • STOP_P coloca RUN=0.
  • RESET força RUN=0 e contador em zero.

Essa lógica pode ser implementada com um flip-flop (por exemplo, D ou JK) configurado para “set/reset” via pulsos, ou com uma pequena combinação de portas ao redor do FF para priorizar RESET e definir START/STOP.

Etapas de construção em módulos (com testes unitários)

Módulo 1 — Fonte e desacoplamento

O que montar: barramento de 5 V e GND na protoboard (ou placa), com capacitores de desacoplamento próximos a cada CI.

  • Coloque 100 nF entre VCC e GND em cada CI (o mais perto possível dos pinos).
  • Adicione um eletrolítico (por exemplo, 10–47 µF) no barramento principal.

Teste unitário: medir 5 V com multímetro; verificar queda de tensão quando LEDs acendem; checar se o 5 V não oscila ao acionar o relé (o relé ainda não deve estar ligado nesta etapa).

Módulo 2 — Botões com condicionamento (saída em pulso limpo)

O que montar: três entradas: START, STOP e RESET, cada uma gerando um nível estável e/ou pulso limpo para a lógica.

  • START e STOP: gerar pulsos START_P e STOP_P (um pulso por acionamento).
  • RESET: pode ser nível (enquanto pressionado) ou pulso, conforme o reset dos CIs.

Teste unitário: com osciloscópio ou analisador lógico, confirmar que cada botão gera transição única (sem trem de pulsos) e que o nível em repouso é definido (não flutua). Sem instrumento, use um LED de teste com resistor e observe se não “pisca múltiplas vezes” em um único toque.

Módulo 3 — Clock base e distribuição

O que montar: um oscilador (por exemplo, com CI dedicado ou com portas adequadas) gerando CLK em frequência baixa o suficiente para visualização (1 a 5 Hz para LEDs) e, opcionalmente, uma opção de clock manual (um botão com debounce gerando pulsos).

Teste unitário: medir frequência e duty cycle (aproximado) no osciloscópio; verificar se o clock não “morre” quando outros módulos são conectados (sinal de carga excessiva ou falta de buffer).

Módulo 4 — Controle de estado (RUN) com flip-flop

O que montar: um FF que memorize se o sistema está rodando. Entradas: START_P, STOP_P, RESET. Saída: RUN.

Dica de implementação: trate prioridades: RESET deve dominar (forçar RUN=0). START deve forçar RUN=1. STOP deve forçar RUN=0. Se START e STOP ocorrerem próximos, defina uma prioridade por hardware (por exemplo, STOP dominando START, ou vice-versa) e documente isso como regra do sistema.

Teste unitário: ligar um LED em RUN (com resistor) e verificar: START acende, STOP apaga, RESET apaga sempre.

Módulo 5 — Habilitação do clock (evitar glitches)

O que montar: fazer o contador avançar apenas quando RUN=1. Há duas estratégias comuns:

  • Enable do contador: se o contador tiver pino de enable, use-o. É a forma mais limpa.
  • Gating de clock: passar CLK por uma porta lógica controlada por RUN para gerar CLK_EN. Para reduzir risco de pulsos espúrios, garanta que RUN só mude estado sincronizado ou em condições que não criem glitches (por exemplo, alterando RUN quando CLK estiver em nível estável, ou usando latch/FF para sincronizar RUN ao clock).

Teste unitário: com RUN=0, o contador não deve avançar (mesmo com clock presente). Com RUN=1, deve avançar exatamente um passo por pulso.

Módulo 6 — Contador e sequência de LEDs

O que montar: contador (por exemplo, 4 bits) e LEDs para visualizar a contagem ou uma sequência decodificada.

  • Modo A (simples): LEDs diretamente nos bits Q0..Q3 (visualiza binário).
  • Modo B (sequência “1 de N”): decodificar estados para acender um LED por vez (efeito “corrida”).

Teste unitário: confirmar que a sequência é repetitiva e sem saltos. Se for binário, verificar que Q0 alterna a cada pulso, Q1 a cada 2 pulsos, etc. Se for decodificado, verificar que apenas um LED acende por estado (se essa for a regra).

Módulo 7 — Evento de acionamento do relé (decodificação de estado)

O que montar: lógica que gere RELAY_ON quando o contador atingir um valor específico (ex.: acionar no estado 9) ou em uma janela de estados (ex.: acionar do 8 ao 11).

  • Acionamento por estado único: decodifique o valor do contador com portas (comparador simples) e gere um pulso ou nível.
  • Acionamento por janela: use combinação de bits para definir um intervalo.

Teste unitário: ligar um LED em RELAY_ON antes de conectar o relé. Verificar se acende exatamente no(s) estado(s) desejado(s) e nunca fora deles.

Módulo 8 — Driver do relé via transistor

O que montar: transistor como chave (NPN ou MOSFET lógico), diodo de flyback na bobina do relé e, se necessário, resistor de base/gate. Entrada: RELAY_ON. Saída: bobina do relé.

Teste unitário: primeiro teste sem carga no contato do relé. Verificar se o relé arma/desarma de forma consistente e se não há reset do sistema ao comutar (indício de ruído/queda de tensão). Depois, conectar uma carga leve e repetir.

Integração: ordem recomendada

  • Integrar Módulo 1 + Módulo 2 e validar níveis e pulsos.
  • Adicionar Módulo 3 (clock) e observar estabilidade.
  • Adicionar Módulo 4 (RUN) e validar START/STOP/RESET.
  • Adicionar Módulo 5 (enable/gating) e garantir ausência de contagem com RUN=0.
  • Adicionar Módulo 6 (contador + LEDs) e validar sequência.
  • Adicionar Módulo 7 (RELAY_ON) e validar evento com LED.
  • Adicionar Módulo 8 (driver + relé) e validar comutação sem perturbar a lógica.

Critérios de aceitação (o que deve funcionar e como medir)

1) Entradas (botões)

  • Requisito: cada acionamento gera uma única ação (sem múltiplos disparos).
  • Como medir: no osciloscópio/analisador lógico, observar um único pulso limpo por toque; sem instrumentos, contar se a sequência avança apenas um passo quando o clock é manual, ou se RUN muda apenas uma vez por toque.

2) Estado RUN

  • Requisito: START coloca RUN=1, STOP coloca RUN=0, RESET força RUN=0 sempre.
  • Como medir: LED em RUN e medição de nível com multímetro; validar prioridade do RESET.

3) Contagem e LEDs

  • Requisito: com RUN=1, o contador avança exatamente 1 estado por pulso de clock; com RUN=0, permanece congelado.
  • Como medir: observar LEDs; com osciloscópio, medir frequência em Q0 e comparar com CLK (divisão esperada).

4) Evento do relé

  • Requisito: relé aciona somente no(s) estado(s) definidos e não causa reset/instabilidade.
  • Como medir: LED em RELAY_ON + escuta/observação do clique do relé; medir VCC durante comutação (queda pequena e sem glitches relevantes).

5) Margens e robustez

  • Requisito: o sistema deve funcionar de forma repetível por pelo menos 50 ciclos completos de contagem sem travar.
  • Como medir: deixar rodando por alguns minutos; registrar se houve travamento, salto de contagem ou acionamento indevido do relé.

Falhas comuns esperadas e como corrigir

Contador “pula” estados ou avança sozinho

  • Causa provável: clock com ruído, gating de clock gerando pulsos espúrios, entradas flutuando, falta de desacoplamento.
  • Correções: preferir enable do contador em vez de gating; sincronizar RUN; adicionar/posicionar melhor capacitores de 100 nF; encurtar fios do clock; garantir níveis definidos em todas as entradas.

START/STOP dispara múltiplas vezes

  • Causa provável: debounce insuficiente ou ponto de medição pegando o sinal “antes” do condicionamento.
  • Correções: revisar o módulo de debounce; medir o sinal já condicionado; reduzir sensibilidade a bordas lentas (usar entrada com histerese quando aplicável).

Relé aciona mas a lógica reseta ou fica instável

  • Causa provável: queda de tensão no 5 V, retorno de corrente pelo GND, ruído eletromagnético da bobina/contatos, falta de diodo flyback ou layout ruim.
  • Correções: confirmar diodo flyback correto e bem conectado; separar alimentação do relé (ou ao menos trilhas/fios) e fazer aterramento em estrela; adicionar capacitor eletrolítico próximo ao driver; afastar fisicamente fios do relé do clock/entradas; considerar optoacoplamento se necessário.

LEDs fracos ou comportamento estranho ao acender vários

  • Causa provável: exceder corrente total de saída do CI, resistores inadequados, alimentação caindo.
  • Correções: aumentar resistores; limitar número de LEDs simultâneos; usar buffer/driver para LEDs; revisar consumo total.

RESET não funciona sempre

  • Causa provável: reset sem nível garantido na energização, pulso curto demais, ruído no reset.
  • Correções: garantir reset com tempo suficiente; adicionar rede de power-on reset; manter reset longe de linhas ruidosas e com pull definido.

Variações opcionais (para expandir o projeto)

1) Módulo-N diferente (mudança do comprimento da sequência)

  • Ideia: em vez de contar 0–15, fazer módulo-10, módulo-6 ou módulo-12.
  • Como fazer: decodificar um valor e aplicar reset síncrono/assíncrono do contador conforme o CI; ajustar a decodificação dos LEDs e do RELAY_ON.
  • Teste: confirmar que após o último estado desejado o contador volta ao zero sem estados intermediários visíveis.

2) Substituir botão por sensor

  • Ideia: trocar START por um sensor digital (fim de curso, sensor IR com saída digital, reed switch) para iniciar a sequência automaticamente.
  • Cuidados: alguns sensores têm saída coletor aberto e exigem pull-up; ruído e cabos longos podem exigir filtragem e histerese.
  • Teste: simular acionamentos repetidos e verificar se não há falsos disparos.

3) Expansão com tri-state/buffer para mais LEDs ou módulos

  • Ideia: usar buffers para isolar o contador e dirigir mais carga (mais LEDs, display simples, ou um conector de expansão).
  • Tri-state: permitir que múltiplos módulos compartilhem um barramento de LEDs/linhas, habilitando apenas um por vez.
  • Teste: verificar que apenas um driver está ativo por vez (evitar contenção), e que níveis lógicos permanecem dentro das margens.

Checklist rápido de validação final (antes de considerar pronto)

  • Todos os CIs com 100 nF de desacoplamento local.
  • Nenhuma entrada lógica sem pull definido.
  • Clock medido e estável no ponto de entrada do contador.
  • RUN muda apenas com START/STOP e respeita RESET.
  • Contador não avança com RUN=0.
  • RELAY_ON ocorre exatamente nos estados definidos.
  • Relé com diodo flyback e sem causar queda perceptível no 5 V.

Agora responda o exercício sobre o conteúdo:

Ao implementar a função de fazer o contador avançar apenas quando RUN=1, qual abordagem é considerada a mais limpa para evitar glitches e contagens indevidas?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Usar o enable do contador evita o gating direto do clock, reduzindo o risco de pulsos espúrios e contagem indevida quando RUN muda de estado.

Capa do Ebook gratuito Eletrônica Digital para Iniciantes: Portas Lógicas, TTL/CMOS e Interfaces Básicas
100%

Eletrônica Digital para Iniciantes: Portas Lógicas, TTL/CMOS e Interfaces Básicas

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.