Você está na página 1de 20

ROBTICA

Sensor Smart

Encoder
de Quadratura

Verso Hardware: 1.0


Verso Firmware: 2.0

REVISO 1211.19

www.robouno.com.br
Sensor Smart Encoder de Quadratura
1. Introduo
Os encoders so equipamentos utilizados para converter movimentos rotativos ou deslocamentos lineares em pulsos
eltricos, fornecendo uma quantidade fixa de pulsos por volta de um eixo ou por unidade de deslocamento linear. Existem
quatro tipos de encoders: os simples, os incrementais, os de quadratura e os encoders absolutos.

Encoders Simples
Os encoders simples identificam e contam pulsos eltricos sem reconhecer o sentido do movimento que gerou estes pulsos.
Por exemplo, se uma roda girar, o encoder reconhecer que a roda girou e o quanto girou, mas no identificar se ela girou
em sentido horrio e/ou anti-horrio.

Encoder Simples
1

1
0

0
1

0
(t)

Encoders Incrementais e de Quadratura


Os encoders incrementais e de quadratura identificam e contam pulsos eltricos alm de reconhecer o sentido do movimento
que gerou estes pulsos. Por exemplo, se uma roda girar, o encoder reconhecer que a roda girou, o quanto ela girou e em
qual sentido ela girou. A nica diferena entre o encoder incremental e o encoder de quadratura que a cada pulso que o
incremental reconhece, o de quadratura reconhece dois, o que duplica sua leitura e, consequentemente, duplica sua
preciso.

Encoder Incremental
01

01

01

01

01

01

01
10

10

10

10

10

10

10

10

0
1

0
(t)

Encoder de Quadratura
01

01

01

01

01

01

01
00
10

00
10

00
10

00
10

00
10

00
10

00
10

00
10
11

11

11

11

11

11

11

0
1

0
(t)

Encoder 2 www.robouno.com.br
Encoders Absolutos
O encoder absoluto o tipo de encoder mais completo que existe. Ele identifica e conta pulsos eltricos, distingue o sentido
do movimento que gerou estes pulsos, e reconhece em qual ngulo se encontra o eixo ou em qual posio se encontra o
mvel linear.

Encoder Absoluto

0001

0101

1001
0011

1011

1101
0000

0010

0100

1000

1010
0111
0110

1100

1110
1

0
1

0
1

0
1

0
(t)

2. Funcionamento
O sensor Smart Encoder Uno 1.0 enquadra-se no tipo encoder de quadratura. Funciona com dois mini transmissores e
receptores de luz infravermelha, atravs dos quais reconhece a rotao e sentido da roda. Com este sensor podemos definir
a velocidade linear, a velocidade angular, distncia percorrida e sentido de rotao da roda onde est instalado.

A imagem abaixo mostra o princpio de funcionamento dos mini sensores infravermelhos. Quando um material reflexivo
colocado na frente do componente infravermelho, ele reconhece e transforma essa informao em um sinal eltrico de nvel
lgico 0, e quando um material no reflexivo colocado na frente do componente infravermelho, ele reconhece e transforma
essa informao em um sinal eltrico de nvel lgico 1.

Luz IR refletida pela Luz IR absorvida pela


superfcie reflexiva superfcie no reflexiva

Reconhecido como Reconhecido como


2 x QRE1113GR nvel lgico 0 nvel lgico 1

Os discos de encoder utilizados nas rodas do rob UNO so feitos de um material reflexivo e so recortados da maneira
indicada esquerda da imagem abaixo. Com esse recorte, o Encoder de Quadratura UNO 1.0 reconhece 60 pulsos eltricos
a cada volta que o disco realiza, atravs das seguintes possibilidades de leituras:

Infras

Leituras: 00 01 11 10

Sempre que estes valores lgicos mudam de 00 para 01, 01 para 11, 11 para 10 e 10 para 00, o sensor reconhece que a roda
girou em sentido horrio. E sempre que estes valores lgicos mudam de 00 para 10, 10 para 11, 11 para 01 e 01 para 00, o
sensor reconhece que a roda girou em sentido anti-horrio.

Encoder 3 www.robouno.com.br
Por abordar o conceito de Sensor Smart, o Encoder Uno 1.0 reconhece e processa todas estas informaes obtidas por seus
sensores infravermelhos e as salva num registrador (varivel) prprio, que pode ser acessado pelo controlador atravs do
protocolo de comunicao SMARTUNO.

Este registrador armazena o nmero correspondente de pulsos relativo ao quanto a roda girou. Por exemplo, utilizando o
disco Uno de 60 ppr (pulsos por rotao) e o sensor em estado inicial (registrador zerado):

se a roda der uma volta no sentido horrio, o valor do registrador ser 60 (1 rotao x 60ppr = 60 pulsos);

se a roda der uma volta para a esquerda, o valor do registrador ser -60 (-1 rotao x 60ppr = 60 pulsos);

se a roda der duas voltas e meia para a direita, o valor do registrador ser 150 (2,5 rotaes x 60ppr = 150 pulsos);

se a roda der uma volta para a direita e depois uma volta para a esquerda, o valor do registrador ser 0;

Esta varivel do tipo signed int, ou seja, seu valor pode variar de -32.768 at 32.767.

Movimento Retilneo
Quando uma roda realiza uma volta completa, sabemos que seu deslocamento linear corresponde sua circunferncia.
Sabendo disto e sabendo o dimetro da roda, temos como descobrir o quanto essa roda se desloca a cada volta:

d = 118 mm

A partir dos clculos, chegamos a concluso de que a cada volta que a roda do rob UNO faz, o rob anda 370,7 mm.
Acrescentando, com este dado, a informao que a cada volta que o disco do encoder UNO reconhece por volta (60 pulsos),
fica fcil de descobrirmos o quanto o rob anda a cada pulso que o sensor reconhece:

Basta dividir a circunferncia da roda pelo


nmero de pulsos por volta do encoder:

C
D=
n
1 0
3 2

Onde:
4

D = distncia percorrida a cada pulso


5

C = tamanho da circunferncia
6

n = nmero de pulsos por volta


7

8
9
10
Aplicando a frmula:
1 370,7
D=
60
0 D = 6,18 mm
1

0 (t)
11
1
2

12
0

10

14
3

6
7
8
9

13
5

15

Encoder 4 www.robouno.com.br
Assim sendo, sempre que quisermos descobrir o nmero de pulsos que o encoder deve dar para o rob mover-se uma
determinada distncia, basta dividir esta distncia por 6,18:

Onde:
X N = nmero de pulsos correspondente a distncia desejada
N=
6,18 X = distncia desejada

Portanto, se acionarmos os dois motores com a mesma velocidade e mesmo sentido at que o Encoder conte 150
pulsos, a distncia percorrida ser de 92,7 cm:

150 x 6,18 = 927 mm

Movimento Circular
Ao acionarmos as duas rodas principais do rob Uno com a mesma velocidade e com sentidos de rotao contrrios uma da
outra, o rob rotacionar no seu prprio eixo. Como a distncia entre as rodas do rob de 170 mm, o rob, nestas
condies, realizar um movimento circular com um dimetro de 170 mm. A partir destes dados, podemos calcular:

Tamanho da circunferncia Sabendo o tamanho da circunferncia, descobre-se quantos


resultante do movimento: pulsos o encoder dar nesta volta para realizar uma volta
completa:
Onde:
C = Circuferncia a ser realizada
d D = distncia percorrida a cada pulso
N = pulsos necessrios

Assim, so necessrios 86,4 pulsos do encoder para o rob realizar uma rotao completa no seu prprio eixo. Como o
nmero de pulsos uma grandeza inteira, no h como obtermos 0,4 pulsos, portanto, para efeitos prticos, arredondamos o
valor para 86 pulsos.

Continuando a calcular, podemos relacionar o nmero de pulsos com o ngulo da rotao: realizar uma volta completa o
mesmo que realizar uma rotao de 360. Ento, possvel descobrir a relao entre o nmero de graus de uma rotao
qualquer e o nmero de pulsos necessrios:

Exemplo de aplicao

Para o rob rotacionar


273, qual o nmero de
Onde: pulsos necessrios?
N = pulsos para uma rotao de 360
NG = nmero de graus por pulso

Ao rotacionar no prprio eixo,


cada pulso do encoder refere-se a 273
4,2
65 pulsos

Encoder 5 www.robouno.com.br
Podemos tambm realizar um outro tipo de curva onde podemos aplicar os clculos anteriores: parando uma roda e
acionando a outra. Desta maneira, o crculo formado ter o dobro do dimetro do crculo dos clculos anteriores:

Tamanho da circunferncia Sabendo o tamanho da circunferncia, descobre-se


resultante do movimento: quantos pulsos o encoder dar para
realizar uma volta completa:

Onde:
C = Circuferncia a ser realizada
D = distncia percorrida a cada pulso
N = pulsos necessrios

Assim, so necessrios 172,8 pulsos do encoder para o rob fazer uma rotao completa. Como o nmero de pulsos uma
grandeza inteira, no h como obtermos 0,8 pulsos, portanto, para efeitos prticos, arredondamos o valor para 173 pulsos.

Podemos relacionar novamente o nmero de pulsos com o ngulo da rotao: realizar uma volta completa o mesmo que
realizar uma rotao de 360. Ento, possvel descobrir a relao entre o nmero de graus de uma rotao qualquer e o
nmero de pulsos necessrios:

Onde: Ao rotacionar, cada pulso


N = pulsos para uma rotao de 360 do encoder refere-se a
NG = nmero de graus por pulso 2,1

Resta tratarmos a possibilidade de realizarmos curvas com um centro de giro maior que a largura do rob e com um ngulo
predefinido, como mostra a imagem abaixo. Neste caso, basta calcular a relao do nmero de pulsos que o encoder da roda
externa da curva precisa dar (n2), com o nmero de pulsos que o encoder da roda interna da curva precisa dar (n1).

Primeiro, calculamos as circunferncias: Depois, dividimos as circunferncias pela distncia


que cada roda anda por pulso do encoder, obtendo
assim, quantos pulsos so necessrios para as
rodas andarem as circunferncias calculadas.
Onde:
r = raio da circunferncia interna
l = distncia entre as rodas
C1 e C2 = circunferncias formadas pelas rodas

Onde:
N1V = pulsos da roda interna para completar uma volta
N2V = pulsos da roda externa para completar uma volta
D = distncia percorrida a cada pulso do encoder
l
Agora, podemos calcular o arco da circunferncia:
r

Relao entre o nmero de pulsos da roda externa pelo


nmero de pulsos da roda interna para a rotao:

Encoder 6 www.robouno.com.br
3. Montagem do Sensor no Rob UNO
O rob UNO geralmente trabalha com dois encoders: um para cada roda principal. Devemos fixar cada encoder de modo que
fique voltado para o disco dentado aplicado na roda.

Utilizando uma chave de fenda Philips, retire o parafuso de fixao da roda e tire a roda.

Prenda o sensor no chassi lateral, usando dois parafusos de 20 mm de cabea abaulada, dois espaadores de 12 mm e duas
porcas. Para apertar os parafusos, use a chave sextavada pequena fornecida com o sensor.

Repare que existem 4 furos no chassi lateral para posicionamento do encoder, utilize somente os dois mostrados na imagem.
Neste passo importante utilizar o sensor correto para cada lado do rob. Observe atentamente o posicionamento deste
encoder. A chave DIP deve estar voltada para o chassi lateral e apontando para cima.

01 Sensor Encoder
02 Parafusos 3x20mm
02 Espaadores 12mm
02 Porcas

Use estes furos


para prender o sensor

Cabea
abaulada
Observe a
posio correta
do sensor

Encoder 7 www.robouno.com.br
Aps fixar o sensor no chassi, conecte o cabo com 4 vias no sensor, inserindo o conector do cabo at o final dos pinos no
sensor.

Tome o cuidado de conectar o cabo de maneira que o fio


marrom fique conectado ao pino GND do sensor (indicado
na parte traseira do sensor).

Para mais detalhes sobre a ligao, consulte a seo 4.


Conexes.

Conforme indicado na imagem ao lado, dobre o cabo junto


ao conector, de modo que ele permita que a roda gire
livremente. Voc pode, na parte superior do chassi,
posicionar o cabo pela lateral do controlador at chegar
porta Sensores Smart.

O cabo pode ser passado para a parte traseira do rob pelo espao entre o controlador e o chassi principal. Na seo 4.
Conexes veremos como conectar o sensor ao controlador corretamente.

Recoloque a roda e, usando uma chave de fenda phillips, aperte o parafuso central.

Agora vamos colocar o outro sensor Encoder. Retire o parafuso de fixao da roda utilizando uma chave de fenda Philips e
remova a roda.

Encoder 8 www.robouno.com.br
Prenda o sensor no chassi lateral, usando dois parafusos de 20 mm de cabea abaulada, dois espaadores de 12 mm e duas
porcas. Aperte os parafusos usando a chave sextavada pequena.

Novamente, utilize somente os dois furos mostrados na imagem. Observe atentamente o posicionamento do encoder. A
chave DIP deve estar voltada para o chassi lateral e apontando para cima.
01 Sensor Encoder
02 Parafusos 3x20mm
02 Espaadores 12mm
02 Porcas

Use estes furos


para prender o sensor
Cabea
abaulada

Observe a
posio correta
do sensor

Aps fixar o sensor no chassi, conecte o cabo com 4 vias no sensor, inserindo o conector do cabo at o final dos pinos no
sensor.

Tome o cuidado de conectar o cabo de maneira


que o fio marrom fique conectado ao pino GND
do sensor (indicado na parte traseira do
sensor).

Para mais detalhes sobre a ligao, consulte a


seo 4. Conexes.

Para terminar a montagem dos sensores, recoloque a roda principal e prenda


o seu parafuso com uma chave Phillips.

Encoder 9 www.robouno.com.br
4. Conexes
Como todo Sensor Smart Uno, o Encoder pode ser conectado qualquer uma das portas de comunicao Sensores Smart
do controlador Uno. Para conectarmos o sensor no controlador, usamos o cabo com 4 vias fornecido junto com o sensor. Este
cabo, alm de alimentar o sensor, tambm fornece as vias de comunicao entre o controlador e o sensor. Observe sempre o
sentido da conexo do cabo, pois o pino GND do sensor deve ser ligado no pino GND das portas Sensor Smart do
controlador, assim como os pinos 5V, Data e Clock devem ser conectados entre s.

Por padro, ligue o fio marrom sempre no pino GND, tanto do sensor quanto do controlador

Clock Clock
Data Data
5V 5V
GND GND

Fio Marrom

Insira o conector do
cabo at a base dos pinos
Pino GND

Fio Marrom
Pino GND

Insira o conector do
cabo at a base dos pinos

5. LED Indicador
O Sensor Smart Encoder possui um LED indicador azul na sua parte frontal. No momento em que o sensor alimentado, o
LED comea a piscar indicando que o sensor est ligado e funcionando. O LED pisca mais rpido quando o programa do rob
UNO configura o sensor para gerar algum tipo de interrupo.

O LED indicador tambm pode ser desabilitado, embora o sensor continue funcionando normalmente. Esta
opo til para economia de baterias. Consulte a seo 8. Comandos de configurao e acesso para
verificar como habilitar e desabilitar o LED indicador.

Encoder 10 www.robouno.com.br
6. Configurao do Endereo
Todos os Sensores Smart trabalham em comunicao com o controlador via protocolo SMARTUNO. Neste protocolo, os
perifricos (sensores, mdulos, comunicadores, etc.) possuem tipos e endereos pr-determinados. O valor do tipo fixo e
vem configurado de fbrica, variando seu valor de acordo com o modelo do perifrico. J o endereo pode assumir valores
entre 0 e 255 e pode ser configurado pelo usurio.

O tipo e o endereo permitem o acesso individual ao sensor, independente da porta Sensores


Smart do controlador que esteja conectado. Ao enviarmos requisies ou pacotes de
configuraes, devemos informar o endereo do sensor que deve receber as informaes.

O valor do endereo definido pelo estado das chaves DIP do sensor:

DIP Chaves Endereo DIP Chaves Endereo

Valor da
08
memria

01 09

02 10

03 11

04 12

05 13

06 14

07 15

Sempre que for alterar o endereo do sensor, desligue o rob ou desconecte o cabo do sensor.

Quando configuramos o endereo para o valor da memria (todas as chaves desligadas), o sensor busca na sua memria
EEPROM o valor do endereo. Este endereo vem configurado de fbrica com o valor 255. Ou seja, quando desligamos
todas as chaves do DIP do sensor, ele assume o endereo 255.

Para alterar o valor do endereo armazenado na memria devemos usar os blocos de comando especficos para
configurao dos Sensores Smart no Studio UNO. A seo Alterando o Endereo da Memria explica todos os passos para
mudar o endereo salvo na memria do sensor.

Encoder 11 www.robouno.com.br
7. Usando o sensor no Studio UNO
Com os encoders j montados e configurados, podemos us-los em nossos programas no Studio UNO. Para isso, temos que
informar ao Studio UNO o tipo e o endereo de cada sensor a ser utilizado, para assim, termos acesso aos blocos de
comando especficos do sensor. Sempre que criamos um programa novo, devemos adicionar os sensores que iremos usar
no programa.

1
2
Neste primeiro exemplo usaremos apenas o Encoder da
esquerda.

Selecione o nvel 2 da linguagem (avanado) no Studio


UNO.
3 Aps, selecione a categoria Sensores Smart e clique no
boto Adicionar um Sensor.

Na janela Sensor Smart que aparece, selecione o tipo do


sensor: Encoder.

No campo Endereo, digite o nmero do endereo do


sensor a ser adicionado. Neste exemplo, usaremos o
endereo 1.
1
Por ltimo, clique no boto OK para confirmar.

No esquea de configurar o sensor Ultrassom no rob


para o endereo 1, ligando apenas a chave 1 do DIP.

2 3

O bloco que d acesso leitura atual do sensor encoder


fica disponvel na paleta de blocos. Podemos usar o bloco
como qualquer outro bloco de valor do Studio UNO.

Sempre que usar o bloco, selecione o endereo do sensor


no menu do bloco:

Lembre-se que o valor retornado refere-se ao nmero de


pulsos lidos e que este valor incrementado ou
decrementado de acordo com o sentido do giro da roda.
Este valor do tipo signed int.

Pronto! O Sensor Smart Encoder j est adicionado ao


Studio UNO. Agora vamos fazer um programa que o utilize.

Encoder 12 www.robouno.com.br
Monte o programa conforme a imagem ao lado. Compile e
grave o programa no seu rob Uno.

Este programa ficar escrevendo no display o valor da


leitura atual do sensor Encoder. O tipo retornado pelo bloco
signed int, e seu valor pode variar de -32768 32767.

O valor que ser escrito no display corresponde ao nmero


de pulsos referentes ao nmero de voltas e sentido do
movimento da roda, sendo que 60 pulsos refere-se a uma
volta completa. Assim, se no display for escrito 420,
significa que a roda deu sete voltas. Nmeros negativos
indicam que o movimento foi em sentido anti-horrio.

Sentido horrio

Sentido anti-horrio

Agora vamos criar outro programa usando o Encoder UNO, com uma aplicao mais prtica. O objetivo fazer o rob andar
um metro para frente e parar:

Utilizando a frmula da pgina 5, onde X corresponde distncia desejada, N ao nmero de pulsos correspondente a
distncia desejada e D distncia percorrida a cada pulso do encoder, obtemos o nmero de pulsos que o encoder deve dar
para o rob andar a distncia desejada:

Crie um novo arquivo no Studio UNO e adicione um sensor


do tipo Encoder com endereo 1.

Monte o programa como na imagem ao lado.

Verifique se o sensor encoder esquerdo do seu rob est


configurado com o endereo 1.

Compile e grave o programa no rob UNO. Execute o


programa em uma rea com espao suficiente e mea a
distncia percorrida pelo rob, que dever ser de 1 metro.

Encoder 13 www.robouno.com.br
8. Comandos de configurao e acesso
O Sensor Smart Encoder Uno possui uma grande quantidade de comandos de configurao e acesso s leituras. Os
comandos de configurao controlam o modo do funcionamento do sensor. Com estes comandos, voc pode configurar o
funcionamento do LED indicador e, at mesmo configurar o sensor para gerar interrupes no controlador para
determinados eventos.

Para se ter acesso a todos os blocos de configurao do


sensor, basta selecionar o nvel 3 da linguagem
(profissional) no Studio UNO. No nvel 2, apenas alguns
comandos esto disponveis.

Todos os blocos de configurao e acesso especficos do


tipo do sensor esto a disposio na categoria Sensores
Smart.

Para visualizar a tela de ajuda especfica do bloco, voc


pode clicar com o boto direito do mouse sobre o bloco e
escolher o item Ajuda no menu que aparecer.

Veja a seguir a descrio de cada bloco de configurao e acesso do sensor Encoder e sua utilizao.

Vetor de interrupo do Sensor Smart. Este bloco inicia a lgica de tratamento da


interrupo configurada para o sensor selecionado.

Este bloco retorna o cdigo referente a qual interrupo o sensor est configurado
para responder. Para interpretar este cdigo veja os exemplos:

Se nenhum bit estiver setado, o sensor no


est configurado para gerar interrupes

Bit 0 setado: o sensor est configurado para


gerar interrupes a cada "X" pulsos do
encoder.

Bit 1 setado: o sensor est configurado para


gerar interrupes quando o nmero de
pulsos lidos passar de menor para maior que
o valor configurado.

Bit 2 setado: o sensor est configurado para


gerar interrupes quando o nmero de
pulsos lidos passar de maior para menor que
o valor configurado.

Verifica se ocorreram interrupes. Caso tenham acontecido, executa a rotina de


tratamento da interrupo. Isso tambm feito automaticamente pelo Studio UNO.

Encoder 14 www.robouno.com.br
Envia comandos de configurao ao sensor que no requerem a passagem de
parmetros. Estes comandos so:

Configura o sensor para no gerar mais


interrupes de nenhum tipo.
Configura o sentido horrio para que a
contagem dos pulsos seja incrementada no
registrador do sensor.
Configura o sentido anti-horrio para que a
contagem dos pulsos seja incrementada no
registrador do sensor.
Zera o valor do registrador do sensor.
Liga o LED indicador do sensor. Sempre que
o sensor for ligado, o LED acende por padro.
Desliga o LED indicador. Apesar do LED estar
desligado, o sensor continua funcionando
normalmente. Este bloco geralmente usado
para economia de energia.
Envia comandos de configurao ao sensor que requerem a passagem de
parmetro. Estes comandos so:

Configura o sensor para gerar interrupes a


cada 300 pulsos contados pelo sensor.
Configura o sensor para gerar interrupes
quando o nmero de pulsos contados pelo
sensor passar de menor para maior que 450.
Configura o sensor para gerar interrupes
quando o nmero de pulsos contados pelo
sensor passar de menor para maior que 550.
Configura o sensor para gerar interrupes a
cada 500 milissegundos.
Configura a sensibilidade para deteco dos
pulsos. Varia de 0 a 15. Padro: 4. Quanto
mais alto o valor menor a sensibilidade.
Altera o valor do endereo do sensor gravado
na memria EEPROM para 44. O sensor
assumir este endereo quando sua chave
DIP for configurada para valor da memria:

Encoder 15 www.robouno.com.br
Retorna o valor da leitura atual do sensor Encoder. Este valor refere-se ao nmero
de pulsos detectados e do tipo signed int.

Este bloco refere-se a uma varivel signed int, que armazena o valor do registrador
do sensor no momento em que a interrupo foi gerada. Normalmente, so usados
dentro das rotinas de tratamento das interrupes.

9. Alterando o Endereo da Memria


Para mudarmos o endereo armazenado na memria EEPROM do sensor, devemos desconectar os cabos de todos os
outros sensores Encoder conectados ao controlador UNO, deixando conectado apenas o sensor que iremos trocar o
endereo da memria. Isto evita que ocorram conflitos de endereamento. Lembre-se que cada Sensor Smart deve ter um
endereo nico entre todos os sensores do mesmo tipo.

Para se ter acesso ao bloco de configurao do sensor que


permite que alteremos o endereo da memria, devemos
selecionar o nvel 3 da linguagem (profissional) no Studio
UNO.

Selecione a categoria Sensores Smart. O bloco que


devemos usar para mudar o endereo o bloco
Endereo Novo
Encoder: envia comando com um parmetro.
atual Endereo
Observe na imagem ao lado o programa que muda o
Comando para
alterar o endereo endereo do sensor Encoder 1 para o endereo 44.
da memria
Basta agora, compilar, gravar e executar o programa no
rob UNO. Aps a execuo, o endereo da memria ser
alterado para 44. Lembre de configurar a chave DIP
adequadamente conforme indicado abaixo:

A chave DIP do sensor que vamos alterar o endereo da memria deve estar configurada para endereo 1, conforme
exemplo acima.

Aps executarmos o programa, devemos desligar o rob e desligar todas as chaves do DIP switch do sensor. Assim, o sensor
estar configurado para o endereo da memria 44. Voc pode usar a rea esquerda do sensor para escrever o endereo
atual da memria. Agora, se quiser usar o endereo 1 novamente, basta configurar a chave DIP adequadamente, pois ela tem
precedncia sobre o endereo da memria. Mesmo fazendo isso, o valor configurado do endereo da memria no ser
apagado.

Encoder 16 www.robouno.com.br
10. Interrupes
Uma caracterstica bastante interessante dos Sensores Smart Uno a possibilidade de serem configurados para gerarem
interrupes no programa que est sendo executado no controlador.

Interrupes so eventos que alteram o fluxo normal do programa do controlador. So condies onde o controlador para de
executar o programa principal e executa uma rotina especfica para tratar o evento detectado. No caso dos Sensores Smart,
estas interrupes recebem a classificao de interrupes externas.

Para demonstrar a utilizao das interrupes, segue abaixo um programa em que utilizamos uma interrupo em sua lgica.

O objetivo o mesmo do ltimo programa mostrado, fazer


o rob andar um metro para frente e parar.

Crie um novo arquivo no Studio UNO e adicione um sensor


do tipo Ultrassom com endereo 1.

A rotina principal do programa ir zerar o contador do


encoder e configurar o sensor para gerar uma interrupo
sempre que o contador do encoder passar de menor para
maior de 162. Aps, o programa aciona os motores para
frente.

Verifique se o sensor encoder esquerdo do seu rob est


configurado com o endereo 1.

Para tratar a interrupo configurada, usamos o bloco Sensor Smart ultrassom 1. Sempre que ocorrer uma interrupo os
blocos desta pilha sero executados. Neste caso, paramos os motores com um comando pare motores.

Compile e grave o programa no rob UNO. Execute o programa em uma rea com espao suficiente e mea a distncia
percorrida pelo rob, que dever ser de 1 metro.

Encoder 17 www.robouno.com.br
Observaes e Recomendaes
As interrupes so caractersticas avanadas, disponibilizadas pelos Sensores Smart e tratadas pelo Studio UNO. Por isso
requerem um grau de conhecimento em programao maior para sua utilizao. Se no utilizadas com cuidado e
corretamente, podem fazer o programa ter um comportamento errtico e de difcil visualizao da origem do erro lgico.

Assim, listamos abaixo algumas observaes importantes e recomendaes fundamentais para desenvolver programas
usando interrupes com os sensores encoder:

O sensor encoder pode ser configurado para responder a apenas um evento por vez, ou seja, quando configuramos o
sensor para gerar interrupes para determinada condio, a configurao anterior apagada.

Quando o sensor desligado, sua configurao perdida. Apenas o endereo do sensor, se configurado na memria,
permanece gravado quando o sensor desligado e ligado.

Pode-se configurar o sensor para gerar interrupes em qualquer parte do programa, como por exemplo, em resposta
ao pressionamento de uma tecla ou at mesmo dentro de uma rotina de tratamento de interrupo pode-se mudar sua
configurao para outro evento.

S pode haver uma rotina de tratamento de interrupo por sensor.

Evite usar rotinas de tratamento que demorem muito para serem executadas.

Se durante a execuo de uma rotina de tratamento ocorrem outras interrupes, elas s sero tratadas aps o
trmino da rotina de tratamento atual.

Geralmente, no so utilizados laos sempre dentro de rotinas de tratamento, pois o programa nunca terminaria o
tratamento e a execuo no voltaria para a rotina principal nem seriam tratadas novas interrupes.

O bloco processa eventos no pode ser colocado dentro de rotinas de tratamento de interrupes, pois ele geraria
reentrncia (rotina chamando ela mesma), o que no permitido pelo compilador.

Procure usar o bloco Buffer Encoder dentro das rotinas de tratamento para ter acesso ao valor do sensor, pois estes
blocos possuem o valor do sensor no momento em que a interrupo foi gerada.

Encoder 18 www.robouno.com.br
11. Especificaes Tcnicas

* Alimentao: 5V

A
B

D
F

Clock Clock
Data Data
5V 5V
GND GND

Encoder 19 www.robouno.com.br
ESQUEMA ELTRICO Sensor Smart Encoder UNO 1.0

Encoder
20
www.robouno.com.br

Você também pode gostar