Apostila - Automação - Aula 01
Apostila - Automação - Aula 01
www.roboticaarduino.com.br
2
Aula 01 – Introdução
Microcontroladores: O que são e para que servem
Os microcontroladores podem ser definidos de maneira simples como sendo um
“pequeno” componente eletrônico, dotado de uma “inteligência” programável, utilizado
no controle de processos lógicos. Para ilustrar melhor esta definição, vamos analisá-la
por partes:
O controle de processos deve ser entendido como o controle de periféricos, tais
com: LEDs, botões, displays de segmentos, displays de cristal líquido (LCD),
resistências, relês, sensores diversos (pressão, temperatura, etc.) e muitos outros. São
chamados de controles lógicos, pois a operação do sistema baseia-se nas ações lógicas
que devem ser executadas, dependendo do estado dos periféricos de entrada e/ou saída.
O microcontrolador é programável, pois toda a lógica de operação de que
acabamos de falar é estruturada na forma de um programa e gravada dentro do
componente. Assim, sempre que o microcontrolador é alimentado o programa interno é
executado. Quanto à “inteligência” do componente, podemos associá-la a Unidade
Lógica Aritmética (ULA), pois é nessa unidade que todas as operações matemáticas e
lógicas são executadas.
O adjetivo “pequeno” se refere ao fato de que em uma única pastilha de silício
(conhecido como CHIP) encapsulada temos todos os componentes necessários ao
controle de um processo, ou seja, o microcontrolador está provido internamente de
memória de programa, memória de dados, portas de entrada e/ou saída paralela, timers,
contadores, comunicação serial, conversores analógico-digitais, etc. Esta é uma das
características fundamentais que diferencia os microcontroladores dos
microprocessadores, pois os últimos, apesar de possuírem uma ULA muito mais
poderosa, não possuem todos esses recursos em um único CHIP.
Podemos ver a computação embarcada no nosso cotidiano: celulares, carros; na
indústria, controlando processos que necessitem de maior robustez e menor consumo de
energia; no setor de telecomunicações, sendo utilizado como DSP(Processador Digital
de Sinais); na automação e controle de dispositivos, aonde existe uma união com
técnicas de inteligência artificial, tornando os dispositivos ainda mais eficientes. Um
ramo que utiliza muito a computação embarcada é a robótica, que utilizam sensores para
captar os sinais do ambiente e motores para interagir com o meio.
A grande vantagem do desenvolvimento de dispositivos digitais através de
microcontroladores é a flexibilidade do desenvolvimento e manutenção da lógica do
sistema. Antigamente, um sistema digital era montado através de portas lógicas que,
uma vez montados, só poderiam ser modificados através da modificação do hardware
do sistema. Atualmente, toda a lógica é baseada na programação, e não no hardware do
sistema, o que torna a sua manutenção e o seu desenvolvimento muito mais flexível e
eficiente.
www.roboticaarduino.com.br
3
Arduino
Definição: Arduino é uma plataforma de prototipagem eletrônica de hardware livre,
projetada com um microcontrolador Atmel AVR de placa única, com suporte de
entrada/saída embutido, e uma linguagem de programação padrão.
Página oficial: http://arduino.cc/
www.roboticaarduino.com.br
4
A seguir, nas figuras 01 a 14, imagens de algumas das principais placas do arduino:
www.roboticaarduino.com.br
5
Figura 13: Arduino Serial >> Figura 14: Arduino Severino (Adilson Akashi)
www.roboticaarduino.com.br
6
As placas a seguir são quase ou totalmente compatíveis tanto com o hardware quanto
com o software do Arduino, incluindo serem capazes de aceitarem placas derivadas do
mesmo: Freeduino SB, Freeduino MaxSerial, Illuminato, metaboard, Seeeduino
(derivada do Arduino Diecimila), eJackino (Similar ao Seeeduino), Wiseduino,
Brasuíno (baseada no Arduino UNO).
www.roboticaarduino.com.br
7
Neste curso será utilizada a placa-clone Seeeduino V2.21. Abaixo, na figura 19, está
ilustrada a estrutura do Seeeduino com seus componentes:
Microcontrolador ATmega168
Tensão de operação 3,3VDC ou 5VDC
Tensão de entrada (recomendada) 7 – 12VDC
Tensão de entrada (limites) 6 – 20VDC
Pinos de ENTRADA/SAIDA digitais 14
Pinos de ENTRADA analógica 8 (Podem ser usados como E/S digitais)
Corrente DC por pino de E/S – 5V 40mA
Corrente DC por pino de E/S – 3,3V 50mA
Memória Flash 16kB
SRAM 1kB
EEPROM 512bytes
Velocidade de clock 16MHz
www.roboticaarduino.com.br
8
SHIELDS e MÓDULOS
Shields são placas que podem ser conectadas diretamente no topo de uma placa arduino,
estendendo assim suas funcionalidades. Já os módulos deferem das Shields por não
serem conectadas ao topo da placa arduino, senda a ligação entre eles feita através de
cabos conectores.
Abaixo, da figura 20 a 25, são mostrados alguns Shields e módulos para arduino:
www.roboticaarduino.com.br
9
Existem vários modelos de placas protoshield, como a Proto Shield R3. A mesma é
vendida “crua”, sem conectores ou botões, como mostrado nas figuras 28 e 29, devendo
o usuário soldá-los, juntamente com outros componentes para adicionar funcionalidades
ao arduino.
Figura 28: Proto Shield R3 - Frente Figura 29: Proto Shield R3 - Costa
www.roboticaarduino.com.br
10
www.roboticaarduino.com.br
11
Nesta janela marque a opção “Não, agora não”, para o Windows não conectar ao
Windows Update.
Em seguida marque a opção “Instalar de um local ou lista específica”, conforme
mostrado na figura 36, abaixo:
www.roboticaarduino.com.br
14
Modo 02:
Se, ao conectar uma placa do arduino pela 1ª vez no computador, não abrir a
janela de “Novo Hardware Encontrado”, será necessário instalar os drivers USB
manualmente. Para isso, é preciso acessar o Gerenciador de Dispositivos no Painel de
Controle (Ver figuras 39 e 40):
www.roboticaarduino.com.br
15
Escolha a opção “Atualizar Driver”, como mostrado na figura 42, e siga as etapas
mostradas nas figuras 43, 44 e 45.
www.roboticaarduino.com.br
17
Note, na figura 45, que a pasta selecionada não é a FTDI USB Drivers, mas a pasta
drivers.
Após concluir essas etapas, a placa do arduino aparecerá na aba “Portas (COM e
LPT)”, e passará a ser reconhecida como “USB Serial Port (COMxx)”, onde “xx” é o
número da porta atribuída à placa, como mostrado nas figuras 46 e 47:
www.roboticaarduino.com.br
18
Figura 46: Portas (COM e LPT) Figura 47: USB Serial Port (COMxx)
5. Executar o IDE:
Execute o aplicativo arduino (ver figura 48), e uma janela semelhante à mostrada na
figura 49 abrirá.
www.roboticaarduino.com.br
19
Tabela 01
Verify Verifica se há erros no código.
Upload Faz o upload do sketch atual para o Arduino.
New Cria um sketch em branco.
Open Mostra uma lista de sketches, em seu Sketchbook,
para abrir.
Save Salva o sketch atual em seu sketchbook.
Serial Monitor Exibe os dados seriais enviados do Arduino.
• O botão Verify é utilizado para verificar se seu código está correto e livre de
erros, antes que você faça o upload para a placa do Arduino.
• O botão Save salva o código na janela de sketch para seu arquivo. Uma vez
feito isso, você receberá uma mensagem “Done saving” (“Gravação
completa”) na base de sua janela de código, indicando que o sketch foi salvo.
Clique no botão Serial Monitor para abrir uma janela como a mostrada na figura 51,
abaixo:
No canto inferior direito você pode ver a taxa de transmissão (Baud Rate) na qual os
dados seriais devem ser enviados de/para o Arduino. A taxa de transmissão é a taxa por
segundo em que os bits (dados) são enviados de/para a placa. A configuração padrão é
9600.
No topo, há uma caixa de texto em branco, para que você digite o texto a ser enviado de
volta para o Arduino, e um botão Send, para enviar o texto.
Por fim, a área central da janela é o local em que seus dados seriais serão exibidos.
Agora que você tem o software de seu Arduino instalado, a placa conectada e funcio-
nando, e um conhecimento básico de como utilizar o IDE, vamos avançar diretamente
para o Projeto 1, no qual criaremos um LED piscante.
www.roboticaarduino.com.br
21
CÓDIGO FONTE:
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
www.roboticaarduino.com.br
22
Na figura 53, abaixo, está ilustrada a forma da onda quadrada que deve ser gerada pelo
arduino:
Para fazer o upload do programa para o arduino, basta apertar o botão upload na
Toolbar. Mas antes devemos indicar no IDE qual o modelo de arduino em que iremos
gravar o sketch (figura 54), e qual a porta serial utilizada pelo arduino (figura 55).
www.roboticaarduino.com.br
23
ANÁLISE DO CÓDIGO
void setup()
Esta linha indica ao arduino que o próximo bloco de códigos pertence à função
setup().
{
Com esta chave, iniciamos o bloco de código da função setup().
pinMode(13, OUTPUT);
pinMode() indica para o arduino como configurar um determinado pino. Os pinos
digitais podem ser configurados como INPUT (entrada) ou OUTPUT (saída). Neste
exemplo, precisamos de um pino de saída (OUTPUT) para controlar o LED.
O pinMode é um função, e as palavras ou números dentro de seus parênteses são
chamados de parâmetros.
}
Esta chave indica o fim da função setup().
void loop() {
loop() é onde especificamos o código, propriamente dito, com suas ações, etc. Esta
função, e seu bloco de comandos, será executada repetidamente até que o arduino
seja desligado, ou até que um comando no código encerre o laço.
digitalWrite(13, HIGH);
digitalWrite() é capaz de ligar ou desligar qualquer pino configurado como saída
(OUTPUT). O 1º parâmetro da função indica qual pino deve ser “ligado” ou
“desligado”. O 2º parâmetro “liga” (HIGH) ou “desliga” (LOW) o pino indicado.
delay(500);
delay() basicamente faz o arduino parar e esperar um certo intervalo de tempo, em
milissegundos, passado como parâmetro na função. Como 1000 milissegundos é 1
segundo, 500 milissegundos equivalem a meio segundo. Então, delay(500); faz o
arduino esperar meio segundo (e o LED fica aceso nesse intervalo de tempo);
digitalWrite(13, LOW);
Este comando desliga o LED (pino 13) que foi previamente ligado.
delay(500);
Arduino espera meio segundo novamente, e o LED fica desligado durante esse
meio segundo.
}
Esta chave indica o fim da função loop()
www.roboticaarduino.com.br
24
O resistor usado no circuito é de 220Ω. Este resistor é usado com a finalidade de limitar
a corrente que passará pelo LED, para que o mesmo não corra o risco de queimar.
Para calcular o valor do resistor que deve ser usado em série com o LED, precisamos
saber os valores da queda de tensão e corrente máximo do LED. O ideal seria consultar
a datasheet do LED, que é um documento escrito pelo fabricante e que contém essas
informações. Mas os LEDs não têm indicado o modelo e fabricante. Contudo, os LEDs
dos vários fabricantes são tipicamente muito semelhantes nas suas características,
existindo uma espécie de padrão.
Sendo assim, na tabela 02, estão os valores médios da queda de tensão e corrente
máxima dos LEDs “normais” (não são os de alto brilho), das cores que utilizaremos
neste curso.
www.roboticaarduino.com.br
25
LED Verde:
LED Amarelo:
Para usarmos apenas 1 valor de resistor para os LEDs vermelho, verde e amarelo,
devemos usar o maior dos valores mínimos de resistência calculados. Para darmos uma
margem de segurança no valor da resistência, usaremos um valor ligeiramente acima:
220Ω.
www.roboticaarduino.com.br
26
www.roboticaarduino.com.br
27
Abaixo, na tabela 03, pode ser vista correspondência das cores com um valor numérico,
que indicará o valor do resistor:
Tabela 03
COR 1ª FAIXA 2ª FAIXA 3ª FAIXA 4ª FAIXA
PRATA - - 0,01 +/-10%
OURO - - 0,1 +/-5%
PRETO 0 0 1 -
MARROM 1 1 10 +/-1%
VERMELHO 2 2 100 +/-2%
LARANJA 3 3 1.000 -
AMARELO 4 4 10.000 -
VERDE 5 5 100.000 -
AZUL 6 6 1.000.000 -
VIOLETA 7 7 - -
CINZA 8 8 - -
BRANCO 9 9 - -
• A QUARTA FAIXA (se existir), um pouco mais afastada das outras três, é a
faixa de tolerância. Ela nos informa a precisão do valor real da resistência em
relação ao valor lido pelo código de cores. Isso é expresso em termos de
porcentagem. A maioria dos resistores obtidos nas lojas apresenta uma faixa de
cor prata, indicando que o valor real da resistência está dentro da tolerância dos
10% do valor nominal. A codificação em cores, para a tolerância é a seguinte:
www.roboticaarduino.com.br
28
Como o LED é um diodo (Diodo Emissor de Luz), deve-se atentar para a polaridade do
mesmo ao ligá-lo no circuito. Nas figuras 59, 60 e 61, estão ilustradas a polaridade,
estrutura interna e representação de um LED, respectivamente:
CÓDIGO FONTE:
#define LED 13
void setup()
{
pinMode(LED, OUTPUT);
}
void loop()
{
digitalWrite(LED, HIGH);
delay(125);
digitalWrite(LED, LOW);
delay(125);
}
www.roboticaarduino.com.br
30
CÓDIGO FONTE:
#define LED 13
#define BOTAO 2
void setup()
{
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT);
}
void loop()
{
if(digitalRead(BOTAO)==HIGH)
{
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
}
COMANDOS
#define LED 13
#define é como uma “busca e substituição” automática no código. Neste exemplo,
#define está dizendo para o arduino substituir por “13” toda vez que “LED” aparecer
no código. A substituição é a 1ª coisa feita quando o botão Verify ou Upload to I/O
Board é pressionado.
if() – A função if(), que é usada em conjunto com operadores de comparação, serve para
verificar se a condição no seu parâmetro foi alcançada ou não. Se sim, a função executa
seu bloco de comandos. Se não, seu bloco de comandos é ignorado pelo programa.
CÓDIGO FONTE:
#define LED 13
#define BOTAO 2
void setup()
{
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT);
}
void loop()
{
if(digitalRead(BOTAO)==HIGH)
{
digitalWrite(LED, HIGH);
delay(125);
digitalWrite(LED, LOW);
delay(125);
}
else
{
www.roboticaarduino.com.br
32
digitalWrite(LED, HIGH);
delay(50);
digitalWrite(LED, LOW);
delay(50);
}
}
CÓDIGO FONTE:
#define LEDa 13
#define LEDb 11
#define BOTAOa 2
#define BOTAOb 4
void setup()
{
pinMode(LEDa, OUTPUT);
pinMode(LEDb, OUTPUT);
pinMode(BOTAOa, INPUT);
pinMode(BOTAOb, INPUT);
}
void loop()
{
if(digitalRead(BOTAOa)==HIGH)
{
digitalWrite(LEDa, HIGH);
delay(100);
digitalWrite(LEDa, LOW);
delay(100);
}
if(digitalRead(BOTAOb)==HIGH)
{
digitalWrite(LEDa, HIGH);
digitalWrite(LEDb, HIGH);
delay(100);
digitalWrite(LEDa, LOW);
digitalWrite(LEDb, LOW);
delay(100);
}
}
www.roboticaarduino.com.br