Sistema de Visão Computacional - up.edu.br · Figura 2.14. Forma de representação em eixos de...
Transcript of Sistema de Visão Computacional - up.edu.br · Figura 2.14. Forma de representação em eixos de...
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
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
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
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
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.