Construindo Um Arduino Uno R3 Do A Partir Do Zero

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 60

Construindo um Arduino Uno R3 do a partir do zero

Eu estive me perguntando o que poderia ser interessante como uma série para escrever, que iria
ajudar as pessoas a entender o que este mundo de decisores é que vivemos, quais são as
possibilidades e o que se pode agora realizar com um pouco de previsão e atenção detalhe. Eu
queria abordar um tópico que tocou em muitas bases, desde o projeto até a fabricação do
processo de pensamento, mas ainda estava fundamentado em um assunto que era acessível
até mesmo a maioria dos iniciantes.

Então eu decidi construir um Arduino do zero.

Eu acho que este é um projeto interessante porque envolve fazer algo que eu normalmente não
faço: pegue o design de outra pessoa e tente reproduzi-lo. Eu tenho quatro coisas para usar
como referência para este ...

1. O esquema oficial de código aberto publicado por arduino.cc


2. A maneira oficial como os pinos e conexões são dispostos para a compatibilidade do
Shield
3. Um oficial real Arduino UNO R3 aqui para usar para comparação
4. O firmware publicado pelo arduino.cc
Além disso, a seleção de componentes, a maneira como eles são organizados, as considerações
de projeto que devem ser abordadas, a pesquisa em que os subsistemas são, como eles
funcionam, como eles se interconectam e como eles precisam ser definidos, é tudo em mim. Eu
vou precisar puxar para cima datasheets para verificar suposições feitas de ler o esquema,
também e uma vez que a placa está pronta para a fabricação, eu também vou começar a cavar
no firmware.
No final, vou publicar um conjunto completo de arquivos de projeto do KiCad, Gerbers de
produção que podem ser carregados para OSHPark, e uma lista de materiais com todos os
componentes válidos a partir do momento da produção (não tenho certeza se vou mantê-lo a
longo prazo, mas vamos ver). Eu também vou escrever todos os passos necessários para ir de
uma placa com uma pilha de componentes no shrink wrap (ou corte de fita, conforme o caso
pode ser), para um totalmente funcional Arduino. Desta forma, espero que outros possam
aprender e jogar com os arquivos e esperamos poder construir seu próprio clone Arduino UNO
R3.

Esquema do Arduino UNO R3


Como o Arduino é um projeto de hardware de código aberto, arduino.cc publica o esquema atual
e está disponível neste link: Arduino UNO R3 Esquema

Então ... ótimo. Tenho um esquema. Agora o que você faz com ele?

Acho que a primeira coisa que quero fazer é tentar identificar alguns dos subsistemas
principais. Eu sei que há um conector DC lá, então haverá algum tipo de regulação de tensão. Há
um conector USB, por isso alguns USB / Serial coisa estará lá. Claro que há o micro controlador
(doravante referido como o uC) também.

Eu acho que a impressão desta coisa, estilo de árvore morta, é provavelmente uma boa maneira
de ir. Estou incrivelmente grato ao arduino.cc por fazer esses esquemas públicos, mas vamos
ser reais, essas não são as coisas mais fáceis de ler. Muitos dos designadores de referência
("R3", "C1", etc.) são substituídos por números de peça, assim como as próprias
interconexões. Tenho certeza que seria um pouco mais fácil de ler se fosse codificado por cores,
ou dividido em folhas hierárquicas. Vou me lembrar de fazer isso quando eu chegar ao ponto de
desenhar meu próprio esquema.

Olhando para a impressão, há três subsecções óbvias. Há a entrada de alimentação do jack 9V


com regulação de tensão. Há a seção de gerenciamento de tensão, que evita que a tensão seja
proveniente do USB e do conector de 9V simultaneamente. Há o uC seção, composta de dois
uC's.
Indo um pouco mais fundo, eu quero ver quais são os pontos de interconexão entre os sistemas,
além de poder e terra - que sinais estão sendo comunicados. Acontece que existem apenas três
sinais compartilhados em comum entre os dois uC. Reset / Pin1 no 328P é conectado ao Pin13
/ PORTD7 no 16U2, o Rx serial / Pin2 / PORTD0 no 328P está conectado ao Tx serial / Pin8 /
PORTD3 no 16U2 e o Tx série / Pin3 / PORTD1 no 328P está conectado Para Serial Rx / Pin8 /
PORTD2 no 16U2. É isso aí.

Assim, isso significa que a seção de uC realmente quebra para baixo na interface USB-to-Serial
controlada pelo ATMEGA16U2, e o Arduino Brain ATMEGA328P-PU, que é a coisa que todos
nós pensamos como "Arduino".

Se você não está familiarizado com a forma como eu estou listando os pinos, "Serial Tx" é a
função do pino que é importante para nós, "Pin #" é o real número de pinos no circuito integrado
em si, e PORTD # é A forma como o pino seria referido na folha de dados do uC, e no código C
real.

Arduino UNO Esquemático R3 Fiddly Bits


Outras coisas a observar no esquema que são talvez incomuns para aqueles que não olham
para essas coisas dia após dia ...

Redes de resistores

A maioria dos resistores no esquema são listados como "RN #" seguido de uma letra. Estas são
"Resistor Networks", significando um monte de resistores individuais agrupados em um único
pacote. O "#" é o designador de referência, assim como R1, R2, exceto RN1 e RN2, e a letra
depois indica qual resistor individual na embalagem está sendo usado.

Valores do capacitor

Alguns dos capacitores na placa são listados em valores de nano-farad, que é 10 -9. Parece que
a maioria dessa são 100nF, que é um capacitor de 0,1uF, e a maioria dos que estão sendo
usados como capacitores by-pass.

Fusíveis comutáveis PTC

Há um par de fusíveis reinicializáveis no esquema, mas eles têm um símbolo incomum que você
pode não executar em muitas vezes ... tipo de uma caixa com uma barra através dele. Esses
são os pequenos componentes que quebram o circuito sempre que você inadvertidamente curto
circuita algo e ameaçam fritar seu computador sobre o cabo USB.

Na parte 2, eu começarei a cavar no subsistema de regulação de tensão.

Parte 2 - Subsistema de Regulador de Tensão


Na Parte 1, quebrei o esquema em subsistemas de tamanho de mordida, e aqui na parte 2, eu
vou começar a cavar no primeiro deles: o regulador de tensão.

Regulador de Voltagem LDO


Para aqueles que não estão familiarizados com o que faz um regulador de tensão, ele toma
alguma tensão de entrada DC, tipicamente de um conversor AC para DC na forma de uma
verruga de parede de plástico preto e cuspe alguma outra tensão menor. Idealmente, ele fornece
essa tensão de forma muito estável, independentemente de qualquer ruído que possa estar
presente no lado de entrada e independentemente do tipo de cargas que podem ser conectadas
ao lado de saída. Eles vêm em uma enorme variedade de diferentes formas e tamanhos e
especificações, e são provavelmente um dos componentes ativos mais adquiridos.

O "LDO" significa "Low Drop Out" tensão, o que significa que a tensão de entrada pode ser muito,
muito perto da tensão de saída. Obviamente, você não tem nada de graça, e o custo de regular
uma tensão é parte da própria tensão, então seu valor de entrada deve ser sempre maior do que
o valor de saída. A especificação que você procuraria seria o, você adivinhou, queda de
tensão. Há outras especificações importantes como corrente máxima, Razão de Rejeição de
Fonte de Alimentação, Rejeição de Ripple, Quiescente de Corrente e assim por diante, mas o
grande pai de especificações LDO é a queda de tensão. Vamos lidar com os outros se surgirem
durante o projeto.

No final, todo o subsistema LDO foi projetado para funcionar com tensões fornecidas através do
conector DC (grande coisa de plástico na borda da placa), ou através do pino V IN como
veremos. A tensão que você recebe do cabo USB é inteiramente uma história diferente.

Subsistema de Regulador de Tensão


Isto é como o subsistema de regulador de tensão aparece no esquema oficial ...
Mais à esquerda, é um componente chamado "Power Supply" com três pinos. Esse é o barril
jack que você ligar a verruga de parede.

Movendo-se para a direita, há um diodo, D1, que atua como um diodo de proteção de tensão
inversa. As verrugas de parede vêm em duas variedades, porque o deus nos odeia e quer-nos
fazer explodir nossa eletrônica: tensão positiva na parte externa da tomada e terra no meio, ou
terra na parte externa da tomada e voltagem positiva no meio. Vou precisar confirmá-lo olhando
para a folha de dados para o jack barril, mas eu suspeito que este é projetado para aceitar um
plug com voltagem no meio. Se você conectar o tipo errado, o diodo de proteção de tensão
inversa impedirá a eletricidade de conduzir na direção errada, salvando seu Uno de explodir (até
certo ponto). A designação "M7" no esquema significa que é um diodo retificador bastante padrão
1N4007, apenas em um pacote de montagem de superfície.

Depois de passar o teste de diodo, a tensão vai ao lado do regulador linear real, U1. Ele está
listado como um NCP117ST50T3G. Eu usei um NCP1117DT50 antes, e não sei qual é a
diferença entre os dois, mas eu suspeito que eles são muito semelhantes, e provavelmente
apenas uma diferença de forma física entre eles. Tenho que olhar para a folha de dados para
isso.

Você verá em ambos os lados do U1, existem alguns capacitores: PC1, PC2 e C2. Isso significa
"condensador polarizado" 1 e 2, e um capacitor cerâmico regular C2. PC1 e PC2 são 47uF e C2
é 0,1uF (100nF). Esta é uma configuração muito típica para um circuito de regulação de tensão
fixa. Em circuitos variáveis, existem resistores, bem como, que permitem personalizar a tensão
de saída, mas como tudo isso se preocupa é fornecer 5V limpo, tudo que você vê são
capacitores. Eles fornecem um poço de potencial elétrico que ajuda a manter as tensões de
entrada e saída estável. Essencialmente eles são bypass caps. Big, honkin', bypass caps. Agora,
por que seus valores são o que são, é algo que provavelmente se tornará claro ao consultar a
folha de dados NCP117.
Acima das duas tampas de mão direita, você verá a linha + 5V que se torna o trilho de energia
essencial para toda a placa Arduino. Em qualquer lugar que você vê "+ 5V" no esquema, eles
são todos interligados como um trilho de energia.

A última coisa pequena na subseção de esquema de LDO é um par de resistores de 1K


conectados em paralelo com um LED. Este é o LED que liga quando algo começa a fornecer 5V
para a placa, através da saída do regulador de tensão ou da conexão USB. Se o trilho de 5V é
energizado de alguma forma, este LED acende. As duas resistências 1K em paralelo formam
uma resistência equivalente a 500 ohms (procure "resistências em paralelo" se você não estiver
familiarizado com esse cálculo), limitando a corrente ao LED. Se você está se perguntando "por
que eles não usam apenas um resistor", bem, eles tinham um par de resistores 1K sobrando em
uma das redes resistor, então em vez de gastar dinheiro em outra parte, eles apenas usaram o
que tinham. Isso é engenharia!

Subsistema de Regulador de Tensão


Isto é o que o subsistema de LDO olha como depois que eu esbocei o mesmo esquema no
KiCad.
Todas as peças foram obtidas através de parts.io, e representam o melhor compromisso que eu
poderia conseguir entre baixo preço e baixo risco.

BOM (csv): Arduino UNO R3 Clone do Scratch - Subsistema de Regulação de Tensão

Subsistema de Regulador de Tensão


Barrel Jack

A primeira parte que eu procurei foi o jack barrel, rotulado como "DC21MMX" no esquema
oficial. A coisa é um unicórnio tão perto quanto eu posso dizer, não existe no meu nível de
compra. Então eu estou indo com uma alternativa 5mm OD / 2,1 milímetros ID barril jack que eu
usei antes de Würth Elektronik. Será compatível com a maioria das verrugas de parede lá fora,
tensão dentro, terra fora.

Regulador Linear IC

O próximo obstáculo foi o fornecimento do regulador linear. O número de peça que o Arduino
lista, NCP117ST50T3G, está disponível, mas mostra como um componente de alto risco
em parts.io, com uma classificação de risco de 3.2. Eu preciso encontrar um equivalente com
base na especificação, mas muito menor risco. Usando o motor de busca parts.io e procurando
ICs reguladores lineares, com uma tensão máxima de saída de 1.2V, há um LDO positivo fixado
de 5V com uma classificação de risco de 2 da ST Micro, a LD1117S50TR. Olhando para as
especificações para os componentes, é praticamente uma substituição direta, talvez até um
pouco melhor queda de tensão e manuseio atual. No final, ele tem que aceitar até 15V sem
dúvida, me dar uma saída fixa 5.0V, obter como baixíssima queda de tensão como pode, mesmo
em alta corrente, E ser capaz de fornecer até 500mA (embora isso é bem acima de qualquer
coisa que queremos o uC para tentar desenhar). Rejeição de ondulação e rejeição da fonte de
alimentação não são extremamente críticos, uma vez que o poder deve estar vindo de uma fonte
geralmente regulamentada já, a verruga de parede. Sei que isso não é garantido, mas acho que
vamos ficar bem.

Diodo de Proteção de Voltagem Reversa

O diodo é realmente um diodo retificador padrão, baixo V FORWARD em baixa corrente, e como a
corrente máxima que vamos desenhar é 500mA ou menos (espero que muito menos) V F nunca
vai subir muito alto. Realisticamente, estamos falando sobre ter que tolerar uma tensão inversa
de 15V com algum tipo de pico potencial como um múltiplo de que, se algo é conectado em que
não deve ser. Estes diodos baratos têm níveis de tensão inversa de algo como 500V ou 800V de
AC ou DC.

Capacitores de entrada / saída do regulador

Escolher o direito LDO entrada e saída capacitores foi um pouco complicado. Não há nenhuma
explicação de por que as tampas no Arduino são 47uF em tamanho, e a folha de dados para o
LD117S50TR não menciona nada além de "10uF deve ser legal". O capacitor de entrada fornece
apenas poucos elétrons sobressalentes ... um monte de volts que podem ser extraídos se houver
um mergulho momentâneo no suprimento. O capacitor de saída forma um loop com o circuito
interno (coberto por detalhes excruciantes nesta Nota de aplicação da Texas Instruments), e a
Resistência Equivalentes em Serie (ESR) do capacitor é a especificação crucial - mais do que o
valor de capacitância (embora eu não Vá abaixo do 10uF eles lista). Nas fichas de dados para a
TI e ONSemiconductor componentes equivalentes, ambos afirmam que a ESR da tampa de
saída deve estar entre 0. 3Ω e 22Ω. Minha suspeita é que o tamanho 47uF não é nada especial
(talvez houvesse um desconto em 47uF caps. No dia em que tomaram a decisão de seguir em
frente com o design), e tudo o que você realmente tem a fazer é atingir o ESR correto. Eu
encontrei um bom baixo risco 47uF capacitor da Vishay em parts.io, MAL215371479E3 , com um
0,5 Ω ESR.

Parte 3 - Nomes de Redes no Esquemáticos

Na parte 2, cavamos no subsistema de regulador de tensão. Depois de pensar sobre isso um


pouco, eu não estava feliz com esse esquema, e queria acompanhar com uma revisão que
incluía novos nomes net e incluía o poder no LED que eu não tinha no primeiro.

Nomes de Redes no Esquemático


Net nomes, em um esquema, são uma maneira que você pode anotar as ligações reais entre as
áreas de seu projeto. Assim como você anota os componentes, como chamar um resistor "R1"
ou "R3", você pode rotular as redes para ajudá-lo a manter as coisas direitas.
Eu trago isso, porque existem várias tensões diferentes zinging em torno do Arduino. Há uma
conexão de 5V USB, há o potencial para ter uma fonte de tensão externa conectada ao jack
barril, você pode fornecer tensão no pino VIN, e você tem as tensões diferentes saindo dos
reguladores LDO. Meu ponto chave para perceber que eu precisava prestar atenção a isso,
envolveu trabalhar com a seção de gerenciamento de voltagem (coberto no próximo post). Notei
que havia uma rede chamada "VIN", mas percebi que eu não tinha um ponto correspondente no
esquema LDO, o que não fazia sentido. Em seguida, houve o USB 5V ferroviário, em oposição
ao regulado 5V e eu sabia que tinha de trazer a ordem do caos.

Plano de Energia Líquida


Olhando sobre o esquema, descobri que eu preciso listar quatro redes para manter os níveis de
tensão organizados corretamente.

 VIN: Fonte de tensão variável proveniente da tomada de barril ou do cabeçalho de pino V IN .


 USBVCC: fonte de tensão de 5V proveniente da tomada USB.
 5V_LDO: Fonte de tensão de 5V proveniente da saída do regulador de tensão fixo LD1117S50TR
5V.
 3V3_LDO: fonte de tensão de 3.3V proveniente do regulador de tensão fixo LP2985-33 3.3V
(coberto no próximo post).
Agora, quando eu adicionar essas conexões de tensão para o esquema, ele vai ter certeza que
eu faço corretamente, e não cruzar conectar nada como um idiota (porque eu sou um idiota). Se
eu apenas usei "+ 5V" há uma chance sólida que eu tentaria conectar 5V regulado algum lugar
que eu deveria colocar USB 5V.

Esquema do regulador de tensão revisado


Aqui está o novo Esquema do Subsistema de Regulador de Tensão.
A mudança óbvia, é que eu adicionei o Power On LED na extrema direita. Isto é tão simples
quanto possível ... assim que a saída do LD1117 ultrapassar o nível do LED V FORWARD com
corrente suficiente, acende-se.

A mudança menos óbvia é a net nomes. Eu adicionei VIN para a entrada do LDO, e adicionou
5V_LDO para a saída. Isso irá certificar-se de que os trilhos de voltagem corretos ir onde eles
devem ir.

Agora, eu não tinha certeza com base no esquema oficial, se VIN deve ir antes ou após o diodo
de proteção. Eu usei o meu multímetro e verificado por tonificar o caminho do sinal (vocês velhos
caras telco vai saber o que quero dizer por "tonificar a linha") a partir do cabeçalho do pino VIN
para pino 3 do LDO, confirmando que como uma conexão válida. Isso significa que ele vem
depois do diodo, porque eu não estaria lendo 0 Ohms se houvesse um diodo no caminho, meu
multímetro teria mostrado o V FORWARD para o diodo vez.

Aqui está a nova lista técnica, incluindo o poder na seção LED ...

BOM (csv): Arduino UNO R3 Clone do Scratch - Subsistema de Regulação de Tensão v2

Parte 4 - Gerenciamento de Conflitos de Voltagem

Na Parte 3, definimos os nomes de rede para as nossas tensões em preparação para poder
mantê-los bem classificados. Isso agora nos ajudará a resolver como manter as várias maneiras
de alimentar um Arduino de entrar em conflito.

O Problema de Fornecimento Duplo


O Arduino permite que você conecte uma fonte de tensão no conector de barril, através da porta
USB e através do cabeçalho do pino do protetor VIN e, embora seja bastante óbvio que
o conector V IN e o conector de barril não devem ser usados simultaneamente, há muitos Casos
onde você pode precisar manter o Arduino alimentado por uma bateria durante uma conexão
desconexão USB.

Imagine que você está fazendo alguma monitoração ambiental remota com o Arduino Uno, e
está armazenando os dados na memória. Você precisa coletar os dados de vez em quando,
então você vai para onde a placa está sentada e conectar seu laptop a ele para fazer o download
dos últimos números. O ato de conectar o USB não redefine a placa, então você sabe que pode
ligar, abrir a janela do monitor serial, pegar seus valores, desconectar e deixar o Arduino sentado
lá, monitorando alegremente.
Quando você conecta o cabo USB, você fornece instantaneamente uma fonte de 5V que sabe
que é capaz de alimentar o Arduino quando está sentado em sua mesa. No entanto, você
também tem uma bateria conectada a ele que está criando um bem regulado 5V através dos
métodos abordados na Parte 2. Uma vez que o 5V Regulador LDO Fixo e o USB 5V fonte tanto
estaria tentando fornecer tensão e corrente ao mesmo tempo, para as mesmas coisas, isso
significa que eles seriam essencialmente conectados uns aos outros. Nenhuma dessas fontes
de tensão é ideal, o que significa que nem é EXATAMENTE 5.00000V, todos eles têm faixas de
tolerância e de saída variam com base em condições ambientais como temperatura - TL / DR:
seu nível de tensão não será igual. O que acontece quando você conecta duas fontes de tensão
de diferentes níveis em paralelo? Você obtém um loop de corrente que flui da fonte de alta tensão
para a fonte de baixa tensão, e isso é ruim, especialmente se esse fluxo de corrente está voltando
para cima seu cabo USB em seu laptop.

Não queremos que isso aconteça.

Explicação Ridiculamente Curta de Op-amps


A solução é cortar automaticamente a linha 5V proveniente do USB (apenas a fonte 5V, não a
comunicação serial USB), no momento em que qualquer tensão é detectada em V IN alta
o suficiente para chutar no 5V Fixo LDO. Seria ótimo se pudéssemos apenas escrever algum
código que diz: " if (VIN> = 7V) then turnOff (USB_5V); ". Bem, eu vou fazer um melhor ... como
sobre a implementação de que " se " declaração em hardware. Para isso precisamos usar um
Amplificador Operacional (op-amp).
A definição de um op-amp que eu vou lhe dar é equivalente a dizer "O Saturno V foi um dispositivo
mecânico que levou as pessoas do Ponto A ao Ponto B". Seja como for: um op-amp é um circuito
integrado que aceita duas entradas, as entradas "não-inversora" e "inversora", e tenta equilibrar
qualquer diferença - mesmo pequenas diferenças - entre as duas Saída o mais próximo possível
das tensões de alimentação do amplificador operacional, VCC + e VCC-. Esta transação simples
pode ser aproveitada para realizar milhões de tarefas diferentes. Você pode tomar a saída e
alimentá-lo de volta para uma das entradas, você pode adicionar resistores e capacitores lá para
criar amplificação. Mas nós não nos importamos com nada disso ... tudo o que nos importa é: se
há uma diferença entre as entradas não-inversora e inversora,

VCC + e VCC- estão conectados em uma de duas maneiras. "Dual Supply" significa que VCC +
é algo como + 9V e VCC- é -9V. Pense em uma onda senoidal A / C constantemente subindo e
descendo sobre um eixo x 0V, como um sinal de áudio ... preciso ter algum valor acima de 0V e
algum valor abaixo de 0V para ser capaz de lidar com esse sinal. "Single Supply" é o caso onde
VCC + é alguma tensão positiva, no nosso caso + 5V, e VCC- é um valor menor, tipicamente (e
no nosso caso) terra. Este tipo de suprimento é ótimo para comparadores, onde os insumos
nunca vão abaixo de 0V. Quando um op-amp é descrito como "rail-to-rail", isso significa que a
saída pode ser conduzida muito perto dos valores VCC + e VCC-, em oposição a um tipo de
aproximação vagamente perto desses valores.

Uma observação rápida sobre os op-amps nos esquemas: você verá frequentemente que os
pinos VCC + e VCC aparentemente desaparecem quando um op-amp está listado em um
esquema. Não tenho certeza por que razão que é a convenção, mas mesmo que você não pode
vê-los, eles são, de fato, conectados. Quando você olha para o esquema para o comparador, e
mais tarde o Pin 13 LED, basta lembrar que VCC + está conectado a + 5V e VCC- está conectado
a GND.

Isso significa que há três estados que precisamos nos preocupar: inverter mais alto que não
inverter, inverter mais baixo do que não inverter, inverter e não-inversão exatamente igual.

Inverting> Inverting = Output Driven para VCC + Inverting <Inverting = Saída Driven para VCC- Non-Inverting =
Inverting = No Output

Esperemos que você está começando a ver o caso declaração tomando forma no hardware.

Gestão de Conflito de Voltagem: O Op-amp como Comparador


Vamos listar o que sabemos sobre o nosso circuito antes de cavar em como vamos lidar com
ele.

Tensões
1. Nós temos + 5V vindo de nosso cabo USB. Ligue para este USBVCC.
2. Temos + 5V vindo de nosso 5V Fixo LDO. Ligue para este 5V_LDO.
3. Nós temos alguma tensão mais alta que vem do jaque de tambor ou do cabeçalho do pino
do protetor. Ligue para este VIN.
4. Temos + 3.3V vindo de um 3V3 Fixo LDO (você verá em um segundo). Ligue para este
3V3_LDO.

Resultados desejados

 Quando o USBVCC está conectado e o VIN não está conectado, queremos permitir que
o USBVCC forneça 5V.
 Quando USBVCC não está conectado e VIN está conectado, queremos permitir VIN para
gerar 5V_LDO para fornecer 5V.
 Quando USBVCC está conectado e VIN está conectado, queremos cortar USBVCC e
permitir VIN para gerar 5V_LDO para fornecer 5V.

Aí está. Usando as quatro tensões diferentes e algum hardware, queremos ser capazes de criar
os três resultados. Fazemos isso usando um op-amp como um comparador. Vamos testar o nível
de tensão do trilho VIN, e se ele está abaixo de alguma tensão de referência, vamos permitir que
o trilho USBVCC para fornecer tensão. Se estiver acima de alguma tensão de referência,
evitaremos que o trilho USBVCC forneça tensão.

Aqui está o circuito comparador do esquema oficial ...

Vamos examinar o esquema contra o que queremos que nossos resultados sejam.

USBVCC = Conectado, VIN = desconectado


Quando o VIN é desconectado, a rede CMP que entra na entrada não-inversora do op-amp, U5,
está em GND (ligada através da resistência 10K, RN1B, a GND) e a entrada inversora de U5 é
mantida a uma tensão de referência De + 3,3 V. Como a entrada não-inversora é menor que a
entrada inversora, a saída é direcionada para VCC-, neste caso GND. A saída é conectada à
porta do MOSFET do canal-P, T1, e desde que está no GND, isso significa que o MOSFET
permitirá que os elétrons fluam como um interruptor fechado. USBVCC é então conectado à rede
+ 5V, e também poderes U2, que é um 3.3V Fixo LDO Regulador. A saída desse LDO fornece a
tensão 3V3 ao cabeçalho do pino de blindagem, mas também é usada como referência de tensão
para o comparador.

USBVCC = Desconectado, VIN = conectado

Quando o VIN é conectado, energiza o divisor de tensão na entrada não-inversora de U5. O op-
amp comparará isto com a referência 3V3 na entrada inversora. O divisor de tensão é composto
por um par de resistores de 10K, então você verá exatamente metade da tensão VIN na entrada
não-inversora. Para que algo aconteça que é diferente do nosso estado anterior, precisamos
de pelo menos 6,61V (6,61V / 2 = 3,305V). Realisticamente, devido à queda de tensão, esta
tensão será pelo menos 7V (dividido por dois) e mais provável 9V (dividido por
dois). Independentemente disso, assim que você cruzar esse limite, o op-amp irá virar para o
estado oposto e enviará VCC + para a saída. Com 5V na saída, que significa 5V na porta do
canal P MOSFET e ele vira o MOSFET em um estado desligado, corte USBVCC fora. Uma vez
que neste caso, USBVCC não está ligado, não importa realmente. 5V ainda é fornecido ao LDO
Fixo 3V3 a partir do barramento de +5V (a partir do LDO Fixo de 5V), que preserva a tensão de
referência do comparador.

USBVCC = Conectado, VIN = conectado

Não há diferença essencial entre este estado e o estado acima. Desde VIN é energizado, e VIN
é uma tensão acima de 7V no mundo real, USBVCC é cortado do 5V trilho pela mesma lógica.

Na Parte 5, vamos selecionar os componentes para corresponder à funcionalidade mostrada no


esquema.

Seleção de peças do comparador


Na Parte 4 descrevemos como o circuito comparador desativa a tensão de 5V USB na presença
de uma tensão no VIN. Esse post era um pouco longo já, então este post cobrirá a seleção das
peças para construir esse subsistema.

O comparador Op-amp
O esquema oficial mostra um número de peça listado para o comparador op-amp como um
LMV358IDGKR. Sem ter olhado para cima ainda, eu estou supondo que este é um op-amp duplo
básico (que significa dois op-amps em um único pacote), e o pedaço "IDGKR" do número de
peça apenas indica a pegada. Quando olharmos para o circuito do Pin 13 LED, veremos como o
segundo op-amp do pacote está sendo usado, uma vez que apenas um é necessário para atuar
como um comparador.

Estourando esse parts.io, confirma minha suspeita, e a boa notícia é que é barato, de baixo risco,
com cargas deles no estoque do distribuidor. Nós não teremos que ir à procura de uma
substituição adequada.

Há um monte de especificações associadas com amplificadores que podem deixá-lo perdido nas
ervas daninhas, mas a nossa aplicação é muito simples: quando o nível VIN sobe acima de um
certo ponto, queremos bater na saída direto para o VCC + ferroviário. Se a saída foi devolvida a
uma das entradas, ela não iria até o VCC +, mas a algum ponto de equilíbrio intermediário para
fazer ambas as entradas iguais, mas neste caso, a saída não interage com as entradas. Em tudo,
assim que qualquer diferença está indo forçar um balanço cheio da saída a um trilho ou o outro.

VIN está passando por um divisor de tensão 10K / 10K, e o "ponto certo" é a tensão de referência
3V3. Assim, assim que o VIN aumentar para 3.3VX 2, 6.60V, o nível da entrada não-inversora
fará com que a saída flip de GND para 5V. O LD1117S50TR 5V Fixo LDO tem uma queda de
tensão de cerca de 1,1V, então você precisa de um mínimo de 6,1V para obtê-lo a fazer qualquer
coisa em primeiro lugar. Em última análise, nós cortar a fonte de 5V USB mais de 500mV antes
da LDO poderia entrar em conflito com ele. Uma vez que ninguém vai realisticamente nunca ligar
um suprimento 6.60V para VIN, em vez do 7V mais realista ou 9V ou 12V, isso significa que as
especificações todas alinham muito bem.

A questão de "quão rápido ele vai reagir", é respondida pela especificação taxa de matar. A
velocidade com a qual o LMV358 pode mudar sua saída está listada na folha de dados como 1V
/ uS, então cerca de 5uS para ir de um estado para o outro.

O Regulador LDO Fixo 3V3


Os desenhadores de Arduino pensaram importante fornecer uma fonte de tensão 3V3 na placa,
e estão usando convenientemente isso para fornecer a tensão de referência do comparador
quando estiverem nela. Meu palpite é que eles queriam que a placa fosse capaz de fornecer
tensão a uma variedade mais ampla de componentes do que você pode alimentar com apenas
5V, e há muito mais componentes 3V3 lá fora, todos os dias.

Então, temos que fazer alguns 3V3, e a parte listada no esquema é um LP2985-33DBVR. Mais
uma vez, parece uma peça Texas Instruments com base na designação de pegada de DBVR, e
com "33" lá, definitivamente parece um fixo 3V3 regulador de tensão de saída. Com certeza, é
um regulador LDO 3.3V fixo, com um bom e baixo risco 1.0. A tensão de saída varia de 7mV ao
fornecer 1mA de corrente de saída para 280mV sob uma carga de 150mA.

Devemos olhar para a corrente quiescente, a quantidade de corrente que o LP2985 chama
mesmo quando não está fazendo nada. A folha de dados diz que desenha 65uA sob nenhuma
carga que não é muito em tudo. Isso sugere que não terá um efeito maior em qualquer outra
coisa que possamos conectar ao 5V_LDO.

Os Condensadores de Regulador LDO Fixo 3V3


Isso me deixou realmente confuso. A folha de dados para o LP2985 descreve claramente os
capacitores de entrada e saída necessários para o funcionamento estável, mas o esquema
mostra apenas uma tampa de cerâmica de 1uF na saída e nenhuma tampa de entrada.
Como a tensão que está sendo fornecida à entrada é garantida para ser regulada, quer pelo host
USB ou o Arduino 5V LDO, talvez eles decidiram que não precisa incluir a tampa de entrada para
a estabilidade adicional? A folha de dados é extremamente explícita embora que os capacitores
de entrada e saída são necessários para operação estável, e expressa claramente o que os
valores aceitáveis de capacitância e ESR pode ser.

Sem qualquer explicação razoável por que os capacitores estão faltando no esquema, eu vou
seguir as diretrizes da folha de dados:

 Capacitor de Entrada: 1uF mínimo (pode ser aumentado sem limite) sem requisitos ESR.
 Capacitor de saída: 2.2uF mínimo (pode ser aumentado sem limite) com um ESR de 0.01Ω - 0.8Ω.
Como a Texas Instruments se esforçou muito para desenvolver um Regulador de Tensão com
especificações fáceis sobre os capacitores, e ESR não é um fator para a tampa de entrada, torna-
se relativamente trivial escolher um. Então eu vou com o 1uF C0805C105K8RACAUTO da
Kemet. Não é a parte de menor risco, mas eu estou familiarizado com o Kemet e a
familiaridade. É apenas um capacitor de 10V, mas se ele nunca vê nada além de 5V, muitas
outras coisas terão sido destruídas no quadro.

Para a tampa de saída, ainda podemos ficar em cerâmica, mas precisamos ter um pouco de
cuidado com ESR. Aqui está a coisa, eu passei dois dias ... DOIS DIAS ... tentando entender
como especificações essas coisas, e se perdeu no coelho buraco de polos e buracos e
frequência vs ESR carga corrente e eu decidi empurrar Isso fora O que eu preciso para o projeto
neste momento, é um capacitor de cerâmica, de preferência em um pacote 0805, entre 2.2uF e
3.3uF. Existem dezenas de milhares dessas coisas na existência, e eu vou encontrar o caminho
certo. Só não agora, porque eu tenho que me mexer com isso e não quero perder mais tempo
nas ervas daninhas. Então, vamos colocar um pino neste e nota no esquema que ele precisa de
mais trabalho.

ATUALIZAR

Como eu estava montando a imagem da placa anotada abaixo, eu vi o pequeno capacitor à


esquerda do 3V3 Regulador, e depois de olhar para ele sob ampliação, eu pensei, "bem que
parece suspeito como é conectado entre o rastreamento indo da op-amp e o 3V3 LDO, e
terra. Aposto que é o capacitor de entrada! "Depois de testar a condutividade com meu
multímetro, com certeza, é o capacitor de entrada que não aparece no esquema oficial. Eu não
tenho ideia do tamanho que é, o tipo, qualquer coisa. Mas pelo menos está lá, então isso resolve
um pouco desse mistério.

MOSFET de canal P
Nosso pequeno interruptor de silício que permite ou impede que USB_VCC se conecte ao trilho
de 5V, está listado no esquema como um FDN340P, um MOSFET de canal P, porque a
resistência Drain-Source, R DS (on), cai para cerca de 80mΩ quando o Gate está em alguma tensão
menor em relação à Fonte. Pode ser confuso olhar para a folha de dados para esta parte em
particular, porque a maioria dos valores de tensão são listados como negativos, devido à
natureza P-Channel do MOSFET. O que nos interessa é o valor de tensão que deve estar
presente no portão para conduzir a resistência Drain-Source em um sentido ou outro, a Tensão
Limiar Gate-Source, V GS (th). A folha de dados chama esse valor como -0.8V. Quando a porta está
em USBVCC - 0.8V ou abaixo, abrirá largamente os portões e alegres pequenos elétrons podem
dançar e fazer sua coisa. Acima de USBVCC - 0.8V, a resistência Drain-Source vai subir para
um nível que efetivamente corta USBVCC. De acordo com a especificação do USB , o USBVCC
estará em algum nível entre 4.75V e 5.25V, assim que nós esperaríamos que o ponto do
contrapeso do MOSFET esteja entre 3.95V e 4.45V. Isso não deve flutuar, é apenas o nível de
variação que é permitido no barramento de tensão USB: você terá uma tensão estável em algum
lugar entre esses dois.

Resistores do Divisor de Tensão


Estes são apenas desinteressantes resistores de 10K. Nada especial, a apenas precisam
duas. Arduino projetado em redes resistor, mas eu vou com os indivíduos.

Comparador de Voltagem KiCad Schematic


Todas as decisões de componentes acima foram incorporadas ao esquema, incluindo deixar o
fabricante específico e o número de peça em branco para o capacitor de saída do regulador 3V3.

Aqui está a lista de materiais para esta parte do esquema: Arduino UNO R3 Voltage Comparator
Subsistema BOM

Na próxima parte, vamos cobrir o Pin 13 LED, que não é tão simples como você imagina!

Parte 6 - Pin 13 LED

Na 5, nós trouxemos o comparador de tensão para uma conclusão tentativa (ainda precisamos
dessas tampas de saída LDO), agora vamos usar esse último op-amp no pacote LMV358 para
controlar um LED no pino 13.

O Circuito Oficial e o Como dele


As chances são de que esta foi a primeira coisa que você fez quando obteve seu primeiro
Arduino: carregar o Blink.ino dos Exemplos e definir-se em um amor longo da vida de tensão,
amperagem e ohms, como aquele LED de montagem na superfície amarela piscou um segundo
Ligado, um segundo fora. Este é o circuito que fez isso.
Sua primeira reação em ver que é, "bem que é WOW construir", mas não é, pelo menos tanto
quanto eu posso dizer. Dê-me um momento para engajar o motor de especulação desinformado.

Tinha que haver algo que pudesse ser feito, logo após a placa ter sido conectada ao
computador. Algo bem simples, bem fácil, que você poderia usar para validar toda a cadeia de
ferramentas de IDE para cabo USB para placa, e o Hello World! De hardware é o LED
piscando. Mas onde colocá-lo? Bem, para esta finalidade, qualquer pino é tão bom como
qualquer outro, então pode bem colá-lo em um canto, e que acaba por estar perto de Arduino
Digital 13 (real 328P pino 19). Agora a segunda coisa que você provavelmente fez, foi pau seu
próprio LED e resistor em um breadboard e piscar isso. Então você pode ver que temos o
resistore o LED, o que é com o op-amp?

Bem, o op-amp está conectado neste caso, como um buffer. Na seção de gerenciamento de
tensão, lembre-se de como a saída foi inteiramente isolada das entradas? Neste caso, a saída é
reenviada diretamente para a entrada inversora. Como antes, a saída irá fazê-lo é absoluto
melhor equalizar as duas entradas. Quando a entrada não inversora muda de valor para qualquer
tensão diferente da entrada inversora em qualquer direção, a saída compensará para tornar a
saída inversora igual, o que resulta na saída ser um espelho exato da entrada não inversora -
quando tudo está em equilíbrio, ambas as entradas e as saídas estão exatamente na mesma
tensão: a entrada não inversora é espelhada na saída, um buffer.

Você pode dizer: "Bem, eu não precisava amortecer meu sinal quando liguei meu resistor e LED
no outro pino", e isso é verdade, porque você escolheu esse pino, nesse caso, para acender um
LED e Tomar toda a corrente que precisa para fazê-lo. No entanto, este Pin 13 LED, vai estar lá
para a vida da placa, por isso é importante que a presença não afeta qualquer outra coisa que o
pino pode precisar fazer, como agir como o pino SCK para SPI. Você quer que a capacidade
atual completa do pino esteja disponível para qualquer outra tarefa que possivelmente possa
executar, e o op-amp faz isso. Como?

As entradas de um op-amp desenhar nenhuma corrente em todos (ideal op-amp aviso, blah,
blah, blah). Você pode pensar do Pin 13 LED como sendo um gigante atual com fome (ok, não
ter fome, da ordem de 10mA ou mais) lâmpada em um navio no mar. Se você executou um cabo
de extensão maciça com flutuadores e conectores à prova de água do farol para fora para o
barco, você poderia poder que a luz da costa - quando o farol se acende, a lâmpada do barco
liga - que é o equivalente a ligar o seu resistor e LED Diretamente para o pino. Usando o op-
amp, no entanto, é como ter o capitão do barco olhando para a costa com binóculos para ver
quando o farol vira em ... logo que o farol continua, ele vira um interruptor local para ligar o gigante
atual fome luminária. Ao fazer isso, ele aceitou uma entrada da costa,

Eu sei, pior analogia nunca.

Assim, quando o Pin 13 é energizado por um comando digitalWrite, a entrada não-inversora é


elevada para 5V, o que direciona a saída para 5V, mas origina a tensão e a corrente dos pinos
VCC + op-amps, o que não causa nenhum efeito de volta ao pino 13.

Limitações do Pin 13 LED


Quando você conecta um LED diretamente (através de um resistor) a um pino PWM e começa
a pulsá-lo, você vê os pulsos se manifestar como o LED ligando e desligando. À medida que
você aumenta o valor PWM, você encurta as larguras de pulso e eles começam a se fundir em
um, fazendo com que pareça que o LED está ligado continuamente. Acontece que isso não
funciona com o Pin 13. À medida que você diminui a largura do pulso, o amplificador operacional
começa a ficar atrasado com sua capacidade de acompanhar as rápidas mudanças do Pin 13.
A taxa de varredura do op-amp é 1V / uS, o que significa que leva cinco microssegundos
completos para fazer uma mudança completa de 0V para 5V. Quando sua largura de pulso é
menor do que isso, ela começa a ficar presa parcialmente em um estado ascendente quando o
sinal no opamp não-inversor começa a cair novamente. Não pode acompanhar. O resultado é
que o LED realmente começa a ficar mais escuro e mais escuro,

Aqui está um pequeno esboço pateta que você pode usar para testar isso (para obter mais
informações sobre por que os comandos PORT são usados aqui em vez de digitalWrite, leia o
post sobre Sampling Frequências de sinal de áudio com o MCP3008 ADC )

Hammer Pin 13

1 /*
2 Hammer Pin 13
3
4 This little sketch will execute a port command against Arduino Pin 13.
5
6 Pin 13 is actually ATMEGA328P Pin 19, PORTB 5.
7
8 As a way of adjusting the pulse length, the code below just repeatedly writes
9 the pin high then repeatedly writes the pin low, based on the value of portReps.
10
11 Overwriting the port value with the same value doesn't affect the output, but takes up clock cycles,
12 resulting in a crappy simulation of PWM on a non-PWM pin.
13 */
14
15
16
17 void setup() {
18 // Let's make Pin 13 an output.
19 pinMode(13, OUTPUT);
20 }
21
22 void loop() {
23
24 // This is how many times both the TURN THE PIN ON and TURN THE PIN OFF commands are executed sequentially
25 long portReps = 200000;
26
27 // Execute the port B command to bring Arduino Pin 13 high a bunch of times in a row
28 for (long i = 0; i < portReps; i++) {
29 PORTB = PORTB | 0x20; // Writes PORTB5 low
30 }
31
32 // Execute the port B command to bring Arduino Pin 13 low a bunch of times in a row
33 for (long i = 0; i < portReps; i++) {
34 PORTB = PORTB & 0xDF; // Writes PORTB5 low
35 }
36
37 }

Com o valor padrão de portReps de 200000, você cria um sinal PWM que é visível no pino 13
LED. É equivalente a escrever um esboço que ligue o LED e, em seguida, desliga o LED com
atrasos de 100ms. Veja o que parece no osciloscópio. O traço amarelo na parte superior é o sinal
no pino 13, o traço azul na parte inferior é a saída do op-amp.

Quando aumentamos o zoom, a taxa de movimento é claramente visível. Em 2uS por divisão,
você pode ver que o traço amarelo apenas acerta em cheio a linha reta até 5V, mas há uma
rampa quase linear no traço azul, tendo pouco mais de 4uS (duas divisões +) para coincidir com
a saída.
Agora vamos reduzir o tamanho da largura de pulso, diminuindo o valor de portReps. Em 2000
repetições de então em 2000 repetições de fora, nós deixamos cair a largura por duas ordens de
magnitude, a 1ms (a frequência é aproximadamente 440Hz ... hey, você poderia ajustar uma
guitarra com isso!). Nenhum problema, nós somos ainda bons. Observe que o escopo está agora
em 500uS por divisão.

Vamos deixá-lo novamente, desta vez para 200. A taxa de giro é, obviamente, uma grande parte
do tempo do sinal, mordendo as porções de ligar e desligar do rastro amarelo nas bordas.

Em 20 repetições, nossa largura de pulso é de até 10uS, então estamos agora ocupando metade
do comprimento do pulso apenas para corresponder e, em seguida, metade do comprimento do
tempo desligado para cair de volta para baixo. Está prestes a ficar realmente legal ...
Aqui está em 2 repetições. O LED é essencialmente totalmente fora agora em 795kHz. O op-
amp está tentando repetidamente e mais e mais para apanhar com o pino 13 sinal, mas apenas
não pode, execept de vez em quando, quando tudo se alinha e tem este momento glorioso para
esticar (como eu em O final de um voo de cross country), mas é imediatamente arrastado de
volta para baixo. Isso parece acontecer repetidamente a cada 4mS. Ignore o pulso positivo
aparentemente grande no traço amarelo, que é um artefato de disparar o escopo no sinal do
amplificador operacional em vez do sinal PWM. O sinal está aumentando constantemente em
um período de 5V do traço do pino 13, fazendo o todo misturar-se junto.

É por isso que você nunca vê o LED acender quando você está fazendo coisas SPI. Ele só pode
lidar com um pulso de ligar / desligar muito lento.

Abastecimento de peças do Pin 13 LED


Bem, a coisa engraçada é, nós temos bastante fontes de todas as partes já. O op-amp é apenas
a segunda unidade dentro do Texas Instruments LMV358IDGKR pacote duplo op-amp , com o
comparador um. O LED será exatamente o mesmo tipo de LED que usamos para o LED Power
On no esquema do subsistema de regulador de tensão, com o mesmo resistor limitador
de corrente. Realmente, é porque e como é usado que é romance aqui, não tanto as peças elas
mesmas.

Aqui está o Pin 13 LED esquemático em KiCad ...

Aqui está o Pin 13 LED BOM: Arduino Uno R3 do Scratch Pin13 LED Subsystem.csv

Na parte 7, vamos começar no conector USB e um monte de proteção de descarga estática.

Parte 7 - Arduino Conexão USB

Na parte 6 , nós cobrimos o comoe o porquê do Pin 13 LED, junto com o op-amp relacionado
que aparece lá. Agora deixamos os op-amps e o gerenciamento de energia para trás e nos
movemos para a conexão Arduino USB que nos permite conectar um computador ao Arduino
para enviar e receber dados. Eu recomendo agarrando uma xícara de café e uma rosquinha,
porque este é um post longo.

Esquema de Conexão Arduino USB Confuso


Há um monte de coisas no lado esquerdo do esquema, e todos eles parecem ser abarrotados
juntos firmemente, de modo que o desenho não flui do lado esquerdo da página. Além disso, há
símbolos enigmáticos lá, como grandes retângulos negros, que realmente não lhe dão uma
compreensão imediata de apenas o componente que foi colocado lá, ou o que é propósito pode
ser. Como antes, vamos dar este passo a passo e parte por parte.
Este é o esquema oficial que cobre os detalhes da conexão USB do Arduino. Para tentar limpá-
lo um pouco, eu escondi todas as partes que não envolvem diretamente o subsistema USB, mas
mesmo depois de ter feito isso, e aumentou a visão um pouco, nomes de parte e designadores
de referência ainda sentar em cima de um ao outro e torná-lo um pouco assustador.

Este circuito precisa fazer cinco coisas ...

1. Traga a conexão USBVCC da entrada USB tipo B, listada como V BUS na documentação USB, tanto para
o MOSFET na seção de gerenciamento de tensão quanto para o pino UVCC, pino de tensão USB 31 da
ATMEGA16U2 (doravante denominado "16U2") micro controlador.
2. Ligue o pino D na entrada USB ao pino D do pino 30 da 16U2.
3. Conecte o pino D + dentro da entrada USB ao pino D + do pino 29, 16U2.
4. Conecte o pino de aterramento USB dentro da entrada USB ao pino UGND do pino 28 da 16U2.
5. Conecte a blindagem do conector USB, a caixa de metal que o rodeia, de forma segura, para que não
faça o zap, ou zap o circuito.

USBVCC e o PTC

Você pode ver que eu desenhei minha própria linha vermelha brilhante no esquema com um
ponto de interrogação, porque não está claro se há uma conexão direta lá, ou se o USBVCC vai
para o MOSFET primeiro, antes de se conectar ao 16U2. Testar isso é um pouco difícil, porque
para ter certeza absoluta, precisamos usar um multímetro para verificar um caminho
do pino V BUS do soquete USB, que só é acessível sob a placa, para o Pino 31 do 16U2, localizado
em O topo do tabuleiro, e tem um passo de pino ridiculamente pequeno. Felizmente, eu tenho
um PCBGrip Sistema que é como um circuito de teste brinquedo tinker.

O resultado é que há uma conexão direta da conexão V BUS na tomada USB para o Dreno
MOSFET e o pino UVU 16U2.

Em série com esta conexão, e antes de USBVCC vai em qualquer outro lugar, há uma caixa
preta no esquema, designador de referência F1. Este é um fusível reajustável do coeficiente de
temperatura positivo (PTC). Isso fornece proteção contra sobre corrente de explodir o circuito do
controlador de host USB no computador. Se você está alimentando o seu Arduino a partir do
cabo USB e tentar desenhar muita corrente, digamos por curto-circuito sua conexão + 5V direto
para o solo (oh muitas maneiras que eu fiz isso), o pico atual causa um aumento acentuado na
temperatura dentro do PTC, fazendo com que ele abra imediatamente o circuito. O circuito
permanece aberto até que você desenergize o circuito e deixe o PTC esfriar (leva menos de um
segundo). Eles listam um número de peça Bourns de MF-MSMF050-2. Este é um bom custo
baixo, parte de baixo risco. De acordo com a folha de dados , que irá realizar uma carga de
500mA atual sem tropeçar, então há uma área cinza entre 500mA e 1A,
onde provavelmente levaria alguns minutos para aquecer. Acima de 1A, porém, o "tempo de
viagem" cai rapidamente, abaixo de 10mS para uma carga de 10A.
Agora, se você está conectando uma carga atual constante para o seu Arduino por algum motivo,
e lentamente torturá-lo arrastando a carga de 500mA para 1A, então você provavelmente vai
acabar danificando seu host USB, sim. Mas esse não é o cenário provável. Esta é a proteção
contra curto-circuito, onde a resistência ao fluxo de corrente vai de "Algum Valor" para
"Resistencia Zero" em um batimento cardíaco, e a corrente vai de "Algum Valor Gerenciável"
para "Teoricamente Infinito" tão rápido, Instantânea ". Ela vai realizar uma carga atual 500mA
sem tropeçar, então há uma área cinza entre 500mA e 1A onde provavelmente levaria alguns
minutos para aquecer. Acima de 1A, porém, o "tempo de viagem" cai rapidamente, abaixo de
10mS para uma carga de 10A. Agora, se você está conectando uma carga atual constante para
o seu Arduino por algum motivo, e lentamente torturá-lo arrastando a carga de 500mA para 1A,
então você provavelmente vai acabar danificando seu host USB, sim. Mas esse não é o cenário
provável. Esta é a proteção contra curto-circuito, onde a resistência ao fluxo de corrente vai de
"Algum Valor" para "Resistencia Zero" em um batimento cardíaco, e a corrente vai de "Algum
Valor Gerenciável" para "Teoricamente Infinito" tão rápido, Instantânea ". Ele vai realizar uma
carga atual 500mA sem tropeçar, então há uma área cinza entre 500mA e 1A onde
provavelmente levaria alguns minutos para aquecer. Acima de 1A, porém, o "tempo de viagem"
cai rapidamente, abaixo de 10mS para uma carga de 10A. Agora, se você está conectando uma
carga atual constante para o seu Arduino por algum motivo, e lentamente torturá-lo arrastando a
carga de 500mA para 1A, então você provavelmente vai acabar danificando seu host USB,
sim. Mas esse não é o cenário provável. Esta é a proteção contra curto-circuito, onde a
resistência ao fluxo de corrente vai de "Algum Valor" para "Resistencia Zero" em um batimento
cardíaco, e a corrente vai de "Algum Valor Gerenciável" para "Teoricamente Infinito" tão rápido,
Instantânea ". Então há uma área cinza entre 500mA e 1A onde provavelmente levaria alguns
minutos para aquecer. Acima de 1A, porém, o "tempo de viagem" cai rapidamente, abaixo de
10mS para uma carga de 10A. Agora, se você está conectando uma carga atual constante para
o seu Arduino por algum motivo, e lentamente torturá-lo arrastando a carga de 500mA para 1A,
então você provavelmente vai acabar danificando seu host USB, sim. Mas esse não é o cenário
provável. Esta é a proteção contra curto-circuito, onde a resistência ao fluxo de corrente vai de
"Algum Valor" para "Resistencia Zero" em um batimento cardíaco, e a corrente vai de "Algum
Valor Gerenciável" para "Teoricamente Infinito" tão rápido, Instantânea ". Então há uma área
cinza entre 500mA e 1A onde provavelmente levaria alguns minutos para aquecer. Acima de 1A,
porém, o "tempo de viagem" cai rapidamente, abaixo de 10mS para uma carga de 10A. Agora,
se você está conectando uma carga atual constante para o seu Arduino por algum motivo, e
lentamente torturá-lo arrastando a carga de 500mA para 1A, então você provavelmente vai
acabar danificando seu host USB, sim. Mas esse não é o cenário provável. Esta é a proteção
contra curto-circuito, onde a resistência ao fluxo de corrente vai de "Algum Valor" para
"Resistencia Zero" em um batimento cardíaco, e a corrente vai de "Algum Valor Gerenciável"
para "Teoricamente Infinito" tão rápido, Instantânea ". Se você está conectando uma carga atual
constante para o seu Arduino por algum motivo, e lentamente torturá-lo arrastando a carga de
500mA para 1A, então você provavelmente vai acabar danificando seu host USB, sim. Mas esse
não é o cenário provável. Esta é a proteção de curto-circuito, onde a resistência ao fluxo de
corrente vai de "Algum Valor" para "Resistencia Zero" em um batimento cardíaco, e a corrente
vai de "Algum Valor Gerenciável" para "Teoricamente Infinito" tão rápido, Instantânea ". Se você
está conectando uma carga atual constante para o seu Arduino por algum motivo, e lentamente
torturá-lo arrastando a carga de 500mA para 1A, então você provavelmente vai acabar
danificando seu host USB, sim. Mas esse não é o cenário provável. Esta é a proteção contra
curto-circuito, onde a resistência ao fluxo de corrente vai de "Algum Valor" para "Resistencia
Zero" em um batimento cardíaco, e a corrente vai de "Algum Valor Gerenciável" para
"Teoricamente Infinito" tão rápido, Instantânea ".

D- e D +

Os sinais USB são enviados como pares diferenciais, principalmente. Significa que um valor é
expresso como uma diferença entre o nível de D- vs. D +. Existem certos casos em que um único
nível é usado, mas para o fechamento de bits de série entre o computador e o 16U2, é D- vs D
+ ... é por isso que existem duas linhas de dados.

O esquema mostra uma conexão bastante direta da tomada USB para o 16U2, com três
exceções: um par de resistores de série RN3A e RN3D, um par de "coisas" amarrando cada linha
de dados à terra Z1 e Z2 e a outra "coisa”, L1, que fica entre o par de coisas e o trilho terrestre
USB real.
As resistências em série, RN3A e RN3D, estão atuando como terminação de sinal USB. Isso tem
a ver com o conceito de impedância correspondência entre o cabo fazendo a conexão, e a
entrada em seu micro controlador. Como acontece com quase qualquer tema que nunca aborda
a palavra "impedância", é realmente, realmente envolvido. Vamos dividi-lo aqui em uma analogia
e, em seguida, alguns Professor Farnsworth Patentei Good News.

O sinal USB viaja para baixo o cabo do host para o seu Arduino, empurrando a energia como ele
vai, como um monte de indutores e capacitores em série, carregamento e carregamento muito
rápido. Pense nisso como um brinquedo de mesa de Newton's Cradle, você envia seu sinal
pegando uma das bolas e deixando-o balançar para baixo para bater o próximo, e o sinal se
propaga de um orbe para o próximo na linha. Quando chega ao fim da linha, a última bola
balança, porque não há nada lá para pará-la. Da mesma forma (ok, de modo algum, mas isso é
analogia-land), quando o sinal USB chegar ao final da linha de transmissão, se não houver nada
lá para pará-lo, ele balança para trás e reflete o cabo para o host, como A última esfera
balançando para trás no final e reverter toda a energia de volta para a bola original.

Um resistor de terminação é como colocar um amortecedor no final do berço - ele vai ter o peso
total de todo esse sinal de entrada, e umedeça-lo para que o micro controlador recebe o sinal
agradável e limpa, mas nada é refletido de volta para o hospedeiro.

A boa notícia, todos, é que o 16U2, bem como praticamente qualquer dispositivo que atua como
uma conexão USB de carregamento, diz-lhe explicitamente o tamanho resistor a usar! No caso
do 16U2, a folha de dados diz, "Os resistores seriais em linhas de dados USB devem ter 22
Ohms valor (+/- 5%)." Ame-o. Apenas me diga o que fazer, e eu vou fazer isso. Boom, resistência
de 22Ω +/- 5% 0805, Yageo RC0805JR-0722RL.

Varistores de Proteção ESD

Tanto quanto as duas "coisas" vão, elas acabam por ser Resistores Dependentes de Tensão,
"varistores". Eles agem para fornecer descarga eletrostática (ESD) de proteção. Se você é todo
teme algo acima com eletricidade estática, porque pareceu como uma ideia boa naquele tempo
desgastar meias de lãs ao polir uma haste de vidro com um lenço de seda no tapete longo da
pilha quando é realmente seco antes de obstruir em seu Arduino, o repentino (E eu quero dizer
súbita) pico de tensão (e estamos falando quilovolts) faz com que o varistor para diminuir sua
resistência dramaticamente, dando um caminho de baixa resistência à terra para a tensão, em
vez de deixá-lo através de seus resistores em série (boom) e seu micro controlador (Boom caro).

Esse trilho de aterramento USB, UGND tem um monte de interconexões: o pino UGND do 16U2,
o pad de terra grande do pacote 16U2 TQFN, o pino UGND do conector USB tipo B e as
conexões de blindagem física da conexão USB. Portanto, se o cabo está carregando uma carga
estática, ou você tem uma carga estática quando você conecta o cabo e os dedos tocam o
escudo, você forneceu um método para entregar essa condição de sobre tensão súbita um
caminho a seguir: através do varistor, no rastreio PCB UGND, de volta para o pino de aterramento
USB da entrada tipo B, através do cabo e no aterramento do seu PC.

Os dois varistores Z1 e Z2 são componentes Bourns CG0603MLC- 05E. Eles são projetados
para operar confortavelmente em 5V sem afetar qualquer operação, mas assim que há um pico
acima de 20V, o efeito de fixação ocorre para direcionar o pulso para terra, e acima de 100V o
"tempo de resposta mínimo" é 1nS. O único problema que eu tenho com este componente é que
é um 0603, que é muito pequeno. Vou refletir sobre isso mais tarde e pensar sobre mudar para
um 0805 se eu puder encontrar um.

Você pode imaginar que há uma tonelada de sugestões, diretrizes e requisitos para executar
proteção ESD em uma placa de circuito. Dê uma olhada neste artigo da EETimes,
que explica um monte deles. Alguns vamos seguir no tempo de layout, alguns não vamos.

Filtro de grânulos de ferrite

A "coisa" final abaixo dos varistores, é um grânulo de ferrite, L1. Os grânulos de ferrite resistem
ao ruído de alta frequência, filtrando-os para fora do sinal de mídia que você está
usando. Normalmente, seria usado para eliminar qualquer ruído induzido no cabo ... por exemplo,
imagine que você tem um projeto Arduino em sua cozinha, e por algum motivo você se sente
compelido a executar o seu 10 'cabo USB direito sobre o topo do seu micro-ondas. O cabo atuaria
como uma antena e pegaria um monte de ruído de lixo da eletrônica de micro-ondas. Esse ruído
de alta frequência seria despejado na ferrite, onde é dissipado como calor. Eu não * penso *, a
ferrite tem nada a ver com a proteção de descarga estática, mas convido qualquer pessoa com
muito mais experiência em proteção ESD ou EMI para me enviar uma nota e explicar melhor. A
ferrite na PCB é semelhante à ferrite bloco grande que é moldado na extremidade da maioria
dos cabos do computador. A maioria, mas não todos.
A parte listada é um BLM21, que é mais uma classe de componentes do que um componente
específico. A chave de classificação parece ser a atual do dispositivo é capaz de tolerar, por isso
vamos apenas ir com o baixo risco agradável, 2A componente tolerante em um pacote 0805, o
Murata BLM21PG221SN1D.

É importante notar que a conexão da blindagem USB para o trilho UGND inclui o grânulo de
ferrite, por isso vamos querer certificar-se de que seguimos o mesmo caminho no no esquema
do KiCad.

Arduino UNO R3 Conexão USB KiCad Esquema e BOM


Há vozes muito fortes e santificadas que podem ser encontradas em vários fóruns que se
queixam de "apenas copiando o esquema cegamente sem entendê-lo". Bem, eu acho que nós
entendemos o básico, mesmo que provavelmente não pudéssemos desenhá-lo do zero. Meu
remover é: Eu tenho um dispositivo, este dispositivo tem algum tipo de proteção ESD e EMI, eu
provavelmente acidentalmente tirei este dispositivo em algum ponto e continua a trabalhar, então
eu vou seguir o que existe atualmente.
Você verá que as conexões D +, D- e USB_GND acabam com pequenas sinalizações de sinal,
em vez de ir diretamente para o micro controlador. A maneira que eu estou projetando o esquema
é com folhas hierárquicas, então no nível mestre, eu terei interconexões entre os subsistemas,
ao invés de tentar fazer tudo em uma folha. Algumas pessoas gostam de tentar fazer tudo de
uma só vez para que você possa ver a imagem grande, eu gosto de fazê-lo por subsistemas para
que os desenhos individuais são muito fáceis de ler.

Aqui está a BOM do Subsistema de Conexão USB: Arduino Uno R3 Subsistema de Conexão
USB BOM

Na parte 8, vamos resolver o subsistema micro controlador ATMEGA16U2.


Parte 8 - Subsistema ATMEGA16U2

Na Parte 7 , reunimos todas as peças necessárias para conectar nosso soquete USB Tipo B a
um micro controlador. Agora vamos introduzir esse micro, o ATMEGA16U2 Atmel. Este é o chip
responsável pela conversão de sinais USB nos bits que podem ser lidos pelos pinos Tx e Rx (os
pinos UART) do micro maior, o ATMEGA328P.

A Cleaned Up Official ATMEGA16U2 Esquema


Agora, em ambos os casos, o esquema oficial e o esquema KiCad abaixo, este subsistema
cresce para um tamanho que é um pouco pesado para exibir em uma página da web, então eu
reduzi-lo para baixo para um tamanho semi miniatura. Certifique-se de clicar nele para expandi-
lo ou fazer o download do tamanho completo para que você possa vê-lo claramente. Eu também
tentei remover qualquer coisa do esquema oficial que já está coberto (USB, etc.) ou será coberto
em partes futuras da série (328P_DTR), então o esquema é um pouco diferente do oficialmente
oficial publicado, mas já cobrimos meus problemas com a documentação publicada.

O esquema oficial tem conexões à esquerda com o material USB, um circuito de oscilador de
cristal, as tensões de alimentação e o cabeçalho do ICSP (In-Circuit Serial Programmer). O lado
direito tem ... bem .... Qualquer que seja o inferno JP2 é, a linha Data-Terminal-Read (DTR),
alguns LEDs que piscam quando ocorrem transações em série e as conexões Tx / Rx serial reais
para o 328P.
Curiosamente, o lado direito do esquema mostra que há uma tonelada de pinos que são
absolutamente e completamente ignorado. Isso é um * lot * de capacidade apenas sentado lá
não apenas sem uso e inutilizado, mas efetivamente abandonado no local, sem capacidade de
acessá-lo.

Como fizemos em cada parte até agora da série, vamos levá-lo passo a passo. Vamos começar
no cabeçalho ICSP e trabalhar o nosso caminho no sentido anti-horário (sentido anti-horário para
todos os meus leitores de Inglês lá fora).
ATMEGA16U2 Subsistema peça por peça
Cabeçalho ICSP

O In-Circuit Serial Programmer é o método que usaremos para carregar o firmware em nosso
16U2, usando alguma forma de AVR Programmer, uma vez que eu não tenho um soquete de
programação TQFN sentado ao redor para essas coisas. Nós vamos cobrir a maneira que
realmente usar o cabeçalho no futuro, mas agora, vamos olhar para o circuito.

Você pode ver que estamos usando as linhas SCK / MISO / MOSI do 16U2, os pinos SPI. É aí
que a parte "Serial" do ICSP entra. Além disso, há uma conexão de 5V, Ground e RESET. Reset
está ativo baixo (o que denota aqui usando o macro sobre linha, mas no esquema Arduino é
mostrado pelo círculo na base do pino), então se e quando o 16U2 detectar esse pino em um
estado lógico baixo, processar uma reinicialização do sistema. O resistor de 10K (RN1C) está lá
para atuar como um puxar para cima resistor de 5V, criando um padrão "Not Reset" estado para
o pino. Todos estes pinos são usados em uma sequência específica para definir o micro em um
estado de programação específica, então o código de carga nele através do programador.

A única coisa que resta para explicar é o diodo. Demorou um pouco de escavação para
entender. Não é comum encontrá-lo em um circuito de cabeçalho ICSP, ou se houver um diodo,
ele é usado para impedir que o programador inadvertidamente ligar o seu projeto. Neste caso,
existe para evitar possíveis picos de voltagem que ocorrem no pino RESET devido a alguma
questão exótica identificada nos fóruns do Arduino. Tão perto quanto eu posso dizer, é realmente
apenas um problema (potencial) com o 328P, mas isso realmente não afeta o circuito
negativamente, então ele apenas duplicou essa parte do circuito para o 16U2 também.

Para as peças, reutilizei o mesmo resistor de 10K do divisor de tensão do subsistema


comparador e escolhi um diodo de proteção da matriz de Diodos Inc. 1N414BW-7-
F, simplesmente porque havia mais deles em estoque em distribuidores do que havia para a
parte de Bournes listada No diagrama CD1206-S01575, e a parte do Diode Inc. tem um menor
risco. O cabeçalho físico real é apenas um realmente, realmente padrão de 0,1 "duas linhas,
cabeçalho de conector de seis pinos. Eu escolhi um Harwin M20-9980346.
Oscilador de Cristal 16Mhz
Depois de escrever tudo, decidi que o processo de seleção de cristais era tão profundo que
precisava de sua própria parte da série: Parte 9: 16Mhz Cristal Ocilador

Tensão de alimentação AVcc e Vcc

Isso é muito simples, na verdade. Vcc é a conexão que lhe permite fornecer tensão às porções
digitais do 16U2, como as portas digitais GPIO. AVcc é a conexão que permite que você entregue
a tensão às porções análogas do 16U2, como os conversores Analog-to-digital (ADCs). A folha
de dados (página 4) diz que você deve conectar AVcc para Vcc através de um filtro passa-baixa,
o que ajuda a estabilizar todas as coisas analógico o micro pode fazer. Bem, não estamos
realmente fazendo qualquer material analógico, então podemos sair com apenas ligando AVcc
e Vcc juntos e usar um único limite de bypass 0.1uF normal.

USB Pins e GND

Os pinos D-, D + e UGND todos se conectam às respectivas redes correspondentes no


Subsistema Conexões USB.

O pino UVCC, fornece um regulador de tensão incorporado no 16U2, e é usado exclusivamente


para gerar os níveis de tensão USB. Quando o USB está conectado, precisamos certificar-se de
que isso é bem, de modo que significa ter certeza de que ele fica amarrado à rede USB_VCC
ANTES do MOSFET de canal P no circuito comparador de tensão, e não depois dele.
O pino UCAP fornece um local para conectar a tampa de saída para o regulador USB interno. De
acordo com a folha de dados (página 5), é um limite de 1uF. Vou usar o mesmo
tipo encontrado na entrada para o regulador LP2985-33DBVR 3V3.

UGND é o pino de ligação à terra USB e está ligado a GND (figura 20-5, página 187). Arduino
usa uma estranha solda olhando coisa que no esquema parece meio luas de frente para o outro,
e na parte inferior do PCB parece prata plataformas de montagem de superfície que estão quase
tocando. Eu usei saltadores de solda antes, especificamente para permitir que um usuário
desconecte o I2C pullup resistores no sensor de temperatura AT30TS750A e MCP7940N Real
Time Clock breakout boards. Francamente, eles são uma dor no doohickies para lidar com, então
eu vou usar um resistor 0 Ohm 0805 vez.

O pino "33 PAD", é o pad de terra grande que existe sob o pacote "Quad Flatpack No Lead"
(QFN). Eu não estou convencido de que vou usar um TQFN em vez de um pacote QFP que tem
pinos reais que você pode soldar com um ferro. Por agora, vou apenas manter com a designação
da peça original e planejar na QFN.

Linhas Seriais e LEDs

Novamente, isso é muito simples. O pino de transmissão serial (Tx) do 16U2 está conectado em
cruz ao pino de Recepção Serial (Rx) do 328P e o pino Rx do 16U2 está conectado em cruz ao
pino Tx do 328P. Os LEDs que piscam durante as comunicações seriais estão nos pinos 10 e
11. Eles estão conectados a + 5V, então em algum lugar no USB para o código serial, os pinos
11 e 10 são definidos como saídas e são direcionados para criar um caminho para a corrente
fluxo. Isso tem de ser tratado no firmware 16U2 que acabaremos por carregar.

DTR Net

Este é apenas um nome líquido, e será investigado cuidadosamente quando montar o


Subsistema ATMEGA328P.
JP2

Eu não tenho ideia do que isso é. Nenhuma pista. Parece ser os restos mortais de algo que
alguém planejou fazer, mas nunca chegou a terminar, ou decidiu que não valia a pena. Em vez
de não conectar os pinos, como é feito com muitos outros, eles rodavam para as posições de
passagem através do furo (PTH) na placa de circuito e aqueles acabam sendo preenchidos
durante o processo de solda onda. É apenas bizarro. Inútil e bizarro.

Arduino UNO R3 ATMEGA16U2 KiCad Esquema


Aqui está o esquema KiCad para o ATMEGA16U2. Inclui o circuito completo do oscilador do
cristal que, como eu digo abaixo, será coberto no borne seguinte. Eu não vou publicar a lista de
materiais ainda, vou fazer isso depois de cuidar do xtal na próxima seção. Novamente, é um
pouco larga, então eu incluí a miniatura aqui, que você pode clicar para ampliar ou baixar.
Eu só quero apontar rapidamente o conector JP2 no canto superior direito do esquema que está
listado como "NO_POP". Isso significa "Não Populado" - nenhum componente real está indo
aqui. Será apenas uma pegada quando chegarmos à parte de layout de PCB. Eu não sei se vou
fazer uma pegada de furo ou um conjunto de almofadas de montagem de superfície ainda. Vou
descobrir isso quando chegarmos tão longe.

Na Parte 9, concluiremos o Subsistema ATMEGA16U2 examinando o processo de seleção do


oscilador de cristal.

Parte 9 - Oscilador de Cristal 16MHz

Na Parte 8, cobrimos todos os diferentes subcircuitos que cercam o micro controlador


ATMEGA16U2, com exceção do Oscilador de Cristal 16MHz (XTAL) e componentes de
suporte. Esta secção preenche essa lacuna e completa o subsistema 16U2.

Esquema Oficial do Oscilador de Cristal de 16Mhz

Ok, eu disse que eu não estava indo para a harpa sobre a qualidade do esquema mais, mas basta olhar
para essa coisa. É uma bagunça! A única coisa que falta é uma mancha de anel de café em meio ao.

O xtal atua como o metrônomo ridiculamente rápido para o seu micro controlador. Este pequeno
pedaço de quartzo explode 16 milhões de vezes por segundo, e faz com bastante boa
precisão. Infelizmente, o esquema oficial não lista nenhuma informação de fabricante para
ele! Apenas "16Mhz". Então, temos que fazer algumas escavações para entender como
selecionar esta parte corretamente. Eu me inclinei fortemente sobre o Cristal Oscilador Appnote
Básico da Microchip em explicar muitas das seguintes especificações para mim. Também é
impossível descobrir isso sem ter a Atmel ATMEGA16U2 Datasheet para referência.

Primeiro, a folha de dados diz que podemos usar um oscilador de cristal ou um ressonador de
cerâmica. Olhando ao redor, eu não consegui encontrar um ressonador que tivesse a precisão
que eu queria (30ppm ou menos espero), então um oscilador de cristal (xtal) era a solução
certa. Mas qual deles? A pesquisa de Cristais de 16Mhz em parts.io obteve 104.000 resultados
de pesquisa!

Frequência
Quão rápido ele precisa ser? A folha de dados (tabela 8-3 página 30) diz que qualquer oscilador
de 400kHz a 16Mhz é válido. No entanto, quanto mais rápido o seu oscilador é executado, mais
potência você provavelmente consumirá. Agora, uma vez que o poder não é realmente um
problema para nós (ok, poderia ser se você estiver executando uma bateria), poderíamos apenas
dizer: "Inferno, vamos até o 16Mhz! WOOT! ". Nós temos uma velocidade mínima imposta a nós
por uma razão muito específica de aplicação: porque estamos fazendo USB sinalização, temos
de usar um cristal de 8Mhz no mínimo. A razão técnica pelo qual 16Mhz foi escolhido como a
velocidade operacional é incerto para mim, como a única coisa que o micro 16U2 faz é conversão
USB / Serial, que poderia facilmente ser cumprida em 8Mhz. Estamos usando o regulador de
tensão USB interno, o que significa que o nosso VCC tem um mínimo de 4.0V, e o uso de um
cristal de 16Mhz é permitido em 4.5V VCC, Por isso pode ter sido um caso de "bem, estamos
indo com 5V VCC em toda a placa, por isso podemos também dar-nos a velocidade
extra". Alternativamente, poderia ter sido um planejamento avançado, permitindo maior uso do
16U2 no futuro. Em última análise, poderia ter sido um caso de "ei, temos um negócio muito bom
sobre estes cristais de16Mhz." Também.
Ok, então vamos com um 16Mhz Cristal Oscilador. Olhando para cima em parts.io você vê um
conjunto desconcertante de critérios de seleção possíveis, nenhum dos quais são abordados na
folha de dados.

Fundamental ou sobre tom


Quanto mais rápido o seu cristal chiar, você eventualmente chegar a um ponto onde não pode
escutar um zumbido mais rápido, nesse ponto você não usa a frequência real que gera (a
frequência fundamental), em vez disso, se você usar um sobre tom em cima disso. Um sobre
tom é como o tom alto que você ouve quando você arranca uma corda de guitarra. Claro que
você ouve o E ou o G ou o D, etc., mas particularmente como o volume morre para baixo, você
pode ouvir o sobre tom, muitas oitavas acima do som original. Isto é como você pode usar um
oscilador em uma frequência maior do que sua frequência fundamental. Felizmente para nós,
isso é realmente todo o tipo de RF de coisas, e podemos apenas usar um oscilador de cristal de
frequência fundamental sem se preocupar com a necessidade de 3, 5, 7 ou 9 tons.

Ressonância Paralela vs. Série


Eu vou ser honesto, eu não entendo completamente os conceitos de série e ressonância paralela
além da teoria básica, e quanto mais eu cavar nele, eu acho um problema de galinha vs ovo: a
maioria das notas de aplicação e sites copiar / colar o mesmo Frase "Os cristais de ressonância
série são destinados para uso em circuitos que não contêm componentes reativos no loop de
realimentação do oscilador. Os cristais ressonantes paralelos são destinados para uso em
circuitos que contêm componentes reativos normalmente capacitores) no loop de realimentação
do oscilador. "Exceto, você não teria capacitores no circuito a menos que fosse paralelo em
primeiro lugar, porque uma série de cristal ressonante é apenas Eficaz se não houver
capacitores. No entanto, eles também se referem a ser capaz de puxar o relógio usando tampas
de carga, mesmo quando usando cristais ressonantes série.

A entrada da Wikipédia em Modos de Ressonância de Osciladores de Cristal diz que a


ressonância em série é tipicamente usada com cristais acima de 30Mhz.

Então vamos usar alguma lógica de lado para ajudar a tomar uma decisão ...

 Cada projeto de circuito de cristal que eu já fiz parece exatamente como este, e eles sempre foram
paralelos.
 Existem cerca de duas vezes mais cristais paralelos no estoque em distribuidores do que há
cristais série.
 O índice de popularidade da peça em parts.io mostra que o top 10 cristais de16Mhz que estão
sendo adquiridos são todos paralelos.
Eu admito, esta é uma maneira ruim de fazer uma decisão da engenharia, mas é o que é. Vamos
apenas com o paralelo, e se preocupar com ressonadores série quando começamos a construir
sistemas de radar ou alguma parecida.

Tolerância de Frequência
A tolerância de frequência (como mencionada acima) é medida em Partes Por Milhão
(PPM). Isso é mais fácil de entender se falarmos sobre o cristal 32.768kHz usado com Relógios
de Tempo Real. Idealmente, o cristal irá pulsar 32.768 vezes a cada segundo, ou pensou em
outra maneira, o relógio IC interpreta um único segundo como tendo ocorrido a cada 32.768
pulsos. Se o seu cristal desvia por algum valor "x" PPM de qualquer forma, então você terá ou
muitos pulsos em um segundo, o que significa que seu relógio está correndo rápido, porque ele
chegou a 32.768 pulsos mais rápido do que o ideal seria, ou muito poucos Pulsos em um
segundo, significando seu pulso de disparo está funcionando mais lento porque fez exame de
demasiado longo começar a uma contagem completa do pulso.

Você pode ler todos os cálculos necessários no link Relógio em Tempo Real acima, mas isso é
o que PPM significa ... quanto maior o valor de PPM, o concebivelmente mais lento ou mais
rápido seu oscilador está sendo executado. Você quer esse número tão baixo quanto possível,
com valores mais baixos significando preço de componente mais elevado. Os valores típicos são
10, 20 ou 30 ppm. Acima de 30 é maneira de impreciso, abaixo de 10 começa a entrar em "cristal
personalizado".
Estabilidade da frequência e envelhecimento
Estabilidade de frequência e envelhecimento também são listados em PPM e refletem o desvio
esperado de ideal com base em fatores ambientais (vibração mecânica, flutuações de
temperatura, etc.) ou a idade real do componente. Tal como acontece com a tolerância, quanto
mais baixo esses números, mais caro o componente. Não estamos fazendo alguma aplicação
industrial ou aeroespacial louca assim que eu realmente não me importo com esses valores.

Capacitância de carga
O valor de capacitância de carga está listado em picofarads e é o valor de capacitor necessário
para trazer o cristal à sua frequência especificada e assim fornecer tempo estável e preciso. Tudo
que você tem a fazer é comprar um par de bonés com esse valor e você é dourado.

Opções de Cristal de 16MHz


Depois de passar todos os pontos de dados acima e fazendo alguma pesquisa em parts.io,
eu finalmente selecionou a Fox Electronics FOXSLF / 160-20e . Aqui está como ele pilhas contra
as especificações listadas acima ...

Especificação Traço desejado Especificação FOXSLF / 160-20e

Frequência 16 MHz 16Mhz

Fundamental ou Overtone Fundamental Fundamental

Ressonância em Série ou Paralelo Paralelo Paralelo


Especificação Traço desejado Especificação FOXSLF / 160-20e

Tolerância de Frequência Menos de 50PPM 30PPM

Capacitância de carga Qualquer valor está bem 20pF

Para ir com este cristal, eu selecionei um par de capacitores Kemet 20pF,


C0805C200G5GACTU, com uma boa tolerância de 2% apertado. Os dois capacitores e o cristal
acima fornecerão a fonte do oscilador externo para o ATMEGA16U2.

Resistor paralelo
O resistor paralelo no esquema oficial saiu do nada, e eu não consigo encontrar nenhuma razão
para ele estar lá. Não é mencionado no xtal ou 16U2 folha de dados, deixando-me em uma perda
de por que ela existe. Estou substituindo-o com um resistor de 0Ω, por isso, ele se revela
necessário e pode ser adicionado.

Com uma quantidade significativa de contribuição muito útil o coaching de Philip Freidin, que
também me apontou na direção de várias notas de cristal, eu tenho uma compreensão muito
melhor da necessidade para este resistor paralelo.

Este resistor está realmente agindo como um resistor de realimentação para o inversor interno
do micro ao qual o cristal está conectado, e polariza a entrada do inversor na região
linear. "Desequilíbrio na região linear", significa que está amplificando a oscilação do cristal sem
nunca totalmente saturando em um dos trilhos de tensão. Quando a alimentação é aplicada pela
primeira vez ao sistema, este resistor de realimentação auxilia os componentes que compõem o
circuito do oscilador, tanto internos ao micro e as peças externas que fornecemos, para obter
toque na frequência correta mais rápido.

Uma das notas mais valiosas que eu li, é esta da Crystek:


http://www.crystek.com/documents/appnotes/Pierce-GateIntroduction.pdf. O valor do resistor de
1M que está listado no esquema oficial é reforçado pelos valores indicados naquela nota, por
isso vou incluí-lo no meu esquema também.
Completo ATMEGA16U2 KiCad Esquema e BOM
Mais uma vez, aqui está o encolhido ATMEGA16U2 subsistema, desenhado em KiCad.

Aqui está a BOM do Subsistema ATMEGA16U2: Arduino UNO R3 Do Scratch ATMEGA16U2


Subsistema BOM

Na parte 10, é hora para o menino grande, os cérebros atrás da roupa, o subsistema de
ATMEGA328P.

Aqui está a porção atualizada do circuito de cristal, destacando o resistor 1M ..


Parte 10 - Subsistema ATMEGA328P

Na parte 9, obtivemos em profundidade com o cristal 16Mhz conectado ao 16U2. Agora é hora
do grande show: o ATMEGA328P da Atmel. O cérebro do Arduino. O braço direito do Arduino. O
polegar oponível do Arduino. Quando você pensa no "hardware" que compõe uma UNO, você
não pensa nos comparadores 16U2s e op-amp, você acha deste chip.

Esquema oficial do subsistema ATMEGA328P


A boa notícia é que a maior parte do esquema não é um novo circuito com a maioria dos pinos
direcionados diretamente para os cabeçalhos do escudo. O circuito ICSP é o mesmo que o
16U2. O circuito de cristal é o mesmo. Bypass caps em VCC e AVCC, sim (vamos entrar em
AVCC em um segundo). Em última análise, é o circuito de reinicialização que é a coisa mais
nova aqui.

Neste post vamos entrar nos aspectos mais familiares do circuito antes de tomar uma mordida
da maçã DTR / Reset na próxima.
Desvio e Término
Temos um conjunto de capacitores de bypass no esquema, mesmo que eles não sejam
desenhados de forma convencional. São ambas tampas de 0,1uF (100nF) e ligadas entre fontes
de tensão e terra. A primeira é a tampa de derivação da fonte de tensão principal, C6, e a
segunda é C4 na linha AREF. Não há nada especial sobre esses capacitores, então eu vou usar
os mesmos que eu tenho usado todo o tempo.

Se você ainda é bastante novo para o Arduino ou micros em geral, você pode estar se perguntando o que
AVCC, AGND e AREF são todos. Estes pinos compreendem as seções analógicas de tensão do micro e
fornecem ao projetista uma maneira de fornecer referências isoladas de voltagem e terra analógicas ao
chip, além de qualquer material digital. A eletrônica, em geral, é barulhenta, e a seção analógica do 328P
é toda sobre os sinais de amostragem o mais rápido e preciso possível. Para fazer isso de forma eficaz,
o engenheiro pode isolar completamente essa parte do seu projeto eletricamente do resto do projeto, para
garantir que não haja interferência, ruído ou interferência entre os 1s e 0s ruidosos e o que quer que
esteja ficando medido no lado analógico. Destes pinos, o único acessível ao usuário é AREF.

As linhas seriais, SERIAL_TX e SERIAL_RX , possuem resistores de terminação 1K, RN4A e


RN4B. Estas resistências estão em série entre os pinos 8 e 9 do 16U2 e os pinos 3 e 2 do 328P,
respectivamente. Servem a mesma função que os resistores de terminação USB. Os pinos 2 e
3 do 328P também são quebrados para o cabeçalho do escudo como "DIGITAL 0" e "DIGITAL
1", embora você provavelmente nunca os usar dessa forma, uma vez que a comunicação serial
é sobre a única maneira de depurar código Arduino. Esses resistores fazem parte de uma das
redes de resistores na placa Uno, por isso vou colocá-los em meu esquema como passivos 1K
individuais, mas manter toda a "rede de resistores" no fundo da minha mente para mais tarde.
16Mhz Oscilador / Ressonador
Bem, aqui temos algo um pouco novo. Ao invés de usar o mesmo oscilador de 16Mhz Crystal
que foi usado com o 16U2, temos um ressonador cerâmico 16Mhz aqui em vez disso. Os internos
do chip não são diferentes, ainda há um amplificador inversor dentro das entranhas do 328P, e
que o resistor 1M ainda está lá para fornecer feedback e acelerar o tempo de inicialização do
oscilador, mas curiosamente, eles selecionaram o Murata CSTCE16M0V53-R0 ressonador
cerâmico em vez disso. Por quê?

A diferença essencial entre um oscilador de cristal e um ressonador cerâmico, a partir de uma


perspectiva prática, é precisão. Um cristal tem sua tolerância medida em partes por milhão
(PPM), o ressonador tem ele medido em porcentagens. O cristal Fox usado no 16U2 tem uma
tolerância de 30PPM, o que equivale a algo como 0,0031%, enquanto o ressonador Murata é +/-
0,5%. Essa é uma grande diferença! Porque o tempo do sinal USB é tão importante, eu imagino
que é por isso que há um cristal no 16U2, onde como o 328P pode fugir com a tolerância do
ressonador.

Maxim Appnote 2154 faz um ótimo trabalho resumindo a força relativa e as fraquezas de várias
formas de osciladores, incluindo o bom relógio RC Micro controlador Clock-Crystal, Resonator,
RC Oscilador ou Silicon Oscillator?

Outra coisa importante a notar, é que o ressonador tem os capacitores de carga já incluídos! O
que é estranho, considerando que eles são mostrados no esquema. Pode ser que o símbolo para
"ressonador cerâmico" no programa de CAD que eles usaram mostrou aqueles lá, mas eles têm
listados como XTAL1 e XTAL2. Sério, a folha de dados essencialmente grita, "NÓS
INCLUÍAMOS os CAPACITORES DE CARGA JÁ."
Assim, embora menos precisos, estamos economizando quase um dólar (em quantidades
individuais), porque as tampas de carga já estão incluídas. Mesmo em uma produção de 250
placas, estaríamos economizando quase 40 centavos por placa usando o ressonador em vez do
cristal. Isso é realmente uma poupança muito atraente.

Além disso, é minúsculo ... sobre o tamanho de um 0603 passivo ... e superfície montável.

Para o resistor de feedback de 1M, usaremos apenas o mesmo que tivemos com o 16U2.

Data Terminal Ready e RESET


Esta parte do subsistema 328P requer um pouco mais de teoria, então eu decidi dividi-lo em seu
próprio post, que virá a seguir.
Parte 11 - ATMEGA328P DTR e RESET

Na parte 10, abrimos a lata ATMEGA328P de vermes, observando as tampas bypass, a


terminação seriale o ressonador cerâmico. Agora vamos separar o Data Terminal Read (DTR) e
RESET spaghetti.

Teoria de DTR e RESET


Quando o 328P no seu Arduino é redefinido, o bootloader (atualmente Optiboot, eu acredito)
verifica se há um novo programa esperando para ser instalado, verificando se alguma coisa está
esperando na linha serial. Se um novo programa estiver lá, o bootloader substituirá o sketch
existente com o novo sketch e o controle das mãos para ele. Se nenhum programa estiver
esperando, o carregador de inicialização cai e permite que a conexão serial seja executada
normalmente.

A chave nessa sequência para nós é a "quando o Arduino é redefinido, o bootloader verifica"
parte. Seria irritante se tivéssemos que pressionar o botão de reinicialização manualmente toda
vez que corrigimos algum pequeno bug em nosso código e o enviamos de volta para o chip. No
UNO R3 (e as variantes mais atuais do Arduino), um recurso de "auto-reset" foi implementado
para cuidar disso para nós.

Quando falamos com o 328P do nosso computador, fazemos isso por USB. O USB vai para o
16U2, que o traduz no USART, e lida com a interação com o 328P. Parte do padrão de
comunicações USART permite algo chamado "controle de fluxo" que permitia que um
computador em uma extremidade de uma conexão serial iniciasse ou interrompesse a
conversação serial configurando o estado lógico de um pino chamado "Data-Terminal-Ready" ou
DTR (Há outras variantes neste princípio ). Quando DTR é alto, ele diz: "Ei, estou pronto para
todos os dados que você pode enviar." Quando DTR é baixo, ele diz: "WOAH! Dê-me uma pausa,
eu preciso processar algumas coisas para segurar a comunicação. "

Nos cabos de série DB9 antigos que uma vez usado para conectar modems e impressoras de
etiquetas ruins para nossos PCs Pentium, DTR foi pino 4 nesse cabo.

Os designers Arduino aproveitam este processo, usando o sinal DTR para emitir um reset a partir
do 16U2 para o 328P. Sempre que o 16U2 estabelecer uma conexão serial, o DTR é reduzido,
o que causa um reset e indica o bootloader. É por isso que seu esboço sempre é reiniciado
quando você abre uma nova janela de monitor serial!

É importante, entretanto, que não possamos manter o 328P em reset. Nós só queremos pulso o
pino muito, muito brevemente, para que o bootloader pode ouvir SERIAL_RX e determinar se um
novo esboço está sendo enviado. Quando o pino RESET no 328P é baixo, todos os pinos
(exceto para os pinos ICSP, eu acredito) são definidos para um estado de alta impedância,
matando efetivamente os pinos série. Então nós pulsamos o Pin 1 no 328P para emitir a
reinicialização, não o arrastar baixo, em seguida, arraste-lo alto novamente.

DTR e circuito RESET

(Veja como eu não estou reclamando sobre a qualidade deste esquema?)

Por uma questão de incompleta, eu incluí a conexão de cabeçalho ICSP aqui, mas as partes
essenciais que implementam a teoria acima são ...

1. A rede 328P_DTR que vem do 16U2 à esquerda


2. O resistor de puxar 1K RN2D
3. O capacitor 100nF C5
4. O resistor de puxar 10K RN1D
5. O interruptor de botão de reposição grande
Quando nada está acontecendo e seu Arduino é alimentado, C5 é carregado para 5V através de
pull up resistor RN1D, que também está agindo para manter o pino RESET acidentalmente
ativando por causa do ruído. Lembre-se, RESET está ativo baixo. Se você decidir pressionar o
botão de reinicialização grande, você conecta o pino RESET diretamente a GND e inicia uma
reinicialização. Isso também descarrega C5, mas você realmente não se importa, porque a
conexão com GND é feita através do switch. Assim que você soltar o botão, C5 carrega de volta
para 5V através do resistor 10K. Enquanto isto está acontecendo, a linha DTR é realizada HIGH
pela 16U2.

Agora, vamos realmente empurrar um novo sketch para o nosso 328P sobre USB. Clique no
botão "Carregar". Depois que o sketch compilar, o 16U2 recebe o código sobre USB e puxa DTR
baixo. Isso faz com que o capacitor C5 se descarregue rapidamente através do 1K puxar para
baixo RN2D, porque o potencial 5V no lado 16U2 desapareceu. Imediatamente, porém, ele
começa a recarregar através do 10K puxar RN1D e após cerca de 5ms, o capacitor e
o pino RESET, estão de volta em 5V. O gerenciador de inicialização inicia um período de espera
esperando que algo pareça como novo código de esboço. Pelos meus testes, parece ser cerca
de um segundo inteiro. Nesse tempo, o 16U2 começa a transmitir o novo esboço sobre o USART
para o 328P, em seguida, recebe alguma forma de reconhecimento, e DTR é retornado a alta.

Quando a linha DTR retorna alta, por um breve momento, o capacitor C5, que se restabeleceu a
5V 5ms depois que o DTR foi descartado em primeiro lugar, "sobrecarregará" para VCC x 2 , 10V,
já que agora terá 5V de potencial no 16U2 lado. Se você tentou aplicar 10V a qualquer outro pino
do seu Arduino, você iria queimá-lo em um batimento cardíaco. O pino RESET é especial porque
facilita algo chamado "High Voltage Programming" e é capaz de ter uma tensão de até 12.5VI
pensar. Então, por um instante, o pino está a 10V antes que ele comece imediatamente a
descarregar através do resistor 10K pull up para o menor potencial de 5V.

Eu sei, eu sei "FLUXO ATUAL EM UMA FONTE DE TENSÃO", mas a quantidade de corrente
que estamos falando é um capacitor de 100nF descarregando metade da energia potencial
durante o período de cerca de 2ms. Para esse primeiro nano segundo, você fica em torno de
1mA através do resistor, mas depois disso, eu apostaria que a maior parte da corrente é perdida
como calor através do resistor de qualquer maneira.

Se, por algum motivo, você quisesse desabilitar a função de auto restauração, você colocaria
uma faca bem afiada entre as duas metades do jumper de solda em "RESET EN", para cortar o
traço. Ao fazer isso, você isolaria o 328P RESET do capacitor C5. Se você quisesse reativar a
característica outra vez, você apenas blob um monte de solda para atravessar as duas almofadas
de prata.
UPDATE: Com base no feedback do leitor, eu adicionei mais detalhes sobre o
funcionamento do capacitor C5 para o fundo deste post.

Novo upload de esboço em um escopo


Aqui está um exemplo de empurrar um esboço simples para o Uno. Todo o esboço faz é
escrever 0x01 5 vezes sobre USART para que eu possa facilmente detectar esses cinco pulsos.

Simple Sketch To Watch Upload

1 void setup() {
2
3 Serial.begin(9600);
4
5 Serial.println (0x01);
6 delay(100);
7 Serial.println (0x01);
8 delay(100);
9 Serial.println (0x01);
10 delay(100);
11 Serial.println (0x01);
12 delay(100);
13 Serial.println (0x01);
14 delay(100);
15 }
16
17 void loop() {
18
19 }

 Yellow trace está sendo amostrado no lado 16U2 do capacitor C5.


 Light Blue Trace está sendo amostrado no lado 328P do capacitor C5.
 O Purple Trace está conectado ao pino TX Serial 328P.
 O Trace Azul Escuro está conectado ao pino 328P Serial Rx.
Este traço é dividido em seções de 200ms na escala horizontal, com cada traço definido como
5V por divisão. À esquerda, você pode ver o sinal de DTR (16U2) ir baixo, e a sugestão mais
barata do pulso baixo vai no Pino de restauração 328P abaixo dele. Cerca de um segundo inteiro
mais tarde, você vê a atividade como o 328P recebe o esboço através da linha serial e, em
seguida, responde ao 16U2 sobre a linha Tx. DTR é elevado novamente e você vê o início dos
cinco pulsos de série cerca de 40ms mais tarde.

Vamos aumentar o zoom no início dele ...


Eu tenho ampliado agora para 5.00ms por divisão e você pode ver o pulso gerado pelo baixo
DTR pino, causando capacitor C5 para descarregar através do pull down resistor, antes de
começar imediatamente a carregar novamente. Em algum lugar em torno de 4ms após o pulso
é iniciado, C5 está de volta em 5V, e assim é o pino RESET.

Agora vamos aumentar o zoom no final dele ...

Você pode ver a extremidade traseira da confirmação serial na linha Tx antes DTR vai alta. A
menor sugestão de um> 5V pulso é visto no 328P traço naquele momento, que evapora dentro
de um ou dois milissegundos. Como estamos ampliados em 2ms por divisão, não vemos os 5
comandos seriais executados ainda.

Finalmente, vamos dar uma olhada no que acontece quando simplesmente abrimos o monitor
serial com o nosso pequeno sketch serial blip já carregado.
Outra vez, nós somos zumbidos para fora a 200ms por divisão. Você pode ver DTR ir baixo, com
o pulso de reset correspondente na linha de reset 328P. Em seguida, passam-se 1,4 segundos
antes que aconteça nada! Esse é o bootloader esperando para ver se algum novo código está
vindo. Ele expira, as mãos controlam de volta para o esboço existente, e os nossos cinco blips
serial são vistos imediatamente depois. DTR permanece baixa enquanto a janela do monitor
serial for deixada aberta.

Embrulhar
Isso é muito para digerir, então eu vou cortá-lo lá fora. No próximo segmento, vamos identificar
componentes para o subsistema 328P e publicar o KiCad Schematic e BOM.

ATUALIZAR
Recebi um e-mail de um leitor que disse que estava se perdendo na minha descrição do que
acontece ao redor do capacitor durante a sequência de reset, que é um ponto totalmente válido,
porque o capacitor está sendo usado de maneira incomum. Abaixo, adicionei minha resposta à
pergunta de Charles na esperança de que ela possa explicar as coisas um pouco mais
claramente ...

Ei, Charles! Obrigado por escrever!

Obter feedback como esse é ótimo, porque me faz voltar e reler o que escrevi, não só com um
olhar crítico, mas também com a atitude "veja se posso me reaprender", porque é difícil para mim
lembrar Detalhes específicos de como coisas como essa funcionam. Depois de passar o post
algumas vezes, e realmente pensando, "inferno, eu devo ter feito tudo isso errado" ... Eu canso
de verificar e pode reconfirmar que o post está correto. Ok, então vai com essa premissa, deixe-
me ver se eu posso esclarecer.

A parte complicada é o funcionamento do capacitor. Dada nenhuma resistência em um circuito,


um capacitor irá carregar e descarregar em uma quantidade igual de tempo. Se você adicionar
resistência, você aumenta o tempo que leva para carregar / descarregar. Se você desbalancear
a quantidade de resistência, por exemplo, colocando uma grande resistência entre a tampa e a
fonte de tensão versus a resistência entre a tampa e terra, a tampa irá carregar muito lentamente,
mas descarregar rapidamente. Capacitores 101.

Ok, então temos esse circuito ...


Assumindo que temos um esboço em branco carregado para o Arduino, ou seja, que não faz uso
de comunicação serial, no estado em execução, você tem uma lógica HIGH em DTR e uma
lógica HIGH em RESET. 5V em ambos os lados da tampa. Você está certo ao pensar que o
potencial de voltagem em toda a tampa é zero, porque as partículas carregadas dentro da tampa
não têm lugar para ir: eles não podem carregar as placas do lado esquerdo na tampa porque
DTR está empurrando-os e eles podem 'T carga as placas do lado direito na tampa porque
RESET está empurrando-os de distância..., mas o capacitor ainda está em 5V em ambos os
lados ... Eu caracterizaria isso como um estado estável, mas extremamente volátil. Porque a
tampa não é tecnicamente carregada, apenas mantida em um potencial de tensão, qualquer
mudança na tensão fará com que ele balançar rapidamente no nível de tensão em si. Claro que
tudo isso enquanto,

Então, agora o 16U2 precisa emitir um reset ... ele faz isso puxando o pino 13 para baixo...
embora isso pareça inapropriado. O pino 13 pode não estar indo para baixo, ele pode estar indo
para alta impedância e o caminho para o pino terra é mantido através de RN2D. Eu não estou
inteiramente certo, e honestamente que é uma espécie de minúcia, o ponto é que o 16U2 traz o
lado DTR da tampa para terra, desbalanceado o potencial em C5.

C5 não tem partículas carregadas para dar, porque ele foi mantido nesse estado estável, mas
volátil, de modo que a carga através dela cai quase que instantaneamente para zero ... * BOOM
* RESET!... mas então começa a construir uma carga de até 5V no lado RESET através do RN1D
10K. Uma vez que existe algum tipo de tempo limite programado dentro dos gestores de
arranque que aguarda mais de um segundo inteiro para que algo aconteça aqui, e leva apenas
cerca de 4ms para a tampa para carregar através de RN1D, C5 fica a 5V no lado RESET muito
rapidamente.

O esboço é transmitido através de Rx e Tx entre o 16U2 e o 328P, enquanto DTR é mantido


baixo, e quando ele está pronto para parar com a conversa serial, DTR é aumentado, criando
instantaneamente 5V potencial em ambos os lados da tampa. Agora a tampa é forçada para esse
estado estável, mas volátil, tem 5V em DTR e 5V em RESET, mas * também * tem 5V carregado
nas placas no lado RESET. Isso cria o pico de + 10V do potencial de voltagem que é sangrado
no barramento de +5V quando a sequência RESET é terminada.

Essa descrição faz mais sentido? Porque certamente me ajudou a entendê-lo mais
eficazmente eu vou provavelmente acabar adicionando isso a essa página.

Você também pode gostar