You are on page 1of 61

Estamos escrevendo as linhas do futuro, da mudana e da evoluo.

A tecnologia est mudando a forma de o mundo enfrentar as dificuldades.


Cada vez mais as pessoas se conectam atravs da internet para compartilhar
conhecimentos e experincias, expandindo de forma exponencial a
inteligncia coletiva. A robtica assume posio privilegiada nessa evoluo,
e queremos fazer parte dessa histria.
Esperamos que goste dessa apostila, ela foi feita com carinho pensando em
voc. Divirta-se!!
Atenciosamente,
Equipe Vida de Silcio

Sumrio
1.

Introduo ............................................................................................................................. 5
1.1.

2.

3.

O que um Rob? ......................................................................................................... 5

1.1.1.

Homo Sapiens ....................................................................................................... 5

1.1.2.

Robs..................................................................................................................... 7

1.2.

Hora de usar nossa fora ............................................................................................... 8

1.3.

Atuadores ...................................................................................................................... 8

1.4.

O foco dessa apostila ..................................................................................................... 9

1.5.

Ajude-nos a criar um material de primeira .................................................................... 9

Mdulo Rel ........................................................................................................................ 10


2.1.

Rel ............................................................................................................................. 11

2.2.

O que um mdulo rel? ............................................................................................ 11

2.3.

Mos obra Experincia 1 ....................................................................................... 12

2.3.1.

Ingredientes ......................................................................................................... 12

2.3.2.

Misturando os ingredientes ................................................................................. 12

2.3.3.

Levando ao forno ................................................................................................ 16

2.3.4.

Preparando a cobertura ........................................................................................ 16

2.3.5.

Experimentando o prato ...................................................................................... 17

2.4.

Entendendo o Hardware .............................................................................................. 18

2.5.

Entendendo o programa .............................................................................................. 20

2.6.

Desafio ........................................................................................................................ 21

Usando Transistores no Arduino ......................................................................................... 22


3.1.

Por que usar transistores? ............................................................................................ 22

3.2.

Um pouco de histria! ................................................................................................. 23

3.3.

Como funcionam? ....................................................................................................... 24

3.4.

Qual transistor usar? .................................................................................................... 27

3.5.

Como usar transistores no Arduino? ........................................................................... 27

3.6.

Resumo dos clculos ................................................................................................... 30

3.7.

O que voc precisa saber? ........................................................................................... 30

3.8.

DICAS ......................................................................................................................... 31

3.9.

Mos obra Experincia 2 ....................................................................................... 32

3.9.1.

Ingredientes ......................................................................................................... 32

3.9.2.

Misturando os ingredientes ................................................................................. 32

3.9.3.

Levando ao forno ................................................................................................ 35

3.9.4.

Preparando a cobertura ........................................................................................ 35


3

3.9.5.

Experimentando o prato ...................................................................................... 36

4.

Motores ............................................................................................................................... 38

5.

Servomotores....................................................................................................................... 40
5.1.

5.1.1.

Ingredientes ......................................................................................................... 42

5.1.2.

Misturando os ingredientes ................................................................................. 42

5.1.3.

Levando ao forno ................................................................................................ 42

5.1.4.

Preparando a cobertura ........................................................................................ 42

5.1.5.

Experimentando o prato ...................................................................................... 43

5.2.
6.

Experincia 1 ............................................................................................................... 42

Entendendo o Software ............................................................................................... 43

Mdulo Ponte H Controlando o sentido de um motor DC ............................................... 45


6.1.

O que uma Ponte H? ................................................................................................. 45

6.1.1.

Mas como funciona a Ponte H? Por que este nome?........................................... 46

6.1.2.

Circuito integrado L2398N ................................................................................. 46

6.1.3.

Mdulos de Ponte H ............................................................................................ 48

6.2.

Mdulo Ponte H com CI L298N ................................................................................. 49

6.2.1.
6.3.

Ingredientes ......................................................................................................... 50

6.3.2.

Misturando os ingredientes ................................................................................. 50

6.3.3.

Levando ao forno ................................................................................................ 51

6.3.4.

Preparando a cobertura ........................................................................................ 51

6.3.5.

Experimentando o prato ...................................................................................... 53

Entendendo o programa .............................................................................................. 53

Ponte H Controlando a velocidade de um motor DC ....................................................... 53


7.1.

Experincia 4 ............................................................................................................... 55

7.1.1.

Ingredientes ......................................................................................................... 55

7.1.2.

Misturando os ingredientes ................................................................................. 55

7.1.3.

Preparando a cobertura ........................................................................................ 56

7.1.4.

Experimentando o prato ...................................................................................... 58

7.2.
8.

Experincia3 ................................................................................................................ 50

6.3.1.

6.4.
7.

Entradas e sadas ................................................................................................. 49

Entendendo o programa .............................................................................................. 58

Super desafio ....................................................................................................................... 59


8.1.

Rob Autnomo .......................................................................................................... 59

8.2.

Automao residencial ................................................................................................ 59

1. Introduo
1.1.

O que um Rob?
E disse Deus: Faamos o homem nossa imagem, conforme a nossa
semelhana; e domine sobre os peixes do mar, e sobre as aves dos cus, e
sobre o gado, e sobre toda a terra, e sobre todo o rptil que se move sobre a
terra.
Bblia - Gnesis 1:26

Analisando esse versculo da Bblia de um ponto de vista filosfico, podemos criar


uma analogia dele conosco e nossos robs. Hoje, no papel de criadores, construmos robs
que desempenham funes que so naturalmente executadas por ns ou por outros seres
vivos, ou seja, semelhantes a ns. Em suma, a natureza nossa maior fonte de inspirao.
Pense bem, os seres vivos povoam a terra a milhares de anos, por que no copiar
o que j est dando certo na natureza? Vamos aproveitar todo esse conhecimento e
tecnologia desenvolvidos a partir de milnios de seleo natural.
Portanto, se queremos construir dispositivos dotados de alguma inteligncia o
primeiro passo olharmos para ns mesmos, o prprio ser humano.
1.1.1. Homo Sapiens
O homem, ou homo sapiens, do latim homem sbio, a denominao dada
espcie animal que somos. Com a vida corrida que vivemos, por muitas vezes no
lembramos de que somos animais, dotados de uma mquina biolgica incrvel, o corpo
humano.

Figura 1 - Corpo Humano e sua simetria.

Estamos a todo momento pensando, sentindo e fazendo. Para pensar temos o nosso
maior diferencial dentre todas as espcies de animais encontrados na terra, nosso
poderoso crebro.
5

Crebro
O crebro responsvel por receber toda a informao colhida por nossos
sensores, tomando decises lgicas conforme a necessidade. Por exemplo, se seu olho v
que est chovendo, voc ir processar a informao e tomar a deciso de tirar as roupas
no varal. Se voc estiver lendo esse texto e algum chamar pelo seu nome, voc ir
processar a informao e provavelmente tomar a deciso de verificar o que .
Portanto, nosso crebro responsvel pela tomada de decises de como iremos
interagir com o ambiente em que estamos.
Os sensores
Para interagir com o mundo, temos que coletar informaes dele. Para isso nosso
corpo conta com os cinco sentidos: Audio, Viso, Tato, Olfato e Paladar. Nossos
sentidos so conjuntos de sensores que coletam informaes do meio ambiente e
transformam em informao que ser processada por nosso crebro.
Os atuadores
Os msculos so nossos dispositivos de atuao, eles so responsveis por nossos
movimentos. Desde um piscar de olhos at os mais inusitados movimentos que o homem
pode fazer. Todos so resultados da contrao e relaxamento dos nossos aproximados 660
msculos.
Desse modo, o crebro tem o poder de interagir mecanicamente com o meio a
partir de suas decises.
A manuteno
Toda essa mquina biolgica precisa de suprimentos tais como gua e energia.
Para isso possumos sistemas que so responsveis pela distribuio, em todo o corpo,
dos suprimentos necessrio para sua operao.
Vale ressaltar que podemos observar os mesmos sistemas em todos seres vivos
que detenham um sistema nervoso. As formigas por exemplo, apesar de seu sistema
nervoso primitivo, desempenham de forma extraordinria seu objetivo, a
sobrevivncia.

1.1.2. Robs
Vamos chamar de rob qualquer sistema que seja dotado de alguma inteligncia
e que possa interagir com o mundo em que vivemos. Se queremos um sistema inteligente,
j sabemos por onde comear. Precisaremos de:

Um crebro, onde ser processada as informaes e tomada as decises;

Sensores, que coletaro informaes do meio e enviaro para o crebro;

Atuadores, que sero o meio de o crebro executar tarefas;

Sistemas auxiliares, que garantiro o funcionamento do rob.

Figura 2 - Rob jogando futebol.

No rob, teremos como crebro um processador, no caso dessa apostila, um


Arduino. Ele ser responsvel por processar as informaes vindas dos sensores, que
podem ser dos mais variados tipos, como sensores de temperatura, sensores de distncia,
entre outros. Depois de processada a informao, o crebro do rob dever tomar decises
lgicas e caso necessrio exercer uma ao que permita alcanar um objetivo.

Figura 3 - Sistema autnomo de irrigao

Pense em um sistema inteligente que tem como objetivo molhar as plantas de um


jardim. Para que ele seja autnomo e consiga desempenhar a sua atividade sozinho, ele
tem que saber qual o momento certo de molhar as plantas desse jardim, correto? Para
isso, precisamos de um sensor que identifique se devemos ou no irrigar. Vamos supor
que nosso sistema usa um sensor de umidade de solo.
Agora que temos um sensor, precisamos de um crebro que receba essa
informao e seja capaz de tomar uma deciso de acordo com o objetivo do sistema.
Vamos adotar como nosso crebro um Arduino. Assim, o Arduino recebe as informaes
7

do sensor e consegue saber se o solo est mido ou seco e, portanto, consegue decidir se
necessrio irrigar ou no o jardim.
O que adianta sabermos que o jardim precisa ser molhado se no fizermos nada?
nesse momento que precisamos de um atuador. Nesse exemplo podemos usar como
atuador uma vlvula solenoide, que ir liberar ou no a gua para a irrigao.
Quando o Arduino perceber que o solo est seco demais, atravs do sensor, ele ir
irrigar o jardim liberando a gua atravs da vlvula solenoide. Quando for identificado
que o solo est mido o suficiente, o Arduino, atravs da vlvula solenoide, ir cortar o
fluxo de gua de irrigao.
Veja como o sistema inteligente interage com o meio ambiente formando um ciclo
de informao. Primeiro ele sente o que est acontecendo no meio ambiente, depois o
crebro toma uma deciso baseada no seu objetivo e interage com o meio ambiente por
meio do atuador

1.2.

Sensor
(Sensor de
midade)

Crebro
(Arduino)

Meio
Ambiente
(Jardim)

Atuador
(Vlvula
Solenoide)

Hora de usar nossa fora

Na apostila Arduino Bsico Vol. 2, aprendemos a importncia dos sensores e


como us-los, processando a informao coletada e tomando decises.
No entanto, para desenvolvermos um sistema autnomo precisamos saber como
atuar, como garantir ao nosso rob a capacidade de modificar as variveis do meio para
que alcance o estado desejado. Por exemplo: se a geladeira est gelada demais, o
crebro dela deve ser capaz de desligar o sistema responsvel por gelar o seu interior.
O assunto dessa apostila justamente esse, atuadores. Vamos aprender como
exercer uma ao com o meio e como interagir com o ambiente, usando as informaes
coletadas pelos sensores e modificando as variveis do meio atravs dos atuadores.

1.3.

Atuadores

Atuadores so o meio pelo qual nossos robs interagem com o mundo. Eles podem
usar motores para se movimentar, LEDs para indicar uma situao de perigo e resistores
8

para aquecer um liquido, entre muitas outras possibilidades de interao.


Em geral, nossos atuadores iro transformar energia eltrica em energia mecnica,
luminosa ou trmica. Temos como exemplos de atuadores:

Energia mecnica: Motores;

Energia luminosa: LEDs, LCDs e Lmpadas;

Energia trmica: Resistores.


Como estamos tratando de transforma energia eltrica em outras energias, temos
que tomar um especial cuidado com consumo de energia de nosso sistema para que no
sobrecarreguemos nossos dispositivos.
importante saber que cada dispositivo tem uma capacidade mxima de
fornecimento de energia. Por exemplo, uma porta digital do Arduino pode fornecer at
40mA de corrente, no podemos drenar mais que isso, caso contrrio, podemos queimlo.

1.4.

O foco dessa apostila

Sabendo da importncia dos atuadores para os sistemas autnomos, nessa apostila


iremos aprender como us-los de forma segura com o Arduino.
Os atuadores abordados aqui so:

1.5.

Transistores

Rels

Servomotores

Ponte H e motores DC

Ajude-nos a criar um material de primeira

Antes de voc comear a ler essa apostila, te convido para nos ajudar a criar
materiais cada vez melhores. Caso tenha alguma sugesto para as novas apostilas ou
encontrou

algum

erro

nesse

material,

mande

um

e-mail

para

contato@vidadesilicio.com.br. Ficaremos muito felizes em te ouvir.


Caso voc possua vontade, tal como ns, de ajudar a comunidade Arduino e tenha
interesse em fazer tutoriais bacanas ou at nos ajudar a montar uma apostila para dividir
seu

conhecimento

por

meio

da

internet,

mande

um

e-mail

para

contato@vidadesilicio.com.br com um tutorial de sua autoria que ficaremos felizes em


abrir um espao para voc em nosso blog.

2. Mdulo Rel
Os microcontroladores, tais como Atmega, PIC e MSP, so dispositivos lgicos.
Eles so usados com o intuito de ser a inteligncia do circuito, o crebro de nosso sistema
inteligente.
Por isso, um microcontrolador usa tenses e correntes baixas para funcionar e no
so produzidos para suportar grandes tenses e correntes. O Arduino UNO, por exemplo,
que usa o Atmega328, suporta um mximo de 40mA em suas portas I/O e fornece uma
tenso de 5V. Alm disso, sempre aconselhvel separar o sistema de inteligncia do
sistema de acionamento, para que curtos ou problemas no sistema de acionamento no
danifique sua placa Arduino.
Quando queremos acionar cargas com valores de corrente ou tenso maiores
precisamos utilizar algum dispositivo que suporte tal carga. Por exemplo: Queremos
acender uma lmpada de 127V quando estiver escuro. Sabemos que o Arduino no
capaz de fornecer tal tenso, para isso iremos precisar de algum dispositivo capaz de ligar
e desligar a lmpada atravs do comando do nosso Arduino, uma boa pedida o rel.
Interruptor
Diariamente ligamos e desligamos lmpadas atravs de um dispositivo muito
eficaz, o interruptor. Tal como o nome j diz, ele tem a capacidade de interromper o fluxo
de energia e vice-versa. Veja na figura abaixo como um interruptor trabalha. O fio
vermelho, que o positivo e traz a energia, passa pelo interruptor e depois vai para a
lmpada que j possui o negativo conectado. Quando o interruptor est aberto, no temos
passagem de energia, quando mudamos o estado dele e fechamos o contato, a lmpada
liga.

Figura 4 - Interruptor residencial.

10

2.1.

Rel

Um rel semelhante a um interruptor, com uma diferena, no precisamos usar


nosso dedo para fechar ou abrir o contato. Para essa funo, usamos um sistema
engenhoso que quando alimentado, fecha o contato.
Esse sistema engenhoso possui um eletrom, ou seja. Uma bobina que quando
energizada criar um campo eletromagntico, se tornando um im. Devido a fora de
atrao magntica do eletrom teremos a movimentao do interruptor. Veja a imagem
a baixo para que possa entender melhor:

Figura 5 - Olhando um rel por dentro.

Quando alimentamos os terminais 3 e 4 da bobina, ela gera um campo


eletromagntico que atrai a haste conectada ao terminal 2, que vence a fora exercida pela
mola conectada a ela. Isso faz com que essa haste se mova at encostar na haste conectada
ao terminal 1. Com isso, teremos o contato fechado.
Quando paramos de alimentar a bobina atravs dos terminais 3 e 4, a fora
magntica exercida sobre a haste conectada ao terminal 2 deixa de existir e a mola puxa
a haste de volta ao seu lugar inicial, abrindo o contato. Portanto, agora temos um
interruptor acionado por uma bobina.
Usando um rel, podemos controlar um dispositivo, tal como a lmpada de 127V
que possui uma corrente e tenso alta, atravs da alimentao de uma bobina. A corrente
e a tenso que essa bobina precisa varia com a especificao do rel.
2.2.

O que um mdulo rel?

Apesar de a bobina rel demandar uma corrente e uma tenso baixa, ainda assim
o rel precisa de mais energia do que uma porta digital do seu Arduino Uno pode fornecer.
Por conta disso, precisamos de um circuito auxiliar para o acionamento do rel.
Esse circuito, que usa uma fonte de alimentao que pode ser a prpria sada de 5V do
seu Arduino, no trivial, mas j pode ser encontrado pronto nos mdulos rels muito
11

usados com Arduino. Esse tipo de mdulo poupa tempo e muito simples de usar.

Figura 6 - Mdulo rel.

No prximo captulo dessa apostila abordaremos sobre transistores e


aprenderemos como montar o circuito para acionar um rel. Porm, nesse captulo nos
limitaremos a usar o mdulo devido a sua praticidade na montagem do circuito.

2.3.

Mos obra Experincia 1

Ento vamos fazer uma experincia e olhar o funcionamento de um mdulo rel


na prtica?
2.3.1. Ingredientes

Arduino
Mdulo Rel
Fios Jumpers
Extenso
Boto
Resistor de 10kOhm

2.3.2. Misturando os ingredientes


Cuidado!
Nesse tutorial iremos mexer com tenses e correntes maiores. Tome cuidado ao
manusear seu projeto, risco de choque!!
Tome cuidado para no energizar seu Arduino com a tenso da tomada. Isso ir
queim-lo.

Vamos separar essa montagem em duas partes:


1. Inteligncia
Essa parte do projeto representa o Arduino e seus perifricos de baixa potncia.
Para montar seu circuito, use a figura a seguir. Garanta que seu Arduino esteja desligado
12

durante a montagem.
O pino de entrada do boto o 8 e o pino de sada do rel o 13.

Figura 7- Esquemtico mdulo rel

2. Potncia
Nessa parte iremos montar a parte de maior potncia do nosso circuito. Para esse
projeto iremos precisar de uma extenso que voc no usar mais, ou voc pode fazer a
sua.
Quando lidamos com energia eltrica temos que tomar muito cuidado! Ento
monte seu projeto com segurana. No queremos transformar nossa diverso em dor de
cabea, no mesmo?
Por isso, vamos montar uma extenso segura. Caso voc j tenha uma que possa
cortar os seus fios, voc poder us-la. Basta executar apenas os trs ltimos passos.
Para nossa extenso voc vai precisar de:

Um adaptador de tomada macho

Um adaptador de tomada fmea

4 metros de Fio de cobre (Fique vontade em relao ao tamanho).

13

Figura 8 - Adaptadores e fio para fazer a extenso.

Vamos montar nossa extenso:

Divida seu fio de cobre em dois fios de 2 metros (ou metade do tamanho
que voc tiver). Dessa forma, voc ter dois fios iguais;

Com seu alicate, descasque a ponta de cada fio;

Figura 9 - Descasque a ponta do fio.

Parafuse a ponta dos dois no adaptador macho;

Figura 10 - Parafuse os fios dentro dos adaptadores.

Parafuse a outra ponta dos dois no adaptador fmea;

Figura 11 - Extenso pronta.

14

Agora vamos conect-la ao nosso circuito.

Corte um dos dois fios.

Figura 12 - Corte um dos fios.

Descasque as das pontas

Parafuse uma no comum (COM) e outra no contato normalmente aberta


(NA ou NO Caso esteja em ingls)

Figura 13 - Parafuse os fios no mdulo rel.

15

Agora, volte, e confira se voc realmente montou tudo como explicado.


Seu circuito ficar semelhante ao da foto a seguir:

Figura 14 - Sistema montado.

2.3.3. Levando ao forno


Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,
certifique que a porta serial (serial port) est selecionada e que a placa configurada a
que voc est usando (board).
2.3.4. Preparando a cobertura
Crie um programa (sketch) e salve com o nome de programa_modulo_rele.
Com o seu programa salvo, escreva nele o cdigo conforme escrito abaixo.

16

bool stable;
// Guarda o ltimo estado estvel do boto;
bool unstable; // Guarda o ltimo estado instvel do boto;
uint32_t bounce_timer;
uint8_t counter = 0;
int rele=13;
int botao=8;
bool set;
bool changed() {
bool now = digitalRead(botao);
// L o estado atual do boto;
if (unstable != now) {
// Checa se houve mudana;
bounce_timer = millis();
// Atualiza timer;
unstable = now;
// Atualiza estado instvel;
}
else if (millis() - bounce_timer > 10) { // Checa o tempo de trepidao acabou;
if (stable != now) {
// Checa se a mudana ainda persiste;
stable = now;
// Atualiza estado estvel;
return 1;
}
}
return 0;
}
void setup() {
Serial.begin(9600); // configura comunicao serial a uma taxa de 9600 bauds.
pinMode(botao, INPUT_PULLUP); // Configura pino 8 como entrada e habilita pull up interno;
pinMode(rele, OUTPUT); // Configura pino 8 como entrada e habilita pull up interno;
stable = digitalRead(botao);
set=0;
}
void loop() {
if (changed()) { //verifica se houve mudana de estado
if (digitalRead(botao)) set=!set; //se mudou o estado e o boto est pressionado muda o
valor de set
}
digitalWrite(rele,set);
// Outras tarefas;
}

Depois de escrever o cdigo, clique em Upload para que o programa seja


transferido para seu Arduino.
2.3.5. Experimentando o prato
Conecte algum aparelho em sua extenso (que tenha uma coerente menor que
10A), um ventilador por exemplo. Ento ligue seu Arduino e em seguida ligue a tomada
de sua extenso.
Cuidado!
S ligue seu sistema na tomada quando tiver a certeza que est tudo corretamente
conectado.
Tome cuidado para no tomar um choque ou energizar seu Arduino com a tenso
da tomada. Isso ir te machucar ou queimar seu Arduino.

17

Se tudo deu certo, quando voc apertar o boto uma vez, o dispositivo que estiver
ligado na tomada dever ligar.

Figura 15 - Sistema depois de apertado o boto 1 vez.

Quando apertar uma segunda vez, o dispositivo dever desligar.

Figura 16 - Sistema depois de apertado o boto pela segunda vez.

2.4.

Entendendo o Hardware

Nessa experincia usamos um boto para ligar e desligar uma carga atravs do
rel.
Quando pressionado o boto pela primeira vez, o Arduino detecta essa entrada e
acionar o rele. Quando pressionado novamente, o Arduino detecta e desliga a carga e
assim por diante.
O funcionamento do rel foi explicado no comeo do captulo. Em resumo, o rel
18

funciona como um interruptor comandado pelo Arduino. Quando energizado ele aciona
a carga, quando desenergizado ele desliga a carga. Sendo a carga em nosso caso uma
lmpada.
Um ponto importante para ser ressaltado aqui que esse o tipo de projeto que se
fundamental o tratamento do Bounce.

O Bounce
Ao pressionar um boto ns fazemos com que os seus contatos se choquem o que

far com que o boto trepide um pouco antes de se estabilizar. Esse fenmeno similar
ao que acontece com uma bolinha de ping pong quando jogada contra o cho, que quica
algumas vezes antes de se estabilizar. A figura a seguir mostra a forma de onda do sinal
produzido pelo boto ao ser pressionado.

Figura 17 - Olhando o Bounce em um osciloscpio.

Podemos observar que o boto varia entre nvel alto e baixo vrias vezes antes de
se estabilizar em 0V, ou seja, quando ligamos um LED por exemplo, ele pisca vrias
vezes cada vez que o boto pressionado, porm isso acontece to rpido que nosso olho
no consegue perceber.
Como nosso programa liga quando pressionado uma vez o boto e desliga quando
pressionado novamente, teremos um grande problema aqui, porque nossa carga ligaria e
desligaria muitas vezes em um curto espao de tempo e o estado final seria aleatrio.
A soluo para isso ignorar essa trepidao atravs do nosso programa.
Vamos nos ater aqui em tratar o Bounce atravs de uma simples funo que ser
explicada no prximo item.
Voc pode saber mais sobre esse efeito na postagem em nosso blog sobre botes
nesse link: Leitura de Botes e o Bounce. L voc encontrar mais informaes sobre o
assunto.

19

2.5.

Entendendo o programa

Nesse programa usamos duas coisas muito interessantes que podem ser usadas
sempre que voc tiver problemas semelhantes. Um boto momentneo para ligar e
desligar a mesma carga e o tratamento de Bounce desse boto.
O bacana que tambm podemos adaptar um sensor no lugar do boto para criar
alguma lgica afim de controlar o nosso mdulo rel.

Tratando o Bounce
A primeira coisa que precisamos falar sobre o tratamento de Bounce que ocorre

devido a trepidao inicial dos contatos do boto. Esse efeito foi explicado no item
anterior. Aqui vamos aprender como fizemos para trat-lo.
A ideia simples! Precisamos saber se a trepidao acabou. Para isso medimos
quanto tempo temos desde a ltima alterao de estado. Se ela for maior que um
determinado tempo, consideramos que nosso estado est estvel.
Veja essa funo que nos retorna 1, caso o boto tenha mudado de estado, e 0,
caso no tenha mudado.
bool changed() {
bool now = digitalRead(botao);
// L o estado atual do boto;
if (unstable != now) {
// Checa se houve mudana;
bounce_timer = millis();
// Atualiza timer;
unstable = now;
// Atualiza estado instvel;
}
else if (millis() - bounce_timer > 10) { // Checa o tempo de trepidao acabou;
if (stable != now) {
// Checa se a mudana ainda persiste;
stable = now;
// Atualiza estado estvel;
return 1;
}
}
return 0;
}

Primeiro lemos o valor de entrada


bool now = digitalRead(botao);

// L o estado atual do boto;

Verificamos se ouve mudana, ou seja, se o valor lido diferente do ltimo.


if (unstable != now) {

// Checa se houve mudana;

Armazena o tempo de millis atual.


bounce_timer = millis(); // Atualiza timer;

Muda o estado armazenado na varivel usntable.


unstable = now;

// Atualiza estado instvel;

Caso no tenha mudado de estado, verifique se j se passou mais de 10


milissegundos desde a ltima alterao de entrada.
20

else if (millis() - bounce_timer > 10) {

// Checa o tempo de trepidao acabou;

Se j se passaram 10 milissegundos ele verificar se o estado atual estvel


diferente do ltimo estado estvel.
if (stable != now) {

// Checa se a mudana ainda persiste;

Atualiza o estado estvel.


stable = now;

// Atualiza estado estvel;

Retorna 1, simbolizando que ouve mudana de estado.


return 1;

Caso no tenha dado os 10 milissegundos, retorna 0, simbolizando que ouve


mudana de estado.
return 0;

Essa funo chamada um "se" dentro da funo loop como condio lgica de
um if. Caso a funo retorne 1 (ouve mudana de estado), ns iremos verificar se essa
mudana foi para pressionado, caso positivo ele muda o valor da varivel set, que pode
assumir o valor 0 ou 1 por ser do tipo bool.
void loop() {
if (changed()) { //verifica se houve mudana de estado
if (digitalRead(botao)) set=!set; //se mudou o estado e o boto est pressionado
muda o valor de set
}
digitalWrite(rele,set);
// Outras tarefas;
}

Dessa forma, se a primeira vez que pressionamos o boto, teremos set indo de 0
para 1. Na segunda vez teremos set indo de 1 para 0. Assim por diante.
Depois pegamos o valor de set e escrevemos no pino de sada que est conectado
o rel (pino 13).

2.6.

Desafio

Agora que sabemos usar um mdulo rel. Que tal usar um sensor de presena para
acender uma lmpada ou um sensor de temperatura para ligar seu ventilador? Seria uma
boa ideia para automatizar o seu quarto, o que acha?
Faa isso:

Ligue uma lmpada quando detectar movimento no ambiente;

Ligue um ventilador caso a temperatura esteja muito alta.

21

3. Usando Transistores no Arduino


No captulo anterior ressaltei a importncia de um circuito auxiliar para o rel,
nesse captulo aprenderemos como mont-lo. Isso mesmo, voc poder montar seu
prprio mdulo rel. Para isso, iremos aprender a usar um componente muito importante.
O Transistor.

3.1.

Por que usar transistores?

J falamos que os microcontroladores, tais como Atmega, PIC e MSP, so


dispositivos lgicos que so usados com o intuito de ser a inteligncia do circuito. Dessa
forma, esses componentes no so produzidos para suportar grandes correntes.
Para muitas aplicaes isso no o suficiente. Segue alguns exemplos:

Motores DC;

Fitas de LED;

Rel;

Ou qualquer componente que precise de mais de 5V ou 40mA.


Quando queremos acionar cargas com valores de corrente ou tenso maiores

precisamos de utilizar algum dispositivo que suporte tal carga. Uma das solues mais
prticas so os Transistores.

Figura 18 - Alguns encapsulamentos de transistores.

Nesse captulo iremos focar nos transistores BJT (juno bipolar), tentarei ser o
mais prtico possvel, pensando em algum que no saiba nada de eletrnica. Caso queira
saber mais sobre transistores, existe bastante material na internet explicando os vrios
tipos e suas propriedades de forma mais detalhada.

22

3.2.

Um pouco de histria!

Uma das invenes mais importantes do Milnio, os transistores possibilitaram


uma revoluo tecnolgica inimaginvel. Agora mesmo, usando o seu computador ou
qualquer aparelho eletrnico voc est colhendo os frutos dessa inveno.
Antes dos transistores, os computadores funcionavam a partir do uso de vlvulas
terminicas, elas at que funcionavam bem, porm ocupavam muito espao fazendo com
que computadores ocupassem grandes reas. Dessa forma, surgiu a necessidade de
descobrir uma forma de utilizar um substituto menor.

Figura 19 - Vlvula.

Em 1947, nos Laboratrios da Bell Telephone, os pesquisadores John Bardeen e


Walter Houser Brattain inventaram o primeiro transistor feito de germnio. Em 23 de
Dezembro de 1948, foi demonstrado para o mundo por John Bardeen, Walter Houser
Brattain e William Bradford Shockley, que ganharam o Nobel de Fsica em 1956.

Figura 20 - Primeiro transistor.

Hoje, o material semicondutor mais usado na fabricao de transistores o silcio.


O silcio prefervel porque possibilita o funcionamento a temperaturas mais elevadas
(175 C, quando comparado com os ~75C dos transistores de germnio) e tambm
porque apresenta correntes de fuga menores. Com a evoluo tecnolgica, surge a
necessidade de diminuir cada vez mais o tamanho dos transistores para que se diminua o
23

tamanho dos equipamentos e que se aumente a capacidade de processamento. Uma das


novas tecnologias o chamado transistor 3D que tem dimenses nanomtricas.

3.3.

Como funcionam?

Imagine uma vlvula hidrulica, a do seu chuveiro por exemplo, ela tem a funo
de controlar o fluxo de gua que sair pelo chuveiro, correto? Podemos ter a vlvula
totalmente fechada, totalmente aberta ou em uma abertura especifica, limitando a corrente
de gua.

Figura 21 - Vlvula de chuveiro.

Nessa vlvula temos:

Uma entrada, onde entra a corrente de gua;

Uma sada, nesse caso vai para o chuveiro

Um elemento de controle de fluxo, no caso o volante da vlvula.

O transistor muito semelhante, porm tratamos de uma corrente de eltrons. O


transistor atua como uma vlvula. No transistor NPN, temos:

Uma entrada, chamada coletor, por onde entra a corrente de eltrons;

Uma sada, chamada emissor, por onde sai a corrente de eltrons;

E uma entrada de controle, chamada base, que no caso controlada a partir


de uma corrente de controle.

Figura 22 - Smbolo de um transistor NPN.

24

Como assim, corrente de controle?


Quando trabalhando no estado Ativo, o transistor aumenta ou reduz o fluxo de
corrente entre o coletor e o emissor conforme corrente de base aumenta ou reduz. Dessa
forma, existe uma relao entre corrente do emissor e coletor com a corrente de base. Ela
:
Icoletor Iemissor Ibase.hfe
Repare que a corrente de emissor e coletor so aproximadamente iguais (em breve
explicaremos por que) e que as duas so proporcionais a corrente de base.
Mas quem esse hfe?
O hfe, tambm conhecido como (beta), o coeficiente de ganho de corrente. Ele
relaciona a corrente de base com a corrente de coletor e emissor. Todo transistor tem o
seu valor, esse pode ser consultado na folha de dados do componente (datasheet). Esse
valor costuma ser na ordem de centenas. Assim, a corrente de base muito pequena, em
relao s correntes de coletor e de base.
Contudo, a corrente de base tem que fluir para algum lugar. No caso do transistor
NPN, ela se junta a corrente de coletor, fluindo em direo ao emissor. Logo, no transistor
NPN:
Iemissor = Icoletor + Ibase = Ibase.hfe + Ibase
Iemissor = Ibase.(hfe + 1) Ibase.hfe
Icoletor Iemissor
Como hfe >> 1 (muito maior que 1), podemos aproximar o termo (hfe+1) para hfe
e assim considerar que as correntes de emissor e coletor so aproximadamente iguais,
cometendo um erro inferior a 3% em transistores tpicos.
Mas o que acontece se a corrente de base for muito grande?
O transistor entrar em um estado de Saturao. Chega um instante em que a
corrente de base to grande que a corrente de coletor no consegue ser proporcional a
ela. Nesse instante, o transistor libera o mximo de corrente de coletor que pode. como
um registro totalmente aberto.
Icoletor < Ibase . hfe
(Condio de Saturao)
E como restringir toda a corrente?
Quando nenhuma corrente flui entre coletor (c) e emissor (e), pode-se dizer que o
25

transistor est em corte. Para que possamos entrar nesse estado, algumas condies so
necessrias. No transistor NPN as condies so:

Vb < Vc, Tenso de coletor maior que tenso de base;

Vb - Ve < 0.7, Tenso de base deve ser 0,7V maior que tenso de Emissor.

Observe que caso o emissor tenha uma tenso de 0V e colocarmos uma tenso de
0V na base, o suficiente para que o transistor no conduza. J que a tenso de base no
ser 0,7V maior que a tenso de emissor.
Ser que entendi?
O transistor possui 3 estados de operao, so eles:

Ativo, Icoletor Iemissor Ibase.hfe;

Corte, Icoletor Iemissor 0;

Saturado, Icoletor < Ibase.hfe (deixa toda a corrente fluir).


Para o transistor NPN funcionar em estado ativo necessrio que:

Vb < Vc, Tenso de coletor maior que tenso de base;

Vb - Ve < 0.7, Tenso de base 0,7V maior que tenso de Emissor;

Transistor PNP
Alm do transistor NPN, existe tambm o PNP. Os dois possuem configuraes
internas diferentes que mudam um pouco o funcionamento deles.

No transistor NPN a corrente flui do coletor para o emissor, e a corrente de base


entra somando junto a corrente de emissor, fluindo da base para o emissor.

No transistor PNP a corrente flui do emissor para o coletor e a corrente de base


flui do emissor para a base.
Veja a imagem a seguir:

Alm disso, os parmetros para que no entre em Corte mudam. Para o transistor
26

PNP funcionar, precisamos que:

Tenso de Base seja maior que tenso de Coletor;

Tenso de Emissor 0,7V maior que tenso de Base;


Observe

que

corrente

de

base

contnua

sendo

muito

pequena,

considerando Icoletor Iemissor.

3.4.

Qual transistor usar?

Para selecionar um transistor, importante verificar os nveis de corrente, tenso


e dissipao de potncia em que ele ir trabalhar. Isso feito na etapa de projeto,
utilizando teoria de circuitos ou (quando possvel) simulando o comportamento do
circuito em softwares especficos. Ento, deve--se escolher um dispositivo com
capacidade de suportar tais correntes, tenses. Para isso existem duas abordagens
principais. A mais comum e simples, utilizar dispositivos de projetos parecidos
(amplamente disponveis na internet) pois j foram testados por outras pessoas. A
abordagem ideal, porm, mais trabalhosa consultar a folha de dados (datasheet) dos
transistores. Nos datasheets possvel descobrir a SOA (Safety Operation Area) ou rea
de operao segura dos transistores e assim possvel confiar no seu funcionamento
correto e na sua durabilidade.
O que devemos verificar:

Pol: polarizao; negativa quer dizer NPN e positiva significa PNP.

VCEO: tenso entre coletor e emissor com a base aberta.

VCER: tenso entre coletor e emissor com resistor no emissor.

IC: corrente mxima do coletor.

PTOT: a mxima potncia que o transistor pode dissipar (Corrente


Mxima de coletor vezes Tenso mxima entre coletor e base)

hFE: ganho (beta).

Encapsulamento: a maneira como o fabricante encapsulou o transistor, nos


fornece a identificao dos terminais.

3.5.

Como usar transistores no Arduino?

Veremos agora como usar um transistor NPN junto ao Arduino. Existem vrias
configuraes de circuitos usando transistores, mas vamos nos ater a uma das mais
simples. Ela apresentada na figura a seguir. Nesse caso, estamos controlando um LED
atravs do Arduino com o auxlio do transistor:
27

Sada Arduino
A sada do Arduino ser:

5V, quando em nvel lgico alto;

0V, quando em nvel lgico baixo.


Para que o LED acenda, precisamos que quando a sada do Arduino estiver em

nvel lgico alto, o transistor conduza (Estado Ativo ou Saturado) e que quando estiver
em nvel lgico baixo, no conduza (Estado de Corte).
Relembrando
O transistor possui 3 estados de operao, so eles:

Ativo, Icoletor Iemissor Ibase.hfe;

Corte, Icoletor Iemissor 0;

Saturado, Icoletor < Ibase.hfe (deixa toda a corrente fuir).


Para o transistor NPN conduza precisamos que:

Vb < Vc, Tenso de coletor maior que tenso de base;

Vb - Ve < 0.7, Tenso de base 0,7V maior que tenso de Emissor;

Transistor em Corte
Como o emissor est conectado ao GND, sua tenso de 0V. Assim, quando a
sada do Arduino estiver em 0V no atender um dos requisitos para que o transistor
conduza (Tenso de Emissor 0,7V maior que tenso de Base). Dessa forma, o transistor
entrar em estado de Corte.
Transistor Conduzindo
Quando o Arduino estiver com 5V em sua sada, sendo a tenso de coletor maior
que a tenso de base, teremos o transistor na regio ativa ou saturada. Para garantimos
que quando em regio ativa teremos a corrente de coletor suficiente para acionar o LED
28

precisamos dimensionar os resistores de base (R2) e de coletor (R1) corretamente.

Resistor R1
O resistor R1 tem funo de limitar a corrente de coletor. Para acionar um LED,
precisamos de uma corrente de pelo menos 10mA. Para uma tenso de 9V um resistor de
150 Ohm atende muito bem, veja os clculos a seguir.
Aplicando a 1 lei de Ohm considerando uma queda de tenso de 2,5V no LED e
desconsiderando a queda de tenso no transistor, temos:
Icoletor-mx = (Vfonte Queda de tenso no componente) /R
Icoletor-mx = (9-2,5)V/150 Ohm = 43mA
O que suficiente para alimentar o LED.
Resistor R2 O mais importante
O resistor R2 tem a funo de limitar a corrente de base. Sendo ela responsvel
por controlar a corrente que ir fluir do coletor para o emissor, temos que escolh-la com
cuidado para garantir a mnima corrente no coletor que conseguir acender o LED.
Aplicando a 1 lei de Ohm temos que a corrente de base :
Ibase = (5-0,7)/R2 = 4,3/R2-max
Mas precisamos que a corrente de coletor seja pelo menos de 10mA, para isso
temos que:
Icoletor-min Iemissor-min 10mA = 0,01A = Ibase.hfe
0,01A = Ibase-min.hfe
Considerando que estamos usando o transistor BC337, temos que seu hfe = 100
(Consultado na Folha de Dados datasheet), dessa forma:
0,01A = Ibase.110
29

Ibase-min=0,01/110 = 0,00009= 0,09mA


Logo:
Ibase-min= 0,00009 = 4,3/R2
R2-max = 4,3/0,00009 =52,2KOhm
Dessa forma, devemos usar um resistor menor que o calculado. Vamos adotar
4,7KOhm. Com esse resistor, teremos:
Ibase=4,3/4,7KOhm=0,9mA
Icoletor=Ibase.hfe
Icoletor=0,9mA.110=99mA
Como: Ibase.hfe > Icoletor -> 99mA > 43mA, ento:
Transistor Saturado

3.6.

Resumo dos clculos

Requisito
Icoletor > 10mA -> Corrente de coletor deve ser maior que 10mA quando o
transistor estiver conduzindo para que o LED acenda.
Componentes

Fonte externa de 9V;

Transistor BC337-> hfe=100;

R1 -> resistor que limitar a corrente de coletor, definindo a corrente mxima;

R2-> resistor que define a corrente de base que por sua vez define a mxima
corrente de coletor.

Especificaes

R1=150 Ohm, Limita a corrente de coletor em 43mA

R2 < 52,2 kOhm, adotamos R2=4,7 kOhm para corrente de base mnima
de 0,09mA, logo a corrente de coletor mnima 10mA

3.7.

O que voc precisa saber?

Ao projetar um circuito usando o transistor NPN, devemos:

Escolher qual transistor usar a partir das tenses e correntes mximas;

Dimensionar os resistores R1 e R2.

Para dimensionar R1, que o resistor responsvel por limitar a corrente de coletor,
precisamos saber:
30

Qual a tenso da fonte;

Qual a queda de tenso no componente;

Qual a corrente necessria para que o componente controlado funcione


corretamente (Icoletor-min).

Frmula para clculo do R1:


Icoletor-min =(Vfonte Queda de tenso no componente) /R1-max
R1 no deve ser muito menor que R1-max.
Para dimensionar R2, que responsvel por controlar a corrente de coletor atravs
da corrente de base (Icoletor max = Ibase.hfe), precisamos saber:

Qual a corrente necessria para que o componente controlado funcione


corretamente (Icoletor-min);

hfe do transistor escolhido.

Frmula para clculo do R2:


Ibase = 4,3/R2-max
Ibase = Icoletor/hfe
Obs.: importante dimensionar bem esse resistor para que no se restrinja demais
a corrente de coletor do transistor. O ideal para esse tipo de aplicao trabalharmos com
o transistor saturado (Icoletor < Ibase.hfe). Para isso, geralmente escolhemos um resistor
bem menor que o R2 calculado.

3.8.

DICAS

Para esse tipo de aplicao, na maioria dos casos, podemos adotar:

R1 = 150 Ohm;

R2 = 1 kOhm a 4,7 kOhm

Fonte externa at 12V para o BC337 (ou BC537A)

No lugar do LED podemos colocar um rel ou outro componente que consuma at


100mA, caso esteja usando o BC337
Costumo usar na maioria das vezes os seguintes transistores NPN:
31

BC337 (Tenso de coletor mx =45V; Corrente de coletor mx = 500mA ;


hfe=100)

BD135 (Tenso de coletor mx =45V; Corrente de coletor mx =1,5A ;


Corrente de Base mx = 500mA; hfe=25)

TIP122 (Tenso de coletor mx =100V; Corrente de coletor mx = 5A ;


Corrente de Base mx = 120mA; hfe= 1000)

3.9.

Mos obra Experincia 2

Ento vamos fazer uma experincia e olhar o funcionamento de um mdulo rel


na prtica?
3.9.1. Ingredientes

Arduino
Rel 5V GS-SH-205T
Fios Jumpers
Transistor BC337
Boto
Resistor 10kOhm a 15kOhm
Resistor de 560Ohm ou prximo
Resistor de 1kOhm
2 Leds

3.9.2. Misturando os ingredientes


Nessa experincia iremos usar um transistor para acionar um rel. Mais
especificamente um rel de 5V modelo GS-SH-205T. Como esse Rele exige pouca
corrente, no iremos usar o resistor de emissor R1.
Iremos usar esse rele para chavear dois LEDs. Eles iro alternar conforme a bobina
ligar e deligar. Esse acionamento ser feito pelo boto, tal como a experincia anterior.

Figura 23 - Rel 5V

Esse rel possui 2 canais, ou seja, duas chaves internas. Como podemos ver no
esquemtico a seguir:
32

Figura 24 - Configurao dos pinos do rel 5V

Veja que temos apenas uma bobina e duas chaves. Quando a bobina (1 e 16) est
sem energia, temos o pino 13(COM) conectado ao pino 11 (NF) e o pino 4 (COM)
conectado ao pino 6 (NF).
Quando a bobina est energizada, temos o pino 13(COM) conectado ao pino 9
(NA) e o pino 4 (COM) conectado ao pino 8 (NA).

Figura 25 - Configurao dos pinos do rel 5V.

Para esse experimento iremos usar apenas um canal. No caso eu usei os pinos 4,
6 e 8. Onde coloquei no comum um resistor de 560ohm ligado ao 5V. No 6 eu coloquei
um LED vermelho e no 8 eu coloquei um LED verde.
33

Dessa forma, quando a bobina estiver desligada. Teremos o led vermelho ligado.
Quando ela estiver ligada, teremos o led verde ligado.
Vamos a montagem: Garanta que seu Arduino esteja desligado durante a
montagem.
O pino de entrada do boto o 8 e o pino de sada para a base do transistor o 13.

Figura 26- Esquemtico mdulo rel.

Uma viso mais prxima da protoboard:

Figura 27 - Esquemtico ligao rel.

Para ficar mais fcil de visualizar o circuito do transistor, veja o esquemtico a


34

seguir:

Figura 28 Esquemtico de ligao do rel.

Lembre-se de verificar a polaridade do LED. O lado negativo tem a perna menor


e possui um chanfre reto no LED.
Para identificar os pinos do transistor, use a seguinte referncia:

Figura 29 - Pinos do transistor BC337

3.9.3. Levando ao forno


Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,
certifique que a porta serial (serial port) est selecionada e que a placa configurada a
que voc est usando (board).
3.9.4. Preparando a cobertura
Esse o mesmo programa utilizado no exemplo anterior. Caso j tenha ele salvo,
use o mesmo.
35

Mas caso contrrio, crie um programa (sketch) e salve com o nome de


programa_modulo_rele.
Com o seu programa salvo, escreva nele o cdigo conforme escrito abaixo.
bool stable;
// Guarda o ltimo estado estvel do boto;
bool unstable; // Guarda o ltimo estado instvel do boto;
uint32_t bounce_timer;
uint8_t counter = 0;
int rele=13;
int botao=8;
bool set;
bool changed() {
bool now = digitalRead(botao);
// L o estado atual do boto;
if (unstable != now) {
// Checa se houve mudana;
bounce_timer = millis();
// Atualiza timer;
unstable = now;
// Atualiza estado instvel;
}
else if (millis() - bounce_timer > 10) { // Checa o tempo de trepidao acabou;
if (stable != now) {
// Checa se a mudana ainda persiste;
stable = now;
// Atualiza estado estvel;
return 1;
}
}
return 0;
}
void setup() {
Serial.begin(9600); // configura comunicao serial a uma taxa de 9600 bauds.
pinMode(botao, INPUT_PULLUP); // Configura pino 8 como entrada e habilita pull up interno;
pinMode(rele, OUTPUT); // Configura pino 8 como entrada e habilita pull up interno;
stable = digitalRead(botao);
set=0;
}
void loop() {
if (changed()) { //verifica se houve mudana de estado
if (digitalRead(botao)) set=!set; //se mudou o estado e o boto est pressionado muda o
valor de set
}
digitalWrite(rele,set);
// Outras tarefas;
}

Depois de escrever o cdigo, clique em Upload para que o programa seja


transferido para seu Arduino.
3.9.5. Experimentando o prato
Se tudo deu certo, quando voc ligar seu Arduino o led Vermelho dever estar
ligado e o verde desligado. Quando apertar o boto uma vez, o led vermelho ir apagar e
o verde acender. Apertado mais uma vez o boto, teremos a condio inicial novamente.
E assim por diante.

36

Na imagem a seguir temos o estado inicial, bonina desligada e por isso o LED
vermelho ligado (contato normalmente fechado):

Figura 30 - LED vermelho aceso

Apertando o boto uma vez, temos o a bobina energizada. Logo o LED vermelho
apaga e o led verde acende.

Figura 31 - LED verde aceso.

Podemos usar esse padro de circuito com transistores para vrios tipos de
componentes levando em conta as explicaes bsicas sobre transistores feita no incio
desse captulo.

37

4. Motores
Uma das formas de robs e sistemas automatizados interagirem com o meio
ambiente atravs de movimentos fsicos. Para essa tarefa encontramos com frequncia
motores eltricos.
Existem diversas forma de classificar motores eltricos, uma delas quanto ao
tipo de corrente: continua ou alternada. Em geral, para projetos de robtica iremos usar
com mais frequncia os motores de corrente contnua que no qual iremos aprender a uslos aqui.
Em resumo, um motor de corrente contnua (motor DC ou motor CC) utiliza
propriedades magnticas para transformar energia eltrica em movimentos atravs de um
sistema engenhoso.
Vamos considerar um modelo bsico de um motor para que possamos entender
rapidamente o conceito por trs de seu funcionamento.
O motor dividido em duas partes importantes. O rotor, que na maioria dos casos
a parte girante, onde temos o eixo do motor. E o estator, que a parte fixa do motor na
maioria dos casos, ou seja, a parte externa.
Veja na nossa figura abaixo que o rotor representado pela parte girante no centro
do motor e o estator a parte fixa externa. Veja tambm que o rotor tem um lado vermelho
(polo norte) e um lado azul (polo sul). O mesmo vale para o estator.

Figura 32 - Campo magntico motor DC

Como sabemos, os opostos se atraem. O campo magntico cria uma fora de


atrao entre os plos sul e norte. Essa fora faz com que o eixo se mova at que o plo
sul do rotor fique o mais prximo possvel de plo norte do estator. E o plo norte do
rotor fique o mais prximo possvel de plo sul do estator. At que consiga chegar a esse
ponto, o eixo do motor ir se movimentar.
38

At aqui estamos entendidos, o rotor rodar at que o seu plo sul esteja o mais
prximo quanto possvel do plo norte do estator. E quando chegarmos a esse ponto,
como que o movimento continua? Simples. Existe um sistema de comutao no eixo.
Como assim?
O campo magntico gerado no rotor resultado da corrente eltrica que passa pelo
rotor. Essa corrente gera um campo eletromagntico que vai variar o sentido dos plos
conforme variar o sentido da corrente.
Veja na figura anterior que temos um ponto de alimentao positiva, sinalizado
por um sinal de mais, e um ponto de alimentao negativa, sinalizado pelo sinal menos.
Quando alimentamos o rotor, ele ir criar um campo magntico e ir gerar um
plo sul de um lado e o plo norte do outro. Para que o rotor se movimente sem parar.
A grande engenhosidade fazer com que conforme o eixo gire, o sentido de
alimentao mude, invertendo o sentido da corrente e por consequncia, tambm os plos.
Veja a figura abaixo. No centro do rotor podemos ver que temos dois contatos
laranjas, e dois contatos ligados a uma fonte, um vermelho (positivo) e outro azul
(negativo). Observe que ao girar o rotor, os contatos laranjas vo mudar de positivo para
negativo e de negativo para positivo.
Isso far com que a corrente dentro da bobina mude de direo e por fim o campo
eletromagntico tambm ter seus plos invertidos.

Figura 33 - Comutador motor DC

Ento vamos resumir o que acontece:


1. A corrente que passar pelo rotor cria um campo eletromagntico com
plos sul e norte;
2. O plo sul do rotor ser atrado pelo plo norte do estator, provocando
um movimento circular;
3. Esse movimento circular do rotor far com o plo sul do rotor se
aproxime do plo norte do estator;
39

4. Com essa aproximao e movimento, haver uma comutao dos plos


que alimentam o rotor, fazendo com que a corrente dentro dele mude
de sentido e por consequncia os plos se invertam;
5. O plo que antes era sul, agora ser norte e ser atrado para o plo sul
do outro lado do estator fazendo com que o movimento continue;
6. E assim continua o movimento do motor.
Acredito que conseguimos entender um pouco do funcionamento de um motor.
Recomendo que veja vdeos no youtube explicando o funcionamento de um motor DC.
um assunto interessante.
Vamos ento comear a usar alguns tipos de motores DC.

5. Servomotores
Entre os atuadores temos um motor bem especial. Os servomotores so muito
utilizados quando o assunto robtica. De forma simplificada, um servomotor um motor
na qual podemos controlar sua posio angular atravs de um sinal PWM (Leia mais sobre
PWM na postagem Grandezas digitais e analgicas e PWM.).

Figura 34 - Servo

Dessa forma, um servomotor um atuador eletromecnico utilizado para


posicionar e manter um objeto em uma determinada posio. Para isso, ele conta com um
circuito que verifica o sinal de entrada e compara com a posio atual do eixo.

40

Como voc pode ver na figura anterior, o ngulo do servo proporcional ao Duty
Cycle (tempo que o sinal positivo) do sinal PWM.
Diferentemente dos motores CC ou motores de passo que podem girar
indefinidamente, o eixo dos servomotores possui a liberdade de apenas 180. Existem
ainda alguns servos que so adaptados para girar indefinidamente, mas no entraremos
nesse mrito aqui.
Servomotores geralmente possuem 3 pinos:

Alimentao positiva (vermelho) 5V;

Terra (Preto ou Marrom) GND;

Controle. (Amarelo, Laranja ou Branco) Ligado a um pino digital de entrada e


sada;

Ateno!!
Servomotores consomem uma corrente significativa ao se movimentarem. A utilizao de uma fonte
externa pode ser necessria e recomendada. Lembre-se de conectar o pino GND da fonte externa
ao GND do Arduino para que a referncia seja a mesma.
Apesar de sua posio ser controlada atravs do duty cycle de um sinal PWM enviado ao pino de
controle no necessrio a conexo do pino de controle a um pino que possua PWM, pois
utilizaremos a biblioteca Servo.h.
A utilizao de analogWrite (PWM) produzir um controle de menor preciso e poder at danificar
alguns servos por sua frequncia (490 Hz) ser 10 vezes superior a frequncia tpica de controle de
alguns servos.

Alm de mais preciso e recomendado, o uso da biblioteca Servo.h faz com que o
uso do servo seja mais fcil. Isso se d pelo fato de voc s precisar definir o ngulo que
voc deseja, no necessitando o uso dos valores de PWM (0 a 255).
41

5.1.

Experincia 1

Ento vamos fazer uma experincia e testar como funciona o servo?


5.1.1. Ingredientes

Potencimetro
MicroServo 9g
Fios Jumpers
Protoboard

5.1.2. Misturando os ingredientes


Agora vamos conectar os componentes do projeto. Para isso monte seu circuito
conforme a figura a seguir. Garanta que seu Arduino esteja desligado durante a
montagem.

O microservo tem trs fios saindo dele. Um ser vermelho e ir para os +5 V.


Outro, preto ou marrom, ir para o GND. O terceiro, branco, amarelo ou laranja, ser
conectado ao pino digital 8.
Monte o potencimetro com os seus pinos externos conectados um no +5 V e o
outro no GND e o pino do meio ao pino analgico A0.
5.1.3. Levando ao forno
Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,
certifique que a porta serial (serial port) est selecionada e que a placa configurada a
que voc est usando (board).
5.1.4. Preparando a cobertura
Crie um programa (sketch) e salve com o nome de programa_servo.
42

Nesse exemplo utilizaremos a biblioteca Senvo.h que deve ser adicionada em:
Sketch > Import Library > Servo.
Com o seu programa salvo, escreva nele o cdigo conforme escrito abaixo.
#include <Servo.h>
Servo servo1; // cria um objeto servo
// Esta funo "setup" roda uma vez quando a placa e ligada ou resetada
void setup() {
servo1.attach(5); // anexa o servo (fsico), no pino 5, ao objeto servo (lgico)
}
void loop() {
int angulo = analogRead(0); // L o valor do potencimetro
angulo = map(angulo, 0, 1023, 0, 180); // Mudana de Escala
servo1.write(angulo); // Escreve o ngulo para o servo
delay(20); // Espera de 20ms, Suficiente para que o servo atinja a posio
}

Depois de escrever o cdigo, clique em Upload para que o programa seja


transferido para seu Arduino.
5.1.5. Experimentando o prato
Se tudo deu certo, conforme voc variar a resistncia do potencimetro o servo ir
se mover.

5.2.

Entendendo o Software

Biblioteca Servo.h
Na elaborao do software utilizaremos a biblioteca Servo.h. Esta biblioteca

implementa as funcionalidades de um servomotor tornando sua utilizao extremamente


simples. Entretanto alguns cuidados devem ser tomados.
A biblioteca suporta a ligao de at 12 servomotores na maioria das placas Arduino e 48 no Arduino
Mega. O uso da biblioteca desabilita o uso da funo analogWrite nos pinos 9 e 10 (*exceto no
Arduino Mega). No Mega o uso de 12 a 23 servomotores desabilitar o a funo analogWrite nos
pinos 11 e 12.

Declarando um Servo
Ao usar essa biblioteca trataremos cada servo como um objeto, dessa forma

precisamos declar-lo no incio do cdigo.


Servo servo1; // Cria um objeto servo

Depois de declarado, sempre que quisermos mexer em alguma funo desse servo,
devemos usar o nome da funo precedida do nome do servo e ponto.
servo1.exemplo(); // chama funo exemplo() para o objeto servo1

43

Voc poder declarar quantos servos for usar, levando em conta a limitao fsica
de sua placa Arduino. Cada servo pode ter qualquer nome, mas aconselhvel que se use
nomes intuitivos.

Declarando porta de controle do Servo


Agora preciso definir em que porta esta conectado o fio de controle do servo,

para isso usamos a funo attach(pino).


servo1.attach(5); // Anexa o servo (fsico), no pino 5, ao objeto servo (lgico)

Controlando a Posio do Servo


A funo write define em um servo padro o ngulo em graus na qual ele deve se

posicionar.
servo1.write(angulo); //angulo: posio em graus para servos comuns

44

6. Mdulo Ponte H Controlando o sentido de um motor DC


Se voc curte robtica, provavelmente deve estar louco para montar seu prprio
rob. A ponte H uma pea chave quando o assunto robtica.

6.1.

O que uma Ponte H?

Os motores DC (direct current ou corrente continua) so cargas indutivas que, em


geral, demandam uma quantidade de corrente superior que as portas do Arduino
conseguem fornecer.

Figura 35 - Exemplo de motor DC

Sendo assim, no devemos ligar estes motores diretamente nas portas do Arduino
pois se o motor demandar uma corrente acima de 40mA nas portas digitais (mxima
fornecida pelo Arduino) pode queimar a porta e danificar a placa.
Para solucionar a questo da alta corrente poderamos usar transistores, porm
importante que seja possvel controlar o sentido de giro do motor, funo que no se faz
possvel usando apenas um transistor j que para inverter o sentido de giro devemos
inverter a polaridade da alimentao do motor (onde era positivo se pe negativo e viceversa). Um transistor s seria suficiente para ligar e desligar o motor.
Para resolver nosso problema utilizamos um famoso circuito conhecido como
Ponte H que nada mais que um arranjo de 4 transistores. Este circuito uma elegante
soluo por ser capaz de acionar simultaneamente dois motores controlando no apenas
seus sentidos, como tambm suas velocidades.

45

6.1.1. Mas como funciona a Ponte H? Por que este nome?


As pontes H possuem este nome devido ao formato que montado o circuito,
semelhante a letra H. O circuito utiliza quarto chaves (S1, S2, S3 e S4) que so acionadas
de forma alternada, ou seja, (S1-S3) ou (S2-S4), veja as figuras abaixo. Dependendo da
configurao entre as chaves teremos a corrente percorrendo o motor hora por um sentido,
hora por outro.

Figura 36 - Circuito Ponte H

Quando nenhum par de chaves est acionado, o motor est desligado (a). Quando
o par S1-S3 acionado a corrente percorre S1-S3 fazendo com que o motor gire em um
sentido (b). J quando o par S2-S4 acionado a corrente percorre por outro caminho
fazendo com que o motor gire no sentido contrrio (c).
6.1.2. Circuito integrado L2398N
O CI L298N muito utilizado para o propsito de controle de motores, ele nada
mais que uma ponte H em um componente integrado. Uma das vantagens do uso desse
CI o menor espao ocupado, a baixa complexidade do circuito e o fato de ele j possuir
duas pontes H, podendo assim, controlar dois motores. Na figura a seguir voc pode
conferir o diagrama de blocos do CI L298N retirado de sua folha de dados (folha de dados
L298N):

46

Figura 37 - Esquema dos circuitos internos do CI L298n

As funes dos principais pinos desse CI so descritas na tabela a seguir:

Figura 38 - Funes dos principais pinos da ponte H L298N [2]

Outra vantagem da ponte H L298N a resposta a sinais de PWM. Se no lugar de


usar sinais lgicos TTL for usado sinais de PWM, possvel regular a tenso de sada, e
dessa forma regular a velocidade dos motores.
O PWM, Pulse Width Modulation (Modulao por Largura de Pulso), consiste
basicamente em aplicar uma onda quadrada de amplitude Vcc e frequncia alta no lugar
da tenso continua Vcc. Leia mais sobre PWM na postagem Grandezas digitais e
analgicas e PWM.
Ao usar um sinal de PWM nas entradas IN1 e IN2, por exemplo, teremos uma
tenso de sada nos pinos OUT1 e OUT2 em PWM que ser igual Duty Cycle*Vcc.
Dessa forma, podemos regular a diferena de potencial mdia aplicada nos motores,
controlando as suas velocidades.
Existem outras opes de CI's de ponte H no mercado, importante consultar as
47

especificaes deles em suas folhas de dados (Datasheet) para saber qual ir lhe atender
melhor. Veja algumas opes de ponte H:

L293D Folha de Dados;

LMD18200 Folha de dados.

6.1.3. Mdulos de Ponte H


Mdulos de ponte H so muito utilizados em aplicaes de robtica. Esses
mdulos possuem dimenses pequenas e j possuem o circuito bsico para o uso do CI,
o que facilita na acomodao do mdulo no rob ou em outros projetos e a sua utilizao.
Existem varias opes disponveis no mercado, com tamanhos e especificaes
diferentes. Algumas especificaes so importantes ao escolher seu mdulo de ponte H,
so elas:

Especificao de potncia mxima fornecida;

Tenso mxima suportada;

Corrente mxima suportada;

Tenso lgica.

Ci L298N;

Tenso para os motores: 5 35V;

Corrente mxima para os motores: 2A;

Potncia mxima: 25W;

Tenso lgica: 5V;

Corrente lgica: 0-36mA;

Figura 39 - Mdulo Ponte H com o CI L298N

48

6.2.

Mdulo Ponte H com CI L298N

Agora que j sabemos como a Ponte H funciona, vamos entender na prtica como
podemos us-la em conjunto com o Arduino. Para isso iremos usar o mdulo Ponte H
com CI L298N.
6.2.1. Entradas e sadas
Para comea vamos entender funo de cada pino bem como deve ser utilizado.

Figura 40 - Entradas e sadas do mdulo Ponte H

Motor A e Motor B: Conectores para os dois motores

6-35V: Porta para alimentao da placa com tenso entre 6 a 35V.

Ativa 5V: Quando jumpeado, a placa utilizar o regulador de tenso integrado para
fornecer 5v (na porta 5v) quando a porta 6-35V estiver sendo alimentada por uma
tenso entre 6 e 35V. Neste caso, no se deve alimentar a porta 5V pois pode danificar
os componentes. A tenso fornecida na porta 5V pode ser usada para alimentar o
Arduino, por exemplo.

5v: Em casos de no haver fonte de alimentao com mais de 6V podemos alimentar


a placa com 5V por esta porta.

Ativa MA: Quando jumpeado aciona o motor A com velocidade mxima. Para
controlar a velocidade do motor A basta remover o jumper e alimentar o pino com
uma tenso entre 0 e 5v, onde 0V a velocidade mnima (parado) e 5V a velocidade
mxima.

Ativa MB: Quando jumpeado aciona o motor B com velocidade mxima. Para
controlar a velocidade do motor B basta remover o jumper e alimentar o pino com
49

uma tenso entre 0 e 5v, onde 0V a velocidade mnima (parado) e 5V a velocidade


mxima.

IN1 e IN2: so utilizados para controlar o sentido do motor A;

IN3 e IN4: so utilizados para controlar o sentido do motor B;

Veja que agora, no lugar das chaves S1-S3 e S2-S4 temos os pinos IN1 e IN2.
Onde IN1 corresponde s chaves S1-S3 e a IN2 s chaves S3-S4.
Para controlar o sentido, temos as seguintes combinaes para o motor A(IN1 e
IN2)

Figura 41 - Tabela de combinaes

Para o motor B (IN3 e IN4), a tabela funciona da mesma forma.

6.3.

Experincia3

Vamos fazer um exemplo para testar na pratica a ponte h. Neste primeiro exerccio
queremos testar o controle do sentido de giro dos motores A e B atravs do Arduino.
6.3.1. Ingredientes

Arduino UNO

Ponte H

2 Motores DC 12V (pode ser feito com apenas 1)

Fonte alimentao de 12V

6.3.2. Misturando os ingredientes


Prossiga com a montagem conforme esquema abaixo (caso voc use apenas um
motor, basta desconsiderar o motor B):
Garanta que seu Arduino e a fonte externa estejam desligados durante a
montagem.

50

Figura 42 - Esquema de montagem exemplo 1

6.3.3. Levando ao forno


Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Tools,
certifique que a porta serial (serial port) est selecionada e se a placa configurada a que
voc est usando (board).
6.3.4. Preparando a cobertura
Agora vamos implementao do programa. Dessa forma, dentro da IDE
Arduino: crie um programa (sketch) e salve com o nome de programa_ponte_H.
Com o seu programa salvo, escreva o seguinte cdigo e ao final clique em Upload
para que o programa seja transferido para seu Arduino.
Observe que nos comentrios escrevemos sentido horrio e sentido antihorrio. Porem, voc s poder identificar isso com a execuo do programa.
Para que voc saiba qual o sentido de rotao quando for usar a ponte H, caso o
motor gire em sentido diferente ao comentrio do programa, voc pode inverter os
comentrios.

51

/*Pinagem do arduino*/
//motor A
int IN1 = 2 ;
int IN2 = 3 ;
//motor B
int IN3 = 4 ;
int IN4 = 5 ;
// Esta funo "setup" roda uma vez quando a placa e ligada ou resetada
void setup(){
//Inicializa Pinos
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
}
// Funo que se repete infinitamente quando a placa ligada
void loop(){
/*Inicio dos Estados do motor A*/
//Sentido Horario
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
delay(5000);
//Freia Motor A
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
delay(5000);
//Sentido Anti-Horario
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
delay(5000);
//Freia Motor A
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
delay(5000);
/*Fim dos Estados do motor A*/
/*Incio dos Estados do motor B*/
//Sentido Horario
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
delay(5000);
//Freia Motor B
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(5000);
//Sentido Anti-Horario
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
delay(5000);
//Freia Motor B
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(5000);
/*Fim dos Estados do motor B*/
}

52

6.3.5. Experimentando o prato


Se tudo der certo, o motor A irar girar para um lado, parar, girar para o outro e
depois parar. Em seguida a mesma coisa ir acontecer para o motor B.
Como comentado anteriormente, caso os seus motores girem em sentido diferente,
altere os comentrios para que fiquem devidamente organizados.

6.4.

Entendendo o programa
Como podemos ver, esse um programa simples. Ns apenas alteramos as

combinaes de IN1 e IN2 para o motor A e IN3 e IN4 para o motor B como na tabela a
seguir.

Figura 43 - Tabela de combinaes

7. Ponte H Controlando a velocidade de um motor DC


No ltimo captulo vimos como se faz para ligar um motor DC no Arduino com o
auxlio de um mdulo ponte H, usando suas entradas para variar o sentido de giro. Mas
na robtica comum termos que controlar, alm do sentido, a velocidade do motor. Nesse
captulo iremos ensinar, de forma simples e didtica, como podemos controlar a
velocidade de um motor DC.
Como controlar a velocidade de um motor?
Um motor DC gira baseado em campos magnticos gerados pela corrente que
passa em suas bobinas. Para variar a velocidade do motor podemos alterar essa corrente
que diretamente proporcional a tenso sobre elas.

53

Figura 44 - Campo magntico motor DC

Dessa forma, com a mudana da tenso em cima do motor, teremos uma alterao
de velocidade. Mas como podemos fazer isso usando o Arduino e a Ponte H? A
soluo simples e eficiente e se chama PWM.
Modulando a ponte H
No mdulo Ponte H com CI L298N cada ponte H possui um pino que ativa ou no
a ponte H. Caso tenha um sinal de 5V inserido nele, a ponte estar ligada, caso seja 0V a
ponte estar desligada. Como temos 2 pontes H, temos o Enable A(Ativa A) e o Enable
B (Ativa B).
Normalmente o Enable A e B fica em curto com um sinal de 5V da placa atravs
de um jumper.

Figura 45 - Jumpers Enable A e B

Se retirarmos esse jumper e inserimos um sinal PWM nessa entrada, modularemos


a tenso que enviada para o motor no mesmo formato. Isso ocorre porque a ponte H s
ira funcionar enquanto o sinal de Enable estiver com 5V.
54

Figura 46 - Sinal PWM no Enable A em orange (5V) e a sada para o motor A em preto (12V).

Sendo assim, a sada para o motor ser um sinal PWM com um Duty Cycle igual
ao do Enable e ter tenso mdia calculada pela seguinte frmula.
Vmdio = Vmax(tenso PonteH)*Duty Cycle(%)
Com essa modulao, podemos variar a velocidade do motor atravs de PWM.

7.1.

Experincia 4

Neste segundo exemplo, vamos verificar o controle de velocidade dos motores A


e B.
7.1.1. Ingredientes

Arduino UNO

Ponte H

2 Motores DC 12V (pode ser feito com apenas 1)

Fonte alimentao de 12V

7.1.2. Misturando os ingredientes


Prossiga com a montagem conforme esquema abaixo (caso voc use apenas um
motor, basta desconsiderar o motor B):
Garanta que seu Arduino e a fonte externa estejam desligados durante a
montagem.

55

Figura 47 - Esquema de montagem exemplo 1

7.1.3. Preparando a cobertura


Agora vamos implementao do programa. Dessa forma, dentro da IDE
Arduino: crie

um

programa

(sketch)

salve

com

nome

de

programa_ponte_H_velocidade.
Com o seu programa salvo, escreva o seguinte cdigo e ao final clique em Upload
para que o programa seja transferido para seu Arduino.

56

/*Pinagem do arduino*/
//motor A
int IN1 = 2 ;
int IN2 = 4 ;
int velocidadeA = 3;
//motor B
int IN3 = 6 ;
int IN4 = 7 ;
int velocidadeB = 5;
//variavel auxiliar
int velocidade = 0;
// Esta funo "setup" roda uma vez quando a placa e ligada ou resetada
void setup(){
//Inicializa Pinos
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(velocidadeA,OUTPUT);
pinMode(velocidadeB,OUTPUT);
}
// Funo que se repete infinitamente quando a placa ligada
void loop(){
/*Exemplo de velocidades no motor A*/
//Sentido Horario
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
//Velocidade Alta
analogWrite(velocidadeA,230);
//Intermediaria
analogWrite(velocidadeA,150);
// Velocidade Baixa
analogWrite(velocidadeA,80);
//Freia Motor A
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
/*Exemplo de variacao de velocidade no motor B*/
//Sentido Horario
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
//velocidade de 0 a 255
while (velocidadeB < 255){
analogWrite(velocidadeB,velocidade);
velocidade = velocidade + 10;
delay(50);
}
//velocidade de 255 a 0
while (velocidadeB > 0){
analogWrite(velocidadeB,velocidade);
velocidade = velocidade - 10;
delay(50);
}
//Freia Motor B
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
}

57

7.1.4. Experimentando o prato


Se tudo der certo, o motor A irar girar para um lado com uma velocidade Alta,
depois intermediaria e finalmente devagar. Depois o motor B ir comear a girar variando
a velocidade da menor velocidade at a velocidade mxima e vice-versa.
O programa ir repetir esse procedimento continuamente.

7.2.

Entendendo o programa
Se voc observar bem, a nica diferena desse programa para o programa do

captulo anterior o uso do PWM no Enable A, para o motor A, e no Enable B, para o


motor B.
Ao executar o programa fcil reparar que quanto menor o valor de PWM que
colocamos no Enable da ponte H, menor a velocidade.
importante ressaltar, que devido ao fato de o motor ser um dispositivo que
envolve mecnica, existe a necessidade de uma fora mnima para que ele comece a rodar.
Para valores de PWM pequenos voc ir reparar que no h qualquer movimento do
motor. Dessa forma, existe um valor mnimo de PWM para que ele gire. Chamamos isso
de zona morta.
A zona morta vai variar de motor para motor, mesmo que seja de mesmo modelo.
Alguns motivos para a variao da zona morta:

Lubrificao;

Torque no eixo;

Especificao do motor.

Tal como a zona morta, cada motor tem uma curva de velocidade, isso pode ser
um problema na hora de fazer seu rob. Mas no nada que ser prejudicial em projetos
amadores.
Para projetos mais profissionais necessrio traar a curva de velocidade por
PWM do motor para que possamos implementa uma funo que aplique o PWM correto
para a velocidade desejada.
Outra soluo o uso de encoders, que so sensores que medem a velocidade do
motor. Assim podemos implementar um sistema de controle PID, por exemplo, que
corrija a o PWM para que a velocidade da roda seja a que desejamos.

58

8. Super desafio
Agora que chegamos ao final desta apostila com tanta coisa aprendida, que tal um
desafio?
Passarei dois, que julgo muito interessante e que vocs sero capazes de fazer com
tudo o que foi aprendido e mais alguma consulta na internet.

8.1.

Rob Autnomo

Sim, voc capaz! E vai ser muito divertido! Imagine a felicidade e orgulho que
dar vida a um rob. emocionante!
Vou comear com um projeto simples, e voc vai melhorando caso queira seguir
os desafios. Recomendo comprar um chassi 2wd pronto, para que voc possa focar no
que realmente importa.
Vamos l:

Tarefa 1: Construa um rob seguidor de linha. Para isso voc vai precisar
de alguns mdulos sensor de linha (geralmente usando o TCRT5000);

Tarefa 2: Construa um rob que desvie de obstculos usando dois sensores


ultrassnico HCSR04;

Tarefa 3: Construa um rob que desvie de obstculos (sensor ultrassnico


- HCSR04) e no caia em buracos (sensor seguidor de linha);

Tarefa 4: Faa um rob que siga a luz! (Dica, use 3 sensores de luz LDR
apontados para direes diferentes)

8.2.

Automao residencial

Na apostila Vol 2, no super desafio, sugeri que fizesse um sistema de automao


residencial. Voc fez? Vou colocar aqui novamente e acrescentar mais algumas coisas!!
Somando tudo que voc aprendeu na apostila Arduino Bsico vol.1,2 e 3, ns o
desafiamos a fazer um sistema de automao residencial. O seu sistema deve:
A. Detectar a presena de uma pessoa usando o sensor ultrassom. (Voc tambm
poder utilizar um sensor de presena PIR (HC SR501) que, apesar de no ter
sido explicado em nossa apostila, muito simples de usar;
B. Detectar um incndio atravs da temperatura muito alta da casa usando um
LM35. (Existem outros sensores mais adequados para esse tipo de aplicao,
tais como o sensor de chama. Caso queira, sinta-se vontade para us-lo);
C. Detectar se est de noite atravs de um sensor de luz LDR;
59

D. Usar um teclado matricial para configurar o sistema e ativar e desativar o


alarme com senha;
E. Acender 1 lmpada, caso seja noite, usando um mdulo rel;
F. Um alarme, de preferncia uma sirene de 127V ligada a um mdulo rel,
dever tocar, caso a temperatura do LM35 seja muito alta;
G. Esse alarme tambm deve tocar, caso acionado e uma pessoa seja detectada;
H. Medir umidade atravs do DHT11;
I.

Ter um display LCD que mostrar os valores lidos em cada sensor, se o


alarme est ligado ou desligado e o motivo do alarme, caso dispare;

J. Use um mdulo RTC para acionar sua cafeteira de manh.

60

Fundada em maro de 2014 com a filosofia de promover a mudana, o site Vida de


Silcio uma empresa que trabalha no ramo de Robtica e Sistemas Digitais fornecendo
produtos de excelente qualidade de diversas marcas para estudantes, entusiastas, Instituies
de Ensino e Empresas de Tecnologia.
Temos como misso disseminar e promover a eletrnica e a robtica, vendendo
produtos com preos justos e ensinando como us-los de forma didtica e organizada.
Estimulando assim, que mais pessoas exercitem sua criatividade, produzindo tecnologias
que possam mudar o cotidiano da humanidade.
Queremos estar presentes em cada nova ideia, em cada novo desafio e em cada
conquista daqueles que promovem a mudana das mais variadas formas usando como
ferramenta a tecnologia.

61

You might also like