Escolar Documentos
Profissional Documentos
Cultura Documentos
Curitiba
2006
Centro Universitário Positivo - UnicenP
Núcleo de Ciências Exatas e Tecnológicas – NCET
Engenharia da Computação
Sergio Danton Machado Geisler
Monografia apresentada à
disciplina de Projeto Final, como
requisito parcial à conclusão do
Curso de Engenharia da
Computação.
Orientador: Prof. Alessandro
Zimmer
Curitiba
2006
2
3
AGRADECIMENTOS
4
SUMÁRIO
1. INTRODUÇÂO ......................................................................................... 13
8051 ...................................................................................... 20
5
2.4.4.2. Limiarização ........................................................... 40
3. E SPECIFICAÇÂO .................................................................................... 42
4. P ROJETO ................................................................................................ 57
6
4.2. Software ........................................................................................ 59
5. RESULTADOS ......................................................................................... 68
6. CONCLUSÃO .......................................................................................... 70
7. CRONOGRAMA ...................................................................................... 71
microcontrolador ......................................................................... 77
10.1.4. Circuito de interface serial ............................................. 79
Indicativos .................................................................................... 79
7
LISTA DE FIGURAS
8
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.
9
LISTA DE T ABELAS
10
RESUMO
11
ABSTRACT
12
1. INTRODUÇÃO
13
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.
14
2. REVISÃO BIBLIOGRÁFICA
15
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).
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
16
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.
17
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.
18
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.
19
2.1.3.1.Bancos de registradores do microcontrolador 8051
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.
20
Tabela 2.1. Seleção dos bancos de registradores
Fonte: Mohr, 2004
21
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.
22
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.
23
2.1.4. Clock e Reset
8031
C3
Xtal 2
33p
X1
C2 11,0592MHz
Xtal 1
33p
8031
VCC
SW1 C1
10u
RST
R1
10k
24
2.1.5. Interrupção
25
- 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.
26
Figura 2.8. Processo de interrupção da /INT0
Fonte: Nicolosi, 2001
27
2.1.5.3. Programando as Interrupções no microcontrolador 8051
28
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.
2.1.6. Timer
29
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
30
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
2.2. Motores DC
31
Figura 2.9. Motor DC utilizado em vidro elétrico de automóveis
Fonte: Geisler, 2006
32
(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).
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
33
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).
34
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
VCC
FT R1
470
D1
U1
L14G1/TO LED
35
2.4. Processamento digital de imagens
36
2.4.1. Aquisição de imagens
2.4.2. Armazenamento
37
2.4.3. Pré - Processamento
2.4.4. Segmentação
38
Figura 2.16. Detecção de bordas por operadores de derivação
Fonte: Gonzales, 2000.
2.4.4.2. Limiarização
39
2.4.5. Afinamento
p9 p2 p3
p8 p1 p4
p7 p6 p5
40
2.4.6. Perseguição de contorno
41
3.E SPECIFICAÇÂO
3.1 Descrição
3.2. Hardware
42
Figura 3.1. Desenho técnico da esteira
43
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.
44
Figura 3.5. Desenho técnico do suporte da câmera e da luminária vista de
outro lado
45
Figura 3.6. Desenho técnico da base de sustentação da câmera no suporte
46
Figura 3.8. Desenho técnico do suporte do emissor de laser
47
Figura 3.10. Desenho técnico do suporte do fototransistor
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.
48
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.
49
- Realizar a comunicação serial com o computador, através do
microcontrolador.
3.2.4. Firmware
50
3.2.5. Diagrama em blocos do sistema
51
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.
52
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.
53
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.
54
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.
55
Figura 3.17. Imagem obtida após a detecção de cantos
Requisitos de Software:
?? Sistema Operacional Windows 2000/XP;
?? Driver de webcam (presente no CD-ROM deste projeto).
56
4. PROJETO
4.1. Hardware
57
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
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
1 1 Conversor MAX232
2 1 Conector DB9 fêmea
3 4 Capacitores de 10uF
4 1 Soquete de 16 pinos
1 9 Resistores de 10k
2 2 TIP 122
3 2 TIP 127
4 1 TIP 140
58
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
4.2. Software
59
4.2.2. Diagrama de casos de uso
cImagem
cCaptura
+ *BitmapImage: char
1 1 + filePtr: File
+ novoNome: String + bitmapFileHeader: BFH
+ capDriver: CAPDRIVERCAPS + bitmapInfoHeader: BITMAPINFOHEADER
Coleta de dados
+ capStatus: CAPSTATUS + altura: int
+ janela: HWND VFWAPI + largura: int
+ altura_caixa: float
- TirarFoto(String nome): void + largura_caixa: float
- FormatoDeVideo(): void + area_caixa: float
- VideoSource(): void + A1max: float
+ A1min: float
- Preview(): void + Alt1max: float
- Driver(): void + Alt1min: float
+ Lar1max: float
+ Lar1max: float
cSerial
60
Figura 4.3. Diagrama de classes
4.2.4. Fluxograma
61
4.2.5. Diagramas de seqüência
62
Figura 4.7. Diagramas de seqüência de ConfVideoSource com o objeto
Captura
63
Figura 4.9. Diagramas de seqüência de Form1 com o objeto Captura
64
4.2.6. Interface
65
Figura 4.14. Tela de configuração do Vídeo Source
66
4.3. Firmware
67
5. RESULTADOS
68
Figura 5.2. Valores de sombra e cor para o sistema apresentar sucesso
69
6. CONCLUSÃO
70
7. CRONOGRAMA
71
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
72
9. REFERÊNCIAS BIBLIOGRÁFICAS
ROGERCOM.
http://www.rogercom.com. Consultado em 26/03/2006.
73
ROLIM, Jaqueline. Eletricidade Básica – Circuitos Optoeletrônicos.
http://www.labspot.ufsc.br/~jackie/eel7011/Aula10.PDF. Consultado em
26/03/2006.
74