Escolar Documentos
Profissional Documentos
Cultura Documentos
Experimentos Com o Arduino - p13 - 39 PDF
Experimentos Com o Arduino - p13 - 39 PDF
Microcontroladores
www.revistadoarduino.com.br
Captulo 1
Microcontroladores
Apresentao
ste um livro sobre uma ferramenta eletronica baseada em um microcontrolador de 8 bits que a partir de sensores conectados s suas
entradas pode ser programada para controlar outros circuitos eletronicos conectados s suas sadas. Essa ferramenta o Arduino e o microcontrolador nela embarcado o ATmega328 da empresa Atmel Corp. O
Arduino um pequeno mdulo eletronico, uma placa de circuito impresso,
onde so montados o ATmega328 e alguns outros componentes eletronicos e que pode se comunicar diretamente com qualquer computador que
possua uma interface serial. Compondo o Arduino existe tambem um programa que roda em qualquer sistema operacional, seja ele Windows, Linux
ou Mac OS-X. E o mais interessante que tanto o circuito quanto o programa so open source, ou abertos, o leitor pode comprar ou montar seu
prprio mdulo e obter gratuitamente o aplicativo pela internet.
10
Captulo 1
Microcontroladores
13
Sumrio
Prefcio ............................................................................ 5
Apresentao
Captulo 1
Microcontroladores .............................................................17
Introduo ........................................................................................17
O microcontrolador AVR ..................................................................19
A CPU e os registradores internos ................................................. 20
Memrias e clock ........................................................................... 22
Programao .................................................................................. 24
Aplicaes ..................................................................................... 25
Resumo do captulo 1 .................................................................... 26
Captulo 2
Um pouco de histria ..................................................................... 29
A placa do Arduino ......................................................................... 30
Os Ports digitais de E/S ................................................................. 33
As entradas analgicas e a sada PWM ........................................ 35
Resumo do captulo 2 .................................................................... 36
14
Captulo 3
Introduo ....................................................................................... 39
Instalao do IDE do Arduino ......................................................... 39
A barra de Menus ........................................................................... 44
FILE ....................................................................................... 44
EDIT .......................................................................................46
SKETCH ................................................................................ 47
TOOLS ................................................................................... 48
HELP ..................................................................................... 49
A Barra de Controles ....................................................................... 49
As Barras de Mensagens ................................................................ 50
Captulo 4
Introduo ............................................................................. 51
A estrutura da linguagem do Arduino .................................... 51
Constantes ............................................................................ 51
Variveis ............................................................................... 52
Funes ................................................................................ 52
As principais funes da linguagem ..................................... 54
1. pinMode(pino,modo) ..................................... 55
2. digitalRead(pino) ........................................... 56
3. digitalWrite(pino,valor) ................................... 56
4. analogRead(pino) .......................................... 57
5. analogWrite(pino,valor) ................................. 57
6. delay(ms) ..................................................... 58
7. millis( ) ........................................................... 58
8. random(min,max) ............................................58
9. Serial.begin(taxa) ........................................... 59
10. Serial.println(dado) ....................................... 59
Os operadores ................................................................... 60
1. Operadores aritmticos .................................. 60
2. Operadores lgicos ........................................ 60
Captulo 1
Microcontroladores
15
3. Operadores de comparao ........................ 60
4. Operadores compostos ............................... 61
Os principais comandos da linguagem .............................. 61
1. O comando if ............................................... 62
2. O comando while ........................................ 63
3. O Comando do ... while .............................. 64
4. O Comando for ........................................... 65
Matrizes ............................................................................. 65
Resumo do captulo 4 ........................................................ 66
Captulo 5
Introduo ........................................................................... 69
Experimento #1 Hello Word! ............................................ 70
Experimento #2 Gerao de udio .................................. 74
Experimento #3 Entrada Analgica .................................. 76
Experimento #4 Sada Analgica ..................................... 79
Experimento #5 Controle de Motores .............................. 83
5.1 - Controlando um motor CC ................................. 83
5.2 - Servo-motores .................................................... 84
5.3 - Motores de passo ................................................ 89
5.4 - Vibra-motor ......................................................... 91
Experimento #6 LEDs e Mostradores ................................92
6.1 - LEDs ................................................................... 92
6.2 - Mostradores de 7 segmentos ............................. 97
6.3 - Um contador de dois dgitos ............................... 99
6.4 - LCD ................................................................... 106
Experimento #7 Solenoides, Reles e Acopladores .......... 110
7.1 - Solenoide ........................................................... 110
7.2 - Rels .................................................................. 112
7.3 - Acoplador tico ................................................... 112
Experimento #8 Sensores ................................................ 114
8.1 - LDRs ................................................................... 114
8.2 - Fototransistores e Fotodiodos ............................ 115
8.3 - Transdutores Piezoeltricos ............................... 117
8.4 - Temperatura ........................................................ 119
Resumo do captulo 5 ......................................................... 121
16
Captulo 6
A Linguagem Processing - Princpios Bsicos ................ 123
Captulo 7
Captulo 1
Microcontroladores
17
Apendice 1
Apendice 2
Captulo 1
Microcontroladores
19
Captulo 1
Microcontroladores
Introduo
20
Captulo 1
Microcontroladores
21
O microcontrolador AVR
A sigla AVR vem de Advanced Virtual RISC ou Alf and Vegard RISC, os nomes dos
projetistas desse microcontrolador. RISC vem de Reduced Instruction Set Computer,
ou computador com um conjunto reduzido de instrues, que uma referncia ao
pequeno nmero de instrues do microcontrolador se comparado aos primeiros
microprocessadores cuja lista podia passar de 200 instrues.
O primeiro Arduino foi baseado no circuito bsico com um microcontrolador AVR
ATmega8 da empresa americana Atmel Corporation no ano de 2005 numa escola
de artes interativas e design, na Italia. So tres blocos bsicos: a CPU, o bloco de
memria e o de registradores e circuitos de entrada e sada, veja o diagrama em
blocos abaixo. A CPU formada por uma ALU (Arithmetic Logic Unit) ou Unidade
de Lgica e Aritmtica e um conjunto de registradores de uso geral. O bloco de
memrias agrega as memrias de programa e memria de dados. No bloco de E/S
esto os ports que so circuitos de interfaces de entrada e sada, mais alguns registradores e implementaes de circuitos pwm e conversores A/D.
Depois de 2005 a Atmel lanou novas verses desse microcontrolador, com mais
memria e outros recursos, porem mantendo a compatibilidade com aquele. Novos
modelos de Arduinos surgiram com esses novos dispositivos. Os microcontroladores ATmega fazem parte do grupo mega da famlia AVR de microcontroladores
de 8 bits da Atmel. Outro grupo dessa famlia so os microcontroladores Tiny,
22
Captulo 1
Microcontroladores
23
24
pode ser carregado com uma sequncia qualquer de bits, ou ele pode ser todo resetado. Tambem podemos deslocar todos os bits em um registrador para a esquerda
ou para a direita, uma ou mais posies. Todas essas operaes dentro dos registradores podem realizadas por instrues dentro de programas ou por controle direto
da CPU como resultado de outras operaes internas.
Dentro da CPU do ATmega328 existe um grupo de 32 registradores de 8 bits conectados diretamente a ALU, a Unidade de Lgica e Aritmtica. So os registradores GPR (General Purpose Registers) ou registradores de uso geral que so usados
pela CPU para armazenar temporariamente os operandos, resultados das operaes de soma e subtrao ou operaes lgicas realizadas pela ALU. Aqui tambem
so guardadas as variveis locais e ponteiros de programas durante sua execuo.
O registrador de instrues (Instruction Register) armazena o byte de controle que
representa uma instruo que recebe da memria de programa e o passa para o decodificador de instrues (Instruction Decoder), que uma matriz de portas lgicas
programveis (Programmable Array Logic) cuja sada gera controles para as vrias
partes do microcontrolador.
O contador de programas (Program Counter) um registrador que sempre aponta
para o endereo na memria de programa da prxima instruo a ser executada.
Ele automaticamente incrementado depois que uma instruo executada.
Memrias e clock
A memria do ATmega328 composta por dois blocos principais: a memria de
dados, que do tipo voltil, RAM esttica, para variveis que no so guardadas
em registradores e informaes temporrias coletadas externamente; e a memria
de programa que do tipo no-voltil mas reprogramvel, normalmente memria
Flash, que guarda o programa que deve ser executado pelo microcontrolador. O
ATmega328 possui 2K de memria para dados, 32K de memria para programa
e tambem 1K de memria do tipo EEPROM, no-voltil e reprogramvel, que no
diagrama simplificado da figura 2 aparece fora do bloco de memrias, para armazenamento de informaes que desejamos guardar mesmo depois de retirarmos a
alimentao do circuito, como a senha em um chip no carto de crdito.
Todos os microcontroladores requerem um circuito de relgio (clock) para sincronizar suas operaes internas e externas. Esse sincronismo realizado por um
oscilador interno mas com uma referncia externa, como um cristal e dois capacitores, um ressonador cermico ou mesmo um circuito RC. O ATmega328 pode
operar com um cristal ou ressonador de at 20Mhz. Existem alguns blocos internos
Captulo 1
Microcontroladores
25
26
Programao
J sabemos que um microcontrolador um pequeno computador em um chip;
porem no bastam a CPU, a memria e os circuitos de entrada e sada para ele funcionar, necessrio tambem um programa que instrua esse hardware o que tem que
ser feito. O hardware a parte fsica, visvel, o corpo do computador; o programa,
ou software, a parte invisvel ou alma deste. O programa fica residente em algum
tipo de memria do computador. Nos computadores pessoais PC o programa fica
no disco rgido, nos microcontroladores ele fica na memria de programa interna
do tipo Flash. A memria Flash uma verso da memria EEPROM (Electrically
Erasable Programmable ROM) e onde so gravados o bootloader, que um programa opcional de inicializao do microcontrolador, e posteriormente os programas do usurio.
O Arduino tem um bootloader, um pequeno programa residente numa parte da
memria Flash, chamado bootblock. Logo aps o reset do microcontrolador o bootloader, ou simplesmente boot, como tambem chamado, se comunica via interface
serial com o computador para receber o programa do usurio, e o grava na parte
restante da memria Flash do microcontrolador e logo em seguida o executa. O
boot gravado com um programador externo e o programa do usurio gravado
pelo boot.
Programas so listas com instrues escritas numa linguagem que um computador
entenda e as execute. A linguagem que o computador entende a chamada linguagem de mquina, so blocos com longas sequncias de 1s e 0s que a CPU l,
interpreta e distribui ordens para as suas vrias partes internas, e destas controles
para circuitos e dispositivos externos. Mas no escrevemos programas diretamente
na linguagem das mquinas, os escrevemos em linguagens que ns humanos entendemos, para depois entregarmos a um outro programa, um compilador, que os
converte para a linguagem dos computadores. Os programas para o Arduino so
escritos na linguagem C. Para escrever nossos primeiros programas em C basta
conhecermos umas poucas estruturas de controle e suas regras. Existe um aplicativo
onde podemos editar, verificar ocorrncia de erros e compilar nossos cdigos em C
para o Arduino, o Ambiente de Desenvolvimento Integrado ou IDE (Integrated
Development Enviropment) do Arduino, que veremos em detalhes no captulo 3.
Aplicaes
Captulo 1
Microcontroladores
27
28
Resumo do captulo 1
Um microcontrolador um nico circuito integrado que pode ter de 8 a at mais
de 100 pinos e que inclui uma CPU, memria e circuitos de entrada e sada. Alguns modelos podem vir com contadores/temporizadores decimais, conversores
A/D, comparadores de tenso e circuitos de comunicao serial, tudo embutido no
mesmo encapsulamento. Os microcontroladores como qualquer computador funcionam seguindo uma lista de instrues armazenadas em forma de cdigos binrios
em uma memria de programa. Essas instrues, so escritas em Assembly, C,
BASIC ou Pascal, e apanhadas uma a uma da memria e decodificadas por circuitos
lgicos internos CPU e ento executadas. A CPU a parte do microcontrolador
responsvel pelas operaes matemticas e pelas operaes lgicas; a memria
separada em dois tipos conforme sua funo: memria de programa, do tipo Flash,
e memria de dados, do tipo RAM; os Ports formam os circuitos de entrada e sada
do microcontrolador.
O primeiro Arduino foi projetado com o microcontrolador ATmega8 da Atmel
em 2005. Os mais novos Arduinos vm com o ATmega1280 que tem 16 vezes mais
memria de programa e tres vezes mais pinos de E/S. Registradores so blocos
digitais formados por grupos de 8 ou 16 flip-flops do tipo D ou JK e so usados pela
CPU para guardar resultados de operaes internas e troca de dados com circuitos
externos. O ATmega328 possui um grupo de 32 registradores de uso geral de 8 bits
conectados diretamente a ALU, a Unidade de Lgica e Aritmtica. Outros registradores presentes em qualquer microcontrolador so: o Contador de Programas, o
Registrador de Instrues e o Decodificador de Instrues. Cada grupo de Ports
tambem um registrador de 8 bits conectados fisicamente aos pinos do microcontrolador. No ATmega328 seis dos 23 pinos de entrada e sada que formam os Ports
so diretamente conectados a um conversor A/D de 10 bits de resoluo, enquanto
outros seis pinos podem ser programados para a funo de sada PWM, ou modulao por largura de pulso.
Captulo 1
Microcontroladores
29
Captulo 2
O Hardware do Arduino
31
Captulo 2
O hardware do Arduino
Um pouco de histria
primeiro Arduino foi criado em janeiro de 2005 no Instituto de Interatividade e Design, uma escola de Artes visuais na cidade de Ivrea, Italia, a
partir de uma ideia dos professores de Computao Fsica David Cuartielles
e Massimo Banzi. O objetivo era criar uma ferramenta de hardware nica que fosse
facilmente programvel por no especialistas em computadores e que tambem no
fosse muito cara, para o desenvolvimento de estruturas interativas no curso de Arte
e Design. Computao Fsica o estudo da interao entre o nosso mundo fsico e o
mundo virtual dos computadores, e para isso envolve tambem o estudo de sensores
eletricos e atuadores eletro-mecanicos.
32
A placa do Arduino
O Arduino composto por duas partes principais: um hardware, um conjunto
bsico de componentes eletronicos montados numa placa de circuito impresso, que
a plataforma para o desenvolvimento de prottipos; e um software, um aplicativo,
o bootloader, residente na memria de programas do microcontrolador embarcado
no Arduino. Existe tambem uma interface grfica, um programa que roda num
computador padro PC em ambiente Windows ou Linux, ou ainda numa mquina
Apple com o sistema operacional Mac OS X. nessa interface grfica ou Ambiente
de Desenvolvimento Integrado (IDE Integrated Development Environment) que o
leitor vai criar seus programas e depois carregar para o hardware do Arduino. So
esses programas, ou na linguagem do Arduino: sketches, que vo dizer ao hardware
o que deve ser feito.
O hardware do Arduino baseado nos microcontroladores AVR da Atmel, em particular nos modelos ATmega8, ATmega168, ATmega328 e no ATmega1280. Conforme o microcontrolador utilizado o Arduino recebe um codinome em italiano.
Veja na tabela comparativa abaixo as diferenas principais entre os Arduinos em
relao ao microcontrolador nele embarcado.
O primeiro Arduino, batizado depois de Diecimila que em italiano quer dizer dez
mil, marca de vendas desse modelo, usava o ATmega8 com uma fonte de alimentao simples com o regulador LM7805, um circuito de converso para comunicao serial RS-232, e alguns conectores para os Ports do microcontrolador. Tambem
foi acrescido ao projeto original um conector para a programao do ATmega8 no
circuito, o ICSP ou In-Circuit Serial Programming. Veja o diagrama em blocos do
ARDUINO
Processador
Memria flash
Memria RAM
Memria EEPROM
Pinos digitais
Pinos analgicos
Sadas PWM
Diecimila
ATmega8
8K
1K
512 bytes
14
6
3
Duemilanove168
ATmega168
16 K
1K
512 bytes
14
6
6
Duemilanove328
ATmega328
32 K
2K
1K
14
6
6
Mega
ATmega1280
128 K
8K
4K
54
16
14
Captulo 2
O Hardware do Arduino
33
Arduino na figura 4.
O circuito do conversor RS-232 originalmente foi projetado com transistores bipolares BC557. Depois surgiram verses como o Arduino Freeduino MaxSerial
que utilizavam o circuito integrado conversor MAX232N. A funo do conversor
RS-232 apenas compatibilizar os nveis TTL do ATmega8 com os nveis de tenso
padronizados do protocolo RS-232 na comunicao com um computador PC ou
Apple.
Na placa do Arduino o conector macho ICSP (In-Circuit Serial programming) de
6 pinos ligado diretamente a alguns pinos do microcontrolador e conectado
atraves de um cabo com a porta paralela ou serial de um computador, para a programao do bootloader no microcontrolador. A fonte de alimentao de 5 volts
34
Captulo 2
O Hardware do Arduino
35
36
Captulo 2
O Hardware do Arduino
37
38
Resumo do captulo 2
O primeiro Arduino foi criado em janeiro de 2005 na Italia por David Cuartielles
e Massimo Banzi. O objetivo era criar uma plataforma de hardware que fosse facilmente programvel por no especialistas em computadores. Todo o projeto Arduino foi concebido segundo o princpio do open source, onde todos os programas
e circuitos so de domnio pblico.
O Arduino composto por duas partes principais: um hardware, um microcontrolador e alguns componentes eletronicos montados numa placa de circuito impresso;
e um software residente na memria de programas do microcontrolador e tambem
uma interface grfica que roda num computador padro PC ou numa mquina
Apple.
O hardware do Arduino baseado nos microcontroladores AVR ATmega8, ATmega168, ATmega328 ou ATmega1280. Para se interligar ao mundo exterior o
Arduino possui um conjunto de dois conectores: um com 14 pinos para entradas ou
sadas de sinais digitais e um de 6 pinos para entrada de sinais analgicos.
Ports so a conexo fsica entre a CPU e o mundo exterior, so grupos de 8 pinos do
microcontrolador que so fisicamente conectados a registradores de 8 bits no circuito digital de E/S e por onde podemos enviar ou receber qualquer combinao de
nveis lgicos na forma de 1 byte. Cada Port tem dois registradores: o registrador de
Captulo 1
Microcontroladores
39