Você está na página 1de 28

Como controlar LEDs com o Arduino...

Você pode pensar que ligar e desligar um LED soa meio chato. E na verdade é meio
que...

Mas é uma habilidade importante saber, porque drivers de motor, relés e muitos
outros dispositivos são controlados da mesma forma que um LED.

Uma maneira comum de conectar um LED ao Arduino é conectando-o a um pino


digital como este:

Os LEDs têm polaridade , o que significa que precisam ser conectados de uma certa
maneira:

 o cátodo do LED se conecta ao pino terra (GND) do Arduino


 o ânodo do LED se conecta ao pino digital do Arduino (pino 13 neste
exemplo)

O resistor no circuito acima é um resistor limitador de corrente . Ele restringe a


corrente elétrica que flui através do LED, o que evita que ele queime.

Os resistores limitadores de corrente podem ter qualquer valor de cerca de 100


Ohms até cerca de 47K Ohms.

A resistência determinará o brilho do LED:

 Uma resistência menor permite que mais corrente flua, tornando-a mais


brilhante.
 Uma resistência maior “segura” a corrente, tornando o LED menos
brilhante.

Vamos dar uma olhada em algum código que fará o LED acender e apagar.

void setup() {
  // Configura o pino d13 como saída
  pinMode(13, OUTPUT);
}
void loop() {
  // Configura o pino 13 como HIGH
  digitalWrite(13, HIGH);
  // Espera 1000 ms (1 segundo)
  delay(1000);
  // Configura o pino 13 como LOW
  digitalWrite(13, LOW);
  // Espera 1000 ms (1 segundo)
  delay(1000);
}

A função pinMode() diz ao Arduino para gerar uma tensão ou medir a tensão em


um pino digital:

A função pinMode() recebe dois argumentos . Argumentos são as informações que


uma função precisa para executar sua tarefa. Eles são colocados dentro dos
parênteses da função e separados por vírgula. O primeiro argumento da
função pinMode() é o número do pino. É o pino 13 neste exemplo.
A função digitalWrite () usada na seção void loop() :

Leva dois argumentos - o número do pino e o estado da tensão ( ALTO ou BAIXO ).
Em seguida, a função delay() será usada para controlar por quanto tempo o pino
será definido como HIGH:

A função delay() diz ao Arduino para parar e esperar. O número entre parênteses


é a duração do atraso em milissegundos (1 segundo = 1000 milissegundos).
Neste ponto do programa, o LED está aceso por um segundo.
Para desativá- lo , podemos usar digitalWrite() , com LOW como segundo
argumento:

A função delay() manterá o estado de tensão BAIXO por 1000 milissegundos.


Como as duas funções digitalWrite() e delay() são usadas na seção void
loop() , o código será executado repetidamente, fazendo com que o LED pisque e
apague.
Esquema Elétrico do Arduino - O Guia
Definitivo
Entenda todos os detalhes do diagrama esquemático do Arduino UNO R3

Neste tutorial, será explicado todo o esquemático do Arduino UNO versão R3,
mostrando as funções de cada componente no circuito. Todos os componentes da
placa, sem exceções, são explicados aqui. Ao final deste tutorial, você entenderá os
fundamentos de cada parte do circuito e terá uma boa base para avaliar melhor as
placas Arduino disponíveis no mercado, entendendo as diferenças entre os diversos
modelos, inclusive clones e placas compatíveis.
Nosso objetivo durante a preparação deste material foi passar a maior quantidade
de informação possível, porém mantendo uma linguagem simples. A ideia é que
qualquer pessoa com algum conhecimento sobre eletrônica e projetos consiga
entender o material sem grandes dificuldades.
Durante a explicação, também foram feitas diversas comparações do UNO com
outras versões do Arduino. Assim você terá oportunidade de conhecer um pouco
mais as diferenças entre elas, e compreender melhor qualquer esquemático da
família Arduino. Esperamos que você goste.

Projeto do Arduino UNO


Atualmente, o Arduino UNO é a versão mais popular e mais vendida de toda a linha
Arduino, além de servir como base para outros modelos, como o Arduino MEGA
2560 por exemplo. Por esse motivo ele foi escolhido para fazer esse tutorial.
Os projetos de toda a linha oficial do Arduino são feitos utilizando o software Eagle.
Existe uma versão grátis do Eagle, que você pode baixar e usar para abrir ou
modificar os projetos originais do Arduino.
A instalação do Eagle, e o download dos arquivos de projeto do Arduino são
opcionais, e não são necessários para acompanhar esse tutorial.
Análise do esquemático
O diagrama esquemático completo do Arduino UNO R3 pode ser visto na imagem
abaixo.

Esquemático original do Arduino UNO R3 (clique na imagem para ampliar)


Este esquemático pode parecer um pouco intimidador, e até mesmo um pouco
confuso à primeira vista.
Para facilitar o entendimento, nós demos uma organizada no layout original. Isso foi
feito apenas alinhando o nome e o valor dos componentes, e também melhorando
um pouco a separação entre eles. Porém, nenhum componente foi modificado,
retirado ou adicionado, mantendo 100% da compatibilidade.
Pode-se dividir os componentes em três blocos principais: processador USB,
processador principal e alimentação. Todos eles serão explicados nas seções a
seguir.
A figura abaixo mostra o esquemático após a organização.

Esquemático Arduino UNO R3 organizado em partes


Outra dificuldade que normalmente ocorre na análise do funcionamento do Arduino,
é a dificuldade de se localizar um componente específico na placa, já que a mesma
não possui impressa a identificação de todos eles. Apenas os LEDs, conectores e
botão de reset têm identificação. Resistores, capacitores, chips e demais
componentes não são identificados.
Na figura abaixo, identificamos todos os componentes da placa com os mesmos
nomes utilizados no esquemático. Você pode utilizá-la como guia para localizar os
componentes.

Componentes nomeados na placa do Arduino UNO


Note os dois componentes marcados com ponto de interrogação (?). Eles estão na
placa, mas não aparecem no projeto. Isso indica que o projeto publicado pela equipe
do Arduino é de uma versão anterior, e não exatamente igual à da placa que está
sendo produzida. Porém, não notamos nenhuma outra diferença significativa e isso
não atrapalha em nada a nossa análise.
Agora chega de papo. Vamos ao que interessa, que é a análise e explicação do
esquemático. Nos tópicos a seguir, vamos explicar como cada um dos três blocos
principais funcionam:

 Processador USB
 Processador principal
 Alimentação

Processador USB
O processador USB, nomeado como U3 no esquemático, é responsável por fazer a
comunicação do Arduino com o seu PC através da porta USB. Ele é necessário, pois
o processador principal do Arduino (ATmega328) não suporta conexão direta com
uma porta USB. Dessa forma, o processador USB converte os dados da USB do PC
para um sinal serial (UART), e este sim pode lido pelo processador principal.
Podemos dizer então, que o processador USB funciona como um conversor USB-
Serial.
O processador utilizado para essa função é o ATmega16U2. Versões anteriores do
Arduino, como Arduino Duemilanove, Diecimila, Nano, MEGA (anterior ao R3) e
muitas outras placas similares, utilizam outro componente para essa função, o
FT232 fabricado pela empresa FTDI. Porém, muitos usuários reclamaram que a
troca do FT232 pelo ATmega16U2 ocasionou problemas de compatibilidade com
Windows e MAC.
Vamos ver mais de perto como é feita a implementação do processador USB
ATmega16U2. A figura abaixo mostra o circuito com mais detalhes:

Esquemático referente ao processador USB

Conector USB
À esquerda, podemos ver o conector USB nomeado como X2. Este é um conector
USB fêmea do tipo B, e é nele que você conecta o cabo USB. Outras versões do
Arduino utilizam conectores USB diferentes. O Arduino Nano por exemplo utiliza o
conector Mini USB, e versões mais novas como o Arduino Leonardo, DUE e Zero
utilizam o conector Micro USB, que é o mesmo utilizado na maioria dos
smartphones atuais.

Conectores USB utilizados nas placas Arduino

O conector USB tem duas funções - trazer as informações da porta USB do PC até a
placa, e também alimentar o Arduino quando não há uma fonte externa conectada.

Filtro e proteção USB


Saindo do conector, os sinais e a alimentação provenientes da USB passam pelo
bloco chamado "filtro e proteção USB". Nós vamos analisar todos os componentes
presentes nele.
F1
Primeiramente, toda a corrente proveniente da porta USB do PC (que vai alimentar o
Arduino e demais circuitos), passa pelo componente F1. Este componente é
um fusível, e tem a função de proteger a porta USB do PC caso ocorra um curto-
circuito ou sobrecarga acidental na placa do Arduino. Por padrão, cada porta USB
deve ser capaz de fornecer até 500 miliampéres de corrente, e o fusível está lá para
protegê-la caso esse limite seja ultrapassado.
Na verdade, este fusível nada mais é do que um resistor, cujo valor da resistência
aumenta com o aumento da temperatura (também conhecido como PTC ou positive
temperature coefficient). Porém, diferentemente de um fusível tradicional, que
queima quando há sobrecarga, este componente tem a capacidade de se rearmar
sozinho quando as condições de funcionamento voltam ao normal.
Para valores de corrente iguais ou menores do que 500 miliampéres, o valor da
resistência do fusível se mantém baixo. Deste modo, a corrente circula por ele
livremente (efetivamente é como se ele não estivesse lá). Porém, quando há um
curto-circuito ou sobrecarga no Arduino, a corrente drenada pela porta USB
aumenta. Isso faz com que mais corrente passe pelo fusível, causando o
aquecimento do mesmo e aumentando sua resistência. O aumento da resistência
corta a passagem da corrente, funcionando efetivamente como um fusível
queimado. Porém, caso o curto-circuito ou sobrecarga sejam removidos, o fusível
esfria e o valor da sua resistência baixa novamente, retornando ao estado original.
Porém, é importante ter em mente que o valor de 500 miliampéres é apenas uma
referência. Ele é somente o valor mínimo exigido pelo padrão USB, sendo que
muitos PCs conseguem fornecer mais corrente do que isso (além de ter seus
próprios mecanismos de proteção internos). Portanto não quer dizer
necessariamente que a porta USB do seu PC será danificada se você drenar 501
miliampéres dela. O próprio valor de corrente que efetivamente "desarma" o fusível
não é exatamente 500 miliampéres, sendo uma função do tempo que demora para
que haja esse desarme, juntamente com o valor da temperatura ambiente.
Consulte o datasheet se você tiver interesse em saber mais sobre o comportamento
deste fusível (o gráfico da página 3 mostra a relação do tempo de desarme em
relação ao valor da corrente).

Operação do fusível de proteção

Todas as versões do Arduino com porta USB possuem esse fusível. Ele é o modelo
MF-MSMF050-2 fabricado pela Bourns
Z1 e Z2
A comunicação USB é feita através dos pinos do conector nomeados D- e D+. Estes
sinais, após saírem do conector, passam pelos componentes Z1 e Z2. Eles são
conhecidos como varistores, e tem a função de proteger os pinos do ATmega16U2
contra descargas eletrostáticas, o que poderia causar a queima, ou mal
funcionamento do processador.
Descargas eletrostáticas, ou ESD (do inglês eletrostatic discharge) são eventos que
ocorrem quando se aproxima um objeto carregado com cargas elétricas de outro
que esteja descarregado. O exemplo mais comum de uma descarga eletrostática é
quando você anda sobre um tapete ou carpete usando um sapato com sola de
borracha, e depois toma um choque quando tenta abrir a maçaneta metálica da
porta. Nesse caso, o seu corpo fica carregado com cargas elétricas por causa do
atrito do sapato com o tapete, depois essas cargas são transferidas rapidamente
para a maçaneta da porta, fazendo com que você leve um pequeno choque. Se o
seu corpo estiver carregado, e ao invés da maçaneta, você tocar numa placa com
circuitos eletrônicos, as cargas são transferidas para ela, o que poderá causar danos
aos circuitos (mesmo com a placa desligada).
Descargas eletrostáticas ocorrem o tempo todo, e na maior parte dos casos, a
corrente é muito baixa para que você sinta um choque, de modo que elas acabam
passando despercebidas, mas mesmo assim ainda podem danificar os componentes
mais sensíveis. Componentes e circuitos com os quais o usuário final tem contato
direto (como normalmente é o caso das portas USB), merecem atenção especial
quanto à proteção ESD, pois são eles que normalmente recebem as descargas.
Assim como o fusível, o varistor também é um resistor, porém nesse caso, o valor da
resistência diminui conforme a tensão sobre ele aumenta. Com valores de tensão
baixos, como os que ocorrem durante o funcionamento normal da porta USB, a
resistência do varistor é bastante elevada (na ordem de 100 mega Ohms), assim os
sinais passam por eles sem haver desvios. Porém, quando um evento de descarga
eletrostática ocorre, a tensão aumenta rapidamente (podendo chegar a vários
kilovolts), fazendo com que a resistência do varistor baixe, e desvie o excesso de
corrente dos pinos do ATmega16U2 para o GND do Arduino, protegendo o
processador.

Operação dos varistores de proteção

O componente usado para essa função é o CG0603MLC-05E, também fabricado


pela Bourns.
As versões do Arduino que utilizam os chips FTDI no lugar do ATmega16U2,
normalmente não possuem os componentes para proteção ESD. Isso ocorre porque
estes chips já possuem estruturas de proteção internas, o que é suficiente na
maioria dos casos.
L1
O componente denominado L1 é conhecido como ferrite. Basicamente, ferrites são
utilizadas para supressão de ruído. Neste projeto, a sua função é a de filtrar
possíveis ruídos que possam vir pela malha do cabo USB até o Arduino, bem como
isolar o PC de ruídos gerados pelo Arduino. Não são todas as versões do Arduino
que possuem esse componente, e sua presença não é obrigatória para o
funcionamento.
Ferrite L1
O modelo utilizado é o BLM21 fabricado pela Murata.

RN3A e RN3D
Os últimos componentes deste bloco são os resistores de 22 Ohms denominados
RN3A e RN3D. A nomenclatura deles vem do fato de que no projeto do Arduino não
são utilizados resistores individuais, e sim componentes que possuem 4 resistores
juntos. Esses componentes são chamados de "rede de resistores", ou em inglês
"resistor network" (RN). Dessa forma, temos por exemplo que o componente com
nome RN3A é o resistor A da rede de resistores 3, o RN3B, é o resistor B desta
mesma rede, e assim por diante até o quarto resistor (denominado D). Veja que
nesse caso, apenas 2 resistores foram usados, o resistor B e o resistor C ficaram
sobrando, e estão localizados logo acima do bloco de filtro e proteção.

Resistores RN3A e RN3D

A função destes resistores é a de atenuar ruídos e picos de tensão que, porventura,


podem vir através do cabo USB, ajudando na proteção do processador. Porém, eles
não são obrigatórios para o funcionamento, e versões que utilizam chips FTDI
normalmente não os utilizam.

Oscilador
O oscilador é o coração de qualquer processador, sendo responsável pela geração
do pulso de clock. Virtualmente todos os processadores existentes utilizam um
oscilador, e sua implementação costuma ser bem semelhante. Apesar de utilizar
poucos componentes, o funcionamento deste circuito é relativamente complexo, por
isso nós não iremos entrar em detalhes, e vamos nos concentrar apenas nas
características fundamentais.
Neste projeto, o oscilador do ATmega16U2 foi implementado utilizando um cristal
como componente principal (Y1). Este cristal tem uma frequência de ressonância de
16MHz. A função do cristal é a de gerar uma senóide, que servirá como base para o
clock. Internamente, o processador transforma essa senoide em uma onda
quadrada.
A figura abaixo mostra a senoide obtida medindo o oscilador do Arduino UNO.

Senoide de 16MHz gerada pelo oscilador do Arduino

Além do cristal, existem dois capacitores de 22 picofarad cada (C11 e C9), e um


resistor de 1 Mega Ohm (R1).
O papel do resistor R1 é facilitar o início da geração do clock. Alguns processadores
e circuitos integrados necessitam deste resistor para que o circuito comece a
funcionar após a alimentação ser ligada, porém isso não é obrigatório, e o seu uso
depende da orientação do fabricante do chip.
Os capacitores C1 e C2 são obrigatórios neste tipo de circuito, e além de outras
funções, têm o papel de ajustar a frequência do cristal. Normalmente cada cristal
tem a especificação de qual valor de capacitor é ideal para o seu funcionamento, e é
papel do projetista escolher o valor adequadamente. Valores errados de capacitor
podem alterar a frequência de ressonância do cristal, ou até impedir o seu
funcionamento.
Processador USB
Este bloco compreende o processador USB em si, ou seja, o chip ATmega16U2.
Neste projeto, ele é responsável por receber os dados provenientes da USB, e
transformá-los em sinais seriais.
Bloco processador USB

C7
Podemos ver o capacitor C7 com valor de 100 nanofarad ligado diretamente entre a
tensão de alimentação de 5 Volts e o GND. Neste circuito, o capacitor exerce a
função de "capacitor de desacoplamento". Capacitores com esta função são muito
importantes no funcionamento de circuitos integrados digitais. Praticamente todos os
fabricantes de circuitos integrados recomendam o uso de capacitores ligados nos
pinos de alimentação, sendo 100 nanofarad um valor clássico. Além do valor, o
quesito mais importante quando se utiliza um capacitor de desacoplamento é a sua
localização, devendo ser posicionados o mais perto possível dos pinos de
alimentação do circuito integrado em questão (caso fique afastado, seu efeito será
nulo).
As principais funções de um capacitor de desacoplamento são:
 Filtrar os ruídos provenientes da fonte alimentação, não deixando que os
mesmos entrem no circuito integrado. Além disso, filtram os ruídos
gerados internamente no circuito integrado, não deixando que eles se
espalhem para outros componentes da placa.
 Um circuito digital, como um processador, consome corrente em picos,
que normalmente coincidem com as transições do pulso de clock. O
capacitor tem o papel de armazenar uma quantidade de energia suficiente
para suprir os picos de corrente exigidos pelo processador.
RN1C
O resistor RN1C funciona como resistor de pull-up, e sua função é a de manter o
pino 24 do processador em nível alto (nível alto nesse caso quer dizer que há uma
tensão de 5 Volts no pino). Este é o pino de reset do processador, e o mesmo é
ativo em nível lógico baixo, ou seja, o processador é colocado em estado de reset
quando a tensão no pino é zero. Desse modo, o resistor segura a tensão em 5 Volts,
e impede que o processador entre em estado de reset indevidamente. O
ATmega16U2 já tem um resistor de pull-up interno para esse pino, e o uso de
resistor interno não é obrigatório, porém é indicado no caso de ambientes com níveis
elevados de ruído.
D3
O diodo D3 tem o papel de reforçar a proteção contra descarga eletrostática (ESD)
no pino 24.
Mas porque o diodo é colocado apenas nesse pino do processador, e não nos
demais?
Bom, a história é um pouco comprida, mas podemos dizer que os processadores
normalmente já tem estruturas internas de proteção ESD, que são compreendidas
por dois diodos ligados em cada pino. Porém, o pino de reset é um caso especial, já
que ele é usado durante a gravação do software, e alguns métodos de programação
(mas não todos) aplicam 12 Volts nesse pino durante o processo. Esse fato impede
que a estrutura de proteção ESD seja implementada de forma completa no pino de
reset, já que o diodo impediria a aplicação dos 12 Volts o mesmo. Dessa forma, o
fabricante do chip retira um dos dois diodos internos de proteção. Como na
produção do Arduino não são utilizados os métodos de programação que
necessitam da aplicação dos 12 Volts no pino de reset, o diodo de proteção interno
omitido foi re-inserido externamente, deixando a estrutura de proteção contra ESD
completa novamente (baixe o documento "EMC Design Considerations" na seção
de downloads ao final da página para mais informações).
O uso deste diodo é opcional, e não está presente em muitas versões do Arduino,
como Pro, ProMini, Nano, Duemilanove, MEGA entre outras.
C8
O processador ATmega16U2 possui um regulador de tensão interno, que é
necessário para o funcionamento de alguns dos seus circuitos. Para que esse
regulador trabalhe corretamente, o fabricante recomenda que seja conectado ao
pino 27 do processador (nomeado como UCAP), um capacitor com valor de 1
microfarad.

LEDs USB
São dois LEDs, RX e TX, que são controlados pelo software do processador, e
usados para indicar a atividade da comunicação USB. Ou seja, quando há
informações enviadas do Arduino para o PC, o LED TX pisca, e quando há
informações enviadas do PC para o Arduino, o LED RX pisca. A implementação
desse circuito é bem simples e tradicional, há apenas um resistor em série com cada
LED (RN2B e RN2C) com valor de 1 kilo Ohms, e que tem o papel de limitar a
corrente dos mesmos.

LEDs para indicar atividade no barramento USB

Note que como os LEDs estão ligados diretamente na tensão de 5 Volts, o


acionamento deles ocorre de modo "invertido". Ou seja, o LED apaga com nível
lógico alto no pino, e acende com nível lógico baixo.

Conector de programação

Conector de programação do ATmega16U2

Normalmente este conector é usado somente durante a fabricação do Arduino, no


momento em que o primeiro software é gravado no processador. Este conector
serve para ligar a placa do Arduino ao programador que irá gravar o software (um
exemplo de programador é o AVRISP mkII).

Demais componentes no processador USB


Ainda há alguns componentes ligados diretamente no processador ATmega16U2.
Vamos explicá-los agora.
RN4A e RN4B
Resistores que interligam a serial entre os processadores

Estes dois resistores estão ligados em série com os sinais RX e TX da serial que
vão para o processador principal ATmega328, ou seja, eles são o elo de ligação
entre os dois processadores. A presença destes resistores em série permite que
você utilize shields no Arduino que façam uso da serial do processador ATmega328.
De uma certa maneira, é como se a serial vinda do processador ATmega16U2 seja
desconectada no momento em que você pluga no Arduino um shield que utilize a
serial. Isso traz uma flexibilidade maior no uso do Arduino, já que permite o uso da
serial com outros shields, porém é como se a porta USB fosse desabilitada enquanto
há um shield serial plugado. Dessa forma, para programar o Arduino, ou se
comunicar com o PC, é necessário desplugar o shield que utiliza a serial.
C5 e RN2D

Acoplamento capacitivo na linha de reset


Quando você grava o seu software no Arduino, o processador ATmega16U2 envia
as informações para o processador principal (ATmega328) através da serial. Porém,
durante o gravação, é preciso resetar o processador ATmega328 para colocá-lo em
modo de programação. O ATmega16U2 envia esse sinal de reset para o
ATmega328 através do pino 13. O capacitor C5 é inserido em série com este sinal,
fazendo um acoplamento capacitivo entre os processadores. Esse acoplamento
capacitivo faz com que o sinal de reset seja enviado apenas durante um curto
espaço de tempo, necessário para que o ATmega328 seja resetado, mas impedindo
que ele fique em reset o tempo todo.
O resistor RN2D tem a indicação "USB boot En", e é um resistor de "pull-down".
Porém nós não conseguimos maiores informações sobre a sua função.
JP2
Conector JP2
Parece ser um conector de expansão, mas ele não vem soldado na placa, e nós não
temos mais informações sobre a sua função.
Ground

Jumper de solda
É um jumper de solda, que fica localizado na parte de baixo placa. Ele serve para
conectar o terra vindo da malha do cabo USB (após passar pelo indutor L1) ao terra
principal. Em projetos eletrônicos, normalmente os projetistas fazem essa conexão
entre os "terras diferentes" utilizando um jumper, pois isso garante que eles sejam
conectados apenas em um ponto, o que evita a circulação de corrente em áreas
indesejadas da placa. Este jumper já vem fechado de fábrica.

Processador principal
Agora que nós entendemos o funcionamento do processador USB, será bem mais
fácil compreendermos como funciona o processador principal, já que e
implementação do circuitos são bem semelhantes.
Como já dissemos anteriormente, no Arduino UNO, o componente que faz o papel
de processador principal é o ATmega328, também fabricado pela Atmel
Semiconductor e nomeado como ZU4 no esquemático.
Outros modelos de Arduino utilizam processadores diferentes. Por exemplo, existem
versões do Arduino Nano e Duemilanove que utilizam o ATmega168, que
basicamente é um componente idêntico ao ATmega328, porém com menos
memória. O Arduino MEGA 2560 utiliza o o ATmega2560, que possui mais pinos e
mais memória do que o ATmega328. O Arduino Leonardo utiliza o processador
ATmega32U4, que possui características semalhantes ao ATmega328, porém ele
possui interface USB embutida, resultando em uma placa com apenas um
processador (porém essa versão acabou não se tornando muito popular). Por fim,
existem ainda versões de Arduino que utlilizam processadores ARM, como é o caso
do Arduino DUE (AT91SAM3X8E), e ainda outras plataformas como o Intel Galileo,
que utiliza um processador Intel (Intel® Quark SoC X1000).
O ATmega328 é o "cérebro" do Arduino UNO e, resumidamente, podemos dizer que
ele tem três funções:

 Recebe, envia e interpreta os sinais da serial que vêm do processador


USB ATmega16U2.
 Executa o software que está programado nele.
 Interage diretamente com os shields e elementos externos, realizando
acionamento de dispositivos e leitura de sensores.

A figura abaixo mostra o bloco do processador principal:

Esquemático referente ao processador principal


Vamos agora ver mais de perto como o circuito do processador principal é
implementado.
Oscilador

Ressonador cerâmico do ATmega328

O oscilador do ATmega328 funciona de modo bem semelhante ao oscilador do


ATmega16U2 apresentado anteriormente, e ambos têm frequencia de 16 MHz. A
principal diferença, é que o oscilador do ATmega328 foi feito com um ressonador
cerâmico ao invés do cristal utilizado no ATmega16U2. O ressonador cerâmico é
nomeado como Y2 no esquemático, e o modelo utilizado é o CSTCE16M0V53-R0
fabricado pela Murata.
Ressonadores cerâmicos são componentes com função semelhante à do cristal, ou
seja, eles também são responsáveis por gerar a onda senoidal que servirá como
base para o sinal de clock do processador.
Normalmente o ressonador cerâmico é mais compacto do que o cristal, e já vêm
com os capacitores de ajuste instalados internamente, deixando o circuito mais
simples. Porém, em termos de precisão, o ressonador cerâmico costuma ter
desempenho pior do que o cristal, podemos dizer em linhas gerais que o ressonador
tem precisão de 0,5% contra 0,003% do cristal. Por isso ressonadores são mais
usados em aplicações compactas e com pouco espaço disponível.
Versões do Arduino como Duemilanove, Diecimila e MEGA usam cristal como
elemento ressonante. Nós não sabemos ao certo o que levou essa troca para o
ressonador cerâmico no Arduino UNO. Talvez tenha sido uma herança do Arduino
Nano, já que ele sempre usou ressonador, mas é difícil dizer com certeza.
De qualquer forma, o importante é saber que o circuito no geral é o mesmo, apenas
os capacitores são omitidos (por já estarem dentro do ressonador), e o resistor de 1
Mega Ohm que auxilia no início do funcionamento (R2) continua.
Processador principal

Processador ATmega328

Este também é um bloco semelhante ao do processador USB. Podemos ver no


esquemático os componentes C4 e C6, ambos de 100 nano Farad, que cumprem a
função de capacitores de desacoplamento para os pinos 21 e 20 respectivamente. O
projetista ainda poderia ter colocado outro capacitor para desacoplar o pino 7, como é
recomendado, porém ele não foi inserido nesse esquema.
Os componentes RN1D e D2 cumprem a função de pull-up e proteção ESD para o pino
de reset, semelhante aos componentes RN1C e D3 no processador USB.
Também podemos notar os sinais seriais vindos do processador USB, e que são
ligados nos pinos 2 e 3 do ATmega328, assim como o sinal de reset, ligado ao pino 1.

Conector programação

Conector de programação do ATmega328

Este conector, assim como no processador USB, é usado para a programação do primeiro software
feito ainda na fábrica do Arduino (este software tem o nome de bootloader).
Botão de reset

Botão de reset do ATmega328

O botão é nomeado como RESET no esquemático. Quando pressionado, o botão fecha o contato
dos pinos 1 e 2 com os pinos 3 e 4, ligando o pino de reset do processador diretamente ao GND.
Isso faz com que haja um nível lógico baixo neste pino, o que reseta o processador.

Conectores para shields

Conectores do ATmega328 para encaixe dos shields

Estes são os conectores utilizados para plugar os shields ao Arduino. Eles são
ligados diretamente aos pinos de I/O do processador, e também às tensões de
alimentação 5V, VIN, 3,3V e GND.
Note que no esquemático, todos os sinais com o mesmo nome estão interligados,
independente de haver uma conexão física entre os mesmos. Por exemplo, os dois
ramos nomeados como AD5/SCL estão ligados eletricamente, mesmo parecendo
haver uma ponta "solta" no conector (veja imagem do esquemático completo do
bloco), isso também acontece com os sinais de 3,3V, RESET, GND e todos os
outros.
Tente fazer a correspondência entre os conectores representados no esquemático e
os conectores da placa. Veja que eles são nomeados como POWER, IOH, AD e
IOL, e a legenda que aparece em verde indica qual é a numeração ou a função do
pino no Arduino. Além disso, há uma inscrição indicando qual é o tamanho e o
modelo do conector, por exemplo, a legenda "8x1F-H8.5" indica que se trata de um
conector com 8 pinos, uma coluna, tipo fêmea, e com altura de 8,5mm.

Alimentação
Vamos passar agora para o último bloco do esquemático, e ver como funciona a
parte de alimentação do Arduino UNO.
A figura abaixo mostra componentes presentes neste bloco:
Esquemático referente à alimentação do Arduino UNO

Jack de entrada
Este conector, nomeado como X1, é onde você conecta o plugue de
alimentação da fonte externa. É conveniente usar uma fonte externa para
alimentar o Arduino quando o mesmo não pode ficar conectado sempre na porta
USB do PC, quando há algum elemento na aplicação que precise ser alimentado
com uma tensão maior do que 5 Volts, ou quando o circuito exige uma corrente
maior do que os 500mA suportados pela porta USB do PC.

Jack para fonte externa

O intervalo de tensão recomendado para alimentação do Arduino com fonte externa


é de 7 até 12 Volts, ainda que a placa suporte tensões de até 20 Volts. O uso de
tensões superiores à 12 Volts pode ocasionar aquecimento excessivo dos
reguladores, não sendo recomendada (vamos ver mais detalhes sobre isso mais
adiante).
Este conector é do tipo fêmea, e definido como 2,1 mm, o que significa que o pino
no seu centro tem 2,1 milímetros de diâmetro. Isso quer dizer que a fonte utilizada
deve ter um conector do tipo macho, também com 2,1 milímetros e centro positivo
(ou seja, o interior do plugue tem tem tensão positiva em relação ao exterior, que é o
GND).
Imagem do plugue de 2,1mm necessário para conexão com Arduino

Infelizmente, não há uma padronização internacional para esse tipo de plugue (como
há para os conectores USB por exemplo), então não é difícil você se deparar com
uma fonte que não tem um conector adequado para se conectar ao Arduino. Por
esse motivo, nós inserimos na nossa versão (a Base Boarduino), um conector tipo
borne de parafuso. Dessa forma você pode usar qualquer fonte que tenha à mão,
mesmo que ela não tenha um plugue adequado. Nesse caso, basta cortar o plugue
da fonte, e parafusar os fios direto no borne.

Diodo de proteção
A corrente que chega pelo jack de entrada logo encontra o primeiro componente,
que se trata do diodo de proteção D1. Sua função é a de proteger o Arduino caso
uma fonte com polaridade invertida seja conectada acidentalmente no jack. Uma
fonte com polaridade invertida, nesse caso, seria um modelo com centro negativo.
Quando se conecta acidentalmente uma fonte com polaridade invertida em uma
placa eletrônica que não é protegida, isso causa a circulação de corrente no sentido
reverso, o que ocasiona a queima de vários componentes, destruindo a maioria dos
circuitos. No caso do Arduino, o diodo D1 evita que a corrente circule no sentido
contrário, protegendo a placa. Resumidamente, podemos dizer que o diodo funciona
como uma chave fechada para fontes com a polaridade correta, e como chave
aberta para fontes com polaridade invertida.
É importante notar que na situação em que uma fonte com polaridade invertida é
ligada ao o Arduino, o mesmo fica protegido, porém não funciona, sendo necessário
acertar a polaridade da fonte para que o funcionamento volte ao normal.
A figura abaixo ilustra o modo com que o diodo age para proteger o Arduino no caso
de uma ligação com fonte invertida.

Diodo protegendo a placa contra ligação reversa


Após passar pelo diodo de proteção, a tensão proveniente da fonte é chamada
de VIN, e também está disponível em um dos conectores do Arduino.
O diodo utilizado é o modelo M7, que se trata da versão SMD do popular 1N4007, e
a corrente máxima suportada é de 1A. Porém, a queda de tensão sobre este diodo é
grande, chegando a 1,1 Volts, o que pode trazer efeitos indesejáveis como aumento
da dissipação térmica, ocasionando perda de eficiência. Nesse caso, um diodo tipo
Schottky seria mais adequado, pois a queda de tensão sobre ele é menor (nós
usamos um diodo Schottky para essa função na Base Boarduino).
A maior parte das outras versões de Arduino não especifica qual modelo de diodo foi
usado. Além disso, algumas versões como o Nano, não possuem essa proteção
contra inversão de polaridade. Há ainda outras versões como o Leonardo e o
Arduino Micro que utilizam outros componentes, ou o mesmo diodo ligado de uma
forma diferente. Baixe os projetos destas placas e tente comparar as diferenças nos
circuitos.

Regulador 5V
O próximo componente do circuito que iremos analisar é o regulador de 5 Volts
nomeado como U1. Sua função é a de baixar a tensão da fonte (que pode ter um
valor entre 7 e 20 Volts) e estabilizá-la em 5 Volts, que é a tensão recomendada
para o funcionamento dos componentes do Arduino, como os dois processadores
por exemplo. Além disso, o regulador também funciona como um filtro, atenuando os
ruídos que possam estar presentes na tensão gerada pela fonte de alimentação.

Funcionamento do regulador de 5 Volts

Este regulador é chamado de regulador linear, e o meio que ele usa para baixar a
tensão da fonte é simplesmente dissipar o excesso de energia, jogando-a fora
como calor. Por esse motivo, ele apresenta uma eficiência baixa, e costuma
esquentar bastante em alguns casos. Se você alimentar o seu Arduino com uma
fonte de 12 Volts por exemplo, aproveitará apenas 40% da energia fornecida pela
fonte, sendo os outros 60% jogados fora na forma de calor. Isso acontece com
qualquer regulador linear, independente do fabricante e do modelo. Portanto, não se
assuste se esse componente começar a esquentar quando você usa o Arduino com
uma fonte externa, pois ele está lá para isso mesmo. Se a placa estiver bem
projetada, a temperatura ficará dentro dos limites tolerados pelo componente (mas
provavelmente ficará acima do limite tolerado pelo seu dedo, portanto tenha
cuidado).
Quanto mais se aumenta a tensão da fonte externa, menos eficiente se torna o
funcionamento do regulador linear. Usando uma fonte de 20V por exemplo, apenas
25% da energia é aproveitada, sendo 75% jogada fora na forma de calor. Dessa
forma, sempre que possível, utilize fontes de alimentação com valor reduzido, como
9 ou 7,5 Volts por exemplo.
No Arduino UNO, o componente utilizado para o regulador de 5 Volts é o NCP1117
fabricado pela ON Semiconductor, e ele usa dois capacitores para ajudá-lo nessa
tarefa, PC1 e PC2, ambos de 47uF. Estes capacitores são importantes para o bom
funcionamento do regulador. O PC1 ajuda a estabilizar a tensão de entrada
proveniente da fonte de alimentação, e também fornece a energia necessária para
suprir os eventuais picos de corrente que acontecem durante a utilização da placa.
O capacitor PC2 tem o mesmo papel de estabilização, porém na tensão da saída.
Além disso, este capacitor ainda exerce um importante papel na estabilidade do
regulador, devendo ser escolhido cuidadosamente de acordo com as instruções do
fabricante em termos de capacitância e de resistência em série (esta é uma
resistência parasita que todo capacitor tem, é chamada de ESR ou "equivalent
series resistance" em inglês). Uma falha na escolha do capacitor de saída pode
ocasionar oscilações indesejáveis no regulador.
Apesar da baixa eficiência, praticamente todas as versões do Arduino utilizam um
regulador linear, pois eles são fáceis de usar, baratos e confiáveis. Alguns modelos
utilizam o mesmo NCP1117, já outras versões utilizam chips diferentes. O Arduino
Duemilanove usa por exemplo o MC33269D-5.0, já o Arduino Nano utiliza o
UA78M05. Porém, a função e o funcionamento são sempre semelhantes. Ainda há
outras versões, como o Arduino Due, que não usa um regulador linear para gerar a
tensão de 5 Volts (baixe o esquemático no site do Arduino e tente descobrir as
diferenças. Dica: o CI utilizado é o IC2, modelo LM2734Y).

Regulador 3,3 Volts


O Arduino UNO também tem um segundo regulador, que baixa a tensão de 5 Volts
provenientes do regulador U1 para uma tensão de 3,3 Volts. Este componente é
nomeado como U2, e é o modelo LP2985 fabricado originalmente pela National
Semiconductor (hoje essa empresa faz parte da Texas Instruments).
No projeto do Arduino UNO, a tensão de 3,3 Volts é usada somente no componente
U5 (que faz parte do circuito de chaveamento que veremos depois), nenhum outro
componente é alimentado por ela. E por que esse regulador está presente?
Normalmente, a tensão de 3,3V é usada pelos usuários para alimentar outros
circuitos externos, ou shields que utilizem essa tensão. Principalmente os circuitos
eletrônicos mais modernos estão migrando da tensão clássica de 5 Volts para 3,3
Volts, sendo hoje muito comum em vários dispositivos. Por isso é útil ter esse
recurso disponível no Arduino.
A implementação do regulador U2 é semelhante à do U1. O capacitor de entrada
nesse caso é o C2 com 100 nano Farad, e o capacitor de saída é o C3, com 1 micro
Farad (veja na placa do Arduino, que o capacitor C2 está localizado bem distante do
regulador U2, o que não é recomendado nesse caso).
Funcionamento do regulador de 3,3 Volts
Algumas versões do Arduino que utilizam o chip FT232 para a função de conversor
USB-serial, como por exemplo o Duemilanove, Nano e MEGA, não possuem um
segundo regulador para gerar a tensão de 3,3V. Nesse caso ela é proveniente de
um regulador interno presente no próprio chip FT232. Apesar da capacidade de
corrente ser reduzida (50 miliamperes), ela é suficiente para a grande maioria dos
casos.

Circuito de chaveamento
Como nós já vimos anteriormente, o Arduino pode ser alimentado tanto por uma
fonte de alimentação externa, como diretamente pela porta USB do PC. Nos casos
em que o Arduino está conectado à porta USB, e ainda há uma fonte externa ligada
à ele, haveria um conflito entre as mesmas, já que ambas tentariam alimentar o
Arduino ao mesmo tempo. Isso poderia causar danos à fonte, à porta USB do PC e
também ao Arduino.
O circuito de chaveamento tem a função de resolver esse conflito. Ele desconecta
a alimentação proveniente da porta USB sempre que houver uma fonte de
alimentação conectada ao Arduino. Podemos dizer então que a fonte externa
sempre terá preferência para alimentar o conjunto. Esse processo é transparente ao
usuário, de modo que você pode conectar e desconectar a fonte de alimentação
mesmo com a placa em funcionamento (supondo que a USB tenha capacidade de
alimentar todo o conjunto).
Os componentes responsáveis por essa função são os resistores RN1A, RN1B, o
transistor T1 e o chip U5.
Vamos começar explicando o funcionamento do transistor T1 (o modelo é o
FDN340P fabricado pela Fairchild Semiconductor). Como o entendimento completo
deste componente envolve conceitos mais complexos como dopagem de silício e
junções PN, vamos tentar abstrair um pouco, e mostrá-lo de uma forma mais prática.
O transistor T1 faz parte de uma família de transistores conhecida
como MOSFET (neste caso é um MOSFET de canal P). Um MOSFET é um
dispositivo que possui três terminais, um deles é o terminal de comando (chamado
de porta ou gate), e os outros dois são terminais que conduzem corrente
(denominados dreno e fonte, ou drain e source respectivamente). Seu
funcionamento pode ser descrito como a de uma chave liga e desliga. Dessa forma
ele deixa passar, ou corta a corrente que passa pelos terminais de dreno e fonte
dependendo do comando que é enviado à ele. Resumidamente podemos dizer que:

 O MOSFET permanece desligado (cortando a corrente entre os terminais


de dreno e fonte) enquanto a tensão no seu terminal de comando estiver
em nível lógico alto.
 O MOSFET permanece ligado (deixando passar a corrente entre os
terminais de dreno e fonte) enquanto a tensão no seu terminal de
comando estiver em nível lógico baixo.

A figura a seguir ilustra esse funcionamento:

Funcionamento simplificado do MOSFET canal P

Quem envia o comando para ligar e desligar o transistor T1 é o componente U5.


Este componente é um amplificador operacional (amp-op). O amp-op é um dos
componentes mais versáteis que existe, e é muito utilizado em projetos eletrônicos
analógicos, com ele é possível fazer osciladores, filtros, buffers, somadores, e uma
série de outras aplicações. Porém, no circuito de chaveamento do Arduino UNO, o
amp-op é utilizado como um comparador, e é assim que iremos analisá-lo.
O componente usado é o LMV358, fabricado por diversas empresas como Texas,
On Semiconductor, ST, etc...
Um comparador possui 2 terminais de entrada, que são denominados  e , além de
um terminal de saída. Sua função é a comparar a tensão presente nos terminais  e ,
indicando através do nível lógico do terminal de saída, qual dessas tensões é a
maior. O funcionamento pode ser descrito como:

 A tensão no terminal de saída permanece em nível lógico alto, enquanto a


tensão no terminal  for maior do que a tensão no terminal .
 A tensão no terminal de saída permanece em nível lógico baixo, enquanto
a tensão no terminal  for menor do que a tensão no terminal .

Funcionamento do amp-op como comparador


Vamos voltar agora ao esquemático. Nele podemos ver que a tensão presente no
terminal  é a própria tensão de 3,3V gerada no regulador U2. Já a tensão presente
no terminal  é a tensão VIN proveniente da fonte externa após passar pelo divisor
resistivo formado pelos resistores RN1A e RN1B. Como os dois resistores têm
valores iguais (10 kilo Ohms nesse caso), eles formam um divisor por dois, de modo
que a tensão presente no terminal  do comparador é a metade da tensão VIN (na
verdade seria preciso descontar também a queda de tensão sobre o diodo D1, mas
vamos ignorar isso, pois a sua influência é baixa).

Divisor resistivo formado pelos resistores RN1A e RN1B

Quando há apenas a tensão da USB presente, VIN é igual a zero, já que não há
fonte externa conectada. Nessa situação, a tensão no terminal  é menor do que
tensão no terminal , fazendo com que a a saída do comparador permaneça em nível
lógico baixo. Esse nível lógico baixo é enviado diretamente ao terminal de comando
do MOSFET, fazendo com que o mesmo ligue e conduza a corrente proveniente da
porta USB. Isso permite que ela alimente todo o circuito (no esquemático, a corrente
proveniente da USB vem pelo sinal denominado como USBVCC que é originado
logo após passar pelo fusível F1, lembre-se que sinais com o mesmo nome são
sempre conectados entre si, mesmo que não haja ligação física no esquemático)..
Porém, quando uma fonte de alimentação de 12 Volts por exemplo é ligada ao
Arduino, haverá uma tensão de 6 Volts presente no terminal  do comparador
(lembre-se do divisor resistivo por dois). Nessa situação, a tensão no terminal  é
maior do que a tensão no terminal  (que é sempre de 3,3V), o que faz com que a
saída do comparador permaneça em nível lógico alto. Esse nível lógico é alto é
enviado diretamente ao terminal de comando do MOSFET, fazendo com que o
mesmo desligue e impeça que a corrente da USB passe por ele, efetivamente
desligando a alimentação da porta USB. Portanto a corrente proveniente da fonte
externa passa a ter preferência, e é ela quem alimenta o Arduino.
Como a tensão da fonte é sempre dividida por dois na entrada do comparador, o
valor mínimo necessário para que ela tenha a capacidade de desligar o MOSFET é
de 6,6 Volts. Esse valor está abaixo do limite mínimo recomendado para
alimentação do Arduino com fonte externa (que é de 7 Volts), portanto a fonte
externa sempre terá preferência.
Ainda há outro componente presente no circuito de chaveamento, que é o capacitor
C1 de 100 nano Farad. No esquemático, ele está ligado a dois pinos que parecem
"soltos" logo acima do comparador U5A, porém estes pinos fazem parte do mesmo
componente U5.

Capacitor de desacoplamento C1
O C1 está ligado aos pinos de alimentação do amp-op é o nosso velho conhecido
capacitor de desacoplamento (reveja a seção Processador USB" para mais
detalhes).

LED D13
O próximo circuito que iremos analisar é o LED acionado pelo pino D13 do Arduino,
ele é nomeado com L no esquemático. Esse é o LED que pisca quando rodamos o
exemplo Blink. Na verdade, este circuito não faz parte do circuito de alimentação,
porém o inserimos nesta seção pois ele compartilha o mesmo componente U5 do
circuito de chaveamento.
Este LED tem um resistor RN2A de 1 kilo Ohm ligado em série com o mesmo para
limitar a sua corrente, e eles estão conectados diretamente na saída de outro amp-
op. Porém, apesar de haver dois amp-ops no esquemático (U5A e U5B), ambos
estão inseridos dentro do mesmo encapsulamento, ou seja, eles fazem parte do
mesmo componente (baixe o datasheet do LMV258 para ver mais detalhes).

LED acionado pelo pino D13 do Arduino

Temos então que o terminal  do amp-op está ligado no sinal SCK, que vem do pino
D13 do Arduino, e é este sinal que fará o acionamento do LED. O terminal  do amp-
op está ligado diretamente à saída. Esta montagem do amp-op é chamada de
seguidor de tensão ou buffer. Na prática, ele não exerce nenhuma função lógica, já
que o LED acende toda vez que há um nível alto no pino 13 e apaga toda vez que
há um nível lógico baixo. Efetivamente é como se o LED estivesse ligado
diretamente à esse pino.
Mas então pra que usar o amp-op para acionar o LED?
O amp-op foi utilizado, porque o pino D13 não tem a função exclusiva de acender e
apagar o LED. Ele também é por exemplo, o pino de clock da comunicação SPI
(SCK). Se o LED fosse ligado diretamente, ele drenaria do pino D13 uma corrente
aproximada de 3 miliampéres enquanto estivesse aceso, acrescentando uma carga
extra. Isso poderia influenciar e prejudicar o uso do pino D13 em outras aplicações.
O amp-op, por sua vez, possui uma alta impedância nos seus pinos de entrada. Isso
quer dizer que a corrente consumida por eles é muito pequena (em torno de 250
nanoamperes). Dessa forma, ele praticamente não acrescenta carga extra ao pino
D13 do Arduino, eliminando a influência do LED. Resumindo tudo, você drena do
pino uma corrente de apenas 250 nanoamperes para acionar uma carga de 3
miliampéres (12000 vezes menos).
O amp-op não é o único circuito que pode ser usado para essa finalidade, também é
possível utilizar buffers ou transistores. Outra opção é o uso de LEDs de alto brilho,
que têm mais eficiência. Desse modo, aumenta-se o valor do resistor, diminuindo a
carga sobre o pino, o que torna desprezível a influência do LED.
O Arduino Nano não utiliza esse circuito – LED vai ligado diretamente no pino do
processador.

LED ON

LED indicador de alimentação

Este é o último bloco que falta analisarmos, e é também o mais simples. Trata-se do
LED que sempre fica aceso enquanto o Arduino está ligado, ele é nomeado no
esquemático como ON.
O circuito tem dois resistores, RN4C e RN4D, ambos com 1 kilo Ohms e ligados em
paralelo. Efetivamente eles funcionam como um resistor único de 500 Ohms, e tem o
papel de limitar a corrente no LED.

Fiduciais
Os mais atentos podem dizer que ainda faltam componentes a serem explicados.
Eles são os três círculos que aparecem soltos logo ao lado do conector POWER no
esquemático original. A figura abaixo mostra onde eles estão.

Localização dos três círculos


Bem, esses não são componentes propriamente ditos. Eles representam algumas
marcações na placa, e são chamados de pontos fiduciais. Esses pontos servem
como pontos de referência para as máquinas que fazem a montagem automática
dos componentes na fábrica do Arduino, pois assim se consegue um melhor
alinhamento.
No projeto publicado pela equipe do Arduino, existem 3 pontos fiduciais, e eles ficam
localizados abaixo do jack de entrada para fonte, do botão de reset e do
ATmega328. Desse modo não é mais possível vê-los depois que os componentes
estão montados.
Nós encontramos uma outra versão do Arduino UNO, com o processador
ATmega328 em encapsulamento SMD, onde é possível ver dois pontos fiduciais.
Eles estão destacados na imagem abaixo.

Exemplos de pontos fiduciais

Você também pode gostar