74
Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação Sergio Danton Machado Geisler Sistema de Visão Computacional Curitiba 2006

Sistema de Visão Computacional - up.edu.br · Figura 2.14. Forma de representação em eixos de uma figura Figura 2.16. Passos fundamentais em processamento de imagens Figura 2.17

Embed Size (px)

Citation preview

Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET

Engenharia da Computação Sergio Danton Machado Geisler

Sistema de Visão Computacional

Curitiba

2006

2

Centro Universitário Positivo - UnicenP

Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação

Sergio Danton Machado Geisler

Sistema de Visão Computacional

Monografia apresentada à disciplina de Projeto Final, como requisito parcial à conclusão do Curso de Engenharia da Computação. Orientador: Prof. Alessandro Zimmer

Curitiba

2006

3

4

AGRADECIMENTOS

A Deus sem o qual nada seria possível; A toda minha família, em

especial meu pai Sergio Carneiro Geisler, pela construção da esteira e por tudo

mais em que me ajudou e minha mãe Nara Regina Machado Geisler por

trabalhar mais para ajudar a pagar meus estudos e por suportar a desordem

em casa; Ao meu professor orientador Alessandro Zimmer por sua

indispensável orientação durante todo o desenvolvimento do projeto; A todos

os meus professores e colegas que de alguma forma me agregaram

conhecimento durante minha vida acadêmica, principalmente minha colega

Vanessa Freire com a qual pude compartilhar muitos conhecimentos e que me

apoiou em muitos momentos.

5

SUMÁRIO

1. INTRODUÇÂO ......................................................................................... 13

2. REVISÃO BIBLIOGRÁFICA ............................................................................. 15

2.1. Microcontrolador 8051 ................................................................. 15

2.1.1. Características do microcontrolador 8051 ..................... 15

2.1.2. Descrição dos pinos do microcontrolador 8051 ............ 16

2.1.3. Memória do microcontrolador 8051 ................................ 18

2.1.3.1.Bancos de registradores do microcontrolador

8051 ...................................................................................... 20

2.1.3.2. Registradores de funções especiais .................... 21

2.1.4. Clock e Reset ..................................................................... 24

2.1.5. Interrupção ......................................................................... 25

2.1.5.1. Propriedades da interrupção ................................ 25

2.1.5.2. Interrupções no microcontrolador 8051 .............. 25

2.1.5.3. Programando as interrupções no microcontro-

lador 8051 ............................................................................ 28

2.1.6. Timer ........................................................................... 29

2.1.7. Canal Serial ................................................................ 30

2.2. Motores DC ................................................................................... 31

2.3. Fototransistores ........................................................................... 35

2.4. Processamento digital de imagens ............................................ 36

2.4.1. Aquisição de imagens ...................................................... 37

2.4.2. Armazenamento ................................................................ 38

2.4.3. Pré – processamento ........................................................ 38

2.4.4. Segmentação ..................................................................... 38

2.4.4.1. Detecção de bordas ............................................... 39

6

2.4.4.2. Limiarização ........................................................... 40

2.4.5. Afinamento ........................................................................ 40

2.4.6. Perseguição de contorno ................................................. 41

3. ESPECIFICAÇÂO .................................................................................... 42

3.1 Descrição ....................................................................................... 42

3.2. Hardware ....................................................................................... 42

3.2.1. Construção da esteira ...................................................... 42

3.2.2. Funções do hardware ....................................................... 49

3.2.3. Componentes do hardware .............................................. 50

3.2.4. Firmware ............................................................................ 50

3.2.5. Diagrama em blocos do sistema ..................................... 51

3.2.6. Seqüência de funcionamento ......................................... 51

3.3. Especificação de Software .......................................................... 52

3.3.1 Funções do software ......................................................... 52

3.3.2. Ambiente de desenvolvimento ........................................ 52

3.3.3. Funcionamento do software ............................................ 52

3.3.4. Processamento digital de imagens ................................. 53

3.4. Requisitos Mínimos ..................................................................... 56

4. PROJETO ................................................................................................ 57

4.1. Hardware ....................................................................................... 57

4.1.1. Sinais de interface ............................................................. 57

4.1.2. Lista de componentes ......................................................

58

4.1.2.1. Lista de componentes da placa do

microcontrolador 8051 ....................................................... 58

4.1.2.2. Lista de componentes das placas de interface ... 58

7

4.2. Software ........................................................................................ 59

4.2.1.Diagrama de contexto .......................................................

59

4.2.2. Diagrama de casos de uso ............................................... 60

4.2.3. Diagrama de classes ......................................................... 60

4.2.4. Fluxograma ........................................................................ 61

4.2.5. Diagramas de seqüência .................................................. 62

4.2.6. Interface ............................................................................. 65

4.3. Firmware ........................................................................................ 67

4.3.1. Diagrama de estados ........................................................ 67

4.3.2. Fluxograma do firmware .................................................. 67

5. RESULTADOS ......................................................................................... 68

6. CONCLUSÃO .......................................................................................... 70

7. CRONOGRAMA ...................................................................................... 71

8. LEVANTAMENTO DE CUSTOS .............................................................. 72

9. REFERÊNCIAS BIBLIOGRÁFICAS ....................................................... 73

10. ANEXOS ................................................................................................

75

10.1 Diagramas esquemáticos de Hardware ..................................... 75

10.1.1. Interface com os displays de 7 segmentos .................. 75

10.1.2. Circuito do microcontrolador 8051 ................................ 76

10.1.3. Circuitos de interface dos motores DC com o

microcontrolador ......................................................................... 77

10.1.4. Circuito de interface serial ............................................. 79

10.1.5. Circuito de interface com o sensor e os leds

Indicativos .................................................................................... 79

10.2. Layouts ....................................................................................... 80

8

LISTA DE FIGURAS

Figura 1.1. Esteira

Figura 1.2. Diagrama em blocos do sistema

Figura 2.1. Pinagem nos microcontroladores da família 8051

Figura 2.2. Arquitetura básica do microcontrolador 8031

Figura 2.3. Disposição dos blocos de memória da RAM interna

Figura 2.4. Disposição dos bancos registradores

Figura 2.5. Circuito de clock do microcontrolador 8031

Figura 2.6. Circuito de reset do microcontrolador 8031

Figura 2.7. Ilustração do processo de interrupção não vetorada

Figura 2.8. Processo de interrupção da /INT0

Figura 2.9. Motor DC utilizado em vidro elétrico de automóveis

Figura 2.10. Desenho esquemático representando o funcionamento de um motor

elétrico

Figura 2.11. Ilustração do comutador e das escovas

Figura 2.12. Funcionamento do comutador

Figura 2.13. Circuito básico de utilização do fototransistor

Figura 2.14. Forma de representação em eixos de uma figura

Figura 2.16. Passos fundamentais em processamento de imagens

Figura 2.17. Detecção de bordas por operadores de derivação

Figura 3.1. Desenho técnico da esteira

Figura 3.2. Desenho técnico da lateral esquerda da esteira

Figura 3.3. Desenho técnico das laterais superior e inferior da esteira

Figura 3.4. Desenho técnico do suporte da câmera e da luminária

Figura 3.5. Desenho técnico do suporte da câmera e da luminária vista de outro lado

Figura 3.6. Desenho técnico da base de sustentação da câmera no suporte

Figura 3.7. Desenho técnico do emissor de laser

Figura 3.8. Desenho técnico do suporte do emissor de laser

Figura 3.9. Desenho técnico do encaixe do fototransistor

Figura 3.10. Desenho técnico do suporte do fototransistor

Figura 3.11. Desenho técnico do separador

Figura 3.12. Desenho técnico do Painel de Controle

Figura 3.13. Diagrama em blocos do sistema

Figura 3.14. Processamento de Imagem utilizado no sistema

Figura 3.15. Imagem obtida após o pré-processamento

Figura 3.16. Imagem obtida após a limiarização

9

Figura 3.17. Imagem obtida após a detecção de cantos

Figura 4.1. Diagrama de contexto do sistema

Figura 4.2. Diagrama de casos de uso

Figura 4.3. Diagrama de classes

Figura 4.4. Fluxograma do software

Figura 4.5: Diagramas de seqüência de Inicio com o objeto Imagem

Figura 4.6. Diagramas de seqüência de Inicio com o objeto Captura

Figura 4.7. Diagramas de seqüência de ConfVideoSource com o objeto Captura

Figura 4.8. Diagramas de seqüência de ConfFormatoDeVideo com o objeto Captura

Figura 4.9. Diagramas de seqüência de Form1 com o objeto Captura

Figura 4.10. Diagrama de seqüência dos métodos de EnviarrByte();

Figura 4.11. Diagrama de seqüência dos métodos de ReceberByte();

Figura 4.12. Tela inicial do Software

Figura 4.13. Tela de configuração do formato de vídeo

Figura 4.14. Tela de configuração do Vídeo Source

Figura 4.15. Tela de configuração de caixa

Figura 4.16. Diagrama de estados

Figura 4.17. Fluxograma do firmware

Figura 5.1. Situações em que o sistema apresentou sucesso

Figura 5.2. Valores de sombra e cor para o sistema apresentar sucesso

Figura 5.3. Valores comparativos

Figura 10.1. Diagrama esquemático da interface com os displays de 7 segmentos.

Figura 10.2. Diagrama esquemático do circuito do microcontrolador 8051.

Figura 10.3. Diagrama esquemático do primeiro circuito de interface dos Motores

DC com o microcontrolador

Figura 10.4. Diagrama esquemático do segundo circuito de interface dos Motores

DC com o microcontrolador

Figura 10.5. Diagrama esquemático da interface serial.

Figura 10.6. Diagrama esquemático da interface com o sensor e os leds indicativos

Figura 10.7. Layout da placa do microcontrolador.

Figura 10.8. Layout da placa de interface com os displays de 7 segmentos.

Figura 10.9. Layout da placa de interface serial.

Figura 10.10. Layout da primeira placa de interface com os motores DC.

Figura 10.11. Layout da segunda placa de interface com os motores DC.

Figura 10.12. Layout da segunda placa de interface com os leds indicativos e com o

sensor.

10

LISTA DE TABELAS

Tabela 2.1: Seleção dos bancos de registradores

Tabela 2.2: Disposição dos Registradores de Função Especial na memória.

Tabela 2.3: Endereços de Interrupção

Tabela 2.4: Registrador IE e seus endereços

Tabela 2.5: Registrador IP e seus endereços

Tabela 2.6: Registrador TCON e seus endereços

Tabela 2.7: Registrador TMOD e seus endereços

Tabela 2.8: A outra metade do registrador TCON e seus endereços

Tabela 2.9: Registrador SCON

Tabela 2.10: Programação dos modos de transmissão serial

Tabela 2.11: Seqüência de ativação das bobinas no motor de passo

unipolar

Tabela 2.12: Seqüência de ativação das bobinas no motor de passo

unipolar para se ter o aumento de torque

Tabela 2.13: Seqüência de pulsos para o motor de passo bipolar

Tabela 2.14: Estrutura de vizinhança de 8

Tabela 4.1: Sinais de interface

Tabela 4.2. Lista de componentes da placa do microcontrolador 8051

Tabela 4.3. Lista de componentes da placa de interface serial

Tabela 4.4. Lista de componentes das placas de interface

11

RESUMO

Este documento descreve a construção detalhada de um sistema que

separa objetos de acordo com suas dimensões através da sua imagem. O

sistema conta com uma esteira pela qual os objetos passarão, uma câmera

que irá realizar a captura de imagem e com um software integrado à esteira

que tratará a imagem.

O hardware do projeto consiste na esteira e na câmera. A esteira possui

um microcontrolador que realizará através do seu firmware o controle sobre o

motor DC que fará a esteira rodar, sobre o motor que atuará no dispositivo

separador, sobre os displays de sete segmentos que contarão o número de

caixas que passaram e sobre o fototransistor que detectará o momento em que

a imagem deve ser capturada. A câmera será acionada pelo software que fará

a interface com a esteira quando o fototransistor detectar a passagem de um

objeto e estará conectada diretamente ao computador. A esteira também

possuirá um sistema de iluminação simples para melhorar as condições de

captura de imagem.

Através da comunicação serial a esteira será controlada pelo software,

que por sua vez fará a interface com o usuário. Além disso, o software realizará

o tratamento da imagem capturada retirando as informações de algumas

dimensões do objeto e apresentará os resultados.

Para efeitos de validação do projeto serão utilizadas caixas de diversos

tamanhos como objetos a serem analisados pelo sistema.

12

ABSTRACT

This document describes the detailed construction of a system that

separates objects in accordance with your dimensions through your image. The

system counts on a mat for which the objects will pass, a camera that will go to

carry through the capture of image and with a software integrated to the mat

that will treat the image.

The hardware of the project consists of the mat and the camera. The mat

posses a microcontroller that will carry through its firmware the control on the

DC engine that will make the mat to twirl, on the engine that will act in the

separating device, on displays of seven segments that will count the number of

boxes that had passed and on the phototransistor that the moment will detect

where the image must be captured. The camera will be set in motion by the

software that will make the interface with the mat when the phototransistor to

detect the ticket of an object and will be connected directly to the computer. The

mat also will possess a simple lighting system to improve the conditions of

image capture.

Through of the serial communication the mat will be controlled for

software, that in turn will make the interface with the user. Moreover, software

will carry through the treatment of the captured image removing the information

of some dimensions of the object and will present the results.

For the purpose of validation of the project boxes of diverse sizes will be

used as objects to be analyzed for the system.

13

1. INTRODUÇÃO

A rapidez nos procedimentos industriais é cada vez mais necessária para

uma indústria estar bem colocada no mercado. Para obter essa rapidez as

indústrias estão cada vez mais automatizando seus processos. Dessa forma,

os sistemas mecânicos, elétricos e computacionais são de grande importância

para essa automatização. A automatização dos processos industriais se torna

mais eficaz com esses tipos de sistema porque sistemas não sofrem o

desgaste físico e mental que um ser humano sofre ao realizar certos

processos. Além disso, a capacidade de um sistema pode ir muito além da

capacidade de um ser humano. Por exemplo, um sistema computacional pode

realizar milhares de cálculos por segundo, coisa que é impossível para um

homem.

A automatização também pode trazer mais segurança aos processos

industriais. Um ser humano após muitas horas de trabalho sofre um desgaste

físico e mental de forma que poderia deixar passar algumas falhas em um

determinado processo.

Tendo isso em vista, automatizar um processo de separação de caixas

pode ter muita utilidade numa indústria. Ao invés de se ter uma pessoa

realizando esse processo, pode-se ter um sistema eletromecânico separando

fisicamente as caixas, controlado por um sistema computacional. Dessa forma,

evitam-se erros humanos, se tem um controle maior sobre a situação e um

sistema pode estar trabalhando o tempo todo.

Esse processo de separação das caixas é muito usado nas indústrias

para a estocagem de materiais. A tecnologia usada neste projeto para alcançar

esse fim, será a da visão computacional.

A visão computacional consiste em fazer com que o computador retire

informações de uma imagem. Isso se consegue com algoritmos de

processamento de imagens. O interesse por esses algoritmos surgiu com a

necessidade da melhoria da informação visual e com a necessidade de realizar

a percepção de dados de imagens através das máquinas.

Aproveitando que o sistema contará com um processamento de imagens,

pode-se também monitorar melhor o sistema, sendo que, se ocorrer alguma

14

falha, o indivíduo que estiver controlando o sistema através do software poderá

ver o problema através da imagem que estará sendo exibida no computador.

O sistema tem como objetivo atender às características citadas

anteriormente utilizando-se da tecnologia e ainda, com novas implementações,

permitir outras aplicações na indústria. A primeira figura abaixo é uma foto

tirada da esteira deste projeto e a segunda figura é um diagrama em blocos do

sistema.

Figura 1.1. Esteira

Fonte: Geisler, 2006

Figura 1.2. Diagrama em blocos do sistema

Fonte: Geisler, 2006

15

2. REVISÃO BIBLIOGRÁFICA

2.1. Microcontrolador 8051

Os microcontroladores são dispositivos que estão sendo cada vez mais

usados em projetos de eletrônica digital. Isso se deve à sua grande

compatibilidade de periféricos, a sua relativa facilidade de programação e ao

seu baixo custo.

As vantagens dos sistemas microcontrolados sobre os sistemas

microprocessados, são que os microcontroladores possuem vários elementos

internos como contadores, canal de comunicação serial, temporizadores e

memórias. Esses elementos, no caso dos sistemas microprocessados, tinham

suas funções desempenhadas por chips separadamente. Além do tamanho

reduzido, os microcontroladores apresentam uma facilidade maior de

programação tendo em vista que seus periféricos são considerados como

memória pela CPU interna.

2.1.1. Características do microcontrolador 8051

Os microcontroladores são sistemas seqüenciais síncronos. Esses

sistemas têm por característica executarem uma instrução a cada ciclo de clock

ou a cada grupo de ciclos de clock (SILVA JÚNIOR, 1998).

O microcontrolador 8051 pertence à família de microcontroladores 8051 e

geralmente é utilizado com clock de 12MHz. Esse clock é dividido internamente

pelo fator 12, o que significa que cada instrução será executada em 1µs (SILVA

JÚNIOR, 1998). Isso também quer dizer que a cada 1µs um ciclo de clock é

usado. Existem instruções que levam mais de um ciclo de máquina para serem

executadas. Há instruções de 1 ciclo, 2 ciclos e 4 ciclos de máquina.

O microcontrolador da família 8051 que será usado é uma versão um

pouco diferente do microcontrolador 8051, pois o microcontrolador AT89S8252

não possui a memória ROM interna como os microcontroladores 8051 e sim

uma memória flash de 4kbytes interna.

16

Em termos de memória o microcontrolador 8051 ainda conta com uma

memória RAM interna de 128 bytes expansível para 64 kbytes externos. Essa

memória RAM é a memória de dados.

O hardware do microcontrolador também conta com quatro portas de I/O,

sendo que cada uma possui 8 bits individualmente endereçáveis. Além disso,

possui uma estrutura de interrupção com nesting (quando uma interrupção

pode interromper uma outra que já está sendo atendida desde que tenha maior

prioridade), dois contadores/temporizadores de 16 bits, um oscilador de clock

interno (que requer apenas um cristal e mais dois capacitores) e por fim, um

canal de comunicação serial full-duplex (SILVA JÚNIOR, 1998).

2.1.2. Descrição dos pinos do microcontrolador 8031

A figura 2.1 mostra a pinagem da família de microcon-troladores 8051, nas

duas formas de encapsulamento. A primeira forma de encapsulamento é a DIL

e a segunda é a QUAD PACK.

Figura 2.1. Pinagem nos microcontroladores da família 8051

Fonte: Silva Júnior, 1998

Do pino 1 ao pino 8 temos o port P1, que vai de P1.0 a P1.7. Estes pinos

são bidirecionais, podendo ser endereçáveis individualmente ou como porta de

17

8 bits. Possuem resistores de pull-up internos, forçando assim nível lógico alto.

Cada pino pode acionar até 4 portas TTL-LS.

O pPino 9 (RST/VPD) é o pino do reset. Com a aplicação de um nível

lógico alto, este pino reseta o sistema por, pelo menos, dois ciclos de máquina,

tendo um resistor de pull-down interno permitindo que se use apenas um

capacitor externo para obter o reset por power-on.

Do pino 10 ao pino 17 temos o port P3, que vai de P3.0 a P3.7. Tem as

mesmas características de funcionamento do port P1, tendo também outras

funções especiais que estão descritas abaixo:

- pino 10 = P3.0 RXD/ Data : entrada de dados serial.

- pino 11 = P3.1 TXD/Clock: saída de dados serial.

- pino 12 = P3.2 INT0: interrupção externa de número 0, ativo em nível

lógico baixo.

- pino 13 = P3.3 INT1: interrupção externa de número 1, ativo em nível

lógico baixo.

- pino 14 = P3.4 T/C0 : entrada externa para o temporizador/contador de

eventos.

- pino 15 = P3.5 T/C1: entrada externa para o temporizador/ contador de

eventos.

- pino 16 = P3.6 WR: strobe (sinalizador) de escrita de dados externo.

- pino 17 = P3.7 RD : strobe (sinalizador) de leitura de dados externo

O pino 18 é o XTAL 2 que é saída do amplificador inversor do oscilador e

entrada para o clock interno ou externo.

O pino 19 é o XTAL 1 que é a entrada do amplificador inversor do

oscilador e deve ser conectado ao terra em caso de clock externo.

O pino 20 é o VSS conectado ao terra do circuito.

Do pino 21 ao pino 28 temos o port P2, que vai de P2.0 a P2.7 e possui as

mesmas características de funcionamento do port P1, sendo estes pinos

usados como pinos de endereçamento externo endereçando a parte mais

significativa dos 16 bits (A8 a A15).

O pino 29 é o PSEN (Program Store Enable) que é a saída para

habilitação do programa externo. Também é um sinalizador de leitura da

memória de programa externa e quando o microcontrolador busca instruções

este pino vai ao nível lógico zero.

18

O pino 30 é o ALE (Address Latch Enable) que é uma saída habilitadora

do latch de endereços, separando o barramento de dados da parte menos

significativa do barramento de endereços que são multiplexados pelo port P0.

O pino 31 é o EA (External Enable) que é uma entrada de seleção de

memórias. Quando colocado em nível lógico baixo, a CPU executa somente as

instruções da memória de programa externa; quando em nível lógico alto, a

CPU executa as instruções da memória de programa interna (se existir).

Do pino 32 ao pino 39 temos o Port P0 que vai de P0.0 a P0.7. Este é um

port de 8 bits bidirecional com dreno aberto. Sem resistores de pull-up internos,

funciona como um barramento de dados, e a parte menos significativa do

barramento de endereços.

No pino 40, encontramos o VCC que é o pino de Alimentação positiva.

2.1.3. Memória do microcontrolador 8051

O esquema da figura 2.2 representa a arquitetura básica para a utilização

de um microcontrolador 8031.

Figura 2.2. Arquitetura básica do microcontrolador 8051

Fonte: Mohr, 2004

A memória no microcontrolador 8051 está dividida em memória de

programa e memória de dados. A memória de programa é uma ROM externa

que pode ter até 64 kbytes.

A memória de dados é uma RAM interna que também pode ter até 64

kbytes externos. Essa memória RAM está dividida em três blocos, dois de 128

19

bytes mapeados nos endereços 00H até 7FH e 80H até FFH e mais 20

registradores de funções especiais espelhados pelos endereços de 80H até

FFH. Os acessos aos blocos são feitos através dos modos de endereçamento

o que distingue dois blocos cujos endereços coincidam (MOHR, 2004). O

esquema da Figura 2.3 mostra melhor a disposição dos blocos da memória

RAM interna.

Figura 2.3. Disposição dos blocos de memória da RAM interna

Fonte: Mohr, 2004

A memória RAM do microcontrolador também pode ser estendida

externamente. Nesse caso, há endereços coincidentes com toda faixa de

endereços da memória de programa e com a faixa de endereços da memória

de dados interna.

A primeira distinção é feita pelo pino PSEN que habilita a memória

correspondente. Esse pino é habilitado quando se realiza a leitura da instrução

MOVC, que transfere dados entre a memória de programa e os registradores.

Já na segunda distinção, o microcontrolador oferece o uso de duas

instruções: a MOV para o acesso da memória interna e a MOVX para o acesso

de dados externos (o X vem de external). Nesse caso é necessário o

endereçamento indireto.

20

2.1.3.1.Bancos de registradores do microcontrolador 8051

Os bancos de registradores nada mais são do que posições na memória

RAM que permitem seu endereçamento pelo nome de cada registro, além de

seu endereçamento pela posição da memória. (NICOLOSI, 2001)

Utilizar-se de bancos de registradores resulta em algumas vantagens.

Estas vantagens estão relacionadas ao seu uso pelo sistema como índice para

endereçamento e ao fato de ser mais fácil de lembra seu nome. Uma outra

vantagem que pode ser levada em conta é a de que os registradores são

amplamente usados pelos compiladores de linguagem de alto nível.

Os registradores estão dispostos em 4 bancos de 8 registradores que

correspondem aos primeiros 24 bytes da memória RAM interna. Em cada

banco os registradores são nomeados como R0, R1, R2, R3... R7 e podem ser

endereçados através de seus nomes. Essa nomenclatura é a mesma para

todos os bancos de registradores e o que define qual banco vai ser usado, é a

configuração do registrador PSW que possui dois bits o RS1 e o RS2 que

permite o endereçamento dos 4 bancos de registradores. A figura 2.4 mostra

como estão dispostos os bancos de registradores na memória.

Figura 2.4. Disposição dos bancos registradores

Fonte: Mohr, 2004

A tabela 2.1 descreve a lógica de controle aplicada aos pinos RS1 e RS0

para realizar o controle de qual banco de registradores será selecionado.

21

Tabela 2.1. Seleção dos bancos de registradores

Fonte: Mohr, 2004

Acima dos bancos de registradores, nos endereços de 20H a 2FH, existe

uma região de 16 bits que pode ser endereçada individualmente pelo

programador. Para isso são usadas as instruções SETB (set bit), CLR (clear) e

CPL (complemento). A diferença é que estes não podem ser acessados pelo

nome. (MOHR, 2004).

2.1.3.2. Registradores de funções especiais

São como os registradores dos bancos de registradores, podem ser

acessados pelo seu nome, porém eles têm uma função já determinada dentro

do microcontrolador. Dentre eles estão as posições de acesso aos ports,

registradores de interrupção, registradores de porta serial, temporizadores e

registradores aritméticos. Podem ser acessados individualmente ou pelo

endereço do primeiro bit no caso de registradores situados em endereços

múltiplos de 8. Abaixo estará uma breve descrição desses registradores e em

seguida uma tabela com seus nomes e endereços.

ACC (E0) – Acumulador: Apesar de se ter o costume de chamá-lo de

ACC, o seu nome para ser acessado no programa é A. Como seu próprio nome

já diz, ele é usado para guardar um valor.

P0 (80H), P1 (90H), P2 (A0H) e P3 (B0H): Registradores especiais dos

ports de comunicação. O port P0 multiplexa endereços/dados no caso em que

se utiliza memória externas, como no caso do microcontrolador 8031. No P1

ficam os pinos de propósito geral, onde costuma-se acoplar os periféricos. O

P2 é o port dedicado exclusivamente ao gerenciamento de endereços quando

se usa memória externa. O port P3 possui os pinos compromissáveis com

algum periférico ou comunicação externa.

22

B (F0): É um registrador usado para se guardar um valor para se realizar

uma operação de multiplicar ou dividir (MUL AB e DIV AB), tirando esses casos

é usado como um registrador comum.

PSW (D0H) – Program Status Word: Este registrador indica o status da

última operação realizada no acumulador. O PSW.7 corresponde ao flag de

carry, o “vai um” das operações aritméticas. É usado em várias instruções

booleanas como operando. O PSW.6 é o flag de carry auxiliar, ou seja, é o “vai

um” dos primeiros 4 bits do acumulador. O PSW.5 é um bit registrador de uso

geral, sem função específica. O PSW.4 e o PSW.3 correspondem ao RS1 e ao

RS2 citados anteriormente e servem para fazer a seleção do banco de

registradores a ser utilizado, conforme a tabela 1. O PSW.2 é um bit de

overflow flag que vai para 1 quando, após uma adição ou subtração, acontece

um “estouro” da conta. O PSW.1 é um bit não disponível ao usuário. O PSW.0

é um bit que é setado se a paridade do acumulador for ímpar.

IE (A8H - Interrupt Enable) e IP(B8H -Interrupt Priority): Permitem

programar as prioridades, o modo e a liberação de interrupções internas e

externas.

DPTR - DPH e DPL (83H e 82H): Correspondem a dois registradores, que

juntos possuem 16 bits, usados como ponteiros em algumas instruções de

acesso a memória.

SP (81H - Stack Pointer): Registrador 8 bits usado para armazenar o

endereço para o topo de uma pilha. As instruções PUSH (insere um elemento

na pilha) e POP (remove um elemento da pilha) incrementam e decrementam o

SP.

PCON (87H – Power Control Register): Permite adaptar o chip a uma

situação na qual não há processamento, onde se querem manter os conteúdos

das memórias internas.

TCON (88H – Timer Control Register) e TMOD (89H): São os

registradores que permitem o controle e modo de operação dos

Timers/contadores.

SCON (98H – Serial Port Control Register) e SBUF (99H – Serial Buffer):

Permitem respectivamente, programar a porta de comunicação serial e

armazenamento do dado recebido ou a ser transmitido.

23

TH1 (8DH), TH0 (8CH), TL1 (8BH), TL0 (8AH): contêm os valores de

contagem dos timers/counters.

Abaixo, na Tabela 2.2, encontra-se a disposição dos registradores de

função especial na memória e os endereços dos mesmos.

Tabela 2.2. Disposição dos Registradores de Função Especial na memória.

Fonte: Nicolosi, 2001

24

2.1.4. Clock e Reset

Pode - se definir clock como relógio interno do microprocessador para a

execução seqüencial de qualquer atividade interna ou externa à máquina.

(NICOLOSI, 2001). Como já foi mencionado o microcontrolador utiliza um clock

de 12MHz e o seu circuito é constituído de um cristal e dois capacitores, como

pode ser visto na figura abaixo.

C3

33p

Xtal 1

Xtal 2

8031

X111,0592MHzC2

33p

Figura 2.5. Circuito de clock do microcontrolador 8051

O reset consiste em um pino do microcontrolador que deve ter um circuito

capaz de deixar o pino RST por dois ciclos de máquina no estado “1” no

ligamento do chip. O pino de reset é responsável por forçar os registradores a

irem para estados definidos. Além disso, o circuito deve forçar o reset por uma

chave. O circuito do RESET está na Figura 2.6.

R110k

8031VCC

SW1 C1

10uRST

Figura 2.6. Circuito de reset do microcontrolador 8051

25

2.1.5. Interrupção

A Interrupção consiste em um sinal enviado ao microcontrolador que o

leva a suspender as tarefas em execução para atender ao evento que gerou o

sinal de interrupção. Após o término do serviço de interrupção o

microcontrolador retorna à execução da tarefa que estava executando antes.

2.1.5.1. Propriedades da interrupção

A interrupção pode ser vetorada ou não vetorada. No caso da não

vetorada, o microprocessador tem um endereço fixo de desvio. E no caso da

vetorada, o microprocessador permite o envio de um endereço de desvio.

O microcontrolador também possui uma propriedade chamada de

mascaramento que consiste em permitir ou não, que certo dispositivo

interrompa sua tarefa em execução. Pode ser implementada via hardware ou

via software.

A prioridade é uma propriedade na qual o microcontrolador permite o

atendimento de mais de uma interrupção. A prioridade indica qual interrupção

será atendida antes. As interrupções de maior prioridade são atendidas antes.

Outra propriedade importante é a origem da interrupção. A origem pode

ser interna ou externa e ser tratada por dispositivos internos ou externos.

E por fim, tem-se a propriedade do tipo de disparo das interrupções

externas ao chip. De acordo com a sua programação o microcontrolador

permite ser interrompido externamente por nível (0 ou 1), por borda (subida ou

descida) ou pela combinação de ambos.

2.1.5.2. Interrupções no microcontrolador 8051

O microcontrolador 8031 possui cinco fontes de interrupção:

- Interrupção externa /INT0 (B2H): pino físico de interrupção que deve ser

ativado via software, juntamente com sua prioridade de atuação.

- Interrupção externa /INT1 (B3H): é semelhante ao /INT0.

26

- Interrupção gerada pelo TIMER/COUNTER 0: interrupção interna gerada

pelo pino TIMER_0.

- Interrupção gerada pelo TIMER/COUNTER 1: interrupção interna gerada

pelo pino TIMER_1.

- Interrupção pela serial: é uma interrupção interna gerada pelo periférico

SERIAL.

Tabela 2.3. Endereços de Interrupção

Fonte: Nicolosi, 2001

O processo de interrupção na família 8051 é não vetorada. Segue abaixo

uma ilustração desse processo.

Figura 2.7. Ilustração do processo de interrupção não vetorada

Fonte: Nicolosi, 2001

27

Figura 2.8. Processo de interrupção da /INT0

Fonte: Nicolosi, 2001

28

2.1.5.3. Programando as Interrupções no microcontrolador 8051

Para se programar utilizando interrupções, levam-se em conta os dois

registradores de interrupção, o IE e o IP.

O IE é o responsável por determinar qual tipo de interrupção será usada.

O bit EA é um bit que aciona as outras chaves. O ES é habilitado quando há

uma interrupção por parte do periférico da serial. O EX0 e o EX1 são usados

para as interrupções internas /INT0 e /INT1 respectivamente. Assim como, o

ET0 e o ET1 são usados para as interrupções dos TIMERS/COUNTERS 0 e1.

Todos esses bits fazem parte do registrador IE, conforme a tabela abaixo:

IE EA - - ES ET1 EX1 ET0 EX0

A8H AF - - AC AB AA A9 A8

Tabela 2.4. Registrador IE e seus endereços

Fonte: Adaptada de Nicolosi, 2001

Tem-se ainda o IP que é o registrador que define a prioridade das

interrupções. O bit PS serve para definir a prioridade da serial. O PT0 e o PT1

servem para definir a prioridade dos TIMERS/COUNTERS 0 e1. O PX0 e o

PX1 servem para definir a prioridade das interrupções internas /INT0 e /INT1.

Isso sendo que, setar um determinado bit com “1” significa colocar o dispositivo

no grupo de alta prioridade e setar com “0” significa colocar o dispositivo no

grupo de baixa prioridade.

IP - - - PS PT1 PX1 PT0 PX0

B8H - - - BC BB BA B9 B8

Tabela 2.5. Registrador IP e seus endereços

Fonte: Adaptada de Nicolosi, 2001

Ainda se pode definir o modo de acionamento das interrupções que pode

ser por borda ou pro nível. O registrador TCON possui 4 bits que podem se

usados para esse fim. Para acionar as interrupções internas por nível deve-se

29

setar em “0” os bits IT1 e/ou IT0. Para acionar por borda deve-se setar com “1”.

O IE0 e o IE1 servem para verificar se o pino físico realmente disparou a

interrupção. A Tabela abaixo mostra os endereços do registrador TCON.

TCON - - - - IE1 IT1 IE0 IT0

88H - - - - 8B 8A 89 88

Tabela 2.6. Registrador TCON e seus endereços

Fonte: Adaptada de Nicolosi, 2001

2.1.6. Timer

O microcontrolador 8051 possui dois timers/counters internos

programáveis. Um timer é um grupo de flip-flops em arranjo de “divisor por 2”

acionado pelo mesmo clock do microcontrolador. Esse clock é dividido por 12

antes de entrar nos timers.

Para se programar os timers, usam-se dois Registradores de Função

especial que são o TMOD e o TCON.

Podem-se programar os dois timers em quatro modos de operação:

- Modo 0: Contador com capacidade máxima de 13 bits.

- Modo 1: Contador com capacidade máxima de 16 bits.

- Modo 2: Contador com capacidade máxima de 6 bits e auto-reload.

- Modo 3: Contador misto usado em aplicações especiais.

Existe um registrador que seleciona o modo de operação dos timers que é

o TMOD. Isso é feito pelos bits M1 e M0 de cada timer. A disposição dos bits

M0 e M1 no registrador TMOD pode ser vista na seguinte tabela.

TMOD GATE C/T M1 M0 GATE C/T M1 M0

89H * * * * * * * *

TIMER1 TIMER0

Tabela 2.7. Registrador TMOD e seus endereços

Fonte: Adaptada de Nicolosi, 2001

30

O registrador TCON possui uma outra metade relativa aos timers. Nele se

tem os bits TR1 e TR0 que ligam uma contagem com ”1” ou desligam com “0”.

Os bits TF1 e TF0 são flags que indicam estouro de contagem (overflow). A

outra metade não mencionada do TCON segue na tabela 2.8

TCON TF1 TR1 TF0 TR0 - - - -

88H 8F 8E 8D 8C - - - -

Tabela 2.8. A outra metade do registrador TCON e seus endereços

Fonte: Adaptada de Nicolosi, 2001

2.1.7. Canal Serial

O canal de comunicação serial do microcontrolador 8051 possui dois

registradores o SCON que realiza o controle da serial e o SBUF que é

responsável pela transmissão e recepção (NICOLOSI, 2001).

A transmissão serial pode ser síncrona ou assíncrona. A transmissão

serial síncrona usa uma saída para envio ou recepção e outra para levar um

sinal de sincronismo, para o receptor saber quem é o bit 0 e o bit 1 na

transmissão. Além disso, é necessário enviar um byte inicial de geração do

sincronismo e um byte no fim da transmissão para indicar que a mesma

acabou. O modo assíncrono não depende de sinal de sincronismo, pois cada

byte transmitido possui um padrão de transmissão. Todo byte possui um bit de

inicio e um de fim.

O controle da serial é realizado pelo registrador SCON, que é responsável

pelo status e pelo modo de transmissão do periférico serial.

SCON SM0 SM1 SM2 REN TB8 RB8 TI RI

98H 9F 9E 9D 9C 9B 9A 99 98

Tabela 2.9. Registrador SCON

Fonte: Adaptada de Nicolosi, 2001

31

Os bits SM0 e SM1, em parceria, são responsáveis por dizer qual dos

quatro modos de trabalho da serial está sendo usado, conforme a tabela

abaixo:

MODO SM0 SM1 COMUNICAÇÂO TAMANHO BAUD-RATE

0 0 0 Síncrona 8 bits fclk/12

1 0 1 Assíncrona 8 bits Dado por Timer

1

2 1 0 Assíncrona 9 bits fclk/32 ou fclk/64

3 1 1 Assíncrona 9 bits Dado por Timer

1

Tabela 2.10. Programação dos modos de transmissão serial

Fonte: Adaptada de Nicolosi, 2001

O bit SM2 é usado para multiprocessamento. O bit REN permite iniciar

uma recepção. Os bits TB8 e RB8 servem para enviar um nono bit com cada

byte. Os bits TI e RI são flags de interrupção para a transmissão e recepção.

O registrador PCON também é usado para programar a serial, porém é só

o bit de SMOD que é de interesse. Esse bit dobra a divisão de freqüência da

SERIAL.

2.2. Motores DC

A rotação dos motores elétricos é a base do funcionamento de muitos

equipamentos amplamente usados pelo ser humano, como é o caso dos

eletrodomésticos, equipamentos de informática, robôs, etc.

Os motores DC em especial, são usados quando a alimentação disponível

é de corrente contínua. A alimentação desses motores geralmente varia de 3V

a 12V, o que permite seu amplo uso em equipamentos digitais como

computadores por exemplo e em equipamentos cuja alimentação elétrica se dá

por baterias como é o caso dos automóveis, câmeras filmadoras, etc. A figura a

seguir mostra um motor DC utilizado em vidros elétricos de automóveis.

32

Figura 2.9. Motor DC utilizado em vidro elétrico de automóveis

Fonte: Geisler, 2006

O giro do rotor de um motor elétrico é causado por um torque, que é

produzido por forças eletromagnéticas desenvolvidas entre os pólos

magnéticos do rotor e os do estator. Essas forças podem ser de atração ou de

repulsão e elas empurram ou puxam os pólos móveis do rotor. Isso faz o motor

girar cada vez mais rápido até que o torque resultante seja zero e

consequentemente a velocidade angular se torne constante.

Figura 2.10. Desenho esquemático representando o funcionamento de um

motor elétrico

Fonte: Ferraz Neto, 2003

Em (a) os pólos magnéticos da bobina são atraídos pelos pólos

magnéticos opostos dos ímãs fixos. Depois, como se pode ver em (b), a bobina

gira para levar esses pólos magnéticos o mais perto possível um do outro mas,

33

(c) ao chegar nessa posição o sentido da corrente é invertido e (d) agora os

pólos que se defrontam se repelem, continuando a impulsionar o rotor

Entretanto, por ser movido a pilhas ou baterias, o funcionamento de um

motor DC é um pouco mais complexo. Não basta apenas colocar ímãs

permanentes fixos e uma bobina, pela qual circule corrente elétrica, de modo

que possa girar entre os pólos desses ímãs. Uma corrente contínua, como é a

fornecida por pilhas ou baterias, é muito boa para fazer eletroímãs com pólos

imutáveis mas, como para o funcionamento do motor é preciso periódicas

mudanças de polaridade, algo tem que ser feito para inverter o sentido da

corrente nos momentos apropriados

Na maioria dos motores elétricos DC, o rotor é um eletroímã que gira entre

os pólos de ímãs permanentes estacionários. Para tornar esse eletroímã mais

eficiente o rotor contém um núcleo de ferro, que o torna fortemente

magnetizado, quando a corrente flui pela bobina. O rotor girará desde que essa

corrente inverta seu sentido de percurso cada vez que seus pólos alcançam os

pólos opostos do estator. O modo mais comum para produzir essas reversões

é usar um comutador (FERRAZ NETO, 2003).

Figura 2.11. Ilustração do comutador e das escovas

Fonte: Ferraz Neto, 2003

A corrente flui ora num sentido ora no outro, no rotor desse motor CC,

graças às escovas de metal (esquerda da ilustração). Essas escovas tocam o

comutador do rotor de forma que a corrente inverte seu sentido a cada meia

volta do rotor (FERRAZ NETO, 2003).

Em sua forma mais simples, um comutador apresenta duas placas de

cobre encurvadas e fixadas isoladamente no eixo do rotor; os terminais do

enrolamento da bobina são soldados nessas placas. A corrente elétrica chega

por uma das escovas, entra pela placa do comutador, passa pela bobina do

34

rotor, 'sai' pela outra placa do comutador e 'retorna' á fonte pela outra escova.

Nessa etapa o rotor realiza sua primeira meia-volta. A figura a seguir ilustra o

processo (FERRAZ NETO, 2003).

Figura 2.12. Funcionamento do comutador

Fonte: Ferraz Neto, 2003

Nessa meia-volta, as placas do comutador trocam seus contatos com as

escovas e a corrente inverte seu sentido de percurso na bobina do rotor. E o

motor CC continua girando, sempre com o mesmo sentido de rotação.

Mas, o motor CC acima descrito tem seus problemas. Primeiro não há nada

que determine qual será o sentido de sua rotação na partida, tanto poderá

iniciar girando para a 'esquerda' como para a 'direita'. Segundo, é que por

vezes, as escovas podem iniciar tocando ambas as placas ou eventualmente

nenhuma; o motor 'não dá partida'! Para que a partida se dê com total

confiança e no sentido certo é preciso que as escovas sempre ‘enviem’

correntes para o rotor e que não ocorra nenhum curto circuito entre as placas

devido às escovas (FERRAZ NETO, 2003).

Na maioria dos motores CC consegue-se tais exigências colocando-se

várias bobinas no rotor, cada uma com seu par de placas no comutador.

Conforme o rotor gira, as escovas suprem a corrente para as bobinas, uma de

cada vez, uma após a outra. A 'largura' das escovas também deve ser bem

planejada (FERRAZ NETO, 2003).

O rotor de um motor CC gira com velocidade angular que é proporcional à

tensão aplicada em suas bobinas. Tais bobinas têm pequena resistência

elétrica e conseqüentemente seriam percorridas por intensas correntes

elétricas se o rotor permanecesse em repouso. Todavia, uma vez em

35

movimento, as alterações do fluxo magnético sobre tais bobinas, geram uma

força contra-eletromotriz extra em energia daquela corrente e baixa as tensões

elétricas sobre tais bobinas. O torque resultante se anulará quando essa

f.c.e.m. se igualar á tensão elétrica aplicada; a velocidade angular passa a ser

constante (FERRAZ NETO, 2003).

Em geral, carregando-se o motor, sua rotação não varia acentuadamente,

mas, uma maior potência será solicitada da fonte de alimentação. Para alterar

a velocidade angular devemos alterar a tensão aplicada ao motor (FERRAZ

NETO, 2003).

O sentido de rotação do rotor depende das assimetrias do motor e

também do sentido da corrente elétrica, invertendo-se o sentido da corrente o

motor começará a girar para trás. (FERRAZ NETO, 2003).

2.3. Fototransistores

Todos os transistores são componentes sensíveis à luz. Os

fototransistores são os transistores que são projetados para fornecer alguma

maneira de se explorar essa característica dos transistores.

Um transistor comum apresenta três terminais: base, coletor e emissor. Já

um fototransistor pode apresentar somente dois: o coletor e o emissor. Nesse

caso a base é que é sensível à luz.

O princípio de funcionamento de um fototransistor é bem simples. Quando

a base do fototransistor for sensibilizada a luz, o transistor estará em estado de

condução. Caso contrário estará no estado de corte.

VCC

D1

LED

R1470

U 1L14G1/TO

FT

Figura 2.13. Circuito básico de utilização do fototransistor

Fonte: Adaptado de www.rogercom.com

36

2.4. Processamento digital de imagens

O processamento digital de imagens nasceu da necessidade de se

realizar a transmissão e impressão de imagens (GONZALES, 2000). Um dos

problemas a serem resolvidos é a melhoria da qualidade visual dessas

imagens digitais.

Processar uma imagem significa aplicar métodos nas imagens visando à

melhora de sua qualidade em uma transmissão ou para se retirar alguma

informação de uma figura.

Uma imagem pode ser representada como uma função bidimensional de

intensidade da luz f (x, y), onde x e y são componentes espaciais e f (x, y) o

brilho da imagem naquele ponto. Uma imagem digital, conseqüentemente,

pode ser representada por uma função f (x, y) discretizada, em coordenadas

espaciais e em brilho. Outra forma de representar uma imagem é uma matriz

de “pixels”. (GONZALES, 2000).

Figura 2.14. Forma de representação em eixos de uma figura

Fonte: Bastos, 2002

Figura 2.15. Passos fundamentais em processamento de imagens

Fonte: Adaptado de Gonzales, 2000.

37

2.4.1. Aquisição de imagens

O primeiro passo é a aquisição da imagem, para isso, é necessário um

elemento sensor que capture a imagem e um elemento capaz de digitalizar o

sinal do sensor. Esse sensor pode ser uma câmera e o sinal pode ser

digitalizado por um conversor analógico digital, caso a câmera não realize a

conversão.

Dentre as categorias de sensores é válido citar os sistemas imageamento

de raios X, luz visível e infravermelha.

No caso dos raios-X, a imagem é adquirida através da diferença de

absorção dos raios X pelo objeto.

Nos outros casos, utilizam-se microdensitrômetros, analisadores de

imagem, câmeras vidicon e matrizes de estado sólido fotossensíveis. Os

microdensitrômetros exigem que a imagem a ser digitalizada esteja na forma

de filme negativo ou positivo ou fotografia. As câmeras vidicon e as matrizes de

estado sólido fotossensíveis aceitam imagens nessa forma e ainda podem

digitalizar imagens naturais de intensidade luminosa suficiente para excitar o

detector.

2.4.2. Armazenamento

O armazenamento digital de imagens é dividido em três categorias

principais:

- Armazenamento por curto tempo: Usada durante o processamento e é

provido pela memória computacional.

- Armazenamento On-line: Seu acesso é relativamente rápido e ocorre

nos discos magnéticos.

- Armazenamento em arquivos: Usado quando o armazenamento não

requer acessos freqüentes.

38

2.4.3. Pré - Processamento

O processamento envolve procedimentos algorítmicos e a maioria de suas

funções costumam ser implementadas em software. O hardware especializado

é usado quando há a necessidade de velocidade.

As técnicas de processamento servem para melhorar a qualidade da

imagem digitalizada para que se obtenham mais chances de sucesso nas

etapas seguintes. O pré-processamento tipicamente envolve técnicas para o

realce de contrastes, remoção de ruído e isolamento de regiões cuja textura

indique a probabilidade de informação alfanumérica (BASTOS, 2002).

2.4.4. Segmentação

Segmentar consiste em dividir a imagem em diferentes regiões, que serão

posteriormente analisadas por algoritmos especializados em busca de

informações ditas de "alto-nível" (ALBUQUERQUE, 2000).

Costuma - se usar as técnicas de segmentação para separar duas ou

mais áreas em uma imagem digital. Uma situação em que isso é bastante

importante é quando se quer separar um objeto do fundo na imagem. Isso

resulta em uma imagem binária com apenas 2 tons de cinza, um para o fundo

que costuma ser branco e outro para o objeto que costuma ser preto.

.

2.4.4.1. Detecção de bordas

Uma borda é o limite entre duas regiões com propriedades relativamente

distintas de nível de cinza (GONZALES, 2000). Essa técnica consiste em obter

a derivada primeira e a derivada segunda de um ponto da imagem a partir de

um operador diferencial. A derivada primeira é usada para detectar a presença

de borda e a derivada segunda é usada para determinar em qual parte o pixel

está. Conforme a figura 2.15:

39

Figura 2.16. Detecção de bordas por operadores de derivação

Fonte: Gonzales, 2000.

2.4.4.2. Limiarização

A limiarização é uma técnica de segmentação em que há um determinado

limiar T que separa o objeto do fundo. Esse limiar é um valor de níveis de

cinza. Se o pixel tiver seus níveis de cinza maior que o limiar T ele pertence a

um dos grupos, se for menor ou igual pertence a outro.

40

2.4.5. Afinamento

A técnica de afinamento que costuma ser usada é a de regiões binárias. O

método consiste em aplicar sucessivamente de dois passos aos pontos de

contorno da região. Um ponto de contorno é um pixel de valor 1 que possua

pelo menos 1 vizinho de 8 com valor 0 (GONZALES, 2000).

p9 p2 p3

p8 p1 p4

p7 p6 p5

Tabela 2.14. estrutura de vizinhança de 8

Fonte: Gonzales, 2000

O primeiro passo determina que um ponto deve ser eliminado se:

a) 2 = N(p1) = 6;

b) S(p1) =1;

c) p2*p4*p6 = 0;

d) p4*p6*p8 = 0;

Onde N(p1) é o numero de vizinhos não nulos de p1.

No segundo passo, as condições c e d são alteradas para:

c’) p2*p4*p8 = 0;

d’) p2*p6*p8 = 0;

Dessa forma, para uma iteração tem-se:

1) Aplicação do primeiro passo para marcar os pontos de borda a serem

apagados.

2) Eliminação dos pontos marcados.

3) Aplicação do segundo passo para marcar os ponto de borda a serem

apagados.

4) Eliminação dos pontos marcados

As iterações se repetem até que não se tenham mais pontos que possam

ser eliminados, ou seja, quando todas as condições dos dois passos forem

violadas em uma só iteração.

41

2.4.6. Perseguição de contorno

Para se perseguir um contorno basta se saber a direção dos pixels e ir

analisando um por um. Se isso for feito contando os pixels que já foram

analisados é possível se ter o tamanho de uma linha em pixels. Assim, usando-

se uma pequena associação de escalas, é possível se ter o tamanho de uma

dimensão de um objeto real, a partir da imagem.

42

3.ESPECIFICAÇÂO

3.1 Descrição

O projeto consiste no desenvolvimento de um sistema que permita

separar certos objetos definidos (caixas), distinguindo–os através de sua área

ou através de suas dimensões. Para tal fim, o projeto possui uma esteira na

qual os objetos passam e uma câmera (webcam ou câmera digital) que captura

a imagem do objeto. A esteira conta com um controle de velocidade do motor

DC que rotaciona a esteira (aumentar ou diminuir a velocidade de rotação da

esteira), com um sensor que detecte o momento no qual a imagem pode ser

capturada, um sistema de iluminação para ter-se a melhor condição para

realizar a captura da imagem, displays de 7 segmentos indicando o numero de

objetos que passaram, dois leds sinalizando visualmente o tipo do objeto e um

dispositivo que separe os objetos de acordo com o seu tipo (um motor

conectado a uma haste que mudará o destino do objeto). Tudo isso pode ser

controlado e analisado por um painel de controle em conjunto com um

software. Além disso, o software realiza a captura da imagem e após processá-

la apresenta as medidas, a quantidade de objetos verificados, quantidade e

porcentagem de objetos de cada tipo. O software conta com uma interface

mais simples e amigável o possível e que permite um amplo controle da

situação. A câmera fica conectada ao microcomputador e tem sua interface

com a esteira através do software e da comunicação serial.

3.2. Hardware

3.2.1. Construção da Esteira

A construção da esteira foi baseada nos desenhos técnicos seguintes,

sendo que a lateral direita segue as mesmas medidas da lateral esquerda. A

esteira foi construída utilizando madeira na base e em alguns suportes.

43

Figura 3.1. Desenho técnico da esteira

Figura 3.2. Desenho técnico da lateral esquerda da esteira

Figura 3.3. Desenho técnico das laterais superior e inferior da esteira

44

O metalon perfilado foi utilizado na confecção do suporte da câmera e da

luminária, que foi construído conforme os dois desenhos técnicos seguintes.

Figura 3.4. Desenho técnico do suporte da câmera e da luminária

45

Figura 3.5. Desenho técnico do suporte da câmera e da luminária vista de outro lado

Chapas de PVC foram usadas para fazer o acabamento da esteira e para

construir o separador, o painel de controle, as peças e suportes do emissor de

laser e do receptor de luz e ainda, no suporte da câmera e da luminária. As

figuras a seguir mostram os desenhos técnicos desses elementos.

46

Figura 3.6. Desenho técnico da base de sustentação da câmera no suporte

Figura 3.7. Desenho técnico do emissor de laser

47

Figura 3.8. Desenho técnico do suporte do emissor de laser

Figura 3.9. Desenho técnico do encaixe do fototransistor

48

Figura 3.10. Desenho técnico do suporte do fototransistor

Figura 3.11. Desenho técnico do separador

Os eixos foram construídos com tubos de PVC, sendo que o eixo principal

foi acoplado ao motor DC de vidro elétrico de automóvel.

49

O material sobre qual vão passar os objetos é o courino. Um motor DC de

vidro elétrico de automóvel rotaciona a esteira e um motor DC de limpador de

pára-brisas rotaciona o dispositivo separador.

É no painel de controle localizado na esteira que estão as placas de

circuitos elétricos, o sensor, os leds e os displays. A figura seguinte mostra o

desenho técnico do painel de controle.

Figura 3.12. Desenho técnico do Painel de Controle

3.2.2. Funções do Hardware

As principais funções do Hardware são:

- Fazer a esteira girar através do motor DC de vidro elétrico de automóvel.

- Determinar a hora em que a imagem deve ser capturada através do

fototransistor.

- Controlar o acionamento do motor DC realizando a separação dos

objetos.

- Controlar o acionamento dos displays e leds.

50

- Realizar a comunicação serial com o computador, através do

microcontrolador.

3.2.3. Componentes do Hardware

Os principais componentes utilizados serão descritos abaixo:

- Uma webcam com driver para Windows.

- Motor DC retirado de um limpador de pára-brisas de automóvel,

acoplado em um dos eixos da esteira.

- Interface para os dispositivos

- Fototransistor L14G1.

- Motor DC modeloMDN3JL4DSF.

- Interface com o fototransistor, o motor DC e os leds

- Displays de 7 segmentos e interface

- Microcontrolador AT89S8252 da família 8051 e interface de uso

- Iluminação feita através de uma luminária construída com leds brancos

de alta luminosidade.

- Fonte de computador que será responsável pela alimentação (5V e 12V)

3.2.4. Firmware

As linguagens de programação usadas para desenvolver o fimware, são a

linguagem C e a linguagem assembly. O ambiente de desenvolvimento é o Keil

da microvision, utilizando o sistema operacional Windows 2000/XP.

51

3.2.5. Diagrama em blocos do sistema

Figura 3.13. Diagrama em blocos do sistema

3.2.6. Seqüência de Funcionamento

Quando o sistema é ligado deve-se colocar a caixa na frente do sensor da

esteira que começará a girar. O sensor da esteira (fototransistor) estará

esperando que um objeto passe por ele para que ele possa mandar um sinal

para o microcontrolador de que a imagem já pode ser capturada. Cada vez que

esse sensor for acionado, o contador visualizado nos displays de 7 segmentos

será incrementado. Esse sinal do fototransistor é transmitido do

microcontrolador para o software, através da comunicação serial, e acionará a

captura de imagem pela webcam.

Com a imagem capturada, o software trata a imagem e manda uma

resposta para o microcontrolador que dirá se o dispositivo separador deve ser

acionado ou não. Se o dispositivo for acionado o microcontrolador acenderá um

52

led indicando que o objeto vai ser separado. Caso contrário, um outro led será

aceso indicando que não foi necessária a separação.

O software também pode mudar a velocidade da esteira. Se isso ocorrer,

a velocidade irá mudar instantaneamente, pois o firmware vai ler a velocidade

da esteira a cada ciclo de programa. Esse processo se repete até que se

desligue o sistema.

3.3. Especificação de Software

3.3.1 Funções do Software

O software tem como principais funções:

- Controle da velocidade de rotação da esteira.

- Receber o sinal de ativação da captura da imagem.

- Acionar a câmera para que ela realize a aquisição da imagem.

- Realizar o processamento digital de imagem na foto do objeto.

- Acionar o dispositivo separador caso necessário.

- Mostrar os resultados da analise da foto.

3.3.2. Ambiente de desenvolvimento

O software foi desenvolvido em linguagem C/C++, no ambiente de

desenvolvimento Borland C++Builder 6.0, utilizando o sistema operacional

Windows 2000/XP.

3.3.3. Funcionamento do software

O software é o responsável por dizer em qual velocidade a esteira deve

rodar. Então, ele deve enviar para o microcontrolador um sinal indicando essa

velocidade de acionamento do motor. Com o motor rodando na velocidade

indicada, o software espera o sensor ser acionado. Quando isso ocorre, o

software ativa a captura da imagem através da câmera. Após a aquisição da

imagem ela deve ser processada. Essa parte será melhor explicada

separadamente após esse item.

53

Depois de processada a imagem, o programa envia um sinal ao

microcontrolador dizendo se o dispositivo separador deve ou não ser ativado.

Em seguida, apresentará os resultados na tela. Esses resultados são as

dimensões do objeto, quantos objetos já foram analisados e a porcentagem de

cada tipo de objeto. O usuário terá ainda a opção de salvar os resultados

apresentados.

3.3.4. Processamento digital de imagens

Figura 3.14. Processamento de Imagem utilizado no sistema

O primeiro passo para se realizar um processamento de imagem é a

aquisição da imagem. Essa aquisição é realizada pela câmera acoplada à

esteira. Para se obter uma imagem mais fácil de ser processada, o ambiente

não deve possuir mais de uma fonte de luz incidindo na esteira. Essa situação

causa sombras escuras demais e reflexos que atrapalham o processamento. O

software é o responsável por acionar a câmera no momento da aquisição após

os 2 ou 3 segundos que é o tempo levado pela caixa para chegar até a câmera.

54

Depois de capturada, a imagem deve passar por um pré-processamento,

que irá prepará-la para receber o processamento propriamente dito. Os

métodos utilizados serão, o filtro de média móvel e a transformação da imagem

RGB24 para tons de cinza.

O filtro de média móvel é o responsável por tirar ruídos da imagem. Em

processamento de imagens, ruídos são regiões muito pequenas com

intensidade de cor muito diferente da dos seus vizinhos. O filtro implementado,

percorre toda a matriz de dados de imagem, tirando a média dos do ponto da

vez e de seus vizinhos e colocando o valor da média neste ponto. Neste caso

foi usada a “vizinhança de 2”, ou seja, participam da média 2 vizinhos em cada

direção, cima, baixo, direita e esquerda, formando uma matriz 5X5 pixels. Essa

quantidade foi escolhida para não se apresentar muita intensidade de efeito de

borda, o que diminui a precisão das medidas.

Também como parte do pré-processamento tem-se um algoritmo para

converter uma imagem RGB24 em uma imagem em tons de cinza. Esse

algoritmo consiste em percorrer a matriz de dados da imagem tirando a média

dos valores de R, G, e B atribuindo a todos estes, o valor da média. A figura

seguinte mostra o resultado do pré-processamento.

Figura 3.15. Imagem obtida após o pré-processamento

55

Em seguida aplica-se a segmentação. A segmentação é um processo que

consiste em separar um objeto do fundo da imagem. O método de

segmentação utilizado foi de limiarização que consiste em binarizar os pixels

de uma imagem. Na limiarização, é feito um histograma da imagem em tons de

cinza, para se poder definir um limiar T. Pixels de intensidade menor que T

recebem ‘0’ e os de intensidade maior que T recebem ‘255’. Por esse motivo é

que a sombra não pode ser muito escura. Caso a sombra seja muito escura, os

pixels correspondentes a ela podem estar abaixo do limiar sendo confundidos

com os pixels da caixa. A figura que segue apresenta o resultado desta etapa.

Figura 3.16. Imagem obtida após a limiarização

Para se retirar as medidas das caixas, o algoritmo implementado foi um

detector de cantos. Um detector de cantos percorre a matriz procurando por

cantos nos pixels pretos. Levando-se em conta que um dos cantos possui as

coordenadas XY mínimas e que outro possui as coordenadas XY máximas, já

se tem dois cantos. Os outros dois possuem as coordenadas (X máximo, Y

mínimo) e (X mínimo, Y máximo) respectivamente. Encontrando-se estes

pontos basta, aplicar a conhecida fórmula da geometria analítica que calcula a

distância entre dois pontos em um plano:

D²=(X-Xo)²+(Y-Yo)²

E assim têm-se as medidas dos quatro lados de um retângulo, como

mostra a figura seguinte.

56

Figura 3.17. Imagem obtida após a detecção de cantos

3.4. Requisitos Mínimos

O sistema de Visão Computacional necessita dos seguintes requisitos

mínimos de Hardware e Software.

Requisitos de Hardware:

?? Processador 600 MHZ ou superior;

?? 128 MB de memória RAM;

?? 20 MB de espaço livre no disco rígido;

?? Porta Serial que suporte a velocidade de 9600 bps;

?? Porta USB;

?? CD-ROM;

?? Usar o sistema em ambientes de iluminação semelhante à dos

testes realizados apresentados na seção de “Resultados” deste

documento.

Requisitos de Software:

?? Sistema Operacional Windows 2000/XP;

?? Driver de webcam (presente no CD-ROM deste projeto).

57

4. PROJETO

4.1. Hardware

4.1.1. Sinais de interface

Rótulo do

Sinal Tipo do

Barramento Lógica de Operação

Função

ME Controle 0/1 Saída do microcontrolador para a placa de interface com

os motores para o acionamento do.motor da

esteira M1 Controle 0/1 Saída do microcontrolador

para a placa de interface com os motores para o

acionamento do motor do separador.

M2 Controle 0/1 Saída do microcontrolador para a placa de interface com

os motores para o acionamento do motor do

separador. M Controle 0/1 Saída do microcontrolador

para a placa de interface como motor de passo para o

acionamento deste. ME Controle 0/1 Saída da placa de interface

para o motor da esteira para o acionamento deste.

M1 Controle 0/1 Saída da placa de interface para o motor do separador para o acionamento deste.

M2 Controle 0/1 Saída da placa de interface para o motor do separador para o acionamento deste.

EFT Controle 0/1 Entrada do microcontrolador e saída do circuito do

fototransistor que aciona a interrupção 0 indicando que

um objeto passou. L1 Controle 0/1 Saída do microcontrolador

para a placa de interface que aciona o led 1 de sinalização

do tipo do objeto L2 Controle 0/1 Saída do microcontrolador

para a placa de interface que

58

aciona o led 2 de sinalização do tipo do objeto.

AD0 – AD3 Dados 0/1 Saídas do barramento de dados do microcontrolador

que mostram a contagem no display 1 de 7 segmentos

AD3 – AD7 0/1 Saídas do barramento de dados do microcontrolador

que mostram a contagem no display 2 de 7 segmentos

Tabela 4.1. Sinais de interface

4.1.2. Lista de componentes

4.1.2.1. Lista de componentes da placa do microcontrolador 8051

1 1 Microcontrolador AT89S8252 2 2 Capacitores de 33pF 3 1 Cristal de clock de 11,059MHZ 4 1 Soquete de 40 pinos 5 Barras de pinos com conexões para 40 pinos 6 1 Push-Button NF 7 1 Capacitor de 10uF 8 1 Resistor de 100Ohms 9 1 Resistor de 8k2

Tabela 4.2. Lista de componentes da placa do microcontrolador 8051

1 1 Conversor MAX232 2 1 Conector DB9 fêmea 3 4 Capacitores de 10uF 4 1 Soquete de 16 pinos

Tabela 4.3. Lista de componentes da placa de interface serial

4.1.2.2. Lista de componentes das placas de interface

1 9 Resistores de 10k 2 2 TIP 122 3 2 TIP 127 4 1 TIP 140

59

5 4 transistores BC548 6 3 Resistores de 1k 7 1 7404 8 174LS541 9 1 Led verde 10 2 Leds vermelhos 11 1 Fotransistor 12 1 Capacitor de 150p 13 1 74LS244 14 2 Resistores de 470 Ohms 15 2 BC 4511 16 2 Displays de 7 segmentos vermelhos

Tabela 4.4. Lista de componentes das placas de interface

4.2. Software

4.2.1. Diagrama de Contexto

Figura 4.1. Diagrama de contexto do sistema

60

4.2.2. Diagrama de casos de uso

Figura 4.2. Diagrama de casos de uso

4.2.3. Diagrama de classes

cCaptura

cImagem

- CarregaBMP (String nomeBMP): bool - NiveisdeCinza(): void - MediaMovel(int n): void - Binariza(int valor): void

- Medidas(): void

- Compara(): int

+ *BitmapImage: char + filePtr: File + bitmapFileHeader: BFH + bitmapInfoHeader: BITMAPINFOHEADER + altura: int + largura: int + altura_caixa: float + largura_caixa: float + area_caixa: float + A1max: float + A1min: float + Alt1max: float + Alt1min: float + Lar1max: float + Lar1max: float

1 1

Coleta de dados

cSerial

- Serial(AnsiString,int,int,int,int): void - Enviar(char*,int): void - Receber(int &): unsigned char

+ dcb:DCB + handle:HANDLE

1 1

Recepção/envio de dados

+ novoNome: String + capDriver: CAPDRIVERCAPS + capStatus: CAPSTATUS + janela: HWND VFWAPI

- TirarFoto(String nome): void- FormatoDeVideo(): void - VideoSource(): void

- Preview(): void

- Driver(): void

61

Figura 4.3. Diagrama de classes

4.2.4. Fluxograma

Figura 4.4. Fluxograma do software

62

4.2.5. Diagramas de seqüência

Figura 4.5: Diagramas de seqüência de Inicio com o objeto Imagem

Figura 4.6. Diagramas de seqüência de Inicio com o objeto Captura

63

Figura 4.7. Diagramas de seqüência de ConfVideoSource com o objeto

Captura

Figura 4.8. Diagramas de seqüência de ConfFormatoDeVideo com o objeto

Captura

64

Figura 4.9. Diagramas de seqüência de Form1 com o objeto Captura

Figura 4.10. Diagrama de seqüência dos métodos de EnviarrByte();

Figura 4.11. Diagrama de seqüência dos métodos de ReceberByte();

65

4.2.6. Interface

Figura 4.12. Tela inicial do Software

Figura 4.13. Tela de configuração do formato de vídeo

66

Figura 4.14. Tela de configuração do Vídeo Source

Figura 4.15. Tela de configuração de caixa

67

4.3. Firmware

4.3.1. Diagrama de estados

Figura 4.16. Diagrama de estados

4.3.2. Fluxograma do firmware

Figura 4.17. Fluxograma do firmware

68

5. RESULTADOS

Para verificar os resultados obtidos, o sistema foi submetido a testes

com caixas de 4 tamanhos, todas da cor preta. Duas caixas tinham áreas bem

próximas e em alguns casos foram separadas e em outros não. A precisão que

se conseguiu foi relativamente boa, levando-se em conta a simplicidade do

processamento de imagem. Em uma situação onde a luz não favorecia muito, o

maior erro de medição encontrado durante os testes foi de 4mm para mais ou

para menos. Em situações favoráveis, o sistema apresentou um excelente

rendimento e nenhuma das caixas que passaram na esteira deixou de ser

medida e avaliada. O sistema aceita as caixas em qualquer posição, pois seu

algoritmo de retirada de medidas é invariante com relação a isso. O sistema

também foi testado com a luminária acesa em locais com pouca luz e locais

sem luz nenhuma. O erro máximo não foi maior do que o anterior. E pôde-se

observar que quando há a incidência de duas ou mais fontes de luz, a sombra

fica escura demais o que faz com que essa não seja uma condição

recomendada para o uso do sistema. A figura abaixo mostra as situações onde

o sistema apresentou sucesso. Na primeira situação usou-se a luz amarela, na

segunda a luz solar e na terceira a luz da luminária.

Figura 5.1. Situações em que o sistema apresentou sucesso

O diagrama da figura 5.2 representa os valores numa escala de tons de

cinza, nos quais a sombra é tolerada e o reflexo não interfere muito na cor da

caixa. Se este esquema for respeitado o sistema deve apresentar sucesso. Na

figura 5.3, tem-se a cor máxima da sombra e a cor mínima da caixa na escala

de tons de cinza. Esse esquema pode ser usado para comparações da

situação de iluminação apresentada, com a ideal para verificar se esta situação

é tolerada.

69

Figura 5.2. Valores de sombra e cor para o sistema apresentar sucesso

Figura 5.3. Valores comparativos

O funcionamento do Hardware também apresentou resultados bastante

satisfatórios, pois todos os dispositivos funcionaram corretamente. Inclusive o

dispositivo separador que foi motivo de dúvidas na fase de implementação do

projeto. Ele funcionou adequadamente e realmente conseguiu desviar a

trajetória das caixas fazendo com que elas caíssem no depósito lateral e não

no frontal como aconteceria se ele não funcionasse.

70

6. CONCLUSÃO

A implementação deste sistema demonstra que processos simples como

o de separar caixas em uma indústria, já pode ser automatizado, diminuindo a

possibilidade de falhas humanas. Com esse sistema também se pode perceber

o poder do processamento digital de imagens. Se o processamento simples

que foi utilizado já demonstrou eficiência, um processamento mais avançado

aumentaria a precisão do sistema e permitiria a identificação de outros

elementos das caixas.

Como implementações futuras pretende-se melhorar os algoritmos de

retirada de medidas das caixas para se obter uma melhor precisão. A

separação por cores também é um dos objetivos futuros e até já está sendo

estudada. Pode-se também trabalhar com reconhecimento de padrões mais

elaborados, utilizando-se caixas com rótulos e coisas escritas para se fazer um

controle de qualidade da impressão desses elementos na caixa.

A viabilidade do sistema é indiscutível tendo em vista os resultados

eficientes apresentados e a quantidade de melhorias que podem ser feitas

aumentando ainda mais os setores nos quais o Sistema de Visão

Computacional poderá ser utilizado.

71

7. CRONOGRAMA

Nº Atividade Início Fim

1 Fazer a proposta do projeto 20/2/06 4/3/06

2 Pesquisas iniciais 22/2/06 6/3/06

3 Estudo preliminar das placas e componentes que serão usados 9/3/06 12/3/06

4 Obtenção dos motores e suas especificações 13/3/06 17/3/06

5 Desenho técnico do projeto 13/3/06 17/3/06

6 Desenvolvimento da especificação do projeto (Hardware e Software) 13/3/06 30/3/06

7 Estudo e obtenção dos materiais para a confecção da esteira 13/3/06 30/3/06

8 Confecção e testes das placas 4/4/06 18/4/06

9 Programação do mIcrocontrolador 19/4/06 1/5/06

10 Construção da esteira 5/4/06 1/5/06

11 Testes do Hardware 2/5/06 5/5/06

12 Implementação do software 5/5/06 5/6/06

13 Confecção da monografia 5/6/06 12/6/06

14 Testes e correções 12/6/06 9/10/06

72

8. LEVANTAMENTO DE CUSTOS

COMPONENTE CUSTO Materiais para a construção da esteira R$ 500,00 WebCam R$ 170,00 Motor DC de vidro elétrico de automóvel R$ 120,00 Motor DC de limpador de pára-brisas R$ 45,00 Microcontrolador AT89S8252 R$ 35,00 Outros componentes R$ 150,00 Displays R$ 10,00 Emissor de laser R$ 10,00 Cabos Serial e USB R$ 20,00 Fonte de microcomputador R$ 65,00 Horas de trabalho (R$12,00 a hora) R$ 10.000,00 Custo Total R$ 11.125,00

73

9. REFERÊNCIAS BIBLIOGRÁFICAS

ALBUQUERQUE, Márcio Pontes. Processamento de Imagens: Métodos e

Análises.

http://www.cbpf.br/cat/pdsi/pdf/ProcessamentoImagens.PDF. Consultado

em 02/04/2006.

BASTOS, Vanessa Parodes. Técnicas de Segmentação de Imagens para

Recuperação de Informações Visuais.

http://atlas.ucpel.tche.br/~vbastos/pi.htm. Consultado em 26/03/2006.

FERRAZ NETO, Luis, Motores Elétricos

http://www.feiradeciencias.com.br/sala22/motor_teoria1.asp

GONZALES, Rafael. Processamento Digital de Imagens. São Paulo:

Edgar Blücher, 2000.

MARINHO, José Edson dos Santos. Mini-Curso de microcontrolador.

http://meusite.mackenzie.com.br/ivair/download/minicurso.pdf. Consultado

em 22/03/2006.

MOHR, Hari Bruno. A Família de Microcontroladores 8051.

http://www.eel.ufsc.br/eel7030/8051.pdf. Consultado em 22/03/2006.

NICOLOSI, Denys Emilio Campion. Microcontrolador 8051 detalhado. São

Paulo: Erica, 2000.

NICOLOSI, Denys Emilio Campion. Microcontrolador 8051 com

Linguagem C. São Paulo: Erica, 2005.

ROGERCOM.

http://www.rogercom.com. Consultado em 26/03/2006.

74

ROLIM, Jaqueline. Eletricidade Básica – Circuitos Optoeletrônicos.

http://www.labspot.ufsc.br/~jackie/eel7011/Aula10.PDF. Consultado em

26/03/2006.

SAMBATTI, Francisco Sérgio. Microcontroladores Família MCS-51

http://www.inf.unioeste.br/~anibal/ftp/AOC/Apt8051.pdf. Consultado em

22/03/2006.

SILVA JÚNIOR, Vidal Pereira. Aplicações práticas do microcontrolador

8051.

Tatuapé: Érica, 2000.

VENTURI, Jacir. Álgebra Vetorial e Geometria Analítica. São Paulo: Erica,

2000.