Trilha de aprendizado · Nível 15 · Tutorial 2

Arquitetura do sistema e contratos de interface

Definir a arquitetura elétrica e de firmware do monitor, verificando as interfaces entre sensor, condicionamento, processamento, alimentação e indicação.

  • Nível: Avançado
  • Duração: 22 min
  • 9 passos
Arquitetura do sistema e contratos de interface

O que você vai percorrer

  1. Dos requisitos aos blocos do monitor Organize o monitor de temperatura em blocos, caminhos e responsabilidades antes de detalhar as interfaces elétricas. 2 min
  2. Uma origem de alimentação, caminhos explícitos Defina a alimentação do monitor por uma única origem e torne explícitos os caminhos de energia e de referência compartilhada. 2 min
  3. Contratos elétricos entre sensor, amplificador e ADC Especifique contratos elétricos verificáveis entre TMP36, MCP6002 e ADC, distinguindo condições nominais, operação garantida e limites absolutos. 3 min
  4. Escolher o ganho sem consumir as margens Converter os extremos nominais do TMP36, comparar a carga real da saída com a condição garantida do MCP6002 e selecionar um ganho não inversor que preserve margens para o amplificador e o ADC. 4 min
  5. Contratar também os estados fora da operação normal Defina os estados de reset, inicialização e informação indisponível, distinguindo-os da operação com dados válidos. 3 min
  6. Dividir o firmware por responsabilidades 3 min
  7. Resolver conflitos de recursos antes da montagem Revisão da alocação de recursos compartilhados do Uno R3 antes da montagem. 2 min
  8. Registrar a configuração inicial Consolide uma configuração inicial identificada, vinculando escolhas de hardware e firmware às justificativas, condições de validade e dependências de revisão. 2 min
  9. Revisão final: defender uma arquitetura coerente Revisão integrada de uma proposta de monitor, com correções justificadas e consolidação da configuração inicial. 3 min

O que você vai aprender

  • Representar a arquitetura por blocos e atribuir responsabilidades a cada um.
  • Especificar os limites elétricos e os estados esperados nas interfaces.
  • Justificar o ganho do condicionamento usando a faixa de temperatura e as margens disponíveis.
  • Identificar conflitos de alimentação e de recursos do microcontrolador antes da montagem.

Antes de começar

  • Requisitos mensuráveis para o projeto integrado
  • Dimensionamento do amplificador não inversor
  • Ajuste de ganho e offset para sinais de sensores
  • Leitura de tensão com o ADC do Arduino Uno
  • Máquinas de estados no firmware
  • Criação de esquemáticos no KiCad

Passo 1 de 9

Dos requisitos aos blocos do monitor

Organize o monitor de temperatura em blocos, caminhos e responsabilidades antes de detalhar as interfaces elétricas.

Enxergar o sistema antes dos detalhes

Do requisito à responsabilidade

Arquitetura não é esquemático

Os requisitos do monitor já dizem o que deve ser atendido. A arquitetura decide quem faz o quê e como as informações, os sinais e a energia percorrem o sistema.

Um diagrama de blocos mostra responsabilidades e interfaces; ele não precisa exibir cada resistor, pino ou fio. O esquemático detalhado virá depois, coerente com essas decisões.

Para este caso de bancada, a arquitetura precisa sustentar a medição de temperatura na faixa definida, a atualização e resposta requeridas e a indicação por LED. Ela ainda não prova desempenho: organiza as decisões que serão verificadas posteriormente.

Mapa inicial do monitor

Observe os três percursos: sinal analógico, energia de 5 V e informação tratada pelo firmware.

Diagrama de blocos do monitor com TMP36, condicionamento, Uno R3, LED, USB e caminhos distintos de sinal, energia e informação.

A arquitetura torna visíveis os blocos e as fronteiras entre domínios antes dos detalhes de implementação.

Ler os caminhos da arquitetura

Blocos e responsabilidades

Caso de referência: monitor em 5 V

A proposta inicial contém estes blocos:

  • Sensor — TMP36: transforma temperatura em uma tensão analógica.
  • Condicionamento — MCP6002 não inversor: adapta a tensão do sensor para a aquisição; seus resistores pertencem a este bloco.
  • Processamento — ADC do Uno R3 e firmware: digitaliza o sinal e transforma a leitura em decisão de indicação.
  • Indicação — LED com resistor: comunica o estado definido pelo firmware.
  • Alimentação — USB de 5 V: fornece energia à placa e, na configuração de referência, aos blocos analógicos.

O LED não mede temperatura e o sensor não decide a indicação. Essa separação permite localizar responsabilidades e revisar mudanças sem confundir funções.

Dica

Não misture os percursos

Três caminhos, três perguntas

Energia: quem alimenta cada bloco? No diagrama, a distribuição parte da origem de 5 V.

Sinal: que grandeza atravessa a interface? Aqui, a temperatura torna-se tensão do TMP36, depois sinal condicionado e, por fim, código digital no ADC.

Informação: o que o firmware interpreta e comanda? Ele recebe a aquisição, aplica a regra de indicação e comanda o GPIO do LED.

A fronteira hardware–firmware fica no processamento: o ADC recebe tensão física; o programa trabalha com dados e estados. As condições elétricas detalhadas dessas interfaces serão definidas nos próximos steps.

Prática: atribuir responsabilidades

Responsabilidades dos blocos

Associe cada bloco à sua responsabilidade principal nesta arquitetura inicial.

Faça as correspondências.

Toque em um item e depois no par correspondente.

Checagem de arquitetura

Cobertura não é validação

Verificação de completude

Uma arquitetura está incompleta quando um requisito não encontra um responsável. Por exemplo: se o requisito determina uma indicação visual, mas o diagrama termina no ADC, falta o bloco que apresenta essa decisão ao usuário.

Nesta etapa, registre somente a relação:

requisito → bloco responsável → conexão necessária

Exemplo: “indicação por LED → indicação e firmware → GPIO do Uno até LED com resistor”. Os limites de tensão, os estados de inicialização, o ganho e a escolha de pinos ainda serão contratados adiante.

Detecte a lacuna

Uma proposta inclui TMP36, MCP6002, ADC e firmware, mas não inclui LED, resistor nem outro atuador de saída. Qual requisito fica sem bloco responsável?

Passo 2 de 9

Uma origem de alimentação, caminhos explícitos

Defina a alimentação do monitor por uma única origem e torne explícitos os caminhos de energia e de referência compartilhada.

Declarar o caminho de energia

Uma fonte, uma topologia

Nesta configuração, a topologia de alimentação começa com uma única origem: a porta USB conectada ao Uno R3. O Uno distribui sua rede de 5 V para os blocos externos; todos compartilham a mesma referência GND.

Declare o caminho de energia separadamente do caminho de sinal:

  • USB → Uno R3;
  • pino 5 V do Uno → TMP36 e MCP6002;
  • GND do Uno → TMP36, MCP6002 e retorno dos sinais;
  • saída do MCP6002 → entrada ADC do Uno;
  • GPIO do Uno → resistor → LED.

O diagrama de energia deixa explícito quem alimenta quem. Ele não substitui o esquemático, nem demonstra ainda se a fonte suporta a corrente total: essa verificação virá no orçamento de consumo.

Topologia de referência

Diagrama em blocos no qual o USB alimenta o Uno, que distribui 5 V e GND ao sensor TMP36 e ao MCP6002; os sinais seguem do sensor ao amplificador e ao ADC.

A energia parte do USB para o Uno e é distribuída pela rede de 5 V da placa. Sinal e energia são caminhos distintos, mas precisam da mesma referência GND.

Evitar caminhos não previstos

Conexões que ficam fora desta configuração

Para esta configuração, não conecte simultaneamente outra fonte ao VIN, ao conector de alimentação ou ao pino 5 V do Uno. Essas conexões criariam fontes independentes potencialmente interligadas à rede já energizada pelo USB.

Também não trate o USB como “somente dados”: dependendo da conexão, ele pode transportar alimentação. A presença do conector não garante isolamento entre energia e dados, nem limita automaticamente a corrente de todos os caminhos externos.

Se um bloco estiver desligado, seus pinos de sinal não devem receber tensão de outro bloco sem que isso esteja previsto no contrato elétrico. Um sinal pode criar um caminho indireto de alimentação por estruturas internas de proteção. Portanto, mantenha alimentação, referência e estados das interfaces coerentes.

Atenção

Limite desta decisão

Antes de montar, registre a regra de topologia: USB é a única origem; o 5 V do Uno alimenta sensor e condicionamento; todos os blocos usam GND comum.

Isso é uma decisão arquitetural, não uma confirmação de capacidade de corrente, queda de tensão ou comportamento sob falhas. Esses limites serão analisados depois, com dados e condições declarados.

Escolher a arquitetura coerente

Verifique a topologia

Qual diagrama representa a topologia de referência sem unir fontes independentes?

Selecione o diagrama correto.

Passo 3 de 9

Contratos elétricos entre sensor, amplificador e ADC

Especifique contratos elétricos verificáveis entre TMP36, MCP6002 e ADC, distinguindo condições nominais, operação garantida e limites absolutos.

Definir o contrato antes de conectar

Uma ligação precisa de condições

Um contrato elétrico é o acordo verificável entre quem produz um sinal e quem o recebe. Para cada interface, registre:

  • direção e grandeza do sinal;
  • faixa prevista em relação ao GND comum;
  • alimentação e condições de operação;
  • carga ou impedância vista pelo produtor;
  • corrente contínua ou transitória relevante;
  • faixa de funcionamento garantida e limites de sobrevivência.

Assim, “saída de 0 a 5 V” é uma descrição incompleta: não informa a referência, a carga, a alimentação que torna a afirmação válida nem se 5 V é faixa de conversão, condição de operação ou máximo absoluto.

Neste step, o contrato é uma análise para a configuração alimentada por USB em 5 V. Ele estabelece compatibilidade entre blocos, mas ainda não escolhe numericamente o ganho nem calcula o erro total da medição.

A ligação é mais que um fio

Diagrama da cadeia TMP36, MCP6002 e ADC, com GND comum e símbolos para faixa de tensão, alimentação, carga, corrente e aquisição.

Cada interface precisa declarar o que o produtor entrega e o que o consumidor admite.

Fixar sinal e categorias de especificação

Sensor e versão do componente

Na configuração de referência, o TMP36 é alimentado pela rede de 5 V e entrega uma tensão em relação ao GND comum. Use seu modelo nominal para definir o sinal esperado:

  • a 0 °C: 0,500 V;
  • sensibilidade nominal: 10 mV/°C;
  • na faixa do monitor, de 0 a 50 °C: 0,500 V a 1,000 V.

Esses números são nominais: descrevem o sinal previsto, não uma garantia de exatidão. A pinagem, a orientação e as condições de alimentação devem ser conferidas na folha de dados da versão do TMP36 efetivamente escolhida. Um encapsulamento TO-92 semelhante não garante a mesma ordem de terminais.

O MCP6002-I/P opera entre 1,8 V e 6,0 V; nesta arquitetura, VDD é a rede de 5 V e VSS é GND.

Categorias de valores

Classifique cada valor antes de empregá-lo no contrato. Uma condição de sobrevivência nunca deve se tornar a meta de funcionamento.

Valores nominais apoiam previsões; limites garantidos sustentam compatibilidade; máximos absolutos apenas não devem ser excedidos.
CategoriaPapel no contratoExemplo no caso
NominalModelo inicial do sinalTMP36: 0,500 V a 0 °C
Operação garantidaFaixa e condição para funcionarMCP6002: entrada dentro do modo comum especificado
Restrição de projetoMargem escolhida pela arquiteturaSaída do condicionamento limitada a 4,20 V
Máximo absolutoLimite de sobrevivência, não de usoPino do ATmega328P: −0,5 V a VCC + 0,5 V

Dica

Não projete no máximo absoluto

O máximo absoluto do pino do microcontrolador não define a faixa aceitável de medição. Perto dele podem atuar estruturas internas de proteção, sem que a aquisição permaneça especificada. Da mesma forma, a tensão nominal do TMP36 não substitui suas tolerâncias, seus limites de alimentação nem suas condições de uso.

Verificar o sensor contra o amplificador

TMP36 → MCP6002: compatibilidade demonstrada

A folha de dados do MCP6002-I/P fornece limites que permitem verificar esta ligação sem assumir que “rail-to-rail” resolve tudo. Para a versão industrial, os limites abaixo valem na faixa de temperatura de −40 °C a +85 °C, nas condições de ensaio indicadas.

Compare a faixa que o TMP36 produz com a faixa que a entrada do amplificador admite.

A faixa de 0,500 V a 1,000 V fica inteiramente dentro da faixa de modo comum garantida do MCP6002.
GrandezaProdutor ou condiçãoLimite garantidoConclusão
Sinal produzidoTMP36 nominal, 0 a 50 °C0,500 a 1,000 VFaixa a receber
Modo comum da entradaMCP6002-I/P; VDD de 2,7 a 6,0 VVSS − 0,3 V a VDD + 0,3 VEm 5 V: −0,3 a 5,3 V
CompatibilidadeVSS = GND; VDD nominal = 5 V0,500 a 1,000 V dentro de −0,3 a 5,3 VCompatível com margem
Carga do sensorEntrada não inversora do MCP6002Corrente de polarização de entrada muito baixa; sem carga resistiva adicional nesta interfaceNão adicionar carga sem revisar o contrato

Exemplo

Duas verificações diferentes

A conclusão anterior depende de condições explícitas: GND comum, TMP36 e MCP6002 alimentados pela mesma rede de 5 V, e nenhuma rede adicional conectada à saída do sensor. A faixa de modo comum confirma que a entrada do MCP6002 aceita o sinal; ela não confirma, por si só, a excursão que sua saída conseguirá entregar ao ADC.

Entrada aceita não significa saída ilimitada

Comparação entre a faixa de entrada de 0,5 V a 1,0 V, o modo comum permitido do MCP6002 e a excursão de saída necessária até o ADC.

Modo comum da entrada, excursão de saída e faixa de conversão do ADC são condições separadas.

Fechar o contrato até o ADC

MCP6002 → ADC: excursão sob carga

A saída do MCP6002 deve respeitar simultaneamente a carga, sua excursão garantida e a aquisição do ADC. Para carga de 10 kΩ ligada a VDD/2, a tabela de características DC do MCP6002-I/P garante excursão de saída até 0,15 V acima de VSS e até 0,15 V abaixo de VDD, para VDD entre 2,7 V e 5,5 V e temperatura de −40 °C a +85 °C.

Na condição conservadora que será usada na arquitetura, VDD = 4,75 V. Logo, essa garantia corresponde a aproximadamente 0,15 V a 4,60 V sob a carga declarada. A faixa de projeto reservada para a saída do condicionamento, até 4,20 V, cabe nesse intervalo; restam 0,40 V até o limite superior garantido. A escolha do ganho que leva a essa faixa será feita no próximo step.

Exemplo

Referência, aquisição e limite do pino

O ADC não recebe apenas uma tensão estática. Durante a aquisição, seu capacitor interno demanda corrente transitória da fonte. Por isso, mantenha a resistência série total entre a saída do MCP6002 e A0 em até 1 kΩ nesta configuração. Esse valor é mais restritivo que a recomendação usual de fonte de até 10 kΩ e preserva margem para a aquisição.

Com AVCC como referência, a faixa normal de conversão é de 0 a AVCC. “5 V” é apenas o valor nominal da rede: AVCC não deve ser tratado como exatamente 5,000 V. Além disso, a faixa de conversão não substitui os limites elétricos do pino; o máximo absoluto do ATmega328P é uma restrição de sobrevivência, não uma faixa de operação.

Contrato elétrico inicial da cadeia

Use esta declaração como contrato inicial. Se alimentação, carga, resistência série, componente ou referência mudar, refaça a verificação.

A compatibilidade é sustentada por faixas e condições, não apenas por nomes de componentes.
InterfaceFaixa e referênciaCondições declaradasConclusão
TMP36 → entrada +0,500 a 1,000 V em relação ao GNDMCP6002-I/P, VDD nominal 5 V; modo comum garantido de VSS − 0,3 V a VDD + 0,3 VCompatível
Saída MCP6002 → A0Até 4,20 V em relação ao GNDVDD conservador 4,75 V; carga de referência de 10 kΩ a VDD/2; excursão garantida até 4,60 VCompatível, com 0,40 V de margem superior
Saída MCP6002 → aquisiçãoSinal analógico para A0Resistência série total até A0 de no máximo 1 kΩFonte adequada à aquisição declarada
A0 → ADC0 a AVCC para conversãoAVCC selecionada; valor nominal de 5 V não presumido exatoConversão e limites do pino são checagens distintas

Identifique a lacuna crítica

Qual proposta deixa o contrato da interface MCP6002 → A0 tecnicamente incompleto?

Compare o que cada proposta afirma com as condições necessárias à compatibilidade.
PropostaO que declaraSituação
ASaída de até 4,20 V em relação ao GND; VDD = 4,75 V; carga de 10 kΩ a VDD/2; resistência série até A0 de 1 kΩ; ADC com AVCCContrato completo
BA saída vai para A0 e fica abaixo de 5 VContrato incompleto
CSaída até 4,20 V em relação ao GND; ADC com AVCC; resistência série até A0 de 1 kΩAinda falta declarar carga e condição de excursão

Consolidar a leitura dos contratos

Prática: ler a categoria correta

Associe cada afirmação à categoria que ela representa no contrato.

A classificação impede que uma previsão ou limite de sobrevivência seja usado como garantia de operação.
AfirmaçãoCategoria
TMP36 fornece 0,500 V a 0 °C no modelo usadoValor nominal
MCP6002 aceita modo comum de VSS − 0,3 V a VDD + 0,3 V nas condições especificadasLimite de operação garantido
Pino do ATmega328P não deve ultrapassar −0,5 V a VCC + 0,5 VMáximo absoluto
Saída do condicionamento limitada a 4,20 V nesta arquiteturaRestrição de projeto

Passo 4 de 9

Escolher o ganho sem consumir as margens

Converter os extremos nominais do TMP36, comparar a carga real da saída com a condição garantida do MCP6002 e selecionar um ganho não inversor que preserve margens para o amplificador e o ADC.

Extremos da cadeia analógica

Converter os extremos da faixa

Da temperatura à tensão do sensor

A faixa útil do caso é 0 a 50 °C. Para o TMP36, use o modelo nominal já adotado:

V_sensor = 0,500 V + (0,010 V/°C × T)

Assim:

  • 0 °C → 0,500 V;
  • 50 °C → 1,000 V.

No condicionador não inversor, o ganho atua sobre a tensão inteira do sensor:

V_out = G × V_sensor

Logo, ele amplia não apenas a variação de 500 mV na faixa, mas também o offset nominal de 500 mV existente a 0 °C. Escolher o maior ganho somente para ocupar mais códigos do ADC pode aproximar a saída dos limites do amplificador antes de chegar aos 50 °C.

Esta análise usa valores nominais e limites elétricos declarados para selecionar uma configuração compatível. Ela ainda não comprova erro total, calibração nem desempenho medido.

O offset também recebe ganho

Diagrama da faixa de temperatura passando pelo TMP36, por um amplificador não inversor e pelo ADC; a faixa do sensor começa acima de zero e é integralmente multiplicada.

O ganho multiplica a faixa inteira do TMP36: o offset nominal de 500 mV e a variação causada pela temperatura.

Encontrar o teto de ganho

Construir um teto verificável

Limite garantido, teto do ADC e margem escolhida

Na condição conservadora desta arquitetura, a mesma rede alimenta MCP6002 e AVCC. Use VDD = AVCC = 4,75 V.

Para o MCP6002-I/P, a especificação usada no contrato anterior garante excursão entre VSS + 0,15 V e VDD − 0,15 V, com R_L = 10 kΩ ligado a VDD/2, para VDD entre 2,7 V e 5,5 V. Em 4,75 V, o limite superior garantido é:

4,75 − 0,15 = 4,60 V.

Isso não é o teto escolhido para o projeto. Adote duas margens explícitas:

  • condicionamento: 0,40 V abaixo da excursão garantida → 4,20 V;
  • ADC: 0,50 V abaixo de AVCC → 4,25 V.

A interseção impõe o teto de projeto de 4,20 V. Portanto, como o TMP36 chega nominalmente a 1,00 V, o ganho nominal deve ser no máximo 4,2. Esse valor chega ao teto; uma escolha abaixo dele preserva margem adicional.

O que cada limite significa

Compare os limites sem confundir uma garantia do componente com uma decisão de projeto.

O menor teto de projeto é o critério para escolher o ganho; ele não substitui o limite garantido do amplificador.
ReferênciaValorPapel na decisão
Excursão garantida MCP60024,60 VLimite do componente em VDD = 4,75 V e RL = 10 kΩ para VDD/2
Faixa elétrica do ADC0 a 4,75 VFaixa de conversão com AVCC como referência
Teto de projeto do amplificador4,20 V4,60 V menos margem escolhida de 0,40 V
Teto de projeto do ADC4,25 V4,75 V menos margem escolhida de 0,50 V
Teto aplicável4,20 VMenor dos dois tetos de projeto

Confirmar a carga e registrar a decisão

Exemplo

Verificar a carga real da saída

Escolha inicial: ganho 4

Para o não inversor, escolha Rf = 30 kΩ e Rg = 10 kΩ:

G = 1 + Rf/Rg = 4

Nos extremos nominais, a saída prevista é 2,00 V a 4,00 V. A malha de realimentação também é uma carga da saída: como a entrada não inversora idealmente não consome corrente, o caminho de saída para GND é Rf + Rg = 40 kΩ.

No extremo alto escolhido:

I_malha = 4,00 V / 40 kΩ = 0,100 mA

A entrada A0 não acrescenta uma carga resistiva de 10 kΩ. Sua corrente contínua é desprezível; a corrente transitória do capacitor de aquisição continua tratada pelo contrato já definido, com resistência série total de até 1 kΩ.

Na condição de ensaio da especificação, para a saída em 4,60 V, a carga de 10 kΩ ligada a VDD/2 exige:

I_ensaio = (4,60 − 2,375) V / 10 kΩ = 0,223 mA

Logo, os 0,100 mA contínuos da malha real são menores que os 0,223 mA da condição garantida. Sem outras cargas DC declaradas, a garantia de excursão cobre essa carga contínua. Isso não transforma a especificação em prova de todos os transientes do ADC.

Calcule a carga da malha

Com Rf = 30 kΩ e Rg = 10 kΩ, complete a corrente contínua exigida da saída pelo caminho de realimentação quando a saída está em 4,00 V: ____ mA.

Use a série Rf + Rg: a corrente percorre 30 kΩ e 10 kΩ até GND.
GrandezaValor
Tensão de saída4,00 V
Resistência da malha40 kΩ
Corrente da malha0,100 mA

Aplicar o critério de margem

Determine o ganho-limite

Com o TMP36 em 50 °C, sua saída nominal é 1,00 V. Qual ganho máximo levaria a saída exatamente ao teto de projeto de 4,20 V?

Responder com o ganho-limite

Digite apenas o valor do ganho nominal.

Escreva pelo menos 1 caracteres (0/1).

Justifique a escolha de ganho

Por que o ganho 4,5 deve ser rejeitado como escolha inicial nesta configuração, mesmo que sua saída nominal de 4,50 V ainda seja menor que 4,60 V?

Escreva pelo menos 80 caracteres (0/80).

Passo 5 de 9

Contratar também os estados fora da operação normal

Defina os estados de reset, inicialização e informação indisponível, distinguindo-os da operação com dados válidos.

Além da leitura nominal

Estados também fazem parte do contrato

Um contrato de interface não termina na operação normal. Para o monitor, declare o comportamento em quatro estados:

  • Reset: o microcontrolador ainda não executa a lógica da aplicação.
  • Inicialização: o firmware configura periféricos e aguarda a primeira aquisição utilizável.
  • Operação válida: há uma aquisição aceita pelo critério definido para o sistema.
  • Informação indisponível: ainda não existe leitura aceita ou a aplicação decidiu que a informação não pode ser usada.

Assim, um sinal elétrico presente no ADC não equivale automaticamente a uma medição válida. A validade é uma decisão do contrato de firmware, baseada nas condições que ele consegue observar.

Estados da interface

Diagrama de estados do monitor: reset leva à inicialização, que pode resultar em operação válida ou informação indisponível.

O mesmo hardware pode apresentar níveis elétricos em todos os estados; o contrato define o que a aplicação considera utilizável.

Ausência de informação válida

Atenção

Plausível não é comprovado

Considere a entrada analógica desconectada. Ela pode ficar flutuante, captar interferência ou reter carga e, por coincidência, produzir um código dentro da faixa esperada. Portanto, um valor aparentemente plausível não demonstra que o sensor esteja conectado nem que a temperatura seja válida.

O contrato deve separar:

  • nível presente: tensão que o ADC conseguiu converter;
  • dado válido: informação que atende aos critérios explicitamente disponíveis na arquitetura.

Se esta configuração não possui circuito ou diagnóstico capaz de detectar certa desconexão, registre essa limitação. Não prometa detectar toda falha de um sensor analógico apenas pela leitura do ADC.

Exemplo

Redação verificável

Exemplo de política inicial:

Antes da primeira aquisição aceita, e enquanto não houver informação válida segundo os critérios implementados, a indicação de temperatura permanece apagada. Uma leitura do ADC, isoladamente, não confirma a integridade da ligação do TMP36.

Essa redação define o comportamento observável sem alegar uma capacidade de diagnóstico que a arquitetura não oferece.

LED: reset não é operação

O limite da garantia por firmware

Para um LED ativo em nível alto, o contrato deve registrar a cadeia completa: GPIO em nível alto → resistor limitador → LED → referência. Após o firmware configurar o pino como saída, ele pode comandar LOW para apagar e HIGH para acender.

Durante reset, porém, o GPIO não está sob o controle normal da aplicação. O firmware só atua depois que começa a executar e configura o pino. Logo, “o código começa apagando o LED” não é garantia de LED apagado durante todo o reset — inclusive em uma reinicialização ligada à conexão USB.

Dica

Contrato da indicação

Se for exigido que o LED fique apagado também durante reset, isso precisa de uma condição elétrica definida no hardware, não apenas de uma instrução no firmware. A solução exata depende do pino e da topologia; valide-a contra as características de reset e a folha de dados.

Além disso, registre o resistor e a corrente prevista do LED. O nível lógico, o resistor, a polaridade e a corrente fazem parte do mesmo contrato de saída.

Reset e GPIO configurado

Comparação entre GPIO em reset, cujo estado do LED pode não ser garantido apenas pelo firmware, e GPIO configurado, que controla o LED ativo em nível alto.

A decisão de firmware vale após a configuração do GPIO; uma exigência anterior a isso pede análise elétrica da polarização.

Decida sem prometer demais

Verifique a promessa

Qual afirmação é tecnicamente defensável para esta arquitetura?

Passo 6 de 9

Dividir o firmware por responsabilidades

Distribua as funções pelo fluxo de dados

Módulos com uma responsabilidade clara

O firmware não deve misturar leitura do ADC, conversão física, regra do LED e mensagens de diagnóstico em um único trecho difícil de revisar. Separe-o por responsabilidade:

  • Aquisição: lê o ADC e publica uma amostra com código bruto, instante e validade.
  • Conversão: transforma a amostra em tensão e temperatura usando a referência e o ganho declarados.
  • Decisão de indicação: aplica a política do LED somente a uma medição válida.
  • Diagnóstico: registra ou transmite dados publicados; observa o fluxo, mas não comanda a medição.

Essa divisão deixa claro onde cada decisão ocorre. Também impede, por exemplo, que a conversão seja feita uma vez no módulo de medição e novamente, de forma diferente, no módulo do LED.

Fluxo de dados, não uma sequência monolítica

Diagrama com aquisição, conversão, decisão do LED e saída em sequência; diagnóstico observa os dados por um ramo separado.

O diagnóstico consome dados publicados sem redefinir a aquisição, a conversão ou a decisão de indicação.

Mantenha unidade, validade e configuração juntas

Contrato de dados entre módulos

O contrato entre módulos deve preservar o significado da informação. Uma amostra útil não é apenas um número: registre o código bruto do ADC, a tensão calculada quando aplicável, a temperatura em °C, a validade e o instante de aquisição.

A aquisição publica o código bruto e o instante. A conversão, em um único local, usa a referência do ADC e o ganho analógico da configuração identificada. Assim, produz a tensão estimada do sensor e a temperatura, sem que outro módulo divida novamente pelo ganho ou aplique outra referência.

A decisão do LED recebe temperatura e validade. Se a leitura não for válida — inclusive antes da primeira aquisição aceita — ela aplica o estado apagado definido no contrato de indicação; não interpreta um número antigo ou aparentemente plausível como confiável.

Exemplo de dados publicados

Um contrato mínimo usa tipos simples e mantém a validade como parte explícita dos dados publicados. A referência e o ganho pertencem à conversão, não à decisão do LED.

cpp
struct AmostraAdc {
  uint16_t codigo;
  unsigned long instanteMs;
  bool valida;
};

struct MedicaoTemperatura {
  float tensaoSensorV;
  float temperaturaC;
  unsigned long instanteMs;
  bool valida;
};

// Valores nominais da configuração identificada.
const float VREF_ADC_NOMINAL_V = 5.0f;
const float GANHO = 4.0f;

Dica

Quem pode decidir o quê

A indicação não recalcula a temperatura nem escolhe outra referência. Ela decide a saída apenas a partir de temperaturaC, valida e da política temporal já definida.

A validade é a autorização para consumo: se uma conversão falhar, sua saída deve ser marcada explicitamente como inválida. Assim, uma estrutura reutilizada não permite que a decisão do LED trate uma temperatura anterior como atual.

O diagnóstico pode enviar os mesmos campos pela UART, mas não deve bloquear indefinidamente a atualização periódica. Ele é consumidor do fluxo: não autoriza, reinicia nem substitui a medição.

Pratique o encadeamento das responsabilidades

Prática: ordem do caminho principal

Organize o caminho que determina o estado do LED. Considere que o diagnóstico observa os dados publicados em paralelo, sem entrar nesta sequência de comando.

Ordene o fluxo de uma atualização válida:

  1. Atualizar o GPIO do LED
  2. Converter para tensão e temperatura com referência e ganho declarados
  3. Adquirir e publicar código bruto, instante e validade
  4. Aplicar a política de indicação à medição válida

Aplique o contrato em um trecho curto

Prática: conversão com validade explícita

Complete a função do módulo de conversão. Ela deve tornar a saída inválida antes de rejeitar uma amostra inválida. Portanto, mesmo que a estrutura medida tenha sido usada em uma conversão anterior, a decisão do LED não poderá reutilizá-la como uma medição válida.

A referência do ADC e o ganho aparecem uma única vez na conversão. A decisão de indicação recebe o resultado pronto; ela não refaz essa conta.

Complete a conversão sem dado obsoleto

Preencha os elementos que impedem o reaproveitamento de uma medição anterior como válida e mantêm o ganho em um único módulo.

cpp
bool converterTemperatura(const AmostraAdc& amostra,
                          MedicaoTemperatura& medida) {
  medida.valida = ;
  medida.instanteMs = amostra.instanteMs;

  if () return false;

  float vSensor = amostra.codigo *
      (VREF_ADC_NOMINAL_V / 1023.0f) / ;

  medida.tensaoSensorV = vSensor;
  medida.temperaturaC = (vSensor - 0.500f) / 0.010f;
  medida.valida = true;
  return true;
}

Passo 7 de 9

Resolver conflitos de recursos antes da montagem

Revisão da alocação de recursos compartilhados do Uno R3 antes da montagem.

Mapear antes de conectar

Recursos também têm contratos

Antes da montagem, transforme a alocação em um mapa de recursos. Para cada recurso do Uno R3, registre: quem o usa, qual configuração ele exige e quais outros usos ficam proibidos ou condicionados.

Esse mapa não é uma lista de pinos solta. Ele revela configurações globais compartilhadas. Uma decisão local — por exemplo, trocar a referência do ADC ou reconfigurar um temporizador — pode alterar o contrato de outro bloco que aparentemente não usa o mesmo pino.

Nesta configuração inicial, o condicionamento entrega o sinal ao ADC; o firmware converte a leitura e decide a indicação; o diagnóstico usa a serial sem assumir o controle da aquisição.

Visão de recursos compartilhados

Diagrama de uma placa estilo Uno com A0 para sinal analógico, D8 para LED, D0/D1 ligados à serial USB, Timer0 para base de tempo e uma referência compartilhada do ADC.

Um pino pode ser dedicado; uma configuração como a referência do ADC pode afetar vários módulos.

Revisar restrições e dependências

Mapa inicial de recursos

Uma alocação inicial coerente preserva os contratos definidos para o monitor. Registre também as restrições: elas tornam revisável qualquer alteração futura de hardware ou firmware.

Exemplo de mapa para a configuração inicial; os pinos são escolhas de projeto, não exigências universais.
RecursoResponsávelConfiguração inicialRestrição
A0 / ADC0AquisiçãoEntrada do condicionamentoNão usar como GPIO nem mudar a referência sem revisar a conversão
Referência ADCAquisiçãoAVCC, faixa nominal de 0 a 5 VConfiguração compartilhada por todas as leituras ADC
D8IndicaçãoGPIO de saída para LED ativo altoNão compartilhar com periférico que exija outra função
Timer0Base de tempoMantido para millis()Não reconfigurar se a atualização usa millis()
D0/D1 + UARTDiagnósticoUSB serialNão ligar carga ou sinal externo incompatível nesses pinos

Configuração global não é recurso livre

Três conflitos frequentes

  • Referência do ADC: um módulo que muda para referência interna torna inválida a conversão que pressupõe AVCC. A leitura pode continuar retornando números, mas com escala errada ou com risco de exceder a faixa admitida.
  • Timer0: alterar seus registradores para criar outra base de tempo pode comprometer millis() e, com isso, o período de atualização do monitor. Se millis() é parte do contrato, Timer0 fica reservado.
  • D0/D1: são a UART usada pela interface USB serial. Atribuí-los a um LED, sensor ou outro circuito externo pode interferir na gravação, nas mensagens de diagnóstico ou nos dois.

Compartilhar só é aceitável quando há uma decisão única, documentada e compatível. Duas decisões independentes que exigem configurações diferentes caracterizam conflito.

Detectar uma decisão incompatível

Decida pela compatibilidade

Considere esta proposta de alteração: para “aumentar a resolução”, um módulo modifica a referência do ADC para a referência interna. A aquisição do TMP36 continua em A0, e sua conversão para temperatura permanece calculada para AVCC. O LED segue em D8 e a atualização usa millis().

Qual correção preserva os contratos existentes?

Qual é a ação correta?

Passo 8 de 9

Registrar a configuração inicial

Consolide uma configuração inicial identificada, vinculando escolhas de hardware e firmware às justificativas, condições de validade e dependências de revisão.

O que o registro representa

Uma base comum para o projeto

Uma configuração inicial é uma fotografia identificada das decisões de hardware e firmware que foram analisadas em conjunto. Não é apenas uma lista de componentes, uma BOM ou um esquemático isolado.

Ela registra escolhas, suas justificativas, as condições em que valem e os parâmetros que o firmware precisa usar. Assim, um cálculo ou ensaio futuro pode declarar exatamente a qual combinação de hardware e firmware se aplica.

Se uma decisão mudar, crie ou identifique uma revisão e atualize seus dependentes antes de comparar previsões e resultados.

Configuração conecta decisões dependentes

Diagrama de um registro central ligado ao sensor, condicionamento, USB, Uno, LED com resistor e parâmetros de firmware.

O registro mantém rastreáveis as decisões que precisam continuar coerentes entre hardware e firmware.

Dica

Previsão não é medição

Mantenha previsão e evidência medida separadas. Por exemplo, “saída nominal prevista do condicionamento: 2,0 V a 4,0 V” é uma conclusão de análise para a configuração declarada. Uma leitura futura no multímetro será uma evidência medida, com instrumento e condições próprios.

A configuração é a entrada comum para os próximos cálculos e ensaios; ela não comprova, por si só, que o circuito foi montado ou validado.

O registro mínimo inclui a carga digital

Campos mínimos da configuração

Registre uma identificação local para a combinação analisada e, em cada linha, inclua a escolha, a justificativa e a condição de validade. O exemplo usa CFG-01 como nome da configuração inicial.

Exemplo de registro conciso para a configuração CFG-01.
ÁreaEscolha registradaJustificativa e condição de validade
IdentificaçãoCFG-01; revisões locais de hardware e firmwareConclusões valem somente para essas revisões
ComponentesTMP36; MCP6002-I/P; Uno R3Pinagem e versões conferidas nas folhas de dados usadas
AlimentaçãoUSB do Uno como única origem de 5 VSem VIN, jack ou injeção externa no pino 5 V
CondicionamentoRf = 30 kΩ; Rg = 10 kΩ; ganho 4VDD = AVCC = 4,75 V no extremo conservador
Faixa previstaSaída nominal: 2,0 V a 4,0 VPara TMP36 nominal entre 0 e 50 °C
AquisiçãoA0; ADC com referência AVCCConversão usa AVCC nominal e ganho 4
IndicaçãoD8, ativo alto; R1 = 1,0 kΩ; LED vermelhoApagado até a primeira medição válida
Tempo e diagnósticoAtualização com millis(); UART em D0/D1Timer0 e D0/D1 permanecem reservados

Exemplo

Contrato elétrico completo do LED

O contrato de D8 precisa identificar a carga, não apenas dizer “LED vermelho”. Para a CFG-01, declare um LED vermelho cuja folha de dados informe Vf de 1,8 V a 2,2 V a 3 mA e corrente contínua admissível de pelo menos 3,2 mA. A ligação é: D8 → R1 de 1,0 kΩ → ânodo do LED; cátodo → GND.

Com rede nominal de 5,0 V, a corrente prevista varia aproximadamente de 2,8 mA a 3,2 mA. No ATmega328P a VCC = 4,5 V, a característica de saída garante VOH ≥ 4,2 V quando o pino fornece até 20 mA. Mesmo no nível alto mínimo garantido e com Vf = 2,2 V, a corrente é cerca de 2,0 mA. A pior corrente prevista, 3,2 mA, fica muito abaixo dos 20 mA usados nessa condição garantida; não use máximo absoluto como meta.

D8 é PB0. Registre também o limite agregado aplicável: a soma das correntes fornecidas pelo grupo que inclui PB0 não deve exceder 150 mA, e a corrente total fornecida por VCC do microcontrolador não deve exceder 200 mA. Esta configuração prevê só esse LED; outros GPIOs exigem nova soma.

Propagação de alterações

Alterações propagam revisões

Uma alteração não é local quando muda o significado elétrico ou numérico de outro bloco. Alterar somente o esquemático ou somente uma constante cria uma configuração híbrida, que não corresponde à versão analisada.

Se Rf ou Rg mudar, revise o ganho, a faixa prevista na saída do MCP6002 e a constante GANHO. Se a referência do ADC mudar, revise a escolha elétrica, VREF_ADC_NOMINAL_V e a conversão de código bruto para tensão. O mesmo raciocínio vale para pinos, topologia de alimentação e carga do GPIO.

Dependências que exigem revisão

Use estas relações como verificação mínima de impacto antes de aceitar uma alteração.

Uma decisão modificada exige revisar seus registros dependentes.
AlteraçãoRegistros a revisarPor quê
Rf ou RgGanho, faixa prevista e `GANHO`A escala entre sensor e ADC muda
Referência do ADCAquisição, `VREF_ADC_NOMINAL_V` e conversãoA escala entre código e tensão muda
Pino do LEDMapa de pinos e inicialização GPIOO firmware passa a comandar outro recurso
LED ou R1Corrente prevista e contrato do GPIOA carga da saída digital muda
Origem de alimentaçãoCaminhos de energia e condições de validadeA topologia e as premissas elétricas mudem

Revise antes de reutilizar a configuração

Alteração e registro dependente

Associe cada alteração ao registro que necessariamente precisa ser revisto para preservar a CFG-01.

Toque em um item e depois no par correspondente.

Complete a revisão do firmware

Se a CFG-01 trocar a referência AVCC por outra referência e também mudar Rf, os dois parâmetros de firmware que precisam ser revistos são VREF_ADC_NOMINAL_V e ____.

Passo 9 de 9

Revisão final: defender uma arquitetura coerente

Revisão integrada de uma proposta de monitor, com correções justificadas e consolidação da configuração inicial.

Uma revisão olha o sistema inteiro

Checklist de coerência

Revisão integrada

Uma arquitetura só está pronta para a próxima etapa quando suas decisões não se contradizem. Revise cinco dimensões em conjunto:

  1. Responsabilidade: sensor mede; condicionamento adapta o sinal; ADC converte; firmware interpreta e decide; LED indica.
  2. Interfaces: cada ligação declara direção, faixa, referência comum, carga e estado esperado.
  3. Margens: sinal amplificado deve permanecer na região útil do amplificador e do ADC, não apenas abaixo de um limite idealizado.
  4. Estados: reset, inicialização e dado inválido também têm comportamento definido.
  5. Recursos compartilhados: alimentação, referência do ADC, UART e temporizadores exigem decisões compatíveis.

A pergunta de revisão não é “cada bloco parece funcionar?”. É: os contratos continuam válidos quando os blocos são conectados?

Arquitetura revisada por contratos

Diagrama de cinco blocos do monitor com caminhos separados de sinal, alimentação e informação, destacando margens entre condicionamento e ADC.

Revise caminhos e contratos entre blocos, não somente os componentes isolados.

Encontre e corrija as incompatibilidades

Caso integrado

Proposta para analisar

Um monitor de bancada mede 0 a 50 °C com TMP36, MCP6002, Arduino Uno R3 e LED.

A proposta declara: Uno alimentado por USB, mas também uma fonte externa de 5 V conectada ao pino 5V; ganho não inversor de 10; ADC com referência AVCC; LED ativo em nível alto no pino D1; mensagens de diagnóstico pela serial; e LED apagado antes da primeira medição válida.

Considere o TMP36 nominal: 0,50 V a 0 °C e 1,00 V a 50 °C. Localize os conflitos antes de qualquer montagem ou energização.

Correções de arquitetura

Os principais achados e a configuração que os corrige podem ser registrados assim.

Decisões de projeto; ainda não são evidências de funcionamento.
TemaInconsistênciaCorreção e justificativa
AlimentaçãoUSB e fonte externa injetada em 5 VUsar somente USB nesta configuração; declarar o caminho de 5 V e GND comuns.
CondicionamentoGanho 10 leva 0,50–1,00 V a 5,0–10,0 VAdotar ganho inicial 4: saída nominal 2,0–4,0 V; mantém margem, sujeita às condições declaradas do MCP6002.
UART / LEDD1 é TX da UART usada no diagnósticoReservar D0/D1 para serial e mover LED para um GPIO dedicado, por exemplo D8.
Estado inicialLED deve ficar apagado, mas reset deixa GPIO sem a decisão do firmwareDefinir política de reset; se apagado for obrigatório no reset, prever polarização externa apropriada além da configuração posterior do GPIO.
ADCAVCC tratado como exatamente 5 VRegistrar AVCC como referência selecionada; faixa do pino e valor efetivo da referência são verificações distintas.

Defenda as decisões

Aplicação final

Defenda a correção da proposta. Cite:

  • uma correção no caminho de alimentação;
  • o efeito do ganho 10 e uma alternativa que preserve margem;
  • o conflito de recurso do LED;
  • uma decisão para o estado antes da primeira medição válida.

Termine distinguindo o que foi definido por análise do que ainda precisará ser demonstrado posteriormente.

Escreva pelo menos 300 caracteres (0/300).

Fechamento e transição

Consolide antes de avançar

Registro mínimo da configuração inicial

No seu registro local, identifique a versão de hardware e firmware e anote, para cada decisão, escolha, justificativa e condição de validade. Para este caso, registre pelo menos:

  • TMP36 e versão consultada da folha de dados;
  • USB como origem exclusiva e caminhos de 5 V e GND;
  • MCP6002, ganho inicial 4 e razão de resistores 3:1;
  • faixa nominal prevista de 2,0 V a 4,0 V na saída do condicionamento;
  • ADC em A0 com AVCC como referência selecionada;
  • LED ativo alto em D8, resistor e política para reset/dado inválido;
  • D0/D1 reservados à UART e Timer0 sem reconfiguração.

Esse registro muda se mudar ganho, referência, pinos ou hardware correspondente.

Resumo

Síntese da arquitetura

  • Arquitetura coerente conecta responsabilidades e contratos sem conflitos de alimentação, faixa, estado ou recurso.
  • Uma única origem de alimentação e caminhos explícitos evitam interligar fontes independentes.
  • O ganho deve ser escolhido pelos extremos do sinal e pelas margens reais do amplificador e do ADC.
  • Reset e ausência de dado válido fazem parte do contrato de indicação.
  • A configuração registrada é uma previsão de projeto, não uma evidência de desempenho ou conformidade.
  • A seguir, essa configuração será usada como entrada para o orçamento de consumo por modo.

Tutorial concluído

Parabéns! Você concluiu: Arquitetura do sistema e contratos de interface

Você consolidou uma arquitetura coerente e identificou os contratos que precisam permanecer válidos na integração. A próxima etapa estima o consumo por modo a partir desta configuração.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso