Entenda todos os detalhes do diagrama esquemático do Arduino UNO R3

Autor: Gustavo Ambrozini Furlan

Neste tutorial, vamos explicar 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. Se você quiser se aprofundar, e conhecer algum componente mais a fundo, nós disponibilizamos os datasheets dos componentes mais importantes na seção de downloads ao final desta página.

Durante a explicação, nós também fizemos 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 nós o escolhemos 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. O projeto original do Arduino UNO pode ser baixado diretamente na seção de downloads ao final desta página, ou diretamente do site 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

diagrama esquemático completo do Arduino UNO R3 pode ser visto na imagem abaixo.

SCH
Esquemático original do Arduino UNO R3

 

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. Você pode baixar o arquivo Eagle desta versão, clicando no link disponível na seção de downloads ao final desta página.

Nós também dividimos 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.

SCH
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, nós identificamos todos os componentes da placa com os mesmos nomes utilizados no esquemático. Você pode utilizá-la como guia para localizar os componentes.

SCH
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ós 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

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. Desta forma, ainda hoje, muitas placas “Arduino compatível” continuam utilizando os chips FTDI (como é o caso da nossa Base Boarduino).

Vamos ver mais de perto como é feita a implementação do processador USB ATmega16U2. A figura abaixo mostra o circuito com mais detalhes:

SCH
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 (nossa versão, Base Boarduino também utiliza o conector USB Micro).

SCH
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).

SCH
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.

SCH
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 Arduno 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.

SCH
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.

SCH
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

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.

SCH
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.

SCH
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.

 

SCH
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

SCH
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

SCH
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

SCH
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

SCH
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

SCH
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:

SCH
Esquemático referente ao processador principal

 

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

Oscilador

SCH
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

 

SCH
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

SCH
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

SCH
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

SCH
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:

SCH
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 externapara 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.

SCH
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).

SCH
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.

SCH
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 reguladorde 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.

SCH
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, estará aproveitando 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 porque 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).

SCH
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.

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:

SCH
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 .

 

SCH
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).

SCH
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.

SCH
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).

SCH
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 nanoampéres). 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 nanoampéres 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

SCH
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.

SCH
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.

SCH
Exemplos de pontos fiduciais

 

Downloads