segunda-feira, 11 de janeiro de 2021

Aula 04 - Arduino UNO

Figura 1 – Placa Arduino UNO
Arduino é uma plataforma de prototipagem eletrônica de hardware livre e de placa única, projetada com um microcontrolador Atmel AVR com suporte de entrada/saída embutido, uma linguagem de programação padrão C/C++. O objetivo do projeto é criar ferramentas que são acessíveis, com baixo custo, flexíveis e fáceis de se usar por principiantes e profissionais. 

A placa Arduino UNO já está em sua terceira revisão e você pode baixar seu esquema elétrico da figura 2 no link: esquema elétrico 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.

Os componentes da placa arduino UNO são divididos em três blocos principais: processador USB, processador principal e alimentação. Todos eles serão explicados nas seções a seguir.

Figura 2.1 - Processador USB do Arduino UNO
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. 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 2.1 mostra o circuito com mais detalhes.

Figura 2.2 - Processador principal do Arduino UNO
Processador principal: 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 2.2 mostra o bloco do processador principal.

Figura 2.3 - Alimentação do Arduino UNO
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 2.3 mostra componentes presentes neste bloco.

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.

Figura 3 - Identificação de componentes
do Arduino UNO

Na figura 3, identificamos todos os componentes da placa com os mesmos nomes utilizados no esquemático. Você pode utilizá-la como guia para localizar os componentes.

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

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.

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. 

Figura 4 – Alimentação 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.

Figura 5 – Conectores de alimentação
Arduino UNO R3
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 150 mA.

Na figura 5 são exibidos os conectores de alimentação para conexão de shields e módulos na placa Arduino UNO.


  • 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

Figura 6 – Conversor USB-serial com ATmega16u

Como interface USB para comunicação com o computador, há na placa um microcontrolador ATMEL 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.

Microcontrolador ATMEL ATMEGA328

Figura 7 – Pinagem ATmega328 usado no 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 da figua 6 exibe a sua pinagem.

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

Figura 8 – Pinos de entrada e saída
no Arduino UNO R3

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.

Conforme exibido na figura 7, a placa Arduino UNO possui 14 pinos que podem ser usados como entrada ou saída digitais. 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().

Figura 9 – Dimensões da Arduino UNO

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 6 exibe a relação entre os pinos do microcontrolador ATMEL ATMEGA328 e a pinagem do Arduino UNO.

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. 

Figura 10 – Donwload IDE Arduino
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.

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.

Programação da placa

Figura 10.1 – Configuraçã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.

Normalmente usamos para programação do Arduino uma IDE (Integrated Development Environment ou Ambiente de Desenvolvimento Integrado) é um programa de computador que possui as ferramentas necessárias para desenvolvimento de software. Basicamente possui um editor de código fonte e compilador.

Figura 10.2 – Configuração da porta
USB COM4 no Arduino UNO
Com a IDE Arduino podemos dar os primeiros passos com arduino e desenvolver programas, instalar bibliotecas adicionais e realizar a compilação e gravação dos programas na placa. Para fazer o download da IDE Arduino entre no site oficial do Arduino na seção Software -> Downloads e escolha sua versão de sistema operacional(Windows, Linux, MacOS). 

A versão da IDE ARDUINO_1.8.13_2020.06.16 para Windows está disponível para download em: ARDUINO_1.8.13_2020.06.16 .

Após descompactar e instalar, deve-se criar uma atalho na área de trabalho. Abra a IDE Arduino pelo atalho criado na sua área de trabalho.

Figura 10.3 – Verificação de erros de
programação no Arduino UNO
Quando o código estiver pronto para ser carregado na placa, conecte a placa Arduino no seu computador, entre no menu ferramentas, escolha o modelo da placa e a porta na qual a mesma está conectada, conforme figura 10.1, no meu caso Arduino UNO e figura 10.2, a gravação da placa Arduino UNO é feito através da porta USB no meu caso COM4.

Então clique no botão de compilação. Isso irá verificar se existe algum erro no código e gerar o arquivo de programa necessário para carregar na placa, conforme figura 10.3.

Figura 10.3 – Gravação de
programação no Arduino UNO
Se estiver tudo OK, clique no botão carregar. Isso irá gravar o programa na placa, conforme figura 10.4.

Caso não apareça nenhum erro, você deverá ver o resultado de sua programação na placa 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.

Figura 11 – Resumo de recursos da Arduino
É 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.

Apostila Arduino para iniciantes disponível em: 21_02_01_Arduino_para_iniciantes_SRG (PDF)

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 14/06/2023

Nenhum comentário:

Postar um comentário