Arduino UNO

ARDUINO UNO

Se você já ouviu falar da plataforma Arduino, com certeza já ouviu falar também da placa Arduino UNO. Nesse artigo vamos abordar a placa Arduino UNO exibindo suas características de hardware e os recursos que essa simpática plataforma possui.

 

 

Arduino UNO

 

A placa Arduino UNO já está em sua terceira revisão e você pode baixar seu esquema elétrico no site do Arduino, ou até mesmo todos os arquivos do projeto para edição. Ela tem duas camadas apenas e várias características interessantes de projeto. A seguir serão apresentadas as principais características do seu hardware.

 

 

Alimentação da placa Arduino UNO

 

A placa pode ser alimentada pela conexão USB ou por uma fonte de alimentação externa, conforme exibido na figura abaixo:

 

Alimentação da placa Arduino UNO
Figura 1 - Alimentação da placa Arduino UNO

  

A alimentação externa é feita através do conector Jack com positivo no centro, onde o valor de tensão da fonte externa deve estar entre os limites 6V. a 20V., porém se alimentada com uma tensão abaixo de 7V., a tensão de funcionamento da placa, que no Arduino Uno é 5V, pode ficar instável e quando alimentada com tensão acima de 12V, o regulador de tensão da placa pode sobreaquecer e danificar a placa. Dessa forma, é recomendado para tensões de fonte externa valores de 7V. a 12V.

 

O circuito regulador para entrada externa é exibido a seguir. Nota-se que o CI responsável pela regulação de tensão é o NCP1117, da OnSemi. Destaque para o diodo D1 que protege o circuito caso uma fonte com tensão invertida for ligada.

 

O circuito regulador para entrada externa ARDUINO UNO
Figura 2 - O circuito regulador para entrada externa

 

Quando o cabo USB é plugado a um PC por exemplo, a tensão não precisa ser estabilizada pelo regulador de tensão. Dessa forma a placa é alimentada diretamente pela USB. O circuito da USB apresenta alguns componentes que protegem a porta USB do computador em caso de alguma anormalidade. Na figura abaixo é exibido o circuito de proteção da USB da placa Arduino UNO.

 

Circuito de proteção da USB da placa Arduino UNO
Figura 3 - Circuito de proteção da USB da placa Arduino UNO

 

Os dois varistores (Z1 e Z2) podem suportar picos elevados de SURGE e energias elevadas de transientes. Seria preferível se, ao invés de varistores, fossem conectados diodos supressores de ESD que tem capacitância bem baixa, já que estão ligados a pinos rápidos de comunicação, mas o circuito funciona bem mesmo assim. O resistores de 22 Ohms (RN3A e RN3D), limitam uma corrente resultante de alguma descarga elétrica eventual de um usuário em contato com o conector USB, resultante de transientes rápidos, protegendo, dessa forma, os pinos do microcontrolador. Podem ser utilizados também para que 

 

O fusível resetável (F1) de 500mA. impede que a porta USB do computador queime, caso ocorra algum problema de projeto ou uma falha no circuito e ultrapasse a corrente de 500 mA. quando a  placa estiver conectada ao PC. O ferrite L1 foi incluído no circuito para que ruídos da USB externa não entrem no circuito da placa Arduino, através de seu terra.

 

Além dos recursos apresentados anteriormente, a  placa conta com um circuito pra comutar a alimentação automaticamente entre a tensão da USB e a tensão da fonte externa. Esse circuito está apresentado na figura abaixo. Caso haja uma tensão no conector DC e a USB é conectada, a tensão de 5V será proveniente da fonte externa e USB servirá apenas para comunicação com o PC.

 

Circuito de seleção de fonte na Arduino UNO
Figura 4 - Circuito de seleção de fonte na arduino UNO

 

Como pode-se observar na figura anterior existe na placa um regulador de 3,3V. (U2- LP2985), este componente é responsável por fornecer uma tensão continua de 3,3V para alimentação de circuitos ou shields que necessitem desse valor de tensão. Deve-se ficar atento ao limite máximo do valor da corrente  que este regulador pode fornecer, que no caso é de 50 mA.

 

A seguir são exibidos os conectores de alimentação para conexão de shields e módulos na placa Arduino UNO:

 

Conectores de alimentação Arduino UNO R3
Figura 5 - Conectores de alimentação Arduino UNO R3

 

 

IOREF - Fornece uma tensão de referência para que shields possam selecionar o tipo de interface apropriada, dessa forma shields que funcionam com a placas Arduino que são alimentadas com 3,3V. podem se adaptar para ser utilizados em 5V. e vice-versa.

 

RESET - pino conectado a pino de RESET do microcontrolador. Pode ser utilizado para um reset externo da placa Arduino.

 

3,3 V.  - Fornece tensão de 3,3V. para alimentação de shield e módulos externos. Corrente máxima de 50 mA.

 

5 V - Fornece tensão de 5 V para alimentação de shields e circuitos externos.

 

GND  - pinos de referência, terra.

 

VIN - pino para alimentar a placa através de shield ou bateria externa. Quando a placa é alimentada através do conector Jack, a tensão da fonte estará nesse pino.

 

 

Comunicação USB da Placa Arduino UNO

 

Como interface USB para comunicação com o computador, há na placa um microcontrolador ATMEL ATMEGA16U2.

 

Conversor USB-serial com ATmega16u2 ARDUINO UNO
Figura 6 - Conversor USB-serial com ATmega16u2

 

 

Este microcontrolador é o responsável pela forma transparente como funciona a placa Arduino UNO, possibilitando o upload do código binário gerado após a compilação do programa feito pelo usuário. Possui um conector ICSP para gravação de firmware através de um programador ATMEL, para atualizações futuras.

 

Nesse microcontrolador também estão conectados dois leds (TX, RX), controlados pelo software do microcontrolador, que indicam o envio e recepção de dados da placa para o computador. Esse microcontrolador possui um cristal externo de 16 MHz. É interessante notar a conexão entre este microcontrolador com o ATMEL ATMEGA328, onde é feita pelo canal serial desses microcontroladores. Outro ponto interessante que facilita o uso da placa Arduino é a conexão do pino 13 do ATMEGA16U2 ao circuito de RESET do ATMEGA328, possibilitando a entrada no modo bootloader automaticamente quando é pressionado o botão Upload na IDE. Essa características não acontecia nas primeiras placas Arduino, onde era necessário pressionar o botão de RESET antes de fazer o Upload na IDE.

 

arduino-uno-circuito-serial ARDUINO UNO
Figura 7 - Circuito de comunicação serial

 

 

O cérebro do Arduino UNO

 

O componente principal da placa Arduino UNO é o microcontrolador ATMEL ATMEGA328, um dispositivo de 8 bits da família AVR com arquitetura RISC avançada e com encapsulamento DIP28. Ele conta com 32 KB de Flash (mas 512 Bytes são utilizados pro bootloader), 2 KB de RAM e 1 KB de EEPROM. Pode operar a até 20 MHz, porém na placa Arduino UNO opera em 16 MHz, valor do cristal externo que está conectado aos pinos 9 e 10 do microcontrolador. Observe que, para o projeto dessa placa, os projetistas escolheram um cristal com dimensões bem reduzidas.

 

Possui 28 pinos, sendo que 23 desses podem ser utilizados como I/O . A imagem abaixo exibe a sua pinagem:

 

 Pinagem ATmega328 usado no Arduino UNO
Figura 8 - Pinagem ATmega328 usado no Arduino UNO

 

Esse microcontrolador pode operar com tensões bem baixas, de até 1,8 V., mas nessa tensão apenas opera até 4MHz. Possui dois modos de consumo super baixos, o Power-down Mode e o Power-save Mode, para que o sistema possa poupar energia em situações de espera. Possui, como periféricos uma USART que funciona a até 250kbps, uma SPI, que vai a até 5MHz, e uma I2C que pode operar até 400kHz. Conta com um comparador analógico interno ao CI e diversos timers, além de 6 PWMs. A corrente máxima por pino é de 40mA, mas a soma da corrente de todo o CI não pode ultrapassar 200mA. Ele possui um oscilador interno de 32kHz que pode ser utilizado, por exemplo, em situações de baixo consumo.

 

 

Entradas e saídas do Arduino UNO

 

A placa Arduino UNO possui pinos de entrada e saídas digitais, assim como pinos de entradas e saídas analógicas, abaixo é exibido a pinagem conhecida como o padrão Arduino:

Pinos de entrada e saída no Arduino UNO R3
Figura 9 - Pinos de entrada e saída no Arduino UNO R3

 

Conforme exibido na figura, a placa Arduino UNO possui 14 pinos que podem ser usados como entrada ou saída digitias. Estes Pinos operam em 5 V, onde cada pino pode fornecer ou receber uma corrente máxima de 40 mA. Cada pino possui resistor de pull-up interno que pode ser habilitado por software. Alguns desse pinos possuem funções especiais:

 

PWM : 3,5,6,9,10 e 11 podem ser usados como saídas PWM de 8 bits através da função analogWrite();

Comunicação serial: 0 e 1 podem ser utilizados para comunicação serial. Deve-se observar que estes pinos são ligados ao microcontrolador responsável pela comunicação USB com o PC;

Interrupção externa: 2 e 3 . Estes pinos podem ser configurados para gera uma interrupção externa, através da função attachInterrupt().

 

Para interface com o mundo analógico, a placa Arduino UNO possui 6 entradas, onde cada uma tem a resolução de 10 bits. Por padrão a referencia do conversor AD está ligada internamente a a 5V, ou seja, quando a entrada estiver com 5V o valor da conversão analógica digital será 1023. O valor da referência pode ser mudado através do pino AREF. A figura a seguir exibe a relação entre os pinos do microcontrolador ATMEL ATMEGA328 e a pinagem do Arduino UNO:

 

pinouts ATmega328P Arduino UNO
Figura 10 - pinouts ATmega328P

 

 Quem manipula a placa e projeta o circuito que será conectado aos seus I/Os deve ter muito cuidado pois, entre os pinos do microcontrolador e a barra de pinos, não há nenhum resistor, que limite a corrente, além disso, dependendo do local onde está trabalhando pode-se provocar curto circuito nos pinos já que a placa não possui isolação na sua parte inferior, como mostrada na figura a seguir:

 

 Parte traseira do Arduino UNO
Figura 11 - Parte traseira do Arduino UNO - Sem isolação

 

 A placa não conta com botão liga/desliga – Se quiser desligar a alimentação, tem que “puxar” o cabo. O cabo USB tipo B não é tão comum quanto o mini USB, utilizado bastante em celulares. Isso pode ser um problema, caso perca o cabo que veio com a placa.

 

 

Programação da placa Arduino UNO

 

A placa Arduino UNO é programada através da comunicação serial, pois o microcontrolador vem programado com o bootloader. Dessa forma não há a necessidade de um programador para fazer a gravação (ou upload) do binário na placa. A comunicação é feita através do protocolo STK500.

 

A programação do microcontrolador também pode ser feita  através do conector ICSP (in - circuit serial programming) utilzando um programador ATMEL.

 

 

Características físicas da placa Arduino UNO

 

A placa Arduino UNO possui pequenas dimensões cabendo na palma da mão. Possui 4 furos para que a mesma possa ser fixada em alguma superfície. A figura a seguir exibe as suas dimensões físicas:

 

arduino-uno-dimensoes Arduino UNO
Figura 12 - Dimensões da Arduino UNO

fonte: http://blog.arduino.cc/2011/01/05/nice-drawings-of-the-arduino-uno-and-mega-2560/

 

 

Resumo da placa Arduino UNO

 

Arduino UNO
Figura 13 - Resumo de recursos da Arduino UNO

 

 

Conclusão

 

Sem dúvida a placa Arduino UNO é uma  ótima ferramenta para quem está começando. É uma ferramenta simples e possui um hardware mínimo, com várias características interessantes de projeto. Sua conectividade USB e facilidade em programar é, sem dúvida nenhuma, um grande atrativo.

 

É importante lembrar que a placa Arduino não possui a facilidade de debugar em tempo real, como outras placas de desenvolvimento. Não é possível colocar breakpoints, consultar variáveis ou mesmo parar o firmware em tempo real para conferir endereços de memória ou variáveis.

 

Nos próximos artigos vamos fazer exemplo pra mostrar como o ARDUINO UNO é realmente didático, versátil e simples de usar e, assim, entenderão porque todo mundo fala desse “tal Arduino”. 

 

 

Para aprender mais sobre Arduino Uno

 

Arduino - Primeiros Passos

 

 

Referências

 

Site do Arduino

Arduino Uno

Reportagem do Estadão (apesar dessa matéria dizer que existe controle analógico, o arduino apenas conta com entradas analógicas)

Review de Gadget Gangters

Circuitos USB - site da digikey

 

Outros artigos da série

Arduino Leonardo >>

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Fábio Souza
Engenheiro com experiência no desenvolvimento de projetos eletrônicos embarcados. Hoje é diretor de operações do portal Embarcados, onde trabalha para levar conteúdos de eletrônica, sistemas embarcados e IoT para o Brasil. Também atua no ensino eletrônica e programação pelo Brasil. É entusiastas do movimento maker, da cultura DIY e do compartilhamento de conhecimento, publica diversos artigos sobre eletrônica e projetos open hardware, como o projeto Franzininho Participou da residência hacker 2018 no Redbull Basement. Quando não está ministrando palestras, cursos ou workshops, dedica seu tempo “escovando bits” ou projetando placas eletrônicas.

92
Deixe um comentário

avatar
 
56 Comment threads
36 Thread replies
5 Followers
 
Most reacted comment
Hottest comment thread
28 Comment authors
Carlos MaranhãodavidsonFrancisco BinoezaFábio SouzaFrancisco Binoeza Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Carlos Maranhão
Visitante
Carlos Maranhão

Olá ótmo artigo, mais estou com uma duvida caso entre uma tensão de 12v na porta USB do arduino ele suporta?

davidson
Visitante
davidson

ola bom dia eu queria sabe se no arduino tem como eu programar ou se existe algum pino comun, exemplo: pino 6 e 7 para serem comun ate uma determinada condição para eu não ter que usar um rele pois o circuito que estou a controlar existe apenas um jumper que no multimetro eu não consegui medir nenhuma tensão. desde ja agradeço muito

Francisco Binoeza
Membro
Francisco Binoeza

Olá Fabio!
Tenho 02 arduinos UNO r3, depois que coloquei um programa para testes de motor bipolar, não consigo resetar o programa anterior - atmega 328, a porta com é reconhecida pelo windows, mas não há comunicação com o programador. avrdude: stk500_getsync(): not in sync: resp=0x00, toda vez que tento upar um código. Pode me ajudar? sou iniciante nessa área dos programas. agradeço sua atenção.

Francisco Binoeza
Membro
Francisco Binoeza

Não, está pelado , só o arduino.

gilmar
Visitante
gilmar

Gostaria de receber emails: sobre programações e projetos com ARDUINO

Veronica Melo
Membro
vera63

oi Fabio. me diga uma coisa é possível gravar informações no arduino para utilizar depois? tipo um vetor e depois passar para o pc. por exemplo, se através das entradas dele ler de tempo em tempo uma informação digital e ir armazenando em uma estrutura de dados. Ele tem memoria interna pra gravar isso? ou posso usar umas memoria externa tipo um cartão de memoria?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Verônica, dependendo da quantidade de dados, você pode usar um SD card ou pendrive para isso: https://learn.adafruit.com/adafruit-micro-sd-breakout-board-card-tutorial

Outra opção é usar a EEPROM, mas tem que avaliar a quantidade de dados e quantidade de escritas.

Veronica Melo
Membro
vera63

Obrigada Fabio. Vc teria algum post pra me indicar que mostre como gravar dados lidos com o arduino para leitura posterior?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados
Veronica Melo
Membro
vera63

obrigada

Carlos Avelar
Visitante
Carlos Avelar

Boa noite Fabio. Baseados em post criei um programa para acionar 4 reles via rede com o App OSC, porém preciso entender dois fatos. 1º. Só consigo usar as portas 0 a 9, as portas 10 a 13 não aceita o comando, o que pode estar ocorrendo? 2º. Sempre que a placa é alimentada todos os 4 relés vão pra 1, como faço para que eles permaneça em 0 e só vão pra 1 quando enviado o comando? Abaixo o programa que estou usando: #include #include #include byte myMac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; byte myIp[] = { 192, 168, 1, 48 }; int serverPort = 8000; int destPort= 9000; int relePin = 6; int relePin2 = 7; int relePin3 = 8; int relePin4 = 9; int flag=0; int flag2=0; int flag3=0; int flag4=0; OSCServer server; OSCClient client; void setup(){… Leia mais »

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá, os pinos de 10 a 13 são usados para SPI. Para garantir que os reles iniciem desligados, de o comando de desligar logo após a configuração.

Abraços

Walyson
Visitante
Walyson

Opa! Blz @Fabio_Souza_Embarcados:disqus !? Muito bacana a matéria!
Eu estou fazendo um projeto que utiliza um módulo NRF24L01+ e um SD Card e ambos utilizam as portas 11 - mosi, 12 - miso e 13 - sck do Arduino UNO. Você sabe de uma forma mais fácil de usá-las juntas? Em paralelo? Ou tem como usar outras portas como se fosse essas três? E o ICSP serve apenas para gravação do Atmel?
Grato!

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Walyson, você pode ligar da seguinte forma:

Walyson
Visitante
Walyson

@Fabio_Souza_Embarcados:disqus Tranquilo, irei tentar. Obrigado. Eu utilizo a biblioteca SPI e declaro essas portas SS depois da biblioteca?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados
Walyson
Visitante
Walyson

Obrigado cara! Irei seguir o tutorial e darei o retorno depois.

Valeria Sousa
Visitante
Valeria Sousa

Olá! Estou tentando desenvolver um projeto e precisaria de uma placa com micro controlador com entrada USB, como não entendo nada de placas e afins, gostaria de lhe perguntar se existe alguma placa dessa que possua: tanto a entrada USB macho quanto a Fêmea (entradas normais não mini e de preferencia de lados opostos) prontas pra compra ou se existe alguma empresa que personalize a placa para o que preciso. E se ela já possuísse memoria flash e um sistema de alimentação/tensão seria melhor ainda!

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Valéria, qual a finalidade da aplicação? Uma Raspberry Pi não atende? Me passe mais detalhes da aplicação.

Abraços

Valeria Sousa
Visitante
Valeria Sousa

Você respondeu! Devo lhe confessar que te procurei no facebook e te uma mensagem com mais detalhes, desculpe por isso. Bem a ideia do projeto que estou tentando desenvolver basicamente é um pen drive que teria um display que mostraria os documentos contidos nele e ele também teria uma entrada USB fêmea que permitiria conectar outro pen drive e fazer a transmissão/recepção de arquivos de um pen drive para outro, mas como faço produção essa parte de elétrica me é totalmente estranha. Portanto queria saber se existe uma placa que já conteria tudo o que necessito ou se teria que comprar os componentes individuais e montar tudo?
Muito Obrigada por responder!!

Thay Ramos
Visitante
Thay Ramos

Olá, gostaria de saber se pode indicar algum site confiável para comprar um Arduino.

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Olá Thay, tudo bem? Qual Arduino você quer comprar? Qual a finalidade?

Da uma olhada em algumas dessas lojas: https://www.embarcados.com.br/lojas-de-sistemas-embarcados/

Antonio Bruno
Visitante
Antonio Bruno

Pessoal, quantos arduinos posso conectar ao computador? Estou ligando 3 arduinos, sendo que 1 deles fica a 20 metros de distancia, então utilizo o cabo extensor de usb. Porem está dando um conflito como se o cabo não fosse reconhecido. Mas também as vezes funciona corretamente. Acho que o problema está em sobrecarregar as portas usb. Isso é possível ?

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

Antônio, a USB não é o meio de comunicação adequado para essa distância, mesmo usando extensor. Use uma comunicação RS-485, ou similar. Você também pode usar Ethernet ou comunicação sem fio, se for o caso.