IntroduIntroduççãoão àà Eletrônica comEletrô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/32
ATmega168 ou
ATmega328
Nano
61661410,516/32
ATmega168V ou
ATmega328V
LilyPad
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
kB
ProcessadorArduino
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 Arduino Uno:
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.html
Felipe 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

Mini-curso de Introdução a Eletrônica com Arduino

  • 1.
    IntroduIntroduççãoão àà EletrônicacomEletrônica com ArduinoArduino Felipe Nascimento Martins v. 4 - 2013 VIII Jornada de Iniciação Científica, Desenvolvimento Tecnológico e Inovação do Ifes
  • 2.
    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.
  • 3.
  • 4.
  • 5.
    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
  • 6.
  • 7.
    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
  • 8.
    Arduino – hardware FelipeNascimento Martins
  • 9.
    Arduino – hardware FelipeNascimento Martins
  • 10.
  • 11.
    Arduino é OpenSource • 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
  • 13.
    Arduino é OpenSource! Felipe Nascimento Martins
  • 14.
    Arduino é OpenSource! Felipe Nascimento Martins
  • 15.
    Arduino é OpenSource! • 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
  • 16.
    Arduino é OpenSource! • 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
  • 17.
    Arduino é OpenSource! • 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
  • 18.
    Clones do Arduino •Freeduino Felipe Nascimento Martins
  • 19.
    Clones do Arduino •Seeduino Felipe Nascimento Martins
  • 20.
    Clones do Arduino •Brasuíno Felipe Nascimento Martins
  • 21.
    Clones do Arduino •Severino Felipe Nascimento Martins
  • 22.
    Similares ao Arduino •chipKIT Uno32 - PIC32MX320F128 (32 bits, 80MHz, 128kB Flash, 16kB SRAM) Felipe Nascimento Martins
  • 23.
    Similares ao Arduino •Olimexino – STM32F103RBT6 (núcleo ARM Cortex M3, 32 bits, 128kB, 72MHz) Felipe Nascimento Martins
  • 24.
    Similares ao Arduino •Adafruit Trinket – ATtiny85 Felipe Nascimento Martins
  • 25.
    Similares ao Arduino •LaunchPad - MSP430 Felipe Nascimento Martins
  • 26.
    Similares ao Arduino •LaunchPad - MSP430 US$4,30 com frete grátis!! http://www.ti.com/tool/msp-exp430g2
  • 27.
  • 28.
    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
  • 29.
  • 30.
    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
  • 31.
  • 32.
    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
  • 33.
    Componentes de umMicrocontrolador Conversor D/A Conversor A/D PWM CPU EEPROM RAM Porta Serial Porta Paralela Temporizadores Microcontrolador Felipe Nascimento Martins
  • 34.
    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
  • 35.
    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
  • 36.
    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
  • 37.
    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.
  • 38.
  • 39.
  • 40.
    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
  • 41.
    Arduino – Programabásico Felipe Nascimento Martins
  • 42.
    Arduino – Programabásico Felipe Nascimento Martins
  • 43.
    Arduino – Programabásico Felipe Nascimento Martins
  • 44.
    Arduino – Programabásico Felipe Nascimento Martins
  • 45.
    Arduino – Programabásico Felipe Nascimento Martins
  • 46.
    Arduino – Programabásico Felipe Nascimento Martins
  • 47.
    Arduino – Programabásico Felipe Nascimento Martins No Arduino Uno: pinos digitais 0 a 13 (0 a 13); pinos analógicos 0 a 5 (14 a 19).
  • 48.
    Prática 1: Pisca-LED •Montagem: Felipe Nascimento Martins
  • 49.
    Um pouco deeletrônica • Ok. Entendi o programa. • Mas o que acontece nos pinos do Arduino? Felipe Nascimento Martins
  • 50.
    Um pouco deeletrô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
  • 51.
    Um pouco deeletrô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
  • 52.
    Um pouco deeletrô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
  • 53.
    Um pouco deeletrô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
  • 54.
    Um pouco deeletrô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
  • 55.
    Um pouco deeletrô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
  • 56.
    Um pouco deeletrônica • Beleza. Mas, e o resistor? Serve para quê? Felipe Nascimento Martins
  • 57.
    Um pouco deeletrô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
  • 58.
    Um pouco deeletrô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
  • 59.
    Um pouco deeletrô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
  • 60.
    Um pouco deeletrô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
  • 61.
    Um pouco deeletrô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
  • 62.
    Um pouco deeletrô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
  • 63.
    Simulador: 123d.circuits.io Felipe NascimentoMartins Detalhes: http://123d.circuits.io/circuits/34111/edit#
  • 64.
    Diodo • Dispositivo semicondutorque 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
  • 65.
    Diodo • Retificador deonda completa: Felipe Nascimento Martins
  • 66.
    Diodo - exemplos FelipeNascimento Martins
  • 67.
    Matriz de contatos(Breadboard ou Protoboard) Felipe Nascimento Martins
  • 68.
    Matriz de contatos(Breadboard ou Protoboard) Felipe Nascimento Martins
  • 69.
    Prática 1.1: Nãopisca-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
  • 70.
    Capacitor • Elemento quearmazena 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
  • 71.
    Capacitor - exemplos FelipeNascimento Martins
  • 72.
    Capacitor – exemplode aplicação • Retificador de onda completa com capacitor: Felipe Nascimento Martins
  • 73.
    Prática 2: Pisca-LEDcom 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
  • 74.
    Arduino • Outras funções: digitalRead(pino); Retorna0 (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
  • 75.
    Arduino • Outras funções: digitalRead(pino); Retorna0 (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
  • 76.
    Arduino • Outras funções: digitalRead(pino); Retorna0 (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
  • 77.
    Arduino • Outras funções: digitalRead(pino); Retorna0 (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
  • 78.
    LDR – Resistênciavariável com a luz Felipe Nascimento Martins
  • 79.
    LDR – Resistênciavariável com a luz Felipe Nascimento Martins
  • 80.
    LDR – Resistênciavariável com a luz Felipe Nascimento Martins O pino 13 tem um resistor interno!
  • 81.
    Prática 3: Usandoo 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
  • 82.
  • 83.
    Prática 4: Usandoo 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
  • 84.
    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
  • 85.
    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
  • 86.
    Comunicação serial • OK. •Mas como posso transmitir outras informações além de “zeros” e “uns”? Felipe Nascimento Martins
  • 87.
    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
  • 88.
  • 89.
    Arduino • Microcontrolador possuihardware 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
  • 90.
    Prática 5: Comunicaçãobidirecional • 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
  • 91.
    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
  • 93.
    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
  • 94.
    Tensão média deum sinal PWM Felipe Nascimento Martins
  • 95.
    Sinal PWM versussinal analógico Felipe Nascimento Martins
  • 96.
    Controle de potênciapor 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
  • 97.
    Prática 6: Controlede 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
  • 98.
    Prática 7: Pisca-piscasuave 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
  • 99.
    Motor de CorrenteContí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.
  • 100.
    Motor de Passo FelipeNascimento 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.
  • 101.
  • 102.
    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;
  • 103.
    Servomotor Felipe Nascimento Martins •Normalmente é feito com um motor de corrente contínua, um circuito eletrônico e engrenagens para aumentar o torque;
  • 104.
    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.
  • 105.
    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.
  • 106.
    Prática 8: Controlede Servomotores Felipe Nascimento Martins
  • 107.
    Felipe Nascimento Martins Prática8: Controle de Servomotores
  • 108.
    #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
  • 109.
    Outros motores comArduino • 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
  • 110.
    Transistor • Um transistorpode 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
  • 111.
    Prática 9: MotorCC com transistor Felipe Nascimento Martins
  • 112.
    Prática 9: MotorCC com transistor Felipe Nascimento Martins
  • 113.
    Avançando com Arduino:Shields • Pode acionar dois motores CC ou um motor de passo: até 36V, 600mA, 5kHz. Felipe Nascimento Martins
  • 114.
    Avançando com Arduino:Shields • Exemplo: controle de velocidade dos motores com o Shield Motor Control: Felipe Nascimento Martins
  • 115.
    Avançando com Arduino:Shields Felipe Nascimento Martins • Shield oficial para controle de motores:
  • 116.
    Avançando com Arduino:Shields Felipe Nascimento Martins • Ethernet Shield:
  • 117.
    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
  • 118.
    Avançando com Arduino FelipeNascimento Martins Arduino Nano
  • 119.
    Avançando com Arduino:Sem fio Detalhes: http://nossosrobos.blogspot.com.br/2011/12/arduino-wireless.html Felipe Nascimento Martins
  • 120.
    Avançando com Arduino:Bluetooth Detalhes: http://nossosrobos.blogspot.com.br/2012/05/arduino-wireless-parte-ii-via-bluetooth.html Felipe Nascimento Martins
  • 121.
    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:
  • 122.
    Avançando com Arduino:MATLAB Detalhes: http://nossosrobos.blogspot.com.br/2011/10/arduino-com-matlab.html Felipe Nascimento Martins
  • 123.
    Avançando com Arduino:LabVIEW Detalhes: http://sine.ni.com/nips/cds/view/p/lang/pt/nid/209835 Felipe Nascimento Martins
  • 124.
    Avançando com Arduino:Robô Detalhes: http://nossosrobos.blogspot.com.br/2012/09/monte-seu-robo-com-arduino.html Felipe Nascimento Martins
  • 125.
    Robôs baseados emArduino • DFRobotShop Rover - Arduino Compatible Tracked Robot Felipe Nascimento Martins
  • 126.
    Robôs baseados emArduino • DFRobotShop Rover 2.0 – Arduino Compatible Mecanum Felipe Nascimento Martins
  • 127.
    Robô Arduino oficial •Arduino Robot Felipe Nascimento Martins Detalhes: http://nossosrobos.blogspot.com.br/2013/07/arduino-robot-o-primeiro-robo-arduino.html
  • 128.
    Softwares gratuitos Felipe NascimentoMartins • 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
  • 129.
    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
  • 130.