SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
2
Sum´rio
   a

1 Conceitos b´sicos
              a                                                                                                                                                                                7
  1.1 O Projeto Arduino . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
  1.2 Instala¸˜o do software . . . . .
             ca                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
  1.3 Primeiro projeto . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
      1.3.1 C´lculos de resistˆncia .
                a              e          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12
      1.3.2 Alimenta¸˜o do circuito
                       ca                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  1.4 Bibliotecas e shields . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  1.5 Integra¸˜o com o PC . . . . . .
             ca                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
  1.6 Portas anal´gicas e digitais . .
                  o                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
      1.6.1 Portas digitais . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
      1.6.2 Portas anal´gicas . . . .
                          o               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18

2 Fundamentos de Eletrˆnicao                                                                                                                                                                  21
  2.1 Resistores e Lei de Ohm . . . . . . .           . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      2.1.1 Resistores em s´rie . . . . . .
                              e                       . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      2.1.2 Resistores em paralelo . . . .            . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      2.1.3 C´digo de cores . . . . . . . .
               o                                      . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
      2.1.4 Divisor de tens˜o . . . . . . .
                             a                        . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
  2.2 Capacitores e indutores . . . . . . .           . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
      2.2.1 Capacitores . . . . . . . . . .           . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
      2.2.2 Indutores . . . . . . . . . . .           . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
  2.3 Diodos . . . . . . . . . . . . . . . . .        . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
  2.4 Transistores . . . . . . . . . . . . . .        . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
      2.4.1 Utiliza¸˜o de transistores com
                    ca                                rel´s
                                                         e        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      2.4.2 Ponte-H . . . . . . . . . . . .           . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27

3 Eletrˆnica Digital
       o                                                                                                                                                                                      29
  3.1 Introdu¸˜o . . . . . . . . . . . . . .
              ca                                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
  3.2 Portas l´gicas . . . . . . . . . . . . .
              o                                       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
       3.2.1 Tabela-verdade . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
       3.2.2 Representa¸˜o das opera¸˜es
                         ca             co            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
       3.2.3 Fun¸˜es l´gicas compostas . .
                 co o                                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31

4 Fazendo barulho com o Arduino                                                                                                                                                               33

5 Armazenando na EEPROM                                                                                                                                                                       35




                                                                          3
4      ´
    SUMARIO
5
6                                                                                                       ´
                                                                                                     SUMARIO

Pref´cio
    a
Essa apostila ´ destinada aos alunos que realizaram o Curso de Arduino1 , tendo como premissa explicar em mais
              e
detalhes temas abordados em aula para que os alunos n˜o se preocupem com anota¸˜es durante os experimentos.
                                                       a                           co
   Seu conte´do (com exce¸˜o das fotos de terceiros, devidamente citadas) est´ dispon´ atrav´s da licen¸a
             u               ca                                                  a      ıvel     e         c
Creative Commons Atribui¸˜o-Uso n˜o-comercial-Compartilhamento pela mesma licen¸a 3.0 Un-
                                ca         a                                                       c
ported, que est´ dispon´ nas formas compacta e completa nos seguintes endere¸os:
                 a       ıvel                                                       c

                      http://creativecommons.org/licenses/by-nc-sa/3.0/deed.pt_BR
                       http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode




   Caso possua corre¸˜es, sugest˜es ou mesmo queira contribuir escrevendo essa apostila, sinta-se livre para
                     co         o
entrar em contato – terei um imenso prazer em receber sua contribui¸˜o!
                                                                   ca


Download
Essa apostila est´ dispon´ para download atrav´s do site do Curso de Arduino1 . Acesse o site para verificar
                 a       ıvel                 e
novas vers˜es no seguinte endere¸o:
          o                     c

                                 http://www.CursoDeArduino.com.br/apostila


O Autor
                                          ´
                                          Alvaro Justen, tamb´m conhecido como “Turicas”, ´ o criador do Curso
                                                              e                              e
                                          de Arduino1 e autor dessa apostila. F˜ de carteirinha de software livre
                                                                                a
                                          (usu´rio h´ mais de 12 anos), sempre participa de eventos (palestrando
                                               a     a
                                          ou organizando) e grupos de usu´rios, al´m de contribuir com o de-
                                                                            a       e
                                          senvolvimento de diversos projetos. Foi respons´vel pela cria¸˜o do
                                                                                            a             ca
                                          grupo de usu´rios de Arduino do Rio de Janeiro2 , onde s˜o realizados
                                                        a                                          a
                                          encontros mensais para discutir sobre a plataforma.
                                              Est´ finalizando sua gradua¸˜o em Engenharia de Telecomunica-
                                                  a                       ca
                                          ¸˜es pela Universidade Federal Fluminense (Niter´i/RJ), onde j´ de-
                                          co                                                 o              a
                                          senvolveu diversas atividades de pesquisa, ensino e extens˜o (muitas
                                                                                                      a
                                          ligadas ao Arduino); ´ programador Python3 , tendo criado e contri-
                                                                e
                                          bu´ com diversos projetos nessa linguagem; entusiasta de metodolo-
                                             ıdo
                                          gias ageis e Coding Dojo4 , sendo o respons´vel por trazer a pr´tica a
                                               ´                                      a                   a
                                          Niter´i.
                                                o
                                              ´
                                              Alvaro atualmente possui uma empresa que ministra cursos de Ar-
                                          duino por todo o Brasil e desenvolve projetos utilizando a plataforma
                                          para diversas empresas. Al´m disso, desenvolve bibliotecas abertas
                                                                       e
                                          para o Arduino e publica artigos com dicas e projetos em seu blog.


Contato
    • E-mail: alvaro@CursoDeArduino.com.br
    • Blog: http://blog.justen.eng.br/
    • Twitter: http://twitter.com/turicas
    • Telefone: +55 21 9898-0141

    1 http://www.CursoDeArduino.com.br/
    2 http://ArduInRio.cc/
    3 http://www.python.org/
    4 http://dojorio.org/
Cap´
   ıtulo 1

Conceitos b´sicos
           a




                    7
8                                                                     CAP´                   ´
                                                                         ITULO 1. CONCEITOS BASICOS

1.1       O Projeto Arduino
Arduino1 ´ um projeto que engloba software e hardware e tem como objetivo fornecer uma plataforma f´cil
          e                                                                                             a
para prototipa¸˜o de projetos interativos, utilizando um microcontrolador. Ele faz parte do que chamamos de
              ca
computa¸˜o f´
         ca ısica: ´rea da computa¸˜o em que o software interage diretamente com o hardware, tornando
                    a                ca
poss´ integra¸˜o f´cil com sensores, motores e outros dispositivos eletrˆnicos.
    ıvel       ca a                                                     o
   A parte de hardware do projeto, uma placa que cabe na palma da m˜o, ´ um computador como qualquer
                                                                         a e
outro: possui microprocessador, mem´ria RAM, mem´ria flash (para guardar o software), temporizadores,
                                       o                o
contadores, dentre outras funcionalidades. Atualmente, o projeto est´ na vers˜o Uno, por´m muitos Arduinos
                                                                    a        a            e
encontrados hoje s˜o da vers˜o Duemilanove (2009, em italiano), que possui um clock de 16MHz, 2kB de
                   a          a
mem´ria RAM, 32kB de mem´ria flash, 14 portas digitais e 6 entradas anal´gicas.
     o                        o                                            o




                               Figura 1.1: Foto do hardware de um Arduino Duemilanove

    A principal diferen¸a entre um Arduino e um computador convencional ´ que, al´m ter menor porte (tanto
                        c                                                   e        e
no tamanho quanto no poder de processamento), o Arduino utiliza dispositivos diferentes para entrada e sa´   ıda
em geral. Por exemplo: em um PC utilizamos teclado e mouse como dispositivos de entrada e monitores e
impressoras como dispositivos de sa´  ıda; j´ em projetos com o Arduino os dispositivos de entrada e sa´ s˜o
                                            a                                                            ıda a
circuitos el´tricos/eletrˆnicos.
            e            o
    Como a interface do Arduino com outros dispositivos est´ mais perto do meio f´
                                                                a                       ısico que a de um PC,
podemos ler dados de sensores (temperatura, luz, press˜o etc.) e controlar outros circuitos (lˆmpadas, motores,
                                                        a                                     a
eletrodom´sticos etc.), dentre outras coisas que n˜o conseguir´
           e                                      a           ıamos diretamente com um PC. A grande diferen¸a c
com rela¸˜o ao uso desses dispositivos, no caso do Arduino, ´ que, na maior parte das vezes, n´s mesmos
          ca                                                     e                                  o
constru´ımos os circuitos que s˜o utilizados, ou seja, n˜o estamos limitados apenas a produtos existentes no
                                 a                       a
mercado: o limite ´ dado por nosso conhecimento e criatividade!
                    e
    O melhor de tudo nesse projeto ´ que seu software, hardware e documenta¸˜o s˜o abertos. O software ´ livre
                                    e                                        ca a                         e
(GNU GPL2 ), o hardware ´ totalmente especificado (basta entrar no site e baixar os esquemas) e a documenta¸˜o
                            e                                                                               ca
est´ dispon´
   a         ıvel em Creative Commons3 – os usu´rios podem colaborar (seja escrevendo documenta¸˜o, seja
                                                    a                                                  ca
traduzindo) atrav´s da wiki!
                   e
    1 http://www.arduino.cc/
    2 http://www.gnu.org/licenses/gpl.html
    3 http://creativecommons.org/licenses/
¸˜
1.2. INSTALACAO DO SOFTWARE                                                                             9

1.2     Instala¸˜o do software
               ca

Para criar um projeto com o Arduino, basta comprar uma placa Arduino (utilizaremos o Arduino Duemilanove
como exmplo) – que custa em torno de US$30 no exterior e por volta de R$100 no Brasil –, fazer download da
interface integrada de desenvolvimento (IDE)4 e ligar a placa ` porta USB do PC.
                                                              a

    Como qualquer computador, o Arduino precisa de um software para executar comandos. Esse software
ser´ desenvolvido na Arduino IDE em nosso PC, utilizando a linguagem C++. Ap´s escrever o c´digo, o
   a                                                                              o               o
compilaremos e ent˜o faremos o envio da vers˜o compilada ` mem´ria flash do Arduino, atrav´s da porta USB.
                  a                         a            a    o                          e
A partir do momento que o software ´ gravado no Arduino n˜o precisamos mais do PC: o Arduino, como ´ um
                                    e                      a                                         e
computador independente, conseguir´ sozinho executar o software que criamos, desde que seja ligado a uma
                                   a
fonte de energia.

   Antes de iniciar nosso projeto precisamos ent˜o instalar a IDE. Vamos l´:
                                                a                         a



   • Ubuntu GNU/Linux 10.10: Basta executar em um terminal:




          sudo aptitude install arduino




      ou procurar pelo pacote “arduino” no Synaptic (menu Sistema → Administra¸˜o → Gerenciador de pacotes
                                                                              ca
      Synaptic).




   • Ubuntu GNU/Linux (anterior a 10.10): Consulte a p´gina de instala¸˜o do Arduino em Ubuntu5 .
                                                      a               ca




   • Outras distribui¸˜es GNU/Linux: Consulte a p´gina de instala¸˜o em outras distribui¸˜es GNU/Linux6 .
                     co                          a               ca                     co




   • Microsoft Windows: Consulte a p´gina de instala¸˜o para as variadas vers˜es do Microsoft Windows7 .
                                    a               ca                       o




   • Apple Mac OS X: Consulte a p´gina de instala¸˜o para o Mac OS X8 .
                                 a               ca



    Ap´s a instala¸˜o, abra a IDE (no Ubuntu GNU/Linux ela estar´ dispon´ no menu Aplicativos → Ele-
       o          ca                                            a       ıvel
trˆnica → Arduino IDE ). A seguinte tela ser´ mostrada:
  o                                         a



  4 http://arduino.cc/en/Main/Software
  5 http://www.arduino.cc/playground/Linux/Ubuntu
  6 http://www.arduino.cc/playground/Learning/Linux
  7 http://www.arduino.cc/en/Guide/Windows
  8 http://www.arduino.cc/en/Guide/MacOSX
10                                                                CAP´                   ´
                                                                     ITULO 1. CONCEITOS BASICOS




                Figura 1.2: Arduino IDE vers˜o 0018 rodando no Ubuntu GNU/Linux 10.10
                                            a


1.3      Primeiro projeto
Quando ensinamos linguagens de programa¸˜o novas, geralmente o primeiro exemplo ´ um hello world. Como
                                           ca                                    e
o Arduino n˜o vem por padr˜o com um display, nosso primeiro exemplo ser´ fazer um LED piscar – e por isso
           a                a                                          a
ser´ chamado blink. Nosso LED ficar´ aceso durante um segundo e apagado durante outro segundo e ent˜o
   a                                 a                                                                 a
recome¸ar´ o ciclo. Abra a IDE e digite o seguinte c´digo:
       c a                                          o

      void setup() {
          pinMode(13, OUTPUT);
      }
      void loop() {
          digitalWrite(13, HIGH);
          delay(1000);
          digitalWrite(13, LOW);
          delay(1000);
      }

   Chamamos um c´digo feito para Arduino de sketch e o salvamos em um arquivo com a extens˜o .pde. Com
                    o                                                                       a
nosso sketch pronto, bastar´ conectar o Arduino na porta USB e clicar no bot˜o upload (segundo, da direita
                           a                                                  a
para a esquerda – destacado na figura acima). Ap´s o processo, ser´ vista a mensagem Done uploading na IDE
                                                o                a
e ent˜o o sketch estar´ rodando no Arduino, ou seja, o LED acender´ e apagar´, de 1 em 1 segundo. Vamos
     a                a                                             a          a
agora ` explica¸˜o do processo:
       a       ca
1.3. PRIMEIRO PROJETO                                                                                      11

   O Arduino possui 14 portas digitais, que podemos utilizar como entrada ou sa´
                                                                               ıda. Nesse caso, vamos utilizar
a porta de n´mero 13 como sa´
            u                 ıda, dessa forma, podemos controlar quando a porta ficar´ com 5V ou quando
                                                                                        a
ficar´ com 0V – internamente o Arduino possui um LED conectado ` porta 13 e, por isso, teremos como “ver”
    a                                                              a
nosso software funcionando.

   Para que nosso software funcione corretamente no Arduino, precisamos criar duas fun¸˜es espec´
                                                                                       co       ıficas: setup
e loop. A fun¸˜o setup ´ executada assim que o Arduino d´ boot, j´ a fun¸˜o loop fica sendo executada
              ca         e                                   a       a        ca
continuamente (em loop) at´ que o Arduino seja desligado. Como as portas digitais s˜o de entrada ou sa´
                           e                                                         a                    ıda,
definimos ent˜o dentro da fun¸˜o setup que a nossa porta 13 ´ uma porta de sa´ – fazemos isso atrav´s da
            a                ca                              e                  ıda                     e
chamada ` fun¸ao pinMode, que j´ vem na biblioteca padr˜o do Arduino.
         a    c˜                 a                      a

    Depois de configurarmos corretamente a porta 13 como sa´     ıda, precisamos acender e apagar o LED que
est´ conectado a ela. Para alterar a tens˜o na porta, utilizamos a fun¸˜o digitalWrite (que tamb´m est´ na
   a                                     a                            ca                          e     a
biblioteca padr˜o do Arduino); passamos para essa fun¸˜o a porta que queremos alterar a tens˜o e o novo valor
               a                                      ca                                    a
de tens˜o (HIGH = 5V, LOW = 0V). Depois das chamadas para acender e apagar o LED, chamamos a fun¸˜o
        a                                                                                                ca
delay passando o parˆmetro 1000 – o que essa fun¸˜o faz ´ esperar um tempo em milisegundos para ent˜o
                      a                             ca       e                                             a
executar a pr´xima instru¸˜o.
             o           ca

    Deve-se ressaltar que a IDE Arduino inclui automaticamente todas as bibliotecas que utilizamos. Se vocˆ
                                                                                                          e
est´ acostumado com C/C++, note que n˜o precisamos digitar as diretivas include para arquivos como o
   a                                      a
stdlib.h, por exemplo. Tudo ´ feito de forma autom´tica para facilitar o desenvolvimento do projeto!
                              e                     a

   Como o Arduino j´ vem com um LED internamente conectado ` porta 13, n˜o precisaremos de circuitos
                     a                                               a            a
externos para que esse projeto funcione, ou seja, bastar´ fazer upload daquele c´digo e j´ teremos o resultado
                                                        a                       o        a
esperado:




                         (a) LED apagado                               (b) LED aceso

                         Figura 1.3: Arduino Duemilanove rodando o exemplo Blink




    Por´m, se quisermos acender um LED externo ` placa, podemos conect´-lo diretamente ` porta 13. Podemos
        e                                       a                     a                a
utilizar um LED de 5mm que acende com 2,5V. O problema, nesse caso, se d´ por conta da porta digital: ela
                                                                           a
assume ou a tens˜o 0V, ou a tens˜o 5V – e caso coloquemos 5V no LED ele ir´ queimar.
                 a               a                                          a

    Para solucionar esse problema precisamos ligar algum outro componente que seja respons´vel por dividir
                                                                                            a
parte dessa tens˜o com o LED, para que ele n˜o queime, ent˜o utilizaremos um resistor. Portanto, ligamos um
                a                           a              a
resistor de 120Ω em s´rie com o LED, o resistor ` porta 13 e o LED ` porta GND – ground ou terra –, como
                      e                         a                   a
na Figura 1.4.
12                                                                           CAP´                   ´
                                                                                ITULO 1. CONCEITOS BASICOS




                               Figura 1.4: Utilizando um LED externo para o exemplo Blink

    N˜o precisamos fazer nenhuma altera¸˜o no software para que esse circuito funcione: basta ligar o Arduino
     a                                 ca
na porta USB do computador, para que o computador dˆ energia ao circuito, e ent˜o veremos o LED externo
                                                       e                          a
piscar juntamente com o LED interno. Em vez do LED, poder´      ıamos controlar outros componentes, como
motores, eletrodom´sticos etc.
                  e

1.3.1          C´lculos de resistˆncia
                a                e
Para chegar ao valor de 120Ω acima, precisei fazer algumas contas (e arredondamentos). Vamos aprender agora
a calcular o valor dos resistores que precisamos utilizar. Se precisarmos acender um LED verde, que ´ alimentado
                                                                                                    e
com tens˜o de 2,2V e corrente de 20mA atrav´s do Arduino, precisaremos de um resistor, como j´ vimos, j´ que
         a                                     e                                                 a         a
o Arduino s´ consegue fornecer ou 0V ou 5V. Colocaremos o resistor em s´rie com o LED, e com isso podemos
             o                                                               e
concluir que:
      • A tens˜o total (soma das tens˜es no resistor e no LED) ser´ de 5V, ou seja: VLED + VR = 5V
              a                      o                            a
      • A corrente total que passa pelo resistor e pelo LED ´ igual, ou seja, 20mA, ou seja: ILED = IR = 20mA
                                                            e
      • Precisamos colocar uma tens˜o de 2,2V no LED, ou seja: VLED = 2, 2V
                                   a
Sabendo desses detalhes, podemos concluir que a tens˜o no resistor ser´ de: VR = 5V − VLED ∴ VR =
                                                    a                 a
5V − 2, 2V ⇒ VR = 2, 8V . Como IR = 20mA e VR = 2, 8V , podemos calcular o valor da resistˆncia R do
                                                                                          e
resistor que iremos utilizar atrav´s da Lei de Ohm:
                                  e
                                                          V = RI
                                        2,8V
Assim, temos: 2, 8V = R0, 020A ∴ R = 0,020A ⇒ R = 140Ω
   Depois de feito o c´lculo, podemos generalizar com a seguinte f´rmula:
                      a                                           o
                                                         Vf onte − VLED
                                                    R=
                                                                IR
   Para o LED verde, precisamos de um resistor de 140Ω, por´m n˜o existem resistores com esse valor para
                                                               e    a
venda – os valores s˜o pr´-definidos9 . Dada essa situa¸˜o, temos duas alternativas:
                    a    e                            ca
      • Utilizar um resistor de maior resistˆncia e limitar mais a corrente (que far´ com que o LED brilhe menos);
                                            e                                       a
        ou
      • Associar dois ou mais resistores em s´rie ou paralelo para conseguir o valor.
                                             e
   Geralmente escolhemos um resistor de valor pr´ximo, j´ que uma altera¸˜o pequena de corrente n˜o causar´
                                                  o       a                ca                         a         a
danos ao dispositivo, por´m em alguns casos precisaremos combinar resistores de valores diferentes para conseguir
                         e
o valor equivalente – esse tema ser´ explicado em mais detalhes no pr´ximo cap´
                                   a                                  o          ıtulo.
     9 Saiba   mais em http://www2.eletronica.org/hack-s-dicas/valores-comerciais-para-resistores-capacitores-e-indutores/
1.4. BIBLIOTECAS E SHIELDS                                                                                 13

1.3.2    Alimenta¸˜o do circuito
                 ca

Internamente, o circuito do Arduino ´ alimentado com uma tens˜o de 5V. Quando ligamos o Arduino em uma
                                    e                        a
porta USB do PC, o pr´prio PC, atrav´s do cabo USB, alimenta o Arduino. Por´m nem sempre temos um
                        o               e                                       e
PC por perto; para esses casos, podemos utilizar uma outra fonte de energia de 5V (a fonte deve ser ligada
diretamente nos pinos 5V e GND do Arduino).
   Como n˜o possu´
           a       ımos pilhas/baterias em abundˆncia no mercado com tens˜o de 5V, fica complicado alimentar
                                                 a                         a
um Arduino dessa forma alternativa – se tivermos uma tomada de 127/220VAC por perto, poder´        ıamos ligar
uma fonte AC/DC (essas sim, existem aos montes). Para resolver esse problema, o Arduino possui um regulador
de tens˜o que aceita tens˜es de 7 a 12V (na verdade, ele consegue funcionar com tens˜es entre 6 e 20V, apesar
       a                 o                                                          o
de n˜o ser recomendado). Com o regulador de tens˜o podemos combinar pilhas em s´rie, utilizar uma bateria
    a                                              a                                e
de 9V ou mesmo baterias de carros, motos e no-breaks (12V).




Figura 1.5: Arduino alimentado por uma bateria de 9V
Retirado de http://www.arduino.cc/playground/Learning/9VBatteryAdapter




1.4     Bibliotecas e shields

Assim como a IDE j´ vem com diversas fun¸˜es pr´-definidas, o Arduino possui outras bibliotecas para controle
                     a                      co   e
de servomotores, displays LCD, gera¸˜o de audio, recep¸˜o de sinais de sensores e outros dispositivos (como
                                     ca      ´         ca
teclado PS/2), dentre muitas outras coisas! E quem pensa que essa estensibilidade toda se restringe ` parte de
                                                                                                    a
software est´ muito enganado: o Arduino possui o que chamamos de shields, que s˜o placas que se acoplam `
            a                                                                     a                          a
placa original, agregando funcionalidades ` mesma.
                                          a
    Existem shields dos mais variados tipos, para as mais diversas fun¸˜es. Alguns servem como entrada, outros
                                                                      co
como sa´ıda, e ainda outros como entrada e sa´ ıda. Com os shields conseguimos, por exemplo, fazer o Arduino
se comunicar numa rede Ethernet, ou ainda transmitir dados para qualquer dispositivo via Bluetooth, Wi-Fi
ou Zigbee. Existem shields com circuitos integrados prontos para controlarmos motores sem que precisemos
nos preocupar com complica¸˜es eletrˆnicas envolvidas, outros possuem leitor de cart˜o SD, acelerˆmetro,
                              co        o                                                a            o
GPS e diversos outros sensores que podem gerar dados importantes para o software que est´ rodando no
                                                                                                a
microcontrolador.
14                                                                  CAP´                   ´
                                                                       ITULO 1. CONCEITOS BASICOS




                              Figura 1.6: Arduino Duemilanove com shield Ethernet

    Existem tamb´m outros shields mais elaborados, que s˜o sistemas completos. Um deles, por exemplo, cria
                  e                                         a
uma plataforma para desenvolvimento de jogos no Arduino: o Video Game Shield10 , que possui uma sa´ RCA
                                                                                                    ıda
e duas entradas para controles Numchuck do Nintendo Wii. Al´m do hardware, existe uma biblioteca para
                                                                  e
ser utilizada em conjunto, que j´ possui v´rias fun¸˜es pr´-programadas para fazermos desenhos na televis˜o e
                                a         a        co     e                                              a
capturar os dados dos movimentos nos controles.


1.5     Integra¸˜o com o PC
               ca
Apesar de o Arduino ser um computador independente, em alguns casos podemos nos aproveitar de um PC por
perto e explorar outra funcionalidade muito boa do projeto: o Arduino consegue conversar com o computador
atrav´s da porta USB. Isso nos permite desenvolver um software que roda no PC e se comunica com o software
      e
que roda no Arduino, o que nos abre um mar de possibilidades! Podemos, por exemplo, criar um software em
Python11 que recebe os dados de um sensor, via USB (atrav´s do Arduino), e envia para algum banco de dados
                                                            e
na Internet – assim teremos, de certa forma, nosso Arduino online, enviando dados para o mundo, atrav´s de
                                                                                                      e
um PC!
    Existem in´meros projetos interessantes que fazem interface entre linguagens de programa¸˜o e o Arduino
               u                                                                             ca
– existem implementa¸˜es para Python, Ruby, Java, C, dentre outras linguagens. E n˜o para por a´ al´m de o
                      co                                                            a           ı: e
software que roda no PC receber dados, ele pode tamb´m enviar dados, controlando o Arduino! Dessa forma,
                                                       e
podemos, por exemplo, receber dados da Web e enviar comandos ao Arduino, baseados nesses dados.
    Um exemplo de aplica¸˜o que utiliza a porta USB para comunica¸˜o do Arduino com o PC ´ o projeto
                          ca                                           ca                        e
Arduinoscope12 , que tem como finalidade criar um oscilosc´pio, onde podemos ver em tempo real, no PC,
                                                              o
gr´ficos das tens˜es que est˜o ligadas `s portas anal´gicas do Arduino. Outro exemplo ´ um projeto que criei,
  a              o         a          a             o                                  e
onde controlo um carrinho atrav´s de Wi-Fi, o Turiquinhas13 .
                                 e
    Fica a dica para quem quer come¸ar um projeto Arduino assistido por computador de maneira f´cil: vale a
                                    c                                                             a
pena estudar um protocolo de comunica¸˜o e controle chamado Firmata14 , cuja implementa¸˜o est´ dispon´
                                        ca                                                ca    a       ıvel
 10 http://www.wayneandlayne.com/projects/video-game-shield/
 11 http://www.python.org/
 12 http://code.google.com/p/arduinoscope/
 13 http://www.justen.eng.br/Turiquinhas
 14 http://www.firmata.org/
´
1.6. PORTAS ANALOGICAS E DIGITAIS                                                                           15

para v´rias linguagens (e j´ vem por padr˜o um exemplo na IDE do Arduino). Ele facilita o processo de
       a                   a               a
aquisi¸˜o de dados e controle da placa.
      ca
   Al´m das op¸˜es citadas acima, existe uma linguagem chamada Processing15 , parecid´
      e         co                                                                   ıssima com a linguagem
que utilizamos no Arduino, que consegue se comunicar com o Arduino via USB e ´ utilizada para criar imagens,
                                                                              e
anima¸˜es e intera¸˜es no PC, a partir dos dados vindos da comunica¸˜o com o Arduino.
      co           co                                              ca


1.6     Portas anal´gicas e digitais
                   o
O Arduino possui dois tipos de portas de entrada: anal´gicas e digitais. Al´m disso, as portas digitais tamb´m
                                                      o                     e                               e
servem como portas de sa´ıda, funcionando com dois tipos b´sicos de sa´
                                                           a            ıda: sa´ digital comum e sa´ PWM
                                                                               ıda                    ıda
– o PWM pode ser utilizado para simular uma sa´ anal´gica, dentre outras coisas.
                                                ıda     o


1.6.1    Portas digitais
Utilizamos as portas digitais quando precisamos trabalhar com valores bem definidos de tens˜o. Apesar de nem
                                                                                          a
sempre ser verdade, geralmente trabalhamos com valores digitais bin´rios, ou seja, projetamos sistemas que
                                                                      a
utilizam apenas dois valores bem definidos de tens˜o. Existem sistemas tern´rios, quatern´rios, mas focaremos
                                                    a                      a            a
no bin´rio, j´ que ´ esse o utilizado pelo Arduino.
       a     a     e
    Como o sistema ´ bin´rio, temos que ter apenas duas tens˜es. S˜o elas: 0V e 5V. Dessa forma, as portas
                     e     a                                 o      a
digitais do Arduino podem trabalhar apenas com essas duas tens˜es – e o software que desenvolveremos poder´
                                                               o                                           a
requisitar ao microcontrolador do Arduino que:

   • Coloque uma determinada porta em 0V;

   • Coloque uma determinada porta em 5V;

   • Leia o valor de uma determinada porta (ter´ 0V ou 5V como resposta).
                                               a

   O Arduino Duemilanove possui 14 portas digitais que est˜o destacadas na figura a seguir:
                                                          a




                                 Figura 1.7: Portas digitais do Arduino, de 13 a 0

    Apesar de ser poss´ıvel, n˜o ´ recomend´vel utilizar as portas 0 e 1 pois elas est˜o diretamente ligadas ao
                              a e          a                                          a
sistema de comunica¸˜o do Arduino (pinos RX e TX – recep¸˜o e transmiss˜o, respectivamente) e, por isso,
                     ca                                        ca              a
seu uso pode conflitar com o upload do software. Caso queira utiliz´-las, certifique-se de desconectar quaisquer
                                                                    a
circuitos conectados a ela no momento do upload.
    Utilizaremos as fun¸˜es digitalRead e digitalWrite para ler e escrever, respectivamente, nas portas di-
                        co
gitais. A fun¸˜o digitalWrite j´ foi exemplificada em nosso exemplo Blink, onde acendemos e apagamos um
             ca                   a
LED ao alternar a tens˜o da porta 13 entre 5V e 0V, com intervalo de 1 segundo. Para exemplificar a fun¸˜o
                        a                                                                                   ca
digitalRead utilizaremos um bot˜o, como no diagrama a seguir:
                                    a
 15 http://www.processing.org/
16                                                                 CAP´                   ´
                                                                      ITULO 1. CONCEITOS BASICOS




                          Figura 1.8: Esquema el´trico ligando um bot˜o ao Arduino
                                                e                    a

     Montado o circuito acima, vamos programar o Arduino com o seguinte c´digo:
                                                                         o

      #define BOTAO 2
      #define LED 13

      void setup() {
        pinMode(LED, OUTPUT);
        pinMode(BOTAO, INPUT);
      }

      void loop() {
        if (digitalRead(BOTAO) == HIGH) {
          digitalWrite(LED, LOW);
        }
        else {
          digitalWrite(LED, HIGH);
        }
      }

    A fun¸˜o digitalRead nos retorna o valor correspondente ` tens˜o que est´ na porta que passamos entre
          ca                                                  a     a        a
parenteses. Em nosso exemplo, utilizamos a porta BOTAO (que na verdade ´ uma constante, definida atrav´s da
                                                                        e                            e
diretiva #define), cujo valor ´ 2. O valor retornado ´ uma constante, mapeado da seguinte forma:
                              e                      e

     • HIGH, caso a tens˜o na porta seja 5V;
                        a

     • LOW, caso a tens˜o na porta seja 0V;
                       a

   O que o programa faz, ent˜o, ´ apagar o LED caso o bot˜o esteja pressionado e acendˆ-lo caso n˜o esteja.
                            a e                            a                             e         a
Fica como exerc´ entender o c´digo a seguir, que ´ uma otimiza¸˜o do anterior e possui mesma funcionalidade:
               ıcio          o                   e            ca

      #define BOTAO 2
      #define LED 13

      void setup() {
        pinMode(LED, OUTPUT);
        pinMode(BOTAO, INPUT);
      }
´
1.6. PORTAS ANALOGICAS E DIGITAIS                                                                             17

    void loop() {
      digitalWrite(LED, !digitalRead(BOTAO));
    }

   Dica: o caractere “!”, em linguagem C, significa not e tem como finalidade negar a express˜o que segue `
                                                                                           a            a
sua direita.

PWM
PWM significa Modula¸˜o por Largura de Pulso (Pulse-Width Modulation, do Inglˆs) e consiste em manipu-
                       ca                                                         e
larmos a raz˜o c´
             a ıclica de um sinal (conhecida do Inglˆs como duty cycle) a fim de transportar informa¸˜o ou
                                                     e                                                ca
controlar a potˆncia de algum outro circuito. Basicamente, teremos um sinal digital que oscila entre 0V e 5V
               e
com determinada frequˆncia (o Arduino trabalha com um padr˜o perto de 500Hz) – funciona como se fosse um
                       e                                     a
clock, por´m os tempos em que o sinal permanece em 0V e 5V podem ser diferentes. Duty cycle ´ a raz˜o do
          e                                                                                      e     a
tempo em que o sinal permanece em 5V sobre o tempo total de uma oscila¸˜o. A Figura 1.9 ilustra melhor esse
                                                                       ca
conceito:




                                Figura 1.9: Sinal PWM com duty cycle de 25%

   Assim, temos:
                                                            x    x
                                            duty cycle =       =
                                                           x+y   T
    O que controlamos atrav´s de software ´ justamente a duty cycle, ou seja, o percentual de tempo em que
                               e              e
o sinal fica em 5V. Dessa forma, podemos utilizar essa t´cnica para limitar a potˆncia de algum circuito. Por
                                                          e                          e
exemplo, considere que um LED L1 seja alimentado o tempo inteiro por um sinal constante de 5V; j´ o LED L2
                                                                                                     a
´ alimentado pelo sinal PWM acima (duty cycle de 25%). Atrav´s de um c´lculo simples de potˆncia podemos
e                                                                  e           a                  e
notar que o LED L2 consumir´ apenas 25% da potˆncia do primeiro.
                                 a                    e
    Infelizmente, por limita¸˜es de hardware, o Arduino n˜o possui PWM em todas as portas digitais: apenas
                             co                             a
as portas 3, 5, 6, 9, 10 e 11 s˜o privilegiadas e podem utilizar esse recurso. Para exemplificar o uso de controle
                               a
de potˆncia de um circuito utilizando PWM vamos utilizar um LED em s´rie com um resistor ligados ` porta
       e                                                                      e                           a
11 (o circuito ´ o mesmo do experimento Blink, s´ vamos mudar a porta) e o seguinte c´digo:
               e                                    o                                    o

    #define LED 11
    void setup() {
        pinMode(LED, OUTPUT);
    }

    void loop() {
        for (int i = 0; i < 255; i++) {
            analogWrite(LED, i);
            delay(30);
        }
    }

    Na fun¸˜o loop acima temos um la¸o for, que conta de 0 a 255 (armazenando o valor do contador na vari´vel
          ca                        c                                                                    a
i), chamando a fun¸˜o analogWrite (passando como parˆmetros a porta do LED (11) e i) e esperando por 30
                   ca                                   a
milisegundos a cada itera¸˜o.
                         ca
18                                                                 CAP´                   ´
                                                                      ITULO 1. CONCEITOS BASICOS

   A fun¸˜o analogWrite (apesar de estarmos utilizando uma porta digital) ´ respons´vel pelo PWM e recebe
         ca                                                                e         a
como parˆmetros a porta e um valor entre 0 e 255 – esse valor corresponde ao duty cycle, onde 0 corresponde
         a
a 0% e 255 a 100%. Quando vocˆ rodar o c´digo perceber´ que o LED acende de maneira mais suave – cada
                                 e         o              a
etapa de luminosidade diferente corresponde a uma itera¸˜o do for. Fica como exerc´ para o leitor modificar
                                                       ca                         ıcio
o programa para que o LED, al´m de acender, tamb´m apague suavemente. :-)
                               e                   e




1.6.2    Portas anal´gicas
                    o



Al´m das portas digitais o Arduino possui as portas anal´gicas. Ao contr´rio das portas digitais, as portas
  e                                                      o               a
anal´gicas s˜o apenas de entrada e nelas podemos ter como entrada infinitos valores de tens˜o (delimitados
    o       a                                                                              a
na faixa de 0V a 5V). Como os conversores anal´gico-digitais (ADC – analog-digital converter, do Inglˆs) do
                                                o                                                    e
Arduino possuem 10 bits de precis˜o, a precis˜o das medi¸˜es de tens˜o no Arduino ´ de por volta de 0,005V
                                 a           a          co          a             e
ou 5mV.




                            Figura 1.10: Portas anal´gicas do Arduino, de 0 a 5
                                                    o




    Como os nomes de fun¸˜es no Arduino s˜o bastante intuitivos, utilizamos a fun¸˜o analogRead para ler
                           co               a                                     ca
valores anal´gicos – ao chamar a fun¸˜o passamos como argumento o n´mero da porta que desejamos ler (de
            o                       ca                               u
0 a 5). Como exemplo vamos regular a luminosidade de nosso LED (utilizando PWM) atrav´s da quantidade
                                                                                          e
de luz detectada por um resistor dependente de luz (ou LDR – light dependent resistor, do Inglˆs). Monte o
                                                                                              e
circuito segundo a figura 1.11.
´
1.6. PORTAS ANALOGICAS E DIGITAIS                                                                          19




                                   Figura 1.11: Circuito com LDR e LED




    Como os conversores anal´gico-digital possuem 10 bits de precis˜o, a fun¸˜o analogRead nos devolve um
                               o                                      a        ca
valor entre 0 e 1023, onde 0 corresponde a uma leitura de 0V na porta anal´gica e 1023 corresponde a 5V (para
                                                                            o
valores intermedi´rios, basta fazer uma regra de trˆs simples, de maneira an´loga com o PWM). Vamos carregar
                  a                                e                        a
em nosso Arduino o seguinte c´digo:
                                o




    #define LED 11
    #define LDR 5

    void setup() {
      pinMode(LED, OUTPUT);
    }

    void loop() {
      int leitura = analogRead(LDR);
      int valorPWM = - 0.25 * leitura + 255;
      analogWrite(LED, valorPWM);
    }




   Os valores 0.25 e 255 da linha que definem a vari´vel valorPWM devem ser calibrados conforme ilumina¸˜o do
                                                     a                                                   ca
ambiente, resistores utilizados e luminosidade desejada. Para o c´digo acima, teremos o seguinte comportamento
                                                                 o
do valor que colocamos na porta PWM a partir dos valores lidos na porta anal´gica:
                                                                                 o
20                                                                    CAP´                   ´
                                                                         ITULO 1. CONCEITOS BASICOS




                          Figura 1.12: Gr´fico da fun¸˜o PWM versus leitura anal´gica
                                         a          ca                         o

     Ficam trˆs exerc´
             e       ıcios:
     • Aprenda a utilizar um potenciˆmetro e o utilize para regular o brilho do LED, em vez do LDR;
                                    o

     • Volte o LDR para seu lugar anterior e utilize o potenciˆmetro para configurar os valores 0.25 e 255;
                                                              o
     • Leia o datasheet do circuito integrado LM35 e monte um circuito parecido com o anterior, por´m sens´
                                                                                                   e      ıvel
       a temperatura (e n˜o mais a luz).
                          a
Cap´
   ıtulo 2

Fundamentos de Eletrˆnica
                    o




                 21
22                                                        CAP´                            ˆ
                                                             ITULO 2. FUNDAMENTOS DE ELETRONICA

2.1       Resistores e Lei de Ohm
Resistores s˜o dispositivos utilizados com a finalidade de transformar energia el´trica em energia t´rmica e/ou
             a                                                                  e                  e
limitar a corrente el´trica em um circuito. Como o pr´prio nome sugere, eles tˆm como fun¸˜o oferecer uma
                     e                                 o                         e           ca
resistˆncia ` passagem da corrente el´trica – medimos essa resistˆncia atrav´s da unidade Ω (ohm).
      e     a                         e                          e          e
    Por consequˆncia, eles causam uma queda de tens˜o na regi˜o do circuito onde se encontram – muitas vezes
                e                                    a         a
acabamos utilizando esse efeito para conseguirmos tens˜es intermedi´rias, caso as fontes de tens˜o do circuito
                                                        o            a                           a
n˜o consigam fornecˆ-las. Sabendo-se a tens˜o e corrente em um resistor, podemos calcular sua resistˆncia
  a                   e                       a                                                          e
atrav´s da f´rmula:
      e      o

                                                            V
                                                      R=
                                                            I
     Por sua vez, a resistˆncia pode ser calculada atrav´s das caracter´
                          e                             e              ısticas do material resistivo:

                                                           ρL
                                                      R=
                                                           A
    Onde ρ ´ a resistividade do material, L ´ seu comprimento e A sua ´rea, ou seja, a resistˆncia ´ proporcional
           e                                e                         a                      e     e
ao comprimento e indiretamente proporcional ` ´rea.
                                                aa
    Se, para um determinado circuito, V e I tˆm uma rela¸˜o linear, ou seja, R ´ constante para in´meros
                                                 e          ca                       e                    u
valores de V e I, ent˜o chamamos o material (que possui resistˆncia R) de ˆhmico.
                      a                                        e            o


2.1.1      Resistores em s´rie
                          e
Se possuirmos resistores em s´rie em determinado circuito, podemos calcular a resistˆncia equivalente do mesmo
                             e                                                      e
somando-se as resistˆncias, atrav´s da f´rmula:
                    e             e     o

                                             Req = R1 + R2 + ... + Rn




                                         Figura 2.1: Resistores em s´rie
                                                                    e
                             Retirado de http://en.wikipedia.org/wiki/Resistor


2.1.2      Resistores em paralelo
Caso os resistores estejam em paralelo, a resistˆncia equivalente ser´ o inverso da soma dos inversos das resis-
                                                e                    a
tˆncias, como na f´rmula a seguir:
 e                o

                                             1    1    1           1
                                                =    +    + ... +
                                            Req   R1   R2         Rn




                                        Figura 2.2: Resistores em paralelo
                             Retirado de http://en.wikipedia.org/wiki/Resistor
2.2. CAPACITORES E INDUTORES                                                                                   23

2.1.3     C´digo de cores
           o
Os resistores possuem um c´digo de cores que nos permite identificar qual sua resistˆncia. Para isso, mapeamos
                            o                                                      e
as cores das diversas faixas do resistor e utilizamos a seguinte f´rmula:
                                                                  o

                                                       R = (10a + b) · 10c ± t,
    onde a, b e c s˜o as primeiras faixas e t a ultima faixa (geralmente prata ou dourada), que representa a
                   a                            ´
tolerˆncia.
     a




                                            Figura 2.3: C´digo de cores
                                                         o
                              Retirado de http://pt.wikipedia.org/wiki/Resistor


2.1.4     Divisor de tens˜o
                         a
Como citado acima, resistores criam uma queda de tens˜o na regi˜o do circuito em que est˜o. Utilizando esse
                                                        a           a                         a
efeito, podemos criar o que chamamos de divisores de tens˜o1 : circuitos com resistores que, aplicada uma tens˜o,
                                                         a                                                    a
tˆm como sa´ uma fra¸˜o (da´ o nome divisores) dessa tens˜o de entrada.
 e           ıda         ca     ı                             a




                                            Figura 2.4: Circuito divisor de tens˜o
                                                                                a

   A partir do circuito acima, temos que:
                                                                   R2
                                                        Vout =           · Vin
                                                                 R1 + R2
   Esse recurso ´ bastante util quando precisamos medir um tens˜o maior do que nossos circuitos conseguem.
                 e          ´                                    a
Por exemplo: se quisermos medir uma tens˜o que varia de 9 a 12V no Arduino precisaremos coloc´-la na faixa
                                           a                                                         a
de 0 a 5V, j´ que as portas anal´gicas do Arduino trabalham nessa faixa menor. Para isso, poder´
            a                   o                                                                   ıamos utilizar
um divisor de tens˜o cujos valores de resistˆncia resultassem em Vout = V3n . Dessa forma, os valores lidos em
                   a                        e                             i


Vout seriam de 3 a 4V.
   Por´m, aten¸˜o: caso precisemos conectar resistores ou outros circuitos resistivos no pino Vout , o c´lculo das
       e        ca                                                                                      a
tens˜es muda e Vout passa a depender das novas resistˆncias do circuito.
    o                                                  e


2.2     Capacitores e indutores
Apesar de n˜o estudarmos a fundo esses dois elementos b´sicos de circuitos, eles podem ser importantes no
           a                                            a
desenvolvimento de futuros projetos. Basicamente, capacitores e indutores armazenam energia (pense como
  1 http://pt.wikipedia.org/wiki/Divisor   de tens˜o
                                                  a
24                                                      CAP´                            ˆ
                                                           ITULO 2. FUNDAMENTOS DE ELETRONICA

uma bateria em que vocˆ carrega e descarrega de tempos em tempos, por´m com capacidade bem limitada) e
                         e                                                   e
s˜o bastante utilizados em filtros de sinais, estabilizadores de tens˜o, circuitos ressonantes (como transmissores
 a                                                                  a
e receptores de r´dio), dentre outros.
                 a


2.2.1    Capacitores
Os capacitores s˜o componentes que armazenam energia em forma de campo el´trico. S˜o formados por duas
                a                                                               e       a
placas met´licas com um diel´trico (isolante) no meio. A unidade de medida ´ o Farad (F), por´m como 1 Farad
          a                 e                                              e                 e
´ algo bem grande, comumente encontramos capacitores na casa dos mF (miliFarad), µF (microFarad) e pF
e
(picoFarad).




                        Figura 2.5: Capacitor eletrol´
                                                     ıtico bastante comum no mercado




                        Figura 2.6: Representa¸˜o de um capacitor em circuito el´trico
                                              ca                                e


2.2.2    Indutores
Os indutores s˜o componentes que armazenam energia em forma de campo magn´tico. Geralmente s˜o formados
              a                                                           e                 a
por bobinas (fio enrolado) com um condutor no meio. A unidade de medida ´ o Henry (H).
                                                                       e




                          Figura 2.7: Indutores de v´rios tipos, comuns no mercado
                                                    a
2.3. DIODOS                                                                                                    25



                         Figura 2.8: Representa¸˜o de um indutor em circuito el´trico
                                               ca                              e




2.3     Diodos

Diodos s˜o componentes que tˆm a capacidade de conduzir corrente el´trica em uma dire¸˜o e bloque´-la em
        a                       e                                      e                  ca          a
outra – esse comportamento ´ chamado de retifica¸˜o e pode ser utilizado para converter corrente alternada
                              e                     ca
(CA ou AC – alternating current, do Inglˆs –, a energia que temos em nossas tomadas) em corrente cont´
                                          e                                                              ınua
(CC ou DC – direct current, do Inglˆs –, a forma como as baterias nos fornecem energia). Outros usos de diodo
                                    e
s˜o prote¸˜o de circuitos (contra corrente reversa) e extra¸˜o de modula¸˜o de sinais (por exemplo, para uso
 a       ca                                                ca            ca
em circuitos de comunica¸˜o sem fio).
                         ca




Figura 2.9: Foto de um diodo comum no mercado – a faixa menor (cinza, para esse diodo) corresponde ao
terminal negativo




                         Figura 2.10: Representa¸˜o de um diodo em circuito el´trico
                                                ca                            e


    O diodo conduzir´ corrente el´trica caso a tens˜o em seu terminal positivo (+) seja maior que a tens˜o em
                     a           e                 a                                                     a
seu terminal negativo (−), ou seja, funcionar´ como um curto-circuito. Caso contr´rio, ele funcionar´ como
                                              a                                      a                 a
                  a          a ´
circuito aberto (n˜o conduzir´). E importante notar que para diodos reais existe uma queda de tens˜o de 0,7V
                                                                                                   a
em sua jun¸˜o P-N e, com isso, a tens˜o do lado positivo precisa ser maior que a tens˜o negativa + 0,7V para
           ca                         a                                               a
que ele conduza.




2.4     Transistores

Transistores s˜o dispositivos semicondutores usados como amplificadores ou chaveadores. Sua entrada ´ uma
              a                                                                                             e
corrente/tens˜o que altera a corrente/tens˜o de sa´
             a                            a       ıda. Os transistores s˜o a base de todos os circuitos integrados
                                                                        a
e placas modernos – alguns, como os microprocessadores, possuem milh˜es deles.
                                                                          o
   Para nossos estudos, iremos focar nos transistores de estrutura bipolar de jun¸˜o (ou BJT, Bipolar Junction
                                                                                 ca
Transistor, do Inglˆs) com polaridade NPN e PNP, por´m existem outros tipos, como os FETs.
                   e                                   e
26                                                      CAP´                            ˆ
                                                           ITULO 2. FUNDAMENTOS DE ELETRONICA




                                          (a) NPN                (b) PNP

                        Figura 2.11: S´
                                      ımbolos de transistores BJT em circuito el´trico
                                                                                e


   Os transistores possuem trˆs terminais: base, coletor e emissor. E suas principais equa¸˜es caracter´
                             e                                                            co           ısticas
s˜o:
 a

                                                 IC + IB = IE



                                                    IC = βIB ,

onde β ´ uma constante (tamb´m referida como hF E ) caracter´
       e                    e                               ıstica do transistor (fator de amplifica¸˜o).
                                                                                                   ca
    A segunda equa¸˜o nos evidencia o poder de amplifica¸˜o de um transistor: dependendo da corrente que
                  ca                                       ca
colocarmos na base (corrente IB ), ele permitir´ maior ou menor corrente no coletor (corrente IC ).
                                               a
   No mercado encontramos transistores NPN e PNP com v´rios encapsulamentos diferentes. Alguns comuns
                                                      a
s˜o o 2N2904 (NPN) e 2N3906 (PNP).
 a




               Figura 2.12: Componente 2N3904: transistor NPN com encapsulamento TO-92




2.4.1    Utiliza¸˜o de transistores com rel´s
                ca                         e

Rel´s s˜o componentes uteis quando precisamos isolar eletronicamente um circuito de controle de um circuito
   e a                  ´
de potˆncia. Se quisermos, por exemplo, acender uma lˆmpada incandescente (que utiliza corrente alternada)
       e                                               a
atrav´s do Arduino, podemos utilizar um rel´: o Arduino controlar´ o rel´, que ent˜o far´ a conex˜o (ou n˜o) da
     e                                     e                     a      e         a     a        a       a
lˆmpada com a tomada. Existem rel´s mecˆnicos e de estado s´lido (SSD ou Solid-state relay, do Inglˆs), por´m
 a                                 e     a                   o                                       e      e
iremos utilizar um rel´ mecˆnico em nosso exemplo, por ser mais barato e f´cil de se encontrar no mercado.
                      e    a                                                a
    Como rel´s possuem correntes de ativa¸˜o maiores que as portas digitais do Arduino conseguem suprir,
              e                            ca
precisamos amplificar a corrente que sai das portas digitais do Arduino para que ela seja capaz de acionar o rel´
                                                                                                               e
– e isso faremos utilizando um transistor NPN.
    Utilizando um rel´ acionado por 5V, um transistor NPN (2N3904) e dois resistores (10Ω para o rel´ e
                      e                                                                                    e
470Ω para a base do transistor) podemos utilizar o circuito a seguir para controlar qualquer carga de corrente
alternada – basta ligar a carga `s sa´
                                a    ıdas do rel´, que n˜o est˜o indicadas no diagrama:
                                                e       a     a
2.4. TRANSISTORES                                                                                           27




               Figura 2.13: Circuito para ligar um rel´ (controlado por transistor) no Arduino
                                                      e

   Fica como exerc´ para o leitor verificar como seria o uso de um transistor PNP.
                  ıcio

2.4.2    Ponte-H
Em alguns projetos precisamos inverter a tens˜o de entrada de determinado circuito. Por exemplo: os motores
                                              a
de corrente cont´
                ınua giram para um lado caso apliquemos tens˜o positiva em seu terminal esquerdo e negativa
                                                               a
em seu terminal direito. Por´m, para fazˆ-los girar em sentido contr´rio, precisamos aplicar tens˜o negativa em
                            e           e                           a                            a
seu terminal esquerdo e positiva em seu terminal direito.
   Podemos implementar circuitos que fazem essa invers˜o de tens˜o a partir de 4 transistores funcionando
                                                          a          a
como chave. Esse tipo de circuito se chama ponte-H por conta da disposi¸˜o dos transistores com rela¸˜o ao
                                                                            ca                           ca
motor, como pode ser visto no diagrama a seguir:




                                   Figura 2.14: Diagrama de uma ponte-H
28                                                    CAP´                            ˆ
                                                         ITULO 2. FUNDAMENTOS DE ELETRONICA

    Quando fechamos as chaves S1 e S4, o terminal esquerdo do motor recebe tens˜o positiva e o terminal
                                                                                     a
direito recebe tens˜o negativa. J´ quando fechamos as chaves S2 e S3, o terminal esquerdo do motor recebe
                    a            a
tens˜o negativa e o terminal direito recebe tens˜o positiva. O que precisamos fazer ´ substituir as chaves por
    a                                           a                                   e
transistores, para ent˜o podermos controlar o sentido de rota¸˜o do motor atrav´s do Arduino.
                      a                                      ca                e
    A seguir temos um circuito bastante completo de ponte-H que utiliza diodos de prote¸˜o e acopladores
                                                                                            ca
o
´pticos para dar mais seguran¸a ` solu¸˜o como um todo:
                              c a      ca




Figura 2.15: Esquema de uma ponte-H com transistores
Retirado de http://www.mcmanis.com/chuck/robotics/tutorial/h-bridge/

   Para quem n˜o quer ter trabalho montando o circuito, existe a op¸˜o de comprar um circuito integrado
               a                                                   ca
pronto com a ponte-H – uma das op¸˜es ´ o L293D.
                                 co e

PWM e ponte-H para controle de velocidade
Como com PWM conseguimos controlar a quantidade de potˆncia que ser´ entregue a um circuito, caso utilize-
                                                      e            a
mos PWM como entrada do controle de uma ponte-H, podemos limitar a quantidade de potˆncia entregue ao
                                                                                       e
motor e, com isso, controlar sua velocidade.
Cap´
   ıtulo 3

Eletrˆnica Digital
     o




                     29
30                                                                    CAP´             ˆ
                                                                         ITULO 3. ELETRONICA DIGITAL

3.1      Introdu¸˜o
                ca
Dizemos que um circuito ´ digital quando suas entradas e sa´
                           e                                    ıdas trabalham com sinais digitais, ou seja, sinais
com valores bem definidos. Geralmente esses circuitos trabalham apenas com dois valores e, por isso, chamamos
esses sistemas de digitais bin´rios.
                               a
    Quando estamos falando de circuitos digitais, estamos falando de transporte de informa¸˜o. E como temos
                                                                                              ca
somente dois valores poss´ ıveis de tens˜o, teremos toda a informa¸˜o codificada em bin´rio – chamamos cada
                                         a                            ca                   a
informa¸˜o bin´ria de bit (d´
         ca    a              ıgito bin´rio ou binary digit, do Inglˆs) e os representamos por 0 e 1.
                                       a                            e
    Dessa forma, se nossos circuitos trabalham com tens˜es de 0V e 5V, dizemos que 0V equivale ao bit 0 e 5V
                                                           o
equivale ao bit 1 – agora passamos a falar de bits (informa¸˜o) em vez de tens˜es, ou seja, estamos pensando
                                                               ca                   o
uma camada acima.


3.2      Portas l´gicas
                 o
Assim como na Matem´tica possu´
                      a          ımos opera¸˜es b´sicas como soma, subtra¸˜o, multiplica¸˜o e divis˜o, na
                                           co    a                          ca            ca          a
aritm´tica bin´ria temos opera¸˜es que podemos fazer com nossos bits. Para simplificar, vamos tratar as
     e        a               co
opera¸˜es com uma ou duas entradas, apenas uma sa´
     co                                           ıda, tratar o bit 0 como sinˆnimo de falso e o bit 1 como
                                                                              o
sinˆnimo de verdadeiro. Dessa forma, temos as seguintes opera¸˜es:
   o                                                          co

     • AND: opera¸˜o que resulta em bit 1 somente quando os dois bits de entrada s˜o 1 (ou seja, s´ resulta
                   ca                                                               a             o
       em “verdadeiro” se somente o primeiro e o segundo bit forem “verdadeiros”.);

     • OR: opera¸˜o que resulta em 1 quando pelo menos uma das entradas ´ 1 (ou seja, resulta em “verdadeiro”
                 ca                                                     e
       quando o primeiro ou o segundo bit forem “verdadeiros”.);

     • NOT: opera¸˜o que resulta na invers˜o do bit de entrada;
                 ca                       a

     • XOR: tamb´m chamade de exclusive or (“ou exclusivo”), essa opera¸˜o s´ resulta em bit 1 quando somente
                   e                                                   ca o
       um dos bits de entrada ´ 1.
                              e

     O circuito abaixo exemplifica a cria¸˜o de uma porta do tipo AND:
                                        ca




                       Figura 3.1: Porta l´gica AND criada a partir de diodos e resistor
                                          o


3.2.1     Tabela-verdade
Para um n´mero finito de entradas podemos aplicar as opera¸˜es l´gicas em todos os poss´
            u                                                   co    o                       ıveis valores dessa
entrada e obter todos os poss´ ıveis resultados da opera¸˜o/fun¸˜o l´gica. Chama-se tabela-verdade a tabela que
                                                        ca     ca o
lista todas essas possibilidades.
    Para as fun¸˜es l´gicas acima, quando temos duas entradas temos um total de 4 poss´
                co o                                                                       ıveis combina¸˜es de
                                                                                                          co
entradas diferentes (o n´mero de combina¸˜es bin´rias ´ sempre 2n´mero de entradas ) e as seguintes tabelas:
                         u                   co      a    e          u
´
3.2. PORTAS LOGICAS                                                                                                31


     A     B    A AND B               A     B    A OR B                                       A     B    A XOR B
     0     0         0                0     0        0                 A    NOT A             0     0          0
     0     1         0                0     1        1                 0        1             0     1          1
     1     0         0                1     0        1                 1        0             1     0          1
     1     1         1                1     1        1                (c) Opera¸ao NOT
                                                                               c˜             1     1          0
         (a) Opera¸˜o AND
                  ca                      (b) Opera¸ao OR
                                                   c˜                                             (d) Opera¸˜o XOR
                                                                                                           ca

                            Figura 3.2: Tabelas-verdade das opera¸˜es l´gicas b´sicas
                                                                 co o          a

    Al´m das opera¸˜es b´sicas, temos as nega¸˜es nas mesmas, como NAND, NOR e XNOR. Para saber a
      e            co    a                   co
tabela-verdade dessas, basta negar a sa´ da tabela verdade das outras opera¸˜es (AND, OR e XOR, respec-
                                       ıda                                 co
tivamente).

3.2.2     Representa¸˜o das opera¸oes
                    ca           c˜
As opera¸˜es l´gicas citadas acima podem ser representadas em circuitos pelos seguintes s´
        co o                                                                             ımbolos:




     (a) NOT        (b) AND        (c) NAND          (d) OR          (e) NOR        (f) XOR         (g) XNOR

                                   Figura 3.3: S´
                                                ımbolos das opera¸˜es l´gicas
                                                                 co o

   Al´m disso, podem ser escritas por extenso:
     e

                                          Opera¸˜o
                                               ca           Representa¸˜o
                                                                      ca
                                            NOT A                A
                                           A AND B              A+B
                                          A NAND B              A+B
                                            A OR B              A·B
                                           A NOR B              A·B
                                           A XOR B              A⊕B
                                          A XNOR B              A⊕B

3.2.3     Fun¸˜es l´gicas compostas
             co    o
Assim como na Matem´tica, podemos fazer composi¸˜es das fun¸˜es l´gicas b´sicas para obter novas fun¸˜es
                     a                          co          co o         a                          co
(compostas). A fun¸˜o XOR, por exemplo, pode ser obtida atrav´s da composi¸˜o das fun¸˜es NOT, AND e
                  ca                                         e             ca         co
OR:

                                                A⊕B =A·B+A·B
                                                         ou




                                Figura 3.4: Diagrama da fun¸˜o composta XOR
                                                           ca
32                                                                CAP´             ˆ
                                                                     ITULO 3. ELETRONICA DIGITAL

   A partir de fun¸˜es l´gicas compostas e t´cnicas como realimenta¸˜o conseguimos criar dispositivos mais
                    co    o                     e                     ca
complexos como latches, flip-flops, coders/decoders, mux/demux, dentre outros. Esses dispositivos s˜o a base
                                                                                                   a
para criar circuitos l´gicos de alto n´
                      o               ıvel, por exemplo: com alguns flip-flops conseguimos criar registradores,
que podem evoluir para mem´rias e fazer parte do circuito de um microprocessador.
                              o
Cap´
   ıtulo 4

Fazendo barulho com o Arduino




                 33
34                                                          CAP´
                                                               ITULO 4. FAZENDO BARULHO COM O ARDUINO

    Para quem gosta de fazer m´sica, o Arduino possui uma fun¸˜o pronta para criar uma onda quadrada na
                                  u                               ca
frequˆncia e no tempo desejados. Apesar de serem notas simples e a onda ser quadrada, adicionando circuitos
     e
extras (para filtros e distor¸˜es) e um pouco de criatividade, conseguimos criar sons legais para nossos projetos.
                            co
    A fun¸˜o que faz esse trabalho ´ chamada tone. Vamos criar um projeto-exemplo ligando um buzzer –
         ca                           e
componente que reproduz sons de acordo com as varia¸˜es de tens˜o em seus terminais – para tocar nosso som
                                                        co         a
da seguinte forma:




                                                 Figura 4.1: Circuito com buzzer

      Utilizaremos o seguinte c´digo:
                               o

       #define BUZZER 9

       int notas[] = { 524, 588, 660, 699, 785, 881, 989 };

       void setup() {
         pinMode(BUZZER, OUTPUT);
       }

       void loop() {
         for (int i = 0; i < 7; i++) {
           tone(BUZZER, notas[i], 1000);
           delay(1000);
         }
         delay(1000);
       }

    Al´m do la¸o for, utilizamos tamb´m um vetor de inteiros chamado notas. Um vetor nada mais ´ que um
      e        c                       e                                                               e
local onde armazenamos v´rias vari´veis de mesmo tipo. Os vetores s˜o indexados e para acessar cada item
                           a         a                                   a
guardado neles utilizamos ´ındices que variam de 0 a n − 1, onde n ´ o n´mero total de elementos. No exemplo
                                                                     e    u
acima, utilizamos a vari´vel i para percorrer o vetor e, por isso, para acessar os elementos utilizamos i.
                        a
    Os segredos do c´digo acima s˜o:
                    o              a
      • Saber a frequˆncia das notas1 e
                     e
      • Saber utilizar a fun¸˜o tone. A fun¸˜o tone recebe trˆs parˆmetros, respectivamente: pino (precisa ser
                            ca             ca                e     a
        um pino que tenha suporte a PWM), frequˆncia da nota e dura¸˜o do som em milissegundos.
                                                 e                   ca

     1 Saiba   mais em http://pt.wikipedia.org/wiki/S´rie harmˆnica (m´sica)
                                                     e        o       u
Cap´
   ıtulo 5

Armazenando na EEPROM




              35
36                                                           CAP´
                                                                ITULO 5. ARMAZENANDO NA EEPROM

    EEPROM (Electrically Erasable Programmable Read-Only Memory, do Inglˆs) ´ um tipo de mem´ria n˜o
                                                                                 e e                   o     a
vol´til, ou seja, que n˜o se apaga ao retirarmos energia de seu circuito (o que n˜o ´ verdade para as mem´rias
   a                   a                                                         a e                       o
do tipo RAM, por exemplo). O ATMega328, microcontrolador presente no Arduino Duemilanove, possui um
circuito EEPROM integrado de 1024 bytes (ou 1KiB) – em outras vers˜es do Arduino, como o Mega (que usa
                                                                         o
ATMega1280 ou ATMega2560, dependendo do modelo), a EEPROM pode chegar at´ 4KiB.       e
    Ter o circuito EEPROM integrado significa que nosso software pode armazenar 1KiB de dados que n˜o         a
ser˜o perdidos (mesmo que desliguemos o Arduino da fonte de alimenta¸˜o) – funciona como se fosse um
   a                                                                         ca
micro-pendrive. Para utilizar a EEPROM n˜o precisamos de circuitos adicionais: precisamos apenas utilizar a
                                             a
biblioteca EEPROM.h. Por´m, para nosso exemplo, vamos ligar um LED na porta 11 e utilizar o seguinte c´digo:
                           e                                                                             o

     #include <EEPROM.h>
     #define LED 11

     void setup() {

         for (int i = 0; i < 16; i++) {
           EEPROM.write(i, i * i);
         }
     }

     void loop() {
       for (int i = 0; i < 16; i++) {
         byte leitura = EEPROM.read(i);
         analogWrite(LED, leitura);
         delay(50);
       }
       delay(1000);
     }

    A diretiva #include diz ao compilador que queremos incluir a biblioteca EEPROM.h – isso quer dizer que,
al´m do c´digo que digitamos, utilizaremos um c´digo j´ criado pela equipe do Arduino para facilitar a utiliza¸˜o
  e       o                                    o       a                                                      ca
da EEPROM. O exemplo nada mais faz que escrever 16 bytes na EEPROM (na fun¸˜o setup), ler um por um
                                                                                    ca
e configurar o valor lido como sa´ PWM da porta 11 (na fun¸˜o loop).
                                ıda                            ca
    A fun¸˜o de escrita, EEPROM.write, recebe dois parˆmetros: o endere¸o onde ela vai escrever (um valor entre
         ca                                            a                 c
0 e 1023, no caso do Arduino Duemilanove com ATMega328) e o byte que escreveremos nesse local, j´ a fun¸˜o
                                                                                                      a       ca
EEPROM.read recebe apenas um parˆmetro (o endere¸o de onde ela far´ a leitura) e nos retorna o valor lido na
                                    a                c                 a
mem´ria (um byte).
     o

Mais conteúdo relacionado

Mais procurados (14)

Apostila lineares.pdf
Apostila lineares.pdfApostila lineares.pdf
Apostila lineares.pdf
 
Apostila latex
Apostila latexApostila latex
Apostila latex
 
contabilidade
contabilidadecontabilidade
contabilidade
 
Scilab programacao
Scilab programacaoScilab programacao
Scilab programacao
 
Solucoeselon
SolucoeselonSolucoeselon
Solucoeselon
 
Tutorial de Uppaal
Tutorial de UppaalTutorial de Uppaal
Tutorial de Uppaal
 
Analise real
Analise realAnalise real
Analise real
 
Apostila com limites e derivada
Apostila com limites e derivadaApostila com limites e derivada
Apostila com limites e derivada
 
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTOREDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
REDES SEM FIO NO MUNDO EM DESENVOLVIMENTO
 
Livro eduardo
Livro eduardoLivro eduardo
Livro eduardo
 
Redes sem fio
Redes sem fioRedes sem fio
Redes sem fio
 
Hardware CDTC
Hardware CDTCHardware CDTC
Hardware CDTC
 
Guia xerox workcentre_3550
Guia xerox workcentre_3550Guia xerox workcentre_3550
Guia xerox workcentre_3550
 
Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)Programacao Orientada A Objetos (Java)
Programacao Orientada A Objetos (Java)
 

Destaque (20)

Terminos de referencia_banco_oferentes_resto_del_pais
Terminos de referencia_banco_oferentes_resto_del_paisTerminos de referencia_banco_oferentes_resto_del_pais
Terminos de referencia_banco_oferentes_resto_del_pais
 
Album
AlbumAlbum
Album
 
Entrando no clima
Entrando no climaEntrando no clima
Entrando no clima
 
Apresentacao rio+20
Apresentacao rio+20Apresentacao rio+20
Apresentacao rio+20
 
Pensamentos sobre a água elizete
Pensamentos sobre a água   elizetePensamentos sobre a água   elizete
Pensamentos sobre a água elizete
 
30/08/2012 - Apresentação Semanal
30/08/2012 - Apresentação Semanal30/08/2012 - Apresentação Semanal
30/08/2012 - Apresentação Semanal
 
Livro: O cortiço - 2º ano CIC
Livro: O cortiço - 2º ano CICLivro: O cortiço - 2º ano CIC
Livro: O cortiço - 2º ano CIC
 
252 -diabetes mellitus-tipo_2_prevencao
252 -diabetes mellitus-tipo_2_prevencao252 -diabetes mellitus-tipo_2_prevencao
252 -diabetes mellitus-tipo_2_prevencao
 
Bases de datos relacionales
Bases de datos relacionalesBases de datos relacionales
Bases de datos relacionales
 
neoliberalismo y globalización
neoliberalismo y globalizaciónneoliberalismo y globalización
neoliberalismo y globalización
 
Ufba12fis2
Ufba12fis2Ufba12fis2
Ufba12fis2
 
Sistemas operacionais aula
Sistemas operacionais aula Sistemas operacionais aula
Sistemas operacionais aula
 
Diálogo com de Saci: sobre Epicteto e Montaigne, de Blaise Pascal
Diálogo com de Saci: sobre Epicteto e Montaigne, de Blaise PascalDiálogo com de Saci: sobre Epicteto e Montaigne, de Blaise Pascal
Diálogo com de Saci: sobre Epicteto e Montaigne, de Blaise Pascal
 
la celula
la celulala celula
la celula
 
Aula 4
Aula 4Aula 4
Aula 4
 
Capitalismo
CapitalismoCapitalismo
Capitalismo
 
Sistemas operacionais html
Sistemas operacionais html Sistemas operacionais html
Sistemas operacionais html
 
AC_APAC_QuickFacts
AC_APAC_QuickFactsAC_APAC_QuickFacts
AC_APAC_QuickFacts
 
wooo
wooowooo
wooo
 
Arquivologia
ArquivologiaArquivologia
Arquivologia
 

Semelhante a Ap apostila arduino-rev4

Apostila ruby-completa
Apostila ruby-completaApostila ruby-completa
Apostila ruby-completa
mako2887
 
Apostila de Robotica
Apostila de RoboticaApostila de Robotica
Apostila de Robotica
Isvaldo Souza
 
Curso de robotica movel
Curso de robotica movelCurso de robotica movel
Curso de robotica movel
Ribeiro Baieta
 
Ft 2800 m português
Ft 2800 m portuguêsFt 2800 m português
Ft 2800 m português
Fmoreira4
 
Analise real cattai_uneb
Analise real cattai_unebAnalise real cattai_uneb
Analise real cattai_uneb
jecyjs
 

Semelhante a Ap apostila arduino-rev4 (20)

Introdução à programação em R
Introdução à programação em RIntrodução à programação em R
Introdução à programação em R
 
Tut arduino
Tut arduinoTut arduino
Tut arduino
 
Projeto de instalaces eltricas
Projeto de instalaces eltricasProjeto de instalaces eltricas
Projeto de instalaces eltricas
 
Apostila ruby-completa
Apostila ruby-completaApostila ruby-completa
Apostila ruby-completa
 
Protecao-por-sprinklers-em-depositos-de-grande-altura.pdf
Protecao-por-sprinklers-em-depositos-de-grande-altura.pdfProtecao-por-sprinklers-em-depositos-de-grande-altura.pdf
Protecao-por-sprinklers-em-depositos-de-grande-altura.pdf
 
Eletronica 1
Eletronica 1Eletronica 1
Eletronica 1
 
Eletronica 1
Eletronica 1Eletronica 1
Eletronica 1
 
Apostila de Robotica
Apostila de RoboticaApostila de Robotica
Apostila de Robotica
 
Curso de robotica movel
Curso de robotica movelCurso de robotica movel
Curso de robotica movel
 
Curso C
Curso CCurso C
Curso C
 
Introdução às redes
Introdução às redesIntrodução às redes
Introdução às redes
 
Ft 2800 m português
Ft 2800 m portuguêsFt 2800 m português
Ft 2800 m português
 
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
Manual da Interface de Áudio FOCUSRITE Scarlett 18i8
 
Pratica eletronica 2019b_apostila
Pratica eletronica 2019b_apostilaPratica eletronica 2019b_apostila
Pratica eletronica 2019b_apostila
 
Poojava
PoojavaPoojava
Poojava
 
Poojava
PoojavaPoojava
Poojava
 
Drivers de Dispositivos Linux
Drivers de Dispositivos LinuxDrivers de Dispositivos Linux
Drivers de Dispositivos Linux
 
Analise real cattai_uneb
Analise real cattai_unebAnalise real cattai_uneb
Analise real cattai_uneb
 
Analise real cattai_uneb
Analise real cattai_unebAnalise real cattai_uneb
Analise real cattai_uneb
 
Apostila de Introdução ao Arduino
Apostila de Introdução ao ArduinoApostila de Introdução ao Arduino
Apostila de Introdução ao Arduino
 

Ap apostila arduino-rev4

  • 1.
  • 2. 2
  • 3. Sum´rio a 1 Conceitos b´sicos a 7 1.1 O Projeto Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 Instala¸˜o do software . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Primeiro projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1 C´lculos de resistˆncia . a e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.3.2 Alimenta¸˜o do circuito ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.4 Bibliotecas e shields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5 Integra¸˜o com o PC . . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.6 Portas anal´gicas e digitais . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.1 Portas digitais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6.2 Portas anal´gicas . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2 Fundamentos de Eletrˆnicao 21 2.1 Resistores e Lei de Ohm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.1.1 Resistores em s´rie . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.1.2 Resistores em paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.1.3 C´digo de cores . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1.4 Divisor de tens˜o . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2 Capacitores e indutores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.1 Capacitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.2 Indutores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3 Diodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4 Transistores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4.1 Utiliza¸˜o de transistores com ca rel´s e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.2 Ponte-H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3 Eletrˆnica Digital o 29 3.1 Introdu¸˜o . . . . . . . . . . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Portas l´gicas . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.1 Tabela-verdade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.2 Representa¸˜o das opera¸˜es ca co . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2.3 Fun¸˜es l´gicas compostas . . co o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4 Fazendo barulho com o Arduino 33 5 Armazenando na EEPROM 35 3
  • 4. 4 ´ SUMARIO
  • 5. 5
  • 6. 6 ´ SUMARIO Pref´cio a Essa apostila ´ destinada aos alunos que realizaram o Curso de Arduino1 , tendo como premissa explicar em mais e detalhes temas abordados em aula para que os alunos n˜o se preocupem com anota¸˜es durante os experimentos. a co Seu conte´do (com exce¸˜o das fotos de terceiros, devidamente citadas) est´ dispon´ atrav´s da licen¸a u ca a ıvel e c Creative Commons Atribui¸˜o-Uso n˜o-comercial-Compartilhamento pela mesma licen¸a 3.0 Un- ca a c ported, que est´ dispon´ nas formas compacta e completa nos seguintes endere¸os: a ıvel c http://creativecommons.org/licenses/by-nc-sa/3.0/deed.pt_BR http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode Caso possua corre¸˜es, sugest˜es ou mesmo queira contribuir escrevendo essa apostila, sinta-se livre para co o entrar em contato – terei um imenso prazer em receber sua contribui¸˜o! ca Download Essa apostila est´ dispon´ para download atrav´s do site do Curso de Arduino1 . Acesse o site para verificar a ıvel e novas vers˜es no seguinte endere¸o: o c http://www.CursoDeArduino.com.br/apostila O Autor ´ Alvaro Justen, tamb´m conhecido como “Turicas”, ´ o criador do Curso e e de Arduino1 e autor dessa apostila. F˜ de carteirinha de software livre a (usu´rio h´ mais de 12 anos), sempre participa de eventos (palestrando a a ou organizando) e grupos de usu´rios, al´m de contribuir com o de- a e senvolvimento de diversos projetos. Foi respons´vel pela cria¸˜o do a ca grupo de usu´rios de Arduino do Rio de Janeiro2 , onde s˜o realizados a a encontros mensais para discutir sobre a plataforma. Est´ finalizando sua gradua¸˜o em Engenharia de Telecomunica- a ca ¸˜es pela Universidade Federal Fluminense (Niter´i/RJ), onde j´ de- co o a senvolveu diversas atividades de pesquisa, ensino e extens˜o (muitas a ligadas ao Arduino); ´ programador Python3 , tendo criado e contri- e bu´ com diversos projetos nessa linguagem; entusiasta de metodolo- ıdo gias ageis e Coding Dojo4 , sendo o respons´vel por trazer a pr´tica a ´ a a Niter´i. o ´ Alvaro atualmente possui uma empresa que ministra cursos de Ar- duino por todo o Brasil e desenvolve projetos utilizando a plataforma para diversas empresas. Al´m disso, desenvolve bibliotecas abertas e para o Arduino e publica artigos com dicas e projetos em seu blog. Contato • E-mail: alvaro@CursoDeArduino.com.br • Blog: http://blog.justen.eng.br/ • Twitter: http://twitter.com/turicas • Telefone: +55 21 9898-0141 1 http://www.CursoDeArduino.com.br/ 2 http://ArduInRio.cc/ 3 http://www.python.org/ 4 http://dojorio.org/
  • 7. Cap´ ıtulo 1 Conceitos b´sicos a 7
  • 8. 8 CAP´ ´ ITULO 1. CONCEITOS BASICOS 1.1 O Projeto Arduino Arduino1 ´ um projeto que engloba software e hardware e tem como objetivo fornecer uma plataforma f´cil e a para prototipa¸˜o de projetos interativos, utilizando um microcontrolador. Ele faz parte do que chamamos de ca computa¸˜o f´ ca ısica: ´rea da computa¸˜o em que o software interage diretamente com o hardware, tornando a ca poss´ integra¸˜o f´cil com sensores, motores e outros dispositivos eletrˆnicos. ıvel ca a o A parte de hardware do projeto, uma placa que cabe na palma da m˜o, ´ um computador como qualquer a e outro: possui microprocessador, mem´ria RAM, mem´ria flash (para guardar o software), temporizadores, o o contadores, dentre outras funcionalidades. Atualmente, o projeto est´ na vers˜o Uno, por´m muitos Arduinos a a e encontrados hoje s˜o da vers˜o Duemilanove (2009, em italiano), que possui um clock de 16MHz, 2kB de a a mem´ria RAM, 32kB de mem´ria flash, 14 portas digitais e 6 entradas anal´gicas. o o o Figura 1.1: Foto do hardware de um Arduino Duemilanove A principal diferen¸a entre um Arduino e um computador convencional ´ que, al´m ter menor porte (tanto c e e no tamanho quanto no poder de processamento), o Arduino utiliza dispositivos diferentes para entrada e sa´ ıda em geral. Por exemplo: em um PC utilizamos teclado e mouse como dispositivos de entrada e monitores e impressoras como dispositivos de sa´ ıda; j´ em projetos com o Arduino os dispositivos de entrada e sa´ s˜o a ıda a circuitos el´tricos/eletrˆnicos. e o Como a interface do Arduino com outros dispositivos est´ mais perto do meio f´ a ısico que a de um PC, podemos ler dados de sensores (temperatura, luz, press˜o etc.) e controlar outros circuitos (lˆmpadas, motores, a a eletrodom´sticos etc.), dentre outras coisas que n˜o conseguir´ e a ıamos diretamente com um PC. A grande diferen¸a c com rela¸˜o ao uso desses dispositivos, no caso do Arduino, ´ que, na maior parte das vezes, n´s mesmos ca e o constru´ımos os circuitos que s˜o utilizados, ou seja, n˜o estamos limitados apenas a produtos existentes no a a mercado: o limite ´ dado por nosso conhecimento e criatividade! e O melhor de tudo nesse projeto ´ que seu software, hardware e documenta¸˜o s˜o abertos. O software ´ livre e ca a e (GNU GPL2 ), o hardware ´ totalmente especificado (basta entrar no site e baixar os esquemas) e a documenta¸˜o e ca est´ dispon´ a ıvel em Creative Commons3 – os usu´rios podem colaborar (seja escrevendo documenta¸˜o, seja a ca traduzindo) atrav´s da wiki! e 1 http://www.arduino.cc/ 2 http://www.gnu.org/licenses/gpl.html 3 http://creativecommons.org/licenses/
  • 9. ¸˜ 1.2. INSTALACAO DO SOFTWARE 9 1.2 Instala¸˜o do software ca Para criar um projeto com o Arduino, basta comprar uma placa Arduino (utilizaremos o Arduino Duemilanove como exmplo) – que custa em torno de US$30 no exterior e por volta de R$100 no Brasil –, fazer download da interface integrada de desenvolvimento (IDE)4 e ligar a placa ` porta USB do PC. a Como qualquer computador, o Arduino precisa de um software para executar comandos. Esse software ser´ desenvolvido na Arduino IDE em nosso PC, utilizando a linguagem C++. Ap´s escrever o c´digo, o a o o compilaremos e ent˜o faremos o envio da vers˜o compilada ` mem´ria flash do Arduino, atrav´s da porta USB. a a a o e A partir do momento que o software ´ gravado no Arduino n˜o precisamos mais do PC: o Arduino, como ´ um e a e computador independente, conseguir´ sozinho executar o software que criamos, desde que seja ligado a uma a fonte de energia. Antes de iniciar nosso projeto precisamos ent˜o instalar a IDE. Vamos l´: a a • Ubuntu GNU/Linux 10.10: Basta executar em um terminal: sudo aptitude install arduino ou procurar pelo pacote “arduino” no Synaptic (menu Sistema → Administra¸˜o → Gerenciador de pacotes ca Synaptic). • Ubuntu GNU/Linux (anterior a 10.10): Consulte a p´gina de instala¸˜o do Arduino em Ubuntu5 . a ca • Outras distribui¸˜es GNU/Linux: Consulte a p´gina de instala¸˜o em outras distribui¸˜es GNU/Linux6 . co a ca co • Microsoft Windows: Consulte a p´gina de instala¸˜o para as variadas vers˜es do Microsoft Windows7 . a ca o • Apple Mac OS X: Consulte a p´gina de instala¸˜o para o Mac OS X8 . a ca Ap´s a instala¸˜o, abra a IDE (no Ubuntu GNU/Linux ela estar´ dispon´ no menu Aplicativos → Ele- o ca a ıvel trˆnica → Arduino IDE ). A seguinte tela ser´ mostrada: o a 4 http://arduino.cc/en/Main/Software 5 http://www.arduino.cc/playground/Linux/Ubuntu 6 http://www.arduino.cc/playground/Learning/Linux 7 http://www.arduino.cc/en/Guide/Windows 8 http://www.arduino.cc/en/Guide/MacOSX
  • 10. 10 CAP´ ´ ITULO 1. CONCEITOS BASICOS Figura 1.2: Arduino IDE vers˜o 0018 rodando no Ubuntu GNU/Linux 10.10 a 1.3 Primeiro projeto Quando ensinamos linguagens de programa¸˜o novas, geralmente o primeiro exemplo ´ um hello world. Como ca e o Arduino n˜o vem por padr˜o com um display, nosso primeiro exemplo ser´ fazer um LED piscar – e por isso a a a ser´ chamado blink. Nosso LED ficar´ aceso durante um segundo e apagado durante outro segundo e ent˜o a a a recome¸ar´ o ciclo. Abra a IDE e digite o seguinte c´digo: c a o void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } Chamamos um c´digo feito para Arduino de sketch e o salvamos em um arquivo com a extens˜o .pde. Com o a nosso sketch pronto, bastar´ conectar o Arduino na porta USB e clicar no bot˜o upload (segundo, da direita a a para a esquerda – destacado na figura acima). Ap´s o processo, ser´ vista a mensagem Done uploading na IDE o a e ent˜o o sketch estar´ rodando no Arduino, ou seja, o LED acender´ e apagar´, de 1 em 1 segundo. Vamos a a a a agora ` explica¸˜o do processo: a ca
  • 11. 1.3. PRIMEIRO PROJETO 11 O Arduino possui 14 portas digitais, que podemos utilizar como entrada ou sa´ ıda. Nesse caso, vamos utilizar a porta de n´mero 13 como sa´ u ıda, dessa forma, podemos controlar quando a porta ficar´ com 5V ou quando a ficar´ com 0V – internamente o Arduino possui um LED conectado ` porta 13 e, por isso, teremos como “ver” a a nosso software funcionando. Para que nosso software funcione corretamente no Arduino, precisamos criar duas fun¸˜es espec´ co ıficas: setup e loop. A fun¸˜o setup ´ executada assim que o Arduino d´ boot, j´ a fun¸˜o loop fica sendo executada ca e a a ca continuamente (em loop) at´ que o Arduino seja desligado. Como as portas digitais s˜o de entrada ou sa´ e a ıda, definimos ent˜o dentro da fun¸˜o setup que a nossa porta 13 ´ uma porta de sa´ – fazemos isso atrav´s da a ca e ıda e chamada ` fun¸ao pinMode, que j´ vem na biblioteca padr˜o do Arduino. a c˜ a a Depois de configurarmos corretamente a porta 13 como sa´ ıda, precisamos acender e apagar o LED que est´ conectado a ela. Para alterar a tens˜o na porta, utilizamos a fun¸˜o digitalWrite (que tamb´m est´ na a a ca e a biblioteca padr˜o do Arduino); passamos para essa fun¸˜o a porta que queremos alterar a tens˜o e o novo valor a ca a de tens˜o (HIGH = 5V, LOW = 0V). Depois das chamadas para acender e apagar o LED, chamamos a fun¸˜o a ca delay passando o parˆmetro 1000 – o que essa fun¸˜o faz ´ esperar um tempo em milisegundos para ent˜o a ca e a executar a pr´xima instru¸˜o. o ca Deve-se ressaltar que a IDE Arduino inclui automaticamente todas as bibliotecas que utilizamos. Se vocˆ e est´ acostumado com C/C++, note que n˜o precisamos digitar as diretivas include para arquivos como o a a stdlib.h, por exemplo. Tudo ´ feito de forma autom´tica para facilitar o desenvolvimento do projeto! e a Como o Arduino j´ vem com um LED internamente conectado ` porta 13, n˜o precisaremos de circuitos a a a externos para que esse projeto funcione, ou seja, bastar´ fazer upload daquele c´digo e j´ teremos o resultado a o a esperado: (a) LED apagado (b) LED aceso Figura 1.3: Arduino Duemilanove rodando o exemplo Blink Por´m, se quisermos acender um LED externo ` placa, podemos conect´-lo diretamente ` porta 13. Podemos e a a a utilizar um LED de 5mm que acende com 2,5V. O problema, nesse caso, se d´ por conta da porta digital: ela a assume ou a tens˜o 0V, ou a tens˜o 5V – e caso coloquemos 5V no LED ele ir´ queimar. a a a Para solucionar esse problema precisamos ligar algum outro componente que seja respons´vel por dividir a parte dessa tens˜o com o LED, para que ele n˜o queime, ent˜o utilizaremos um resistor. Portanto, ligamos um a a a resistor de 120Ω em s´rie com o LED, o resistor ` porta 13 e o LED ` porta GND – ground ou terra –, como e a a na Figura 1.4.
  • 12. 12 CAP´ ´ ITULO 1. CONCEITOS BASICOS Figura 1.4: Utilizando um LED externo para o exemplo Blink N˜o precisamos fazer nenhuma altera¸˜o no software para que esse circuito funcione: basta ligar o Arduino a ca na porta USB do computador, para que o computador dˆ energia ao circuito, e ent˜o veremos o LED externo e a piscar juntamente com o LED interno. Em vez do LED, poder´ ıamos controlar outros componentes, como motores, eletrodom´sticos etc. e 1.3.1 C´lculos de resistˆncia a e Para chegar ao valor de 120Ω acima, precisei fazer algumas contas (e arredondamentos). Vamos aprender agora a calcular o valor dos resistores que precisamos utilizar. Se precisarmos acender um LED verde, que ´ alimentado e com tens˜o de 2,2V e corrente de 20mA atrav´s do Arduino, precisaremos de um resistor, como j´ vimos, j´ que a e a a o Arduino s´ consegue fornecer ou 0V ou 5V. Colocaremos o resistor em s´rie com o LED, e com isso podemos o e concluir que: • A tens˜o total (soma das tens˜es no resistor e no LED) ser´ de 5V, ou seja: VLED + VR = 5V a o a • A corrente total que passa pelo resistor e pelo LED ´ igual, ou seja, 20mA, ou seja: ILED = IR = 20mA e • Precisamos colocar uma tens˜o de 2,2V no LED, ou seja: VLED = 2, 2V a Sabendo desses detalhes, podemos concluir que a tens˜o no resistor ser´ de: VR = 5V − VLED ∴ VR = a a 5V − 2, 2V ⇒ VR = 2, 8V . Como IR = 20mA e VR = 2, 8V , podemos calcular o valor da resistˆncia R do e resistor que iremos utilizar atrav´s da Lei de Ohm: e V = RI 2,8V Assim, temos: 2, 8V = R0, 020A ∴ R = 0,020A ⇒ R = 140Ω Depois de feito o c´lculo, podemos generalizar com a seguinte f´rmula: a o Vf onte − VLED R= IR Para o LED verde, precisamos de um resistor de 140Ω, por´m n˜o existem resistores com esse valor para e a venda – os valores s˜o pr´-definidos9 . Dada essa situa¸˜o, temos duas alternativas: a e ca • Utilizar um resistor de maior resistˆncia e limitar mais a corrente (que far´ com que o LED brilhe menos); e a ou • Associar dois ou mais resistores em s´rie ou paralelo para conseguir o valor. e Geralmente escolhemos um resistor de valor pr´ximo, j´ que uma altera¸˜o pequena de corrente n˜o causar´ o a ca a a danos ao dispositivo, por´m em alguns casos precisaremos combinar resistores de valores diferentes para conseguir e o valor equivalente – esse tema ser´ explicado em mais detalhes no pr´ximo cap´ a o ıtulo. 9 Saiba mais em http://www2.eletronica.org/hack-s-dicas/valores-comerciais-para-resistores-capacitores-e-indutores/
  • 13. 1.4. BIBLIOTECAS E SHIELDS 13 1.3.2 Alimenta¸˜o do circuito ca Internamente, o circuito do Arduino ´ alimentado com uma tens˜o de 5V. Quando ligamos o Arduino em uma e a porta USB do PC, o pr´prio PC, atrav´s do cabo USB, alimenta o Arduino. Por´m nem sempre temos um o e e PC por perto; para esses casos, podemos utilizar uma outra fonte de energia de 5V (a fonte deve ser ligada diretamente nos pinos 5V e GND do Arduino). Como n˜o possu´ a ımos pilhas/baterias em abundˆncia no mercado com tens˜o de 5V, fica complicado alimentar a a um Arduino dessa forma alternativa – se tivermos uma tomada de 127/220VAC por perto, poder´ ıamos ligar uma fonte AC/DC (essas sim, existem aos montes). Para resolver esse problema, o Arduino possui um regulador de tens˜o que aceita tens˜es de 7 a 12V (na verdade, ele consegue funcionar com tens˜es entre 6 e 20V, apesar a o o de n˜o ser recomendado). Com o regulador de tens˜o podemos combinar pilhas em s´rie, utilizar uma bateria a a e de 9V ou mesmo baterias de carros, motos e no-breaks (12V). Figura 1.5: Arduino alimentado por uma bateria de 9V Retirado de http://www.arduino.cc/playground/Learning/9VBatteryAdapter 1.4 Bibliotecas e shields Assim como a IDE j´ vem com diversas fun¸˜es pr´-definidas, o Arduino possui outras bibliotecas para controle a co e de servomotores, displays LCD, gera¸˜o de audio, recep¸˜o de sinais de sensores e outros dispositivos (como ca ´ ca teclado PS/2), dentre muitas outras coisas! E quem pensa que essa estensibilidade toda se restringe ` parte de a software est´ muito enganado: o Arduino possui o que chamamos de shields, que s˜o placas que se acoplam ` a a a placa original, agregando funcionalidades ` mesma. a Existem shields dos mais variados tipos, para as mais diversas fun¸˜es. Alguns servem como entrada, outros co como sa´ıda, e ainda outros como entrada e sa´ ıda. Com os shields conseguimos, por exemplo, fazer o Arduino se comunicar numa rede Ethernet, ou ainda transmitir dados para qualquer dispositivo via Bluetooth, Wi-Fi ou Zigbee. Existem shields com circuitos integrados prontos para controlarmos motores sem que precisemos nos preocupar com complica¸˜es eletrˆnicas envolvidas, outros possuem leitor de cart˜o SD, acelerˆmetro, co o a o GPS e diversos outros sensores que podem gerar dados importantes para o software que est´ rodando no a microcontrolador.
  • 14. 14 CAP´ ´ ITULO 1. CONCEITOS BASICOS Figura 1.6: Arduino Duemilanove com shield Ethernet Existem tamb´m outros shields mais elaborados, que s˜o sistemas completos. Um deles, por exemplo, cria e a uma plataforma para desenvolvimento de jogos no Arduino: o Video Game Shield10 , que possui uma sa´ RCA ıda e duas entradas para controles Numchuck do Nintendo Wii. Al´m do hardware, existe uma biblioteca para e ser utilizada em conjunto, que j´ possui v´rias fun¸˜es pr´-programadas para fazermos desenhos na televis˜o e a a co e a capturar os dados dos movimentos nos controles. 1.5 Integra¸˜o com o PC ca Apesar de o Arduino ser um computador independente, em alguns casos podemos nos aproveitar de um PC por perto e explorar outra funcionalidade muito boa do projeto: o Arduino consegue conversar com o computador atrav´s da porta USB. Isso nos permite desenvolver um software que roda no PC e se comunica com o software e que roda no Arduino, o que nos abre um mar de possibilidades! Podemos, por exemplo, criar um software em Python11 que recebe os dados de um sensor, via USB (atrav´s do Arduino), e envia para algum banco de dados e na Internet – assim teremos, de certa forma, nosso Arduino online, enviando dados para o mundo, atrav´s de e um PC! Existem in´meros projetos interessantes que fazem interface entre linguagens de programa¸˜o e o Arduino u ca – existem implementa¸˜es para Python, Ruby, Java, C, dentre outras linguagens. E n˜o para por a´ al´m de o co a ı: e software que roda no PC receber dados, ele pode tamb´m enviar dados, controlando o Arduino! Dessa forma, e podemos, por exemplo, receber dados da Web e enviar comandos ao Arduino, baseados nesses dados. Um exemplo de aplica¸˜o que utiliza a porta USB para comunica¸˜o do Arduino com o PC ´ o projeto ca ca e Arduinoscope12 , que tem como finalidade criar um oscilosc´pio, onde podemos ver em tempo real, no PC, o gr´ficos das tens˜es que est˜o ligadas `s portas anal´gicas do Arduino. Outro exemplo ´ um projeto que criei, a o a a o e onde controlo um carrinho atrav´s de Wi-Fi, o Turiquinhas13 . e Fica a dica para quem quer come¸ar um projeto Arduino assistido por computador de maneira f´cil: vale a c a pena estudar um protocolo de comunica¸˜o e controle chamado Firmata14 , cuja implementa¸˜o est´ dispon´ ca ca a ıvel 10 http://www.wayneandlayne.com/projects/video-game-shield/ 11 http://www.python.org/ 12 http://code.google.com/p/arduinoscope/ 13 http://www.justen.eng.br/Turiquinhas 14 http://www.firmata.org/
  • 15. ´ 1.6. PORTAS ANALOGICAS E DIGITAIS 15 para v´rias linguagens (e j´ vem por padr˜o um exemplo na IDE do Arduino). Ele facilita o processo de a a a aquisi¸˜o de dados e controle da placa. ca Al´m das op¸˜es citadas acima, existe uma linguagem chamada Processing15 , parecid´ e co ıssima com a linguagem que utilizamos no Arduino, que consegue se comunicar com o Arduino via USB e ´ utilizada para criar imagens, e anima¸˜es e intera¸˜es no PC, a partir dos dados vindos da comunica¸˜o com o Arduino. co co ca 1.6 Portas anal´gicas e digitais o O Arduino possui dois tipos de portas de entrada: anal´gicas e digitais. Al´m disso, as portas digitais tamb´m o e e servem como portas de sa´ıda, funcionando com dois tipos b´sicos de sa´ a ıda: sa´ digital comum e sa´ PWM ıda ıda – o PWM pode ser utilizado para simular uma sa´ anal´gica, dentre outras coisas. ıda o 1.6.1 Portas digitais Utilizamos as portas digitais quando precisamos trabalhar com valores bem definidos de tens˜o. Apesar de nem a sempre ser verdade, geralmente trabalhamos com valores digitais bin´rios, ou seja, projetamos sistemas que a utilizam apenas dois valores bem definidos de tens˜o. Existem sistemas tern´rios, quatern´rios, mas focaremos a a a no bin´rio, j´ que ´ esse o utilizado pelo Arduino. a a e Como o sistema ´ bin´rio, temos que ter apenas duas tens˜es. S˜o elas: 0V e 5V. Dessa forma, as portas e a o a digitais do Arduino podem trabalhar apenas com essas duas tens˜es – e o software que desenvolveremos poder´ o a requisitar ao microcontrolador do Arduino que: • Coloque uma determinada porta em 0V; • Coloque uma determinada porta em 5V; • Leia o valor de uma determinada porta (ter´ 0V ou 5V como resposta). a O Arduino Duemilanove possui 14 portas digitais que est˜o destacadas na figura a seguir: a Figura 1.7: Portas digitais do Arduino, de 13 a 0 Apesar de ser poss´ıvel, n˜o ´ recomend´vel utilizar as portas 0 e 1 pois elas est˜o diretamente ligadas ao a e a a sistema de comunica¸˜o do Arduino (pinos RX e TX – recep¸˜o e transmiss˜o, respectivamente) e, por isso, ca ca a seu uso pode conflitar com o upload do software. Caso queira utiliz´-las, certifique-se de desconectar quaisquer a circuitos conectados a ela no momento do upload. Utilizaremos as fun¸˜es digitalRead e digitalWrite para ler e escrever, respectivamente, nas portas di- co gitais. A fun¸˜o digitalWrite j´ foi exemplificada em nosso exemplo Blink, onde acendemos e apagamos um ca a LED ao alternar a tens˜o da porta 13 entre 5V e 0V, com intervalo de 1 segundo. Para exemplificar a fun¸˜o a ca digitalRead utilizaremos um bot˜o, como no diagrama a seguir: a 15 http://www.processing.org/
  • 16. 16 CAP´ ´ ITULO 1. CONCEITOS BASICOS Figura 1.8: Esquema el´trico ligando um bot˜o ao Arduino e a Montado o circuito acima, vamos programar o Arduino com o seguinte c´digo: o #define BOTAO 2 #define LED 13 void setup() { pinMode(LED, OUTPUT); pinMode(BOTAO, INPUT); } void loop() { if (digitalRead(BOTAO) == HIGH) { digitalWrite(LED, LOW); } else { digitalWrite(LED, HIGH); } } A fun¸˜o digitalRead nos retorna o valor correspondente ` tens˜o que est´ na porta que passamos entre ca a a a parenteses. Em nosso exemplo, utilizamos a porta BOTAO (que na verdade ´ uma constante, definida atrav´s da e e diretiva #define), cujo valor ´ 2. O valor retornado ´ uma constante, mapeado da seguinte forma: e e • HIGH, caso a tens˜o na porta seja 5V; a • LOW, caso a tens˜o na porta seja 0V; a O que o programa faz, ent˜o, ´ apagar o LED caso o bot˜o esteja pressionado e acendˆ-lo caso n˜o esteja. a e a e a Fica como exerc´ entender o c´digo a seguir, que ´ uma otimiza¸˜o do anterior e possui mesma funcionalidade: ıcio o e ca #define BOTAO 2 #define LED 13 void setup() { pinMode(LED, OUTPUT); pinMode(BOTAO, INPUT); }
  • 17. ´ 1.6. PORTAS ANALOGICAS E DIGITAIS 17 void loop() { digitalWrite(LED, !digitalRead(BOTAO)); } Dica: o caractere “!”, em linguagem C, significa not e tem como finalidade negar a express˜o que segue ` a a sua direita. PWM PWM significa Modula¸˜o por Largura de Pulso (Pulse-Width Modulation, do Inglˆs) e consiste em manipu- ca e larmos a raz˜o c´ a ıclica de um sinal (conhecida do Inglˆs como duty cycle) a fim de transportar informa¸˜o ou e ca controlar a potˆncia de algum outro circuito. Basicamente, teremos um sinal digital que oscila entre 0V e 5V e com determinada frequˆncia (o Arduino trabalha com um padr˜o perto de 500Hz) – funciona como se fosse um e a clock, por´m os tempos em que o sinal permanece em 0V e 5V podem ser diferentes. Duty cycle ´ a raz˜o do e e a tempo em que o sinal permanece em 5V sobre o tempo total de uma oscila¸˜o. A Figura 1.9 ilustra melhor esse ca conceito: Figura 1.9: Sinal PWM com duty cycle de 25% Assim, temos: x x duty cycle = = x+y T O que controlamos atrav´s de software ´ justamente a duty cycle, ou seja, o percentual de tempo em que e e o sinal fica em 5V. Dessa forma, podemos utilizar essa t´cnica para limitar a potˆncia de algum circuito. Por e e exemplo, considere que um LED L1 seja alimentado o tempo inteiro por um sinal constante de 5V; j´ o LED L2 a ´ alimentado pelo sinal PWM acima (duty cycle de 25%). Atrav´s de um c´lculo simples de potˆncia podemos e e a e notar que o LED L2 consumir´ apenas 25% da potˆncia do primeiro. a e Infelizmente, por limita¸˜es de hardware, o Arduino n˜o possui PWM em todas as portas digitais: apenas co a as portas 3, 5, 6, 9, 10 e 11 s˜o privilegiadas e podem utilizar esse recurso. Para exemplificar o uso de controle a de potˆncia de um circuito utilizando PWM vamos utilizar um LED em s´rie com um resistor ligados ` porta e e a 11 (o circuito ´ o mesmo do experimento Blink, s´ vamos mudar a porta) e o seguinte c´digo: e o o #define LED 11 void setup() { pinMode(LED, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(LED, i); delay(30); } } Na fun¸˜o loop acima temos um la¸o for, que conta de 0 a 255 (armazenando o valor do contador na vari´vel ca c a i), chamando a fun¸˜o analogWrite (passando como parˆmetros a porta do LED (11) e i) e esperando por 30 ca a milisegundos a cada itera¸˜o. ca
  • 18. 18 CAP´ ´ ITULO 1. CONCEITOS BASICOS A fun¸˜o analogWrite (apesar de estarmos utilizando uma porta digital) ´ respons´vel pelo PWM e recebe ca e a como parˆmetros a porta e um valor entre 0 e 255 – esse valor corresponde ao duty cycle, onde 0 corresponde a a 0% e 255 a 100%. Quando vocˆ rodar o c´digo perceber´ que o LED acende de maneira mais suave – cada e o a etapa de luminosidade diferente corresponde a uma itera¸˜o do for. Fica como exerc´ para o leitor modificar ca ıcio o programa para que o LED, al´m de acender, tamb´m apague suavemente. :-) e e 1.6.2 Portas anal´gicas o Al´m das portas digitais o Arduino possui as portas anal´gicas. Ao contr´rio das portas digitais, as portas e o a anal´gicas s˜o apenas de entrada e nelas podemos ter como entrada infinitos valores de tens˜o (delimitados o a a na faixa de 0V a 5V). Como os conversores anal´gico-digitais (ADC – analog-digital converter, do Inglˆs) do o e Arduino possuem 10 bits de precis˜o, a precis˜o das medi¸˜es de tens˜o no Arduino ´ de por volta de 0,005V a a co a e ou 5mV. Figura 1.10: Portas anal´gicas do Arduino, de 0 a 5 o Como os nomes de fun¸˜es no Arduino s˜o bastante intuitivos, utilizamos a fun¸˜o analogRead para ler co a ca valores anal´gicos – ao chamar a fun¸˜o passamos como argumento o n´mero da porta que desejamos ler (de o ca u 0 a 5). Como exemplo vamos regular a luminosidade de nosso LED (utilizando PWM) atrav´s da quantidade e de luz detectada por um resistor dependente de luz (ou LDR – light dependent resistor, do Inglˆs). Monte o e circuito segundo a figura 1.11.
  • 19. ´ 1.6. PORTAS ANALOGICAS E DIGITAIS 19 Figura 1.11: Circuito com LDR e LED Como os conversores anal´gico-digital possuem 10 bits de precis˜o, a fun¸˜o analogRead nos devolve um o a ca valor entre 0 e 1023, onde 0 corresponde a uma leitura de 0V na porta anal´gica e 1023 corresponde a 5V (para o valores intermedi´rios, basta fazer uma regra de trˆs simples, de maneira an´loga com o PWM). Vamos carregar a e a em nosso Arduino o seguinte c´digo: o #define LED 11 #define LDR 5 void setup() { pinMode(LED, OUTPUT); } void loop() { int leitura = analogRead(LDR); int valorPWM = - 0.25 * leitura + 255; analogWrite(LED, valorPWM); } Os valores 0.25 e 255 da linha que definem a vari´vel valorPWM devem ser calibrados conforme ilumina¸˜o do a ca ambiente, resistores utilizados e luminosidade desejada. Para o c´digo acima, teremos o seguinte comportamento o do valor que colocamos na porta PWM a partir dos valores lidos na porta anal´gica: o
  • 20. 20 CAP´ ´ ITULO 1. CONCEITOS BASICOS Figura 1.12: Gr´fico da fun¸˜o PWM versus leitura anal´gica a ca o Ficam trˆs exerc´ e ıcios: • Aprenda a utilizar um potenciˆmetro e o utilize para regular o brilho do LED, em vez do LDR; o • Volte o LDR para seu lugar anterior e utilize o potenciˆmetro para configurar os valores 0.25 e 255; o • Leia o datasheet do circuito integrado LM35 e monte um circuito parecido com o anterior, por´m sens´ e ıvel a temperatura (e n˜o mais a luz). a
  • 21. Cap´ ıtulo 2 Fundamentos de Eletrˆnica o 21
  • 22. 22 CAP´ ˆ ITULO 2. FUNDAMENTOS DE ELETRONICA 2.1 Resistores e Lei de Ohm Resistores s˜o dispositivos utilizados com a finalidade de transformar energia el´trica em energia t´rmica e/ou a e e limitar a corrente el´trica em um circuito. Como o pr´prio nome sugere, eles tˆm como fun¸˜o oferecer uma e o e ca resistˆncia ` passagem da corrente el´trica – medimos essa resistˆncia atrav´s da unidade Ω (ohm). e a e e e Por consequˆncia, eles causam uma queda de tens˜o na regi˜o do circuito onde se encontram – muitas vezes e a a acabamos utilizando esse efeito para conseguirmos tens˜es intermedi´rias, caso as fontes de tens˜o do circuito o a a n˜o consigam fornecˆ-las. Sabendo-se a tens˜o e corrente em um resistor, podemos calcular sua resistˆncia a e a e atrav´s da f´rmula: e o V R= I Por sua vez, a resistˆncia pode ser calculada atrav´s das caracter´ e e ısticas do material resistivo: ρL R= A Onde ρ ´ a resistividade do material, L ´ seu comprimento e A sua ´rea, ou seja, a resistˆncia ´ proporcional e e a e e ao comprimento e indiretamente proporcional ` ´rea. aa Se, para um determinado circuito, V e I tˆm uma rela¸˜o linear, ou seja, R ´ constante para in´meros e ca e u valores de V e I, ent˜o chamamos o material (que possui resistˆncia R) de ˆhmico. a e o 2.1.1 Resistores em s´rie e Se possuirmos resistores em s´rie em determinado circuito, podemos calcular a resistˆncia equivalente do mesmo e e somando-se as resistˆncias, atrav´s da f´rmula: e e o Req = R1 + R2 + ... + Rn Figura 2.1: Resistores em s´rie e Retirado de http://en.wikipedia.org/wiki/Resistor 2.1.2 Resistores em paralelo Caso os resistores estejam em paralelo, a resistˆncia equivalente ser´ o inverso da soma dos inversos das resis- e a tˆncias, como na f´rmula a seguir: e o 1 1 1 1 = + + ... + Req R1 R2 Rn Figura 2.2: Resistores em paralelo Retirado de http://en.wikipedia.org/wiki/Resistor
  • 23. 2.2. CAPACITORES E INDUTORES 23 2.1.3 C´digo de cores o Os resistores possuem um c´digo de cores que nos permite identificar qual sua resistˆncia. Para isso, mapeamos o e as cores das diversas faixas do resistor e utilizamos a seguinte f´rmula: o R = (10a + b) · 10c ± t, onde a, b e c s˜o as primeiras faixas e t a ultima faixa (geralmente prata ou dourada), que representa a a ´ tolerˆncia. a Figura 2.3: C´digo de cores o Retirado de http://pt.wikipedia.org/wiki/Resistor 2.1.4 Divisor de tens˜o a Como citado acima, resistores criam uma queda de tens˜o na regi˜o do circuito em que est˜o. Utilizando esse a a a efeito, podemos criar o que chamamos de divisores de tens˜o1 : circuitos com resistores que, aplicada uma tens˜o, a a tˆm como sa´ uma fra¸˜o (da´ o nome divisores) dessa tens˜o de entrada. e ıda ca ı a Figura 2.4: Circuito divisor de tens˜o a A partir do circuito acima, temos que: R2 Vout = · Vin R1 + R2 Esse recurso ´ bastante util quando precisamos medir um tens˜o maior do que nossos circuitos conseguem. e ´ a Por exemplo: se quisermos medir uma tens˜o que varia de 9 a 12V no Arduino precisaremos coloc´-la na faixa a a de 0 a 5V, j´ que as portas anal´gicas do Arduino trabalham nessa faixa menor. Para isso, poder´ a o ıamos utilizar um divisor de tens˜o cujos valores de resistˆncia resultassem em Vout = V3n . Dessa forma, os valores lidos em a e i Vout seriam de 3 a 4V. Por´m, aten¸˜o: caso precisemos conectar resistores ou outros circuitos resistivos no pino Vout , o c´lculo das e ca a tens˜es muda e Vout passa a depender das novas resistˆncias do circuito. o e 2.2 Capacitores e indutores Apesar de n˜o estudarmos a fundo esses dois elementos b´sicos de circuitos, eles podem ser importantes no a a desenvolvimento de futuros projetos. Basicamente, capacitores e indutores armazenam energia (pense como 1 http://pt.wikipedia.org/wiki/Divisor de tens˜o a
  • 24. 24 CAP´ ˆ ITULO 2. FUNDAMENTOS DE ELETRONICA uma bateria em que vocˆ carrega e descarrega de tempos em tempos, por´m com capacidade bem limitada) e e e s˜o bastante utilizados em filtros de sinais, estabilizadores de tens˜o, circuitos ressonantes (como transmissores a a e receptores de r´dio), dentre outros. a 2.2.1 Capacitores Os capacitores s˜o componentes que armazenam energia em forma de campo el´trico. S˜o formados por duas a e a placas met´licas com um diel´trico (isolante) no meio. A unidade de medida ´ o Farad (F), por´m como 1 Farad a e e e ´ algo bem grande, comumente encontramos capacitores na casa dos mF (miliFarad), µF (microFarad) e pF e (picoFarad). Figura 2.5: Capacitor eletrol´ ıtico bastante comum no mercado Figura 2.6: Representa¸˜o de um capacitor em circuito el´trico ca e 2.2.2 Indutores Os indutores s˜o componentes que armazenam energia em forma de campo magn´tico. Geralmente s˜o formados a e a por bobinas (fio enrolado) com um condutor no meio. A unidade de medida ´ o Henry (H). e Figura 2.7: Indutores de v´rios tipos, comuns no mercado a
  • 25. 2.3. DIODOS 25 Figura 2.8: Representa¸˜o de um indutor em circuito el´trico ca e 2.3 Diodos Diodos s˜o componentes que tˆm a capacidade de conduzir corrente el´trica em uma dire¸˜o e bloque´-la em a e e ca a outra – esse comportamento ´ chamado de retifica¸˜o e pode ser utilizado para converter corrente alternada e ca (CA ou AC – alternating current, do Inglˆs –, a energia que temos em nossas tomadas) em corrente cont´ e ınua (CC ou DC – direct current, do Inglˆs –, a forma como as baterias nos fornecem energia). Outros usos de diodo e s˜o prote¸˜o de circuitos (contra corrente reversa) e extra¸˜o de modula¸˜o de sinais (por exemplo, para uso a ca ca ca em circuitos de comunica¸˜o sem fio). ca Figura 2.9: Foto de um diodo comum no mercado – a faixa menor (cinza, para esse diodo) corresponde ao terminal negativo Figura 2.10: Representa¸˜o de um diodo em circuito el´trico ca e O diodo conduzir´ corrente el´trica caso a tens˜o em seu terminal positivo (+) seja maior que a tens˜o em a e a a seu terminal negativo (−), ou seja, funcionar´ como um curto-circuito. Caso contr´rio, ele funcionar´ como a a a a a ´ circuito aberto (n˜o conduzir´). E importante notar que para diodos reais existe uma queda de tens˜o de 0,7V a em sua jun¸˜o P-N e, com isso, a tens˜o do lado positivo precisa ser maior que a tens˜o negativa + 0,7V para ca a a que ele conduza. 2.4 Transistores Transistores s˜o dispositivos semicondutores usados como amplificadores ou chaveadores. Sua entrada ´ uma a e corrente/tens˜o que altera a corrente/tens˜o de sa´ a a ıda. Os transistores s˜o a base de todos os circuitos integrados a e placas modernos – alguns, como os microprocessadores, possuem milh˜es deles. o Para nossos estudos, iremos focar nos transistores de estrutura bipolar de jun¸˜o (ou BJT, Bipolar Junction ca Transistor, do Inglˆs) com polaridade NPN e PNP, por´m existem outros tipos, como os FETs. e e
  • 26. 26 CAP´ ˆ ITULO 2. FUNDAMENTOS DE ELETRONICA (a) NPN (b) PNP Figura 2.11: S´ ımbolos de transistores BJT em circuito el´trico e Os transistores possuem trˆs terminais: base, coletor e emissor. E suas principais equa¸˜es caracter´ e co ısticas s˜o: a IC + IB = IE IC = βIB , onde β ´ uma constante (tamb´m referida como hF E ) caracter´ e e ıstica do transistor (fator de amplifica¸˜o). ca A segunda equa¸˜o nos evidencia o poder de amplifica¸˜o de um transistor: dependendo da corrente que ca ca colocarmos na base (corrente IB ), ele permitir´ maior ou menor corrente no coletor (corrente IC ). a No mercado encontramos transistores NPN e PNP com v´rios encapsulamentos diferentes. Alguns comuns a s˜o o 2N2904 (NPN) e 2N3906 (PNP). a Figura 2.12: Componente 2N3904: transistor NPN com encapsulamento TO-92 2.4.1 Utiliza¸˜o de transistores com rel´s ca e Rel´s s˜o componentes uteis quando precisamos isolar eletronicamente um circuito de controle de um circuito e a ´ de potˆncia. Se quisermos, por exemplo, acender uma lˆmpada incandescente (que utiliza corrente alternada) e a atrav´s do Arduino, podemos utilizar um rel´: o Arduino controlar´ o rel´, que ent˜o far´ a conex˜o (ou n˜o) da e e a e a a a a lˆmpada com a tomada. Existem rel´s mecˆnicos e de estado s´lido (SSD ou Solid-state relay, do Inglˆs), por´m a e a o e e iremos utilizar um rel´ mecˆnico em nosso exemplo, por ser mais barato e f´cil de se encontrar no mercado. e a a Como rel´s possuem correntes de ativa¸˜o maiores que as portas digitais do Arduino conseguem suprir, e ca precisamos amplificar a corrente que sai das portas digitais do Arduino para que ela seja capaz de acionar o rel´ e – e isso faremos utilizando um transistor NPN. Utilizando um rel´ acionado por 5V, um transistor NPN (2N3904) e dois resistores (10Ω para o rel´ e e e 470Ω para a base do transistor) podemos utilizar o circuito a seguir para controlar qualquer carga de corrente alternada – basta ligar a carga `s sa´ a ıdas do rel´, que n˜o est˜o indicadas no diagrama: e a a
  • 27. 2.4. TRANSISTORES 27 Figura 2.13: Circuito para ligar um rel´ (controlado por transistor) no Arduino e Fica como exerc´ para o leitor verificar como seria o uso de um transistor PNP. ıcio 2.4.2 Ponte-H Em alguns projetos precisamos inverter a tens˜o de entrada de determinado circuito. Por exemplo: os motores a de corrente cont´ ınua giram para um lado caso apliquemos tens˜o positiva em seu terminal esquerdo e negativa a em seu terminal direito. Por´m, para fazˆ-los girar em sentido contr´rio, precisamos aplicar tens˜o negativa em e e a a seu terminal esquerdo e positiva em seu terminal direito. Podemos implementar circuitos que fazem essa invers˜o de tens˜o a partir de 4 transistores funcionando a a como chave. Esse tipo de circuito se chama ponte-H por conta da disposi¸˜o dos transistores com rela¸˜o ao ca ca motor, como pode ser visto no diagrama a seguir: Figura 2.14: Diagrama de uma ponte-H
  • 28. 28 CAP´ ˆ ITULO 2. FUNDAMENTOS DE ELETRONICA Quando fechamos as chaves S1 e S4, o terminal esquerdo do motor recebe tens˜o positiva e o terminal a direito recebe tens˜o negativa. J´ quando fechamos as chaves S2 e S3, o terminal esquerdo do motor recebe a a tens˜o negativa e o terminal direito recebe tens˜o positiva. O que precisamos fazer ´ substituir as chaves por a a e transistores, para ent˜o podermos controlar o sentido de rota¸˜o do motor atrav´s do Arduino. a ca e A seguir temos um circuito bastante completo de ponte-H que utiliza diodos de prote¸˜o e acopladores ca o ´pticos para dar mais seguran¸a ` solu¸˜o como um todo: c a ca Figura 2.15: Esquema de uma ponte-H com transistores Retirado de http://www.mcmanis.com/chuck/robotics/tutorial/h-bridge/ Para quem n˜o quer ter trabalho montando o circuito, existe a op¸˜o de comprar um circuito integrado a ca pronto com a ponte-H – uma das op¸˜es ´ o L293D. co e PWM e ponte-H para controle de velocidade Como com PWM conseguimos controlar a quantidade de potˆncia que ser´ entregue a um circuito, caso utilize- e a mos PWM como entrada do controle de uma ponte-H, podemos limitar a quantidade de potˆncia entregue ao e motor e, com isso, controlar sua velocidade.
  • 29. Cap´ ıtulo 3 Eletrˆnica Digital o 29
  • 30. 30 CAP´ ˆ ITULO 3. ELETRONICA DIGITAL 3.1 Introdu¸˜o ca Dizemos que um circuito ´ digital quando suas entradas e sa´ e ıdas trabalham com sinais digitais, ou seja, sinais com valores bem definidos. Geralmente esses circuitos trabalham apenas com dois valores e, por isso, chamamos esses sistemas de digitais bin´rios. a Quando estamos falando de circuitos digitais, estamos falando de transporte de informa¸˜o. E como temos ca somente dois valores poss´ ıveis de tens˜o, teremos toda a informa¸˜o codificada em bin´rio – chamamos cada a ca a informa¸˜o bin´ria de bit (d´ ca a ıgito bin´rio ou binary digit, do Inglˆs) e os representamos por 0 e 1. a e Dessa forma, se nossos circuitos trabalham com tens˜es de 0V e 5V, dizemos que 0V equivale ao bit 0 e 5V o equivale ao bit 1 – agora passamos a falar de bits (informa¸˜o) em vez de tens˜es, ou seja, estamos pensando ca o uma camada acima. 3.2 Portas l´gicas o Assim como na Matem´tica possu´ a ımos opera¸˜es b´sicas como soma, subtra¸˜o, multiplica¸˜o e divis˜o, na co a ca ca a aritm´tica bin´ria temos opera¸˜es que podemos fazer com nossos bits. Para simplificar, vamos tratar as e a co opera¸˜es com uma ou duas entradas, apenas uma sa´ co ıda, tratar o bit 0 como sinˆnimo de falso e o bit 1 como o sinˆnimo de verdadeiro. Dessa forma, temos as seguintes opera¸˜es: o co • AND: opera¸˜o que resulta em bit 1 somente quando os dois bits de entrada s˜o 1 (ou seja, s´ resulta ca a o em “verdadeiro” se somente o primeiro e o segundo bit forem “verdadeiros”.); • OR: opera¸˜o que resulta em 1 quando pelo menos uma das entradas ´ 1 (ou seja, resulta em “verdadeiro” ca e quando o primeiro ou o segundo bit forem “verdadeiros”.); • NOT: opera¸˜o que resulta na invers˜o do bit de entrada; ca a • XOR: tamb´m chamade de exclusive or (“ou exclusivo”), essa opera¸˜o s´ resulta em bit 1 quando somente e ca o um dos bits de entrada ´ 1. e O circuito abaixo exemplifica a cria¸˜o de uma porta do tipo AND: ca Figura 3.1: Porta l´gica AND criada a partir de diodos e resistor o 3.2.1 Tabela-verdade Para um n´mero finito de entradas podemos aplicar as opera¸˜es l´gicas em todos os poss´ u co o ıveis valores dessa entrada e obter todos os poss´ ıveis resultados da opera¸˜o/fun¸˜o l´gica. Chama-se tabela-verdade a tabela que ca ca o lista todas essas possibilidades. Para as fun¸˜es l´gicas acima, quando temos duas entradas temos um total de 4 poss´ co o ıveis combina¸˜es de co entradas diferentes (o n´mero de combina¸˜es bin´rias ´ sempre 2n´mero de entradas ) e as seguintes tabelas: u co a e u
  • 31. ´ 3.2. PORTAS LOGICAS 31 A B A AND B A B A OR B A B A XOR B 0 0 0 0 0 0 A NOT A 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 (c) Opera¸ao NOT c˜ 1 1 0 (a) Opera¸˜o AND ca (b) Opera¸ao OR c˜ (d) Opera¸˜o XOR ca Figura 3.2: Tabelas-verdade das opera¸˜es l´gicas b´sicas co o a Al´m das opera¸˜es b´sicas, temos as nega¸˜es nas mesmas, como NAND, NOR e XNOR. Para saber a e co a co tabela-verdade dessas, basta negar a sa´ da tabela verdade das outras opera¸˜es (AND, OR e XOR, respec- ıda co tivamente). 3.2.2 Representa¸˜o das opera¸oes ca c˜ As opera¸˜es l´gicas citadas acima podem ser representadas em circuitos pelos seguintes s´ co o ımbolos: (a) NOT (b) AND (c) NAND (d) OR (e) NOR (f) XOR (g) XNOR Figura 3.3: S´ ımbolos das opera¸˜es l´gicas co o Al´m disso, podem ser escritas por extenso: e Opera¸˜o ca Representa¸˜o ca NOT A A A AND B A+B A NAND B A+B A OR B A·B A NOR B A·B A XOR B A⊕B A XNOR B A⊕B 3.2.3 Fun¸˜es l´gicas compostas co o Assim como na Matem´tica, podemos fazer composi¸˜es das fun¸˜es l´gicas b´sicas para obter novas fun¸˜es a co co o a co (compostas). A fun¸˜o XOR, por exemplo, pode ser obtida atrav´s da composi¸˜o das fun¸˜es NOT, AND e ca e ca co OR: A⊕B =A·B+A·B ou Figura 3.4: Diagrama da fun¸˜o composta XOR ca
  • 32. 32 CAP´ ˆ ITULO 3. ELETRONICA DIGITAL A partir de fun¸˜es l´gicas compostas e t´cnicas como realimenta¸˜o conseguimos criar dispositivos mais co o e ca complexos como latches, flip-flops, coders/decoders, mux/demux, dentre outros. Esses dispositivos s˜o a base a para criar circuitos l´gicos de alto n´ o ıvel, por exemplo: com alguns flip-flops conseguimos criar registradores, que podem evoluir para mem´rias e fazer parte do circuito de um microprocessador. o
  • 33. Cap´ ıtulo 4 Fazendo barulho com o Arduino 33
  • 34. 34 CAP´ ITULO 4. FAZENDO BARULHO COM O ARDUINO Para quem gosta de fazer m´sica, o Arduino possui uma fun¸˜o pronta para criar uma onda quadrada na u ca frequˆncia e no tempo desejados. Apesar de serem notas simples e a onda ser quadrada, adicionando circuitos e extras (para filtros e distor¸˜es) e um pouco de criatividade, conseguimos criar sons legais para nossos projetos. co A fun¸˜o que faz esse trabalho ´ chamada tone. Vamos criar um projeto-exemplo ligando um buzzer – ca e componente que reproduz sons de acordo com as varia¸˜es de tens˜o em seus terminais – para tocar nosso som co a da seguinte forma: Figura 4.1: Circuito com buzzer Utilizaremos o seguinte c´digo: o #define BUZZER 9 int notas[] = { 524, 588, 660, 699, 785, 881, 989 }; void setup() { pinMode(BUZZER, OUTPUT); } void loop() { for (int i = 0; i < 7; i++) { tone(BUZZER, notas[i], 1000); delay(1000); } delay(1000); } Al´m do la¸o for, utilizamos tamb´m um vetor de inteiros chamado notas. Um vetor nada mais ´ que um e c e e local onde armazenamos v´rias vari´veis de mesmo tipo. Os vetores s˜o indexados e para acessar cada item a a a guardado neles utilizamos ´ındices que variam de 0 a n − 1, onde n ´ o n´mero total de elementos. No exemplo e u acima, utilizamos a vari´vel i para percorrer o vetor e, por isso, para acessar os elementos utilizamos i. a Os segredos do c´digo acima s˜o: o a • Saber a frequˆncia das notas1 e e • Saber utilizar a fun¸˜o tone. A fun¸˜o tone recebe trˆs parˆmetros, respectivamente: pino (precisa ser ca ca e a um pino que tenha suporte a PWM), frequˆncia da nota e dura¸˜o do som em milissegundos. e ca 1 Saiba mais em http://pt.wikipedia.org/wiki/S´rie harmˆnica (m´sica) e o u
  • 35. Cap´ ıtulo 5 Armazenando na EEPROM 35
  • 36. 36 CAP´ ITULO 5. ARMAZENANDO NA EEPROM EEPROM (Electrically Erasable Programmable Read-Only Memory, do Inglˆs) ´ um tipo de mem´ria n˜o e e o a vol´til, ou seja, que n˜o se apaga ao retirarmos energia de seu circuito (o que n˜o ´ verdade para as mem´rias a a a e o do tipo RAM, por exemplo). O ATMega328, microcontrolador presente no Arduino Duemilanove, possui um circuito EEPROM integrado de 1024 bytes (ou 1KiB) – em outras vers˜es do Arduino, como o Mega (que usa o ATMega1280 ou ATMega2560, dependendo do modelo), a EEPROM pode chegar at´ 4KiB. e Ter o circuito EEPROM integrado significa que nosso software pode armazenar 1KiB de dados que n˜o a ser˜o perdidos (mesmo que desliguemos o Arduino da fonte de alimenta¸˜o) – funciona como se fosse um a ca micro-pendrive. Para utilizar a EEPROM n˜o precisamos de circuitos adicionais: precisamos apenas utilizar a a biblioteca EEPROM.h. Por´m, para nosso exemplo, vamos ligar um LED na porta 11 e utilizar o seguinte c´digo: e o #include <EEPROM.h> #define LED 11 void setup() { for (int i = 0; i < 16; i++) { EEPROM.write(i, i * i); } } void loop() { for (int i = 0; i < 16; i++) { byte leitura = EEPROM.read(i); analogWrite(LED, leitura); delay(50); } delay(1000); } A diretiva #include diz ao compilador que queremos incluir a biblioteca EEPROM.h – isso quer dizer que, al´m do c´digo que digitamos, utilizaremos um c´digo j´ criado pela equipe do Arduino para facilitar a utiliza¸˜o e o o a ca da EEPROM. O exemplo nada mais faz que escrever 16 bytes na EEPROM (na fun¸˜o setup), ler um por um ca e configurar o valor lido como sa´ PWM da porta 11 (na fun¸˜o loop). ıda ca A fun¸˜o de escrita, EEPROM.write, recebe dois parˆmetros: o endere¸o onde ela vai escrever (um valor entre ca a c 0 e 1023, no caso do Arduino Duemilanove com ATMega328) e o byte que escreveremos nesse local, j´ a fun¸˜o a ca EEPROM.read recebe apenas um parˆmetro (o endere¸o de onde ela far´ a leitura) e nos retorna o valor lido na a c a mem´ria (um byte). o