Buscar

Slides Introdução Eletrônica Com Arduino Felipe Martins IFES

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 130 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 130 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 130 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

IntroduIntroduçção ão àà Eletrônica com Eletrônica com ArduinoArduino
Felipe Nascimento Martins
v. 4 - 2013
VIII Jornada de Iniciação Científica, 
Desenvolvimento Tecnológico e 
Inovação do Ifes
O trabalho Introdução à Eletrônica com 
Arduino de Felipe Nascimento Martins foi
licenciado com uma Licença
Creative Commons - Atribuição-
CompartilhaIgual 3.0 Não Adaptada.
http://nera.sr.ifes.edu.br
Felipe Nascimento Martins
Contato:
Twitter:@@f_n_martinsf_n_martins
http://www.facebook.com/felipenmhttp://www.facebook.com/felipenm
felipefelipe.n.martins@gmail.com.n.martins@gmail.com
Conteúdo
• Arduino;
• Microcontrolador;
• Primeiro programa;
• Um pouco de eletrônica (pouco mesmo!);
• Programas mais legais;
• Práticas (montagem e programação);
• Avançando com o Arduino: shields, 
comunicação sem fio, aplicações em 
robótica...
Felipe Nascimento Martins
Felipe Nascimento Martins
O que é Arduino?
• Arduino é uma plataforma de prototipagem
eletrônica open-source, baseada nos princípios 
de flexibilidade e facilidade de uso para hardware
e software.
• Consiste de uma placa com microcontrolador 
programável preparada para receber sinais de 
sensores e acionar atuadores.
• Sua linguagem de programação é baseada em 
Wiring (baseado em C/C++).
• A placa pode funcionar em conjunto ou de forma 
independente do computador.
Felipe Nascimento Martins
Arduino – hardware
Felipe Nascimento Martins
Arduino – hardware
Felipe Nascimento Martins
Arduino – software
Arduino é Open Source
• Desenvolvido por: Massimo Banzi, David 
Cuartielles, Tom Igoe, Gianluca Martino e David 
Mellis, na Itália, em 2005;
• Todo o projeto é aberto: open source hardware 
and software;
• 200 placas vendidas em 2005, 5.000 em 2006, 
30.000 em 2007 e mais de 300.000 em 2011 e 
cerca de 1 milhão até setembro de 2013!
• Site oficial: www.arduino.cc
Felipe Nascimento Martins
Arduino é Open Source!
Felipe Nascimento Martins
Arduino é Open Source!
Felipe Nascimento Martins
Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão 
disponíveis.
• Quem quiser, pode comprar os componentes e montar a 
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
Felipe Nascimento Martins
Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão 
disponíveis.
• Quem quiser, pode comprar os componentes e montar a 
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
• Mas...
Felipe Nascimento Martins
Arduino é Open Source!
• Todo o hardware é aberto e os projetos estão 
disponíveis.
• Quem quiser, pode comprar os componentes e montar a 
sua placa!
• O software de programação também é livre e está
disponível para download gratuitamente.
• Mas...
• O nome ArduinoArduino é marca registrada!
Felipe Nascimento Martins
Clones do Arduino
• Freeduino
Felipe Nascimento Martins
Clones do Arduino
• Seeduino
Felipe Nascimento Martins
Clones do Arduino
• Brasuíno
Felipe Nascimento Martins
Clones do Arduino
• Severino
Felipe Nascimento Martins
Similares ao Arduino
• chipKIT Uno32 - PIC32MX320F128 (32 bits, 
80MHz, 128kB Flash, 16kB SRAM)
Felipe Nascimento Martins
Similares ao Arduino
• Olimexino – STM32F103RBT6 (núcleo ARM Cortex
M3, 32 bits, 128kB, 72MHz)
Felipe Nascimento Martins
Similares ao Arduino
• Adafruit Trinket – ATtiny85
Felipe Nascimento Martins
Similares ao Arduino
• LaunchPad - MSP430
Felipe Nascimento Martins
Similares ao Arduino
• LaunchPad - MSP430
US$4,30 
com frete 
grátis!!
http://www.ti.com/tool/msp-exp430g2
Felipe Nascimento Martins
Arduino Uno
• Microcontrolador: ATmega328;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S:14 (6 podem ter sinal PWM);
• Pinos com entrada analógica: 6;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação serial: 1 porta;
• Memória Flash (de programa): 32 kB, dos quais 0,5 kB
são usados pelo bootloader;
• Memória SRAM: 2 kB; EEPROM: 1 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
Felipe Nascimento Martins
Arduino Mega 2560
• Microcontrolador: ATmega2560;
• Tensão de operação: 5V;
• Tensão de entrada (recomendada): 7-12V;
• Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
• Pinos com entrada analógica: 16;
• Corrente máxima por pino de E/S: 40 mA;
• Hardware para comunicação serial: 4 portas;
• Memória Flash (de programa): 256 kB, dos quais 8 kB
são usados pelo bootloader;
• Memória SRAM: 8 kB; EEPROM: 4 kB;
• Frequência de clock: 16 MHz.
Felipe Nascimento Martins
Felipe Nascimento Martins
Arduino Mega 2560
O que é um Microcontrolador?
– Chip;
– CPU de pequeno porte, capaz de executar 
um conjunto de instruções;
– Ou seja, possui um microprocessador!
– Instruções simples e rápidas;
– Possui memória(s);
– Possui periféricos;
– Pode se comunicar com outros periféricos; 
etc.
Felipe Nascimento Martins
Componentes de um Microcontrolador
Conversor
D/A
Conversor
A/D
PWM
CPU
EEPROM
RAM
Porta
Serial
Porta
Paralela
Temporizadores
Microcontrolador
Felipe Nascimento Martins
Exemplos de Microcontroladores
• Família 8051 (Intel ou ATMEL)
• 80C196KB (Intel)
• 68HC11 (Motorola / Freescale) 
• MSP430 (Texas Instruments)
• ATmega328 (ATMEL)
• PIC16F628A (Microchip)
• dsPIC30F6014 (Microchip)
• Cortex M3 (ARM)
Felipe Nascimento Martins
Exemplos de Microcontroladores
• Família 8051 (Intel ou ATMEL)
• 80C196KB (Intel)
• 68HC11 (Motorola / Freescale) 
• MSP430 (Texas Instruments)
• ATmega328 (ATMEL)
• PIC16F628A (Microchip)
• dsPIC30F6014 (Microchip)
• Cortex M3 (ARM)
Cadê o 
Arduino??
Felipe Nascimento Martins
Exemplos de Microcontroladores
• Família 8051 (Intel ou ATMEL)
• 80C196KB (Intel)
• 68HC11 (Motorola / Freescale) 
• MSP430 (Texas Instruments)
• ATmega328 (ATMEL)
• PIC16F628A (Microchip)
• dsPIC30F6014 (Microchip)
• Cortex M3 (ARM)
Felipe Nascimento Martins
Microcontroladores do Arduino
• ATMEL
• ATmega168: Diecimila, Duemilanove, Nano, 
LilyPad;
• ATmega328P: Duemilanove, Nano, Fio, LilyPad, 
Uno;
• ATmega1280: Mega;
• ATmega2560: Mega2560;
• ATmega32u4: Leonardo, Esplora, LilyPad USB, 
Yún, Robot;
• AT91SAM3X8E: Due.
71612202,5132ATmega32u4Esplora
6168140,50,5/116/32ATmega168 ouATmega328Nano
61661410,516/32ATmega168V ouATmega328VLilyPad
71612202,5132ATmega32u4Leonardo
1284125496--512AT91SAM3X8EDue
1516165484256ATmega2560Mega2560
1516165484128ATmega1280Mega
6166142132ATmega328PUno
6166140,50,5/116/32ATmega168/328PDuemilanove
Pinos
PWM
Clock 
(MHz)
Pinos
A/D
Dig. 
I/O
SRAM
kB
EEPROM
kB
Flash
kBProcessadorArduino
Arduino
Arduino - Microcontrolador
Felipe Nascimento Martins
Arduino - Microcontrolador
• ATmega328:
• Núcleo AVR RISC de 8 bits;
• 32kB Flash, 2kB RAM, 1kB EEPROM;
• 23 pinos de E/S;
• 3 temporizadores/contadores;
• USART;
• interface a 2 fios SPI;
• 6 canais de conversor A/D de 10 bits;
• WDT com oscilador interno;
• Clock máximo de 20MHz;
• Opera de 1,8V a 5,5V.
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
Arduino – Programa básico
Felipe Nascimento Martins
No ArduinoUno:
pinos digitais 0 a 13 (0 a 13);
pinos analógicos 0 a 5 (14 a 19).
Prática 1: Pisca-LED
• Montagem:
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa. 
• Mas o que acontece nos 
pinos do Arduino?
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa. 
• Mas o que acontece nos 
pinos do Arduino?
• A função
digitalWrite(12,HIGH); 
faz com que o pino 12 vá
para “nível alto”, ou seja, 
ele fica com 5V.
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa. 
• Mas o que acontece nos 
pinos do Arduino?
• A função
digitalWrite(12,HIGH); 
faz com que o pino 12 vá
para “nível alto”, ou seja, 
ele fica com 5V.
• Este pino está ligado ao 
RESISTOR+LED, e ao pino 
GND (0V). 
Felipe Nascimento Martins
Um pouco de eletrônica
• Ok. Entendi o programa. 
• Mas o que acontece nos 
pinos do Arduino?
• A função
digitalWrite(12,HIGH); 
faz com que o pino 12 vá
para “nível alto”, ou seja, 
ele fica com 5V.
• Este pino está ligado ao 
RESISTOR+LED, e ao pino 
GND (0V). 
• É um circuito série, por 
onde circula corrente!
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• Em resumo:
• É a circulação de corrente
elétrica (elétrons) que faz 
acender o LED;
• Experimente retirar o fio 
que liga o LED ao GND, 
mantendo o pino 12 em 5V.
• O LED apaga pois a 
corrente precisa circular 
num circuito fechado! 
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• Em resumo:
• É a circulação de corrente
elétrica (elétrons) que faz 
acender o LED;
• A corrente só existirá se 
houver diferença de 
potencial elétrico
(diferença de tensão) entre 
pontos do circuito: 5V – 0 = 
5V;
• Tensão: volt [V];
• Corrente: ampère [A].
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• A função
digitalWrite(12,LOW); 
faz com que o pino 12 vá
para “nível baixo”, ou seja, 
ele fica com 0V.
• Logo, como não há
diferença de tensão entre 
os pinos 12 e GND, a 
corrente é zero => LED 
apaga.
Felipe Nascimento Martins
0V
0V
Um pouco de eletrônica
• Beleza. Mas, e o resistor? 
Serve para quê?
Felipe Nascimento Martins
Um pouco de eletrônica
• Beleza. Mas, e o resistor? 
Serve para quê?
• O elemento resistor serve 
para dificultar a circulação 
de corrente elétrica;
• Ele é colocado no circuito 
para evitar que a corrente 
cresça muito, o que pode 
provocar problemas;
• No nosso circuito, o 
resistor serve para evitar 
que o LED queime devido 
a uma corrente muito alta.
Felipe Nascimento Martins
Um pouco de eletrônica
• Quanto maior for o valor 
da resistência do resistor, 
menor será a corrente
(para uma mesma 
diferença de tensão).
• O brilho do LED varia com 
a corrente.
Felipe Nascimento Martins
Um pouco de eletrônica
• Cálculo da corrente:
• Lei de Ohm: V = R * I
• V = 5V, R = 220Ω.
• I = 5 / 220 
• I = 0,0227 A = 22,7 mA
Felipe Nascimento Martins
Um pouco de eletrônica
• Cálculo da corrente:
• Lei de Ohm: V = R * I
• V = 5V, R = 220Ω + 220Ω.
• I = 5 / 440 
• I = 0,0114 A = 11,4 mA
• Podemos calcular a queda de 
tensão em cada resistor:
• VR = R * I, R = 220Ω, I = 11,4 mA.
• VR = 220 * 0,0114 = 2,5 V.
Felipe Nascimento Martins
Um pouco de eletrônica
• Cálculo da corrente:
• O LED tem queda de 
tensão fixa = ~1,73V. Logo:
• V = 5 – 1,73 = 3,27V.
• V = R * I => I = V / R.
• I = 3,27 / 220 = 0,0149 A
• I = 14,9mA.
Felipe Nascimento Martins
+5V
0V
Um pouco de eletrônica
• Note que se a tensão do 
pino 12 pudesse ser 
alterada, a corrente no 
circuito seria diferente.
• Ou seja, poderíamos 
controlar o brilho do LED!
Felipe Nascimento Martins
+5V
0V
Simulador: 123d.circuits.io
Felipe Nascimento Martins
Detalhes: http://123d.circuits.io/circuits/34111/edit#
Diodo
• Dispositivo semicondutor que permite a circulação de 
corrente apenas em um sentido;
• A tensão em seus terminais deve ter polaridade correta: 
mais positiva no terminal A (anodo) e mais negativa no 
terminal K (catodo);
• Apresenta queda de tensão aproximadamente fixa 
(~0,7V) quando a corrente circula;
• Usado em circuitos retificadores: transforma corrente 
alternada para contínua.
Felipe Nascimento Martins
Diodo
• Retificador de onda completa:
Felipe Nascimento Martins
Diodo - exemplos
Felipe Nascimento Martins
Matriz de contatos (Breadboard ou Protoboard)
Felipe Nascimento Martins
Matriz de contatos (Breadboard ou Protoboard)
Felipe Nascimento Martins
Prática 1.1: Não pisca-LED
• LED é um diodo especial 
que brilha quando a 
corrente circula por ele. 
• Experimente inverter a 
ligação dos pinos do LED 
em nosso circuito e 
verifique que ele não vai 
mais piscar, mesmo 
quando houver diferença 
de potencial nos pinos!
Felipe Nascimento Martins
Capacitor
• Elemento que armazena energia na forma de campo 
elétrico;
• Existem vários tipos: alguns têm polaridade (como os 
eletrolíticos), outros não (como os cerâmicos);
• A tensão em seus terminais depende da carga 
acumulada, e não varia instantaneamente;
• Em corrente contínua, são usados como filtros ou 
“suavizadores” de tensão.
Felipe Nascimento Martins
Capacitor - exemplos
Felipe Nascimento Martins
Capacitor – exemplo de aplicação
• Retificador de onda completa com capacitor:
Felipe Nascimento Martins
Prática 2: Pisca-LED com Capacitor
• Monte o circuito ao lado.
• Use o mesmo programa 
da prática 1, mas altere 
o tempo de espera para 
5 segundos;
• Rode o programa e 
verifique o resultado;
• Depois, retire o 
capacitor e rode o 
mesmo programa. O 
que muda?
Felipe Nascimento Martins
Arduino
• Outras funções:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no 
pino (entre 0 e 5V). Tempo de conversão = 100µs.
while(analogRead(A2) < 950);
Mantém-se em loop até que o valor de retorno da 
função analogRead seja maior que 800.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de código até que conta >= 6.
Felipe Nascimento Martins
Arduino
• Outras funções:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no 
pino (entre 0 e 5V). Tempo de conversão = 100µs.
while(analogRead(A2) < 950);
Mantém-se em loop até que o valor de retorno da 
função analogRead seja maior que 800.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de código até que conta >= 6.
Felipe Nascimento Martins
Arduino
• Outras funções:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no 
pino (entre 0 e 5V). Tempo de conversão = 100µs.
while(analogRead(A2) < 950);
Mantém-se em loop até que o valor de retorno da 
função analogRead seja maior que 950.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de código até que conta >= 6.
Felipe Nascimento Martins
Arduino
• Outras funções:
digitalRead(pino);
Retorna 0 (Vpino < 2V) ou 1 (Vpino > 3V).
analogRead(pino);
Obtém valor entre 0 e 1023 proporcional à tensão no 
pino (entre 0 e 5V). Tempo de conversão = 100µs.
while(analogRead(A2) < 950);
Mantém-se em loop até que o valor de retorno da 
função analogRead seja maior que 800.
for(int conta = 0; conta < 6; conta++)
Loop: executa o bloco de código até que conta >= 6.
Felipe Nascimento Martins
LDR – Resistência variável com a luz
Felipe Nascimento Martins
LDR – Resistência variável com a luz
Felipe Nascimento Martins
LDR– Resistência variável com a luz
Felipe Nascimento Martins
O pino 13 tem 
um resistor 
interno!
Prática 3: Usando o sensor de luz
• Monte o circuito com o LDR – Light Dependent
Resistor – e execute o seguinte programa:
void setup() {
Serial.begin(9600);
}
void loop() {
int sensor = analogRead(A2);
Serial.println(sensor, DEC);
}
Felipe Nascimento Martins
Arduino
• A.
Prática 4: Usando o sensor de luz
• Monte o circuito com LDR – Light Dependent
Resistor (sensor de luz).
• Escreva um programa que acenda o LED do pino 
13 quando houver pouca luz e apague o mesmo 
LED quando houver muita luz.
void setup() {
...
}
void loop() {
...
}
Felipe Nascimento Martins
Comunicação serial
• Bit: menor unidade de informação -> 0 ou 1;
• Informação é enviada bit a bit, em sequência;
• Síncrona: uma linha de dados e outra de clock:
Felipe Nascimento Martins
Comunicação serial
• Bit: menor unidade de informação -> 0 ou 1;
• Informação é enviada bit a bit, em sequência;
• Assíncrona: apenas uma linha de dados. A 
velocidade deve ser definida:
Felipe Nascimento Martins
Comunicação serial
• OK. 
• Mas como posso transmitir outras informações 
além de “zeros” e “uns”?
Felipe Nascimento Martins
Comunicação serial
• OK. 
• Mas como posso transmitir outras informações 
além de “zeros” e “uns”?
• Existe uma tabela que relaciona caracteres a 
sequências de zeros e uns:
• ASCII (American Standard Code for 
Information Interchange).
• Esta tabela criou um padrão para troca de 
informações em sistemas binários.
Felipe Nascimento Martins
Tabela ASCII
Felipe Nascimento Martins
Arduino
• Microcontrolador possui hardware para 
comunicação serial:
• Pino digital 0 (RX): recepção de dados;
• Pino digital 1 (TX): transmissão de dados;
• Bit 1 = 5V; Bit 0 = 0V;
• A maioria das placas Arduino possui hardware
que converte sinais do padrão serial assíncrono 
para USB;
Felipe Nascimento Martins
Prática 5: Comunicação bidirecional
• Outro exemplo de comunicação serial: desta vez 
o Arduino vai receber um dado do computador, 
processá-lo e retornar o resultado pela porta 
serial. 
• Vamos analisar o programa:
int i, numero;
void setup() {
Serial.begin(9600); 
}
void loop() {
while (true) {
Serial.print("Entre com um numero: "); 
while (Serial.available()==0); 
numero = Serial.read(); 
Felipe Nascimento Martins
if (numero>='0' && numero<='9')
Serial.println(numero, BYTE); 
else {
Serial.println("O valor deve ser 
numerico!"); 
continue; 
}
numero-='0'; 
for (i = 0; i <= 10; i++) { 
Serial.print(numero);
Serial.print(" x ");
Serial.print(i);
Serial.print(" = ");
Serial.println(numero*i);
}
Serial.println(""); 
}
}
Felipe Nascimento Martins
PWM
• PWM = Pulse Width Modulation;
• Razão cíclica (duty cycle): define a tensão 
média aplicada:
T(PWM) T(PWM) T(PWM)
A1 A2 A3
Felipe Nascimento Martins
Tensão média de um sinal PWM
Felipe Nascimento Martins
Sinal PWM versus sinal analógico
Felipe Nascimento Martins
Controle de potência por PWM
analogWrite(11, 200);
� cria no pino 11 um sinal 
PWM com razão cíclica 
igual a 200;
� f = 490Hz;
� apenas alguns pinos 
digitais possuem saída 
PWM.
Felipe Nascimento Martins
Prática 6: Controle de brilho PWM
int brilho = 0; // brilho do LED
int sensor // valor do LDR
void setup() {
pinMode(A2, INPUT); // pino do LDR: entrada A2
pinMode(11, OUTPUT); // pino do LED: saida 11
Serial.begin(9600);
}
void loop() {
sensor = analogRead(A2); // le do LDR
brilho = map(sensor, 0, 1023, 0, 255);
Serial.println(brilho, DEC); // envia ao PC
analogWrite(11, brilho); // aciona LED
}
Felipe Nascimento Martins
Prática 7: Pisca-pisca suave
int brilho = 0; // brilho do LED
int variacao = 5; // quanto varia o brilho
void setup() { 
pinMode(11, OUTPUT);
} 
void loop() { 
analogWrite(11, brilho); 
brilho = brilho + variacao;
if (brilho == 0 || brilho == 255) {
variacao = -variacao; 
} 
delay(30); 
}
Felipe Nascimento Martins
Motor de Corrente Contínua (CC)
Felipe Nascimento Martins
• Alimentado em corrente contínua;
• Possui ímã e bobinas internamente;
• Velocidade é ajustada pela tensão de 
alimentação (pode ser por PWM!);
• Sentido de giro é alterado pela polaridade.
Motor de Passo
Felipe Nascimento Martins
• Alimentado com sinais 
digitais;
• Alimentação das 
bobinas deve ser 
sequencial;
• Permite controle preciso 
de posição;
• Torque cai muito com o 
aumento da velocidade.
Servomotor
Felipe Nascimento Martins
Servomotor
Felipe Nascimento Martins
• É um motor CC que possui um sistema de 
interno de controle:
• angular – controla a posição (giro) do eixo;
• contínuo – controla a velocidade do eixo;
Servomotor
Felipe Nascimento Martins
• Normalmente é feito com um motor de 
corrente contínua, um circuito eletrônico e 
engrenagens para aumentar o torque;
Servomotor
Felipe Nascimento Martins
• Três fios: 2 de alimentação e um de controle;
• O sinal de referência (de posição ou 
velocidade) é do tipo PWM.
Servomotor
Felipe Nascimento Martins
• Três fios: 2 de alimentação e um de controle;
• O sinal de referência (de posição ou 
velocidade) é do tipo PWM.
Prática 8: Controle de Servomotores
Felipe Nascimento Martins
Felipe Nascimento Martins
Prática 8: Controle de Servomotores
#include <Servo.h> 
Servo myservo; // create servo object
Servo myservo2;
int potpin = 0; // used to connect the potentiometer
int val; // value from the analog pin 
void setup() { 
myservo.attach(9); // attaches the servo on pin
myservo2.attach(10);
} 
void loop() { 
val = analogRead(potpin); // entre 0 e 1023
val = map(val, 0, 1023, 0, 179); // escalona
myservo.write(val); 
myservo2.write(179-val);
delay(15);
} Felipe Nascimento Martins
Prática 8: Controle de Servomotores
Outros motores com Arduino
• Cada pino do Arduino pode fornecer, no máximo, 
40mA de corrente -> pode não ser suficiente para 
acionar um motor!
• Solução: usar transistores.
Felipe Nascimento Martins
Transistor
• Um transistor pode ser entendido 
como uma “válvula” eletrônica: é
capaz de acionar cargas de alta 
corrente a partir de um sinal de 
controle de baixa corrente.
• Quanto maior for a corrente no pino 
de “base” (B), maior será a corrente 
entre os pinos “coletor” (C) e “emissor”
(E).
• Por exemplo, se a corrente na base 
variar de 0 a 0,01 A, a corrente de 
coletor pode variar de 0 a 1A!
Felipe Nascimento Martins
Prática 9: Motor CC com transistor
Felipe Nascimento Martins
Prática 9: Motor CC com transistor
Felipe Nascimento Martins
Avançando com Arduino: Shields
• Pode acionar dois motores CC ou um motor de 
passo: até 36V, 600mA, 5kHz.
Felipe Nascimento Martins
Avançando com Arduino: Shields
• Exemplo: controle de velocidade dos motores 
com o Shield Motor Control:
Felipe Nascimento Martins
Avançando com Arduino: Shields
Felipe Nascimento Martins
• Shield oficial para controle de motores:
Avançando com Arduino: Shields
Felipe Nascimento Martins
• Ethernet Shield:
Avançando com Arduino: RS-485 e I2C
Detalhes: http://nossosrobos.blogspot.com.br/2011/08/arduino-conversando-com-nxt-via-rs-485.html
http://nossosrobos.blogspot.com.br/2013/03/comunicacao-ic-entre-lego-nxt-e-arduino.html
Felipe Nascimento Martins
Avançando com Arduino
Felipe Nascimento Martins
Arduino Nano
Avançando com Arduino: Sem fio
Detalhes: http://nossosrobos.blogspot.com.br/2011/12/arduino-wireless.htmlFelipe Nascimento Martins
Avançando com Arduino: Bluetooth
Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html
Felipe Nascimento Martins
Avançando com Arduino: LCDs
Detalhes: http://nossosrobos.blogspot.com.br/2012/01/lcd-para-seu-robo-com-arduino.html
Felipe Nascimento Martins
• LCD gráfico 128x128 pixels:
Avançando com Arduino: MATLAB
Detalhes: http://nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html
Felipe Nascimento Martins
Avançando com Arduino: LabVIEW
Detalhes: http://sine.ni.com/nips/cds/view/p/lang/pt/nid/209835
Felipe Nascimento Martins
Avançando com Arduino: Robô
Detalhes: http://nossosrobos.blogspot.com.br/2012/09/monte-seu-robo-com-arduino.html
Felipe Nascimento Martins
Robôs baseados em Arduino
• DFRobotShop Rover - Arduino
Compatible Tracked Robot 
Felipe Nascimento Martins
Robôs baseados em Arduino
• DFRobotShop Rover 2.0 – Arduino
Compatible Mecanum
Felipe Nascimento Martins
Robô Arduino oficial
• Arduino Robot 
Felipe Nascimento Martins
Detalhes: http://nossosrobos.blogspot.com.br/2013/07/arduino-robot-o-primeiro-robo-arduino.html
Softwares gratuitos
Felipe Nascimento Martins
• IDE de programação do Arduino: 
www.arduino.cc
• Fritzing - para fazer esquemas elétricos, de 
proto-board e placas de circuito impresso: 
www.fritzing.org
• 123D Circuits.io - para simulação de circuitos 
com ou sem Arduino e projeto de placas de 
circuito impresso (roda no navegador):
http://123d.circuits.io
Referências
Felipe Nascimento Martins
• VALPEREIRO, Filipe. Workshop Arduino, 2008.
• JUSTEN, Álvaro. Curso de Arduino (apostila), 2011.
• FONSECA, Érika e BEPPU, Mathyan. Apostila 
Arduino. CT/UFF, 2010.
• ERIKSSON, Fredrik. Industrial Circuits Application 
Note - Stepper Motor Basics.
• POMÍLIO, J.A. Eletrônica de Potência. UNICAMP 
(apostila para o curso de graduação). Acesso em 
AGO/2010.
• Blog: www.nossosrobos.blogspot.com
• Site oficial do Arduino: www.arduino.cc
• http://www.labdegaragem.com.br/wiki
Obrigado!
Felipe N. Martins
@@f_n_martinsf_n_martins
www.facebook.com/felipenmwww.facebook.com/felipenm

Outros materiais