FACULDADE DE TECNOLOGIA DE SÃO PAULO
CURSO DE MATERIAIS, PROCESSOS E COMPONENTES
ELETRÔNICOS
Bruno Toledo Resende
Letreiro Digital Estroboscópico Multicolorido com 7 LEDs
SÃO PAULO
2
FACULDADE DE TECNOLOGIA DE SÃO PAULO
CURSO DE MATERIAIS, PROCESSOS E COMPONENTES
ELETRÔNICOS
Bruno Toledo Resende
Letreiro Digital Estroboscópico Multicolorido com 7 LEDs
SÃO PAULO
2012
Trabalho de conclusão do curso, apresentado para
obtenção do grau de tecnólogo no Curso de
Tecnologia em Materiais, Processos e Componentes
Eletrônicos da Faculdade de Tecnologia de São
Paulo.
3
AGRADECIMENTOS
Em especial, aos meus pais José Carlos e Maria Teresa, à minha irmã
Cristhiane e todos os meus familiares, que são a razão da minha vida e sempre me
apoiaram em todos os momentos.
Ao Prof. Roberto Katsuhiro Yamamoto, pela orientação, confiança e apoio
durante o trabalho.
Aos professores da FATEC-SP, por tudo que me ensinaram ao longo do
curso.
4
“O segredo do sucesso é saber algo que ninguém mais sabe”
5
RESUMO
Letreiros digitais são usados para dar notícias, para informar sobre
promoções, novidades, chamando a atenção para um determinado assunto, etc. São
comumente utilizados em transportes públicos, hospitais, rodovias, supermercados,
e diversos outros lugares, com o objetivo de atrair a atenção das pessoas para a
mensagem que é mostrada. Os letreiros digitais são feitos com a utilização de
matrizes com grande quantidade de LEDS. Este trabalho tem como objetivo
oferecer uma alternativa criativa e chamativa para letreiros digitais comuns que
utilizam matrizes de LEDs. O letreiro digital estroboscópico utiliza somente 7 LEDs
multicoloridos controlados por um microcontrolador, uma estrutura giratória e uma
velocidade de giro adequada. Quando é feita a sincronização entre os LEDs e a
velocidade do motor, graças a uma anomalia na visão humana, o letreiro mostra a
frase como se estivesse flutuando no ar e há possibilidade de ser visto de pontos
distintos. A frase pode ser escolhida entre as pré-definidas na programação, através
de uma conexão com um computador. O desenvolvimento do trabalho envolveu a
parte eletrônica e programação do microcontrolador, além da montagem da estrutura
e adaptação do motor. Foram feitos diversos testes para aperfeiçoar a
sincronização, mudando valores das rotinas de tempo do programa e a velocidade
do motor, até que fosse feita a sincronização que atendesse aos objetivos. Durante
o desenvolvimento surgiram pequenos contratempos, que foram resolvidos e outros
que necessitaram de uma mudança no programa. Os resultados finais são
satisfatórios, o letreiro mostra as frases escolhidas flutuando no ar e a utilização de 2
6
ABSTRACT
Digital displays are used for giving news, to inform about promotions, calling
attention to a specific subject, etc. Digital displays are usually used at public
transportation, hospitals, roads, markets, and another places, with the intention of
calling people’s attention for the message that is showed. This work aims to offer a
creative and flashy alternative to common digital signage using arrays of LEDs. The
stroboscopic digital display uses only 7 multicolored LEDs controlled by a
microcontroller, a rotatory structure at an adequate velocity. When is made the
synchronism between LEDs and motor velocity, because of an anomaly in the
human vision, the display shows the phrase looking like it’s fluctuating in the air, and
there is possibility of being seen from different spots. The phrase can be chosen
between one of the pre-defined phrases from the programming, through a connection
with the computer. The work’s development involves electronics and microcontroller
programming, besides that, involves the structure mounting and motor adaptation.
Several tests were made to improve the synchronization, and the motor velocity,
changing values of the time routines of the program, until the ideal synchronism had
been reached. During the development drawbacks have been solved, some of them
required a change in the program. The results were satisfactory, the sign shows the
chosen phrases floating in the air with two or more colors in every sentence, calling
7
LISTA DE ILUSTRAÇÕES
Figura 1- Sinalização feita com painel de LEDs em uma rodovia. 13
Figura 2- Esquema dos pinos do AT89S8253. 16
Figura 3- Circuito de clock. 17
Figura 4- Esquema dos pinos do MAX232. 18
Figura 5- Foto do circuito integrado LM7805. 18
Figura 6- Sinal de sincronismo (clock). 20
Figura 7- Esquema de ligação do circuito de clock. 21
Figura 8- Esquema do circuito de reset manual e automático. 22
Figura 9- Circuito regulador de tensão com LM7805. 23
Figura 10- Esquema de ligação do MAX232 contida no datasheet, com respectivos valores dos capacitores (1µf). 24
Figura 11- Cabo conversor USB/RS232. 25
Figura 12- Ligações e esquema de transmissão de dados. 26
Figura 13- Combinações de cores e relação entre terminais e cores 28
Figura 14- Esquema de ligação entre LED RGB e microcontrolador. 29
Figura 15- Foto da placa de circuitos. 29
8
Figura 17- Motor fixado na tampa, fonte do motor, fonte do circuito e conversor de
corrente dentro da caixa. 31
Figura 18- Ilustração do contato deslizante 32
Figura 20- Fotos do Contato deslizante 32
Figura 21- Caixa de circuito principal e fios para ligação aos LEDs no eixo giratório e ao encaixe do cabo. 33
Figura 22- Foto da estrutura giratória. 34
Figura 23- Posição de ventilador cooler, potenciômetro do conversor de corrente e botão Liga/Desliga. 35
Figura 24- Tela de programação do PEQUI. 36
Figura 25- Tela de simulação do PEQUI. 36
Figura 25- Foto do gravador 8051 USB e software de gravação. 37
Figura 26- Fluxograma principal. 38
Figura 27- Fluxogramas das rotina que criam a frase, letras e apagam os LEDs. 39 Figura 29- Tela de configuração do Hyperterminal. 42
Figura 30- Tela de comunicação do Hyperterminal. 42
Figura 31- Coluna de LEDs formada durante testes de sincronismo 43
9
Figura 34- Instruções de programação de uma letra C verde. 47
Figura 35- Foto da estrutura completa após acabamento. 49
Figura 36- Foto do letreiro em funcionamento. 50
Figura 37- Foto do letreiro em funcionamento. 51
Figura 38- Trecho do manual do gravador 8051 USB. 52
LISTA DE TABELAS Tabela 1 – Ligações entre LEDs e pinos do microcontrolador. 24
Tabela 2 - Tabela verdade de uma porta NOR. 24
Tabela 3- Tabela de recarga do temporizador e erro % obtido durante transferência de dados para uma determinada frequência de cristal oscilador. 37
LISTA DE SIGLAS
A: ampere
ASCII: codificação de caracteres de oito bits baseada no alfabeto inglês
Bps: bits por segundo
10 F: frequência
HEX: hexadecimal
Hz: hertz
Kbytes: quilobytes
LED: diodo emissor de luz
mA: miliampere
MHz: mega-hertz
ms: milissegundos
pF: picofarad
RGB: sistema de cores formado por Vermelho (Red), Verde (Green) e Azul (Blue)
rpm: rotação por minuto
s: segundos
T: tempo
TTL: circuitos digitais construídos de transistores de junção bipolar (BJT)
USB: Universal Serial Bus
V: volts
µF: microfarad
µs: microssegundos
11
SUMÁRIO
1. INTRODUÇAO 13
1.1 APRESENTAÇÃO 14
1.2 OBJETIVO 15
2. EMBASAMENTO TEÓRICO 16
2.1 MICROCONTROLADOR AT89S8253 16
2.2 CIRCUITO INTEGRADO MAX232 17
2.3 REGULADOR DE TENSÃO LM7805 18
2.4 EFEITO ESTROBOSCÓPICO 19
3. DESENVOLVIMENTO 20
3.1 MONTAGEM DOS CIRCUITOS 20
3.1.1 CIRCUITO DE CLOCK DO AT89S8253 20
3.1.2 CIRCUITO DE RESET DO AT89S8253 21
3.1.3 CIRCUITO REGULADOR DE TENSÃO 22
3.1.4 CIRCUITO DE COMUNICAÇÃO 23
3.1.5 CIRCUITO DOS LEDS 26
3.2 MONTAGEM DA ESTRUTURA E ADAPTAÇÃO DO MOTOR 30
3.3 PROGRAMAÇÃO 35
12
3.3.2 GRAVAÇÂO DO PROGRAMA 37
3.3.3 FLUXOGRAMAS 38
3.3.4 COMUNICAÇÃO 39
3.3.5 SINCRONIZAÇÃO 43
3.3.6 FORMAÇÃO DOS CARACTERES E FRASE 46
4. RESULTADOS 49
4.1 PROBLEMAS E DIFICULDADES 51
5. CONCLUSÃO 54
5.1 TRABALHOS FUTUROS 55
6. REFERÊNCIAS 56
13
1. INTRODUÇÃO
Letreiros digitais comuns utilizam painéis de LEDs para formação dos
caracteres. Esses painéis utilizam uma grande quantidade de LEDs para formação
de frases simples e geralmente utilizam apenas uma ou duas cores, como podemos
observar na figura 1, sinalizações em lugares comuns, como senha para filas,
sinalizações em rodovias, no transporte público, onde são importantes para a
comunicação, como visto em ônibus e metrô, sinalizando as linhas de transporte e
estações.
Figura 1: Sinalização feita com painel de LEDs em uma rodovia.
Esse trabalho apresenta uma alternativa de fácil manutenção e menor custo,
por usar apenas 7 LEDs, e muito chamativo, pelo fato de os LEDs serem
multicoloridos e a frase ser apresentada como se estivesse flutuando no ar, podendo
14
Com a sincronização feita entre o controle sobre a frequência que os LEDs
piscam e a velocidade do motor, é possível a visualização do texto graças a uma
anomalia na visão humana, que faz com que consigamos ver a formação do texto
estroboscópicamente.
1.2 APRESENTAÇÃO
O projeto envolve a parte mecânica, a parte eletrônica e a parte de
programação do microcontrolador.
A parte mecânica envolve a adaptação do motor e fixação de placas de
circuitos do microcontrolador e dos LEDs fixada no eixo giratório. O eixo giratório
precisa ter equilíbrio e ser bem fixado para poder girar em uma velocidade
constante. O motor tem que girar o eixo dos LEDs em uma velocidade necessária
para que se consiga o efeito estroboscópico.
A parte eletrônica envolve a alimentação necessária para o motor funcionar,
passagem de alimentação para placa do microcontrolador e LEDs que estarão no
eixo giratório, e comunicação com o notebook/computador via porta USB. São
utilizados diversos componentes eletrônicos na construção da placa do
microcontrolador, placa dos LEDs e na recepção do sinal USB enviada pelo
notebook, como circuitos integrados, resistores, capacitores, cristal oscilador,
transistores, fios de conexão, LEDs RGB, microcontrolador AT89S8253, etc.
A programação do microcontrolador controlará os momentos em que os LEDs
acendem e apagam e o tempo que ficarão acesos, dependendo da necessidade de
15
LEDs, assim formando as letras e, consequentemente, as frases. Os caracteres
serão programados em cores diferentes e cabe ao usuário escolhe-las. O
microcontrolador será responsável por receber os dados enviados pelo
notebook/computador e converte-los em ações, que podem ser letras para formar a
frase ou as cores escolhidas.
1.3 OBJETIVO
Implementação de um letreiro digital estroboscópico utilizando somente sete
LEDs (RGB) multicoloridos fixados lado a lado verticalmente em uma estrutura
giratória. A sincronização dos LEDs é controlada por um microcontrolador da família
8051. A frase a ser exibida no letreiro poderá ser alterada pelo usuário, dentre as
frases pré-definidas, através de uma conexão USB com um notebook, assim como
as cores. O controle sobre a velocidade da frase formada poderá ser feito por um
16
2. EMBASAMENTO TEÓRICO
2.1 MICROCONTROLADOR AT89S8253
O microcontrolador AT89S8253 da Atmel é um dispositivo que contém, dentro
de um mesmo invólucro, um microprocessador e outros dispositivos como, por
exemplo, memória ROM, memória RAM, conversores A/D e D/A e dispositivos para
comunicação serial, dentre outros. É um componente que já vem pronto para ser
programado e utilizado [1].
O microcontrolador AT89S8253 possui 40 pinos, 32 portas de entrada e saída (I/0),
12 kbytes de memória para gravação do programa e trabalha com tensões de 4,0 a
5,5 volts, além de consumir um valor de corrente muito baixo [2].
A figura 2 mostra um esquema de pinos do AT89S8253.
17
Pode-se notar que existem pinos que tem dupla finalidade. Dependendo do
esquema de hardware, poderão ser utilizados para uma ou outra função específica.
O microcontrolador é um circuito eletrônico que executa uma sequência
definida de instruções. Estas instruções estão contidas no programa e são
executadas a partir de um sinal de sincronismo que ativa o sistema. Esse sinal de
sincronismo é chamado clock e, pode ser interno ou externo.
No caso do clock interno, que será usado neste projeto, deverá conter um
circuito com um cristal oscilador e dois capacitores, conforme a figura 3.
Figura 3: Circuito de clock.
2.2 CIRCUITO INTEGRADO MAX232
O circuito integrado MAX232 é um conversor de nível, que transforma os
sinais de uma porta serial para sinais adequados para uso em circuitos com
microprocessadores, por exemplo. O MAX232 converte os sinais de transmissão e
recepção serial RS232 com tensões de ± 12 volts para sinais de nível TTL (5 volts),
18
Figura 4: Esquema dos pinos do MAX232 [3].
2.3 REGULADOR DE TENSÃO LM7805
Esse componente faz com que, para um determinado intervalo de tensões de
entrada suportadas, o valor de tensão de saída seja constante.
Especificamente, o componente que estará sendo usado na alimentação da
placa de circuitos no projeto é o LM7805, que, para uma faixa de tensão de entrada
entre 7 volts e 25 volts, regula a saída será constante em 5 volts. A figura 5 mostra
uma foto do regulador.
19
Este regulador de tensão é comumente usado em circuitos que utilizam
tensões de nível TTL.
2.4 EFEITO ESTROBOSCÓPICO
O efeito estroboscópio baseia-se na persistência das imagens em nossa
retina. A visualização dos caracteres neste trabalho por efeito estroboscópico só é
possível graças a uma anomalia na visão humana, chamada persistência da retina.
Esta anomalia consiste na capacidade da retina em manter por uma fração de
segundo uma imagem, mesmo depois de haver mudado. As células fotossensíveis
da retina transformam a energia luminosa em impulsos bio-elétricos, e estes são
enviados para o cérebro, que então os interpreta como imagem. Mesmo depois de o
cérebro ter recebido os impulsos, a retina continua mandando informações, por
aproximadamente 0,1 de segundo após o último estímulo luminoso. Por este
motivo, se uma imagem for trocada numa velocidade maior do que esta, elas
20
3. DESENVOLVIMENTO
3.1 MONTAGEM DOS CIRCUITOS
A montagem dos circuitos envolve os circuitos de reset e clock do
microcontrolador AT89S8253, o circuito do regulador de tensão que alimentará as
placas, o circuito conversor de sinal para comunicação com o computador/notebook
e o circuito dos LEDs.
3.1.1 CIRCUITO DE CLOCK DO AT89S8253
O circuito do microcontrolador precisa conter pequenos circuitos e ligações
necessárias para o seu funcionamento, neste projeto foi utilizado um circuito de
clock com um cristal oscilador de frequência de 12 MHz e dois capacitores
cerâmicos de 33 pF, que fornece um ciclo de máquina de 1 µs, conforme a figura 6:
Figura 6: Sinal de sincronismo (clock).
Um ciclo de máquina consiste em uma sequência numerada de S1 a S6, em
que cada estado S ocupa dois ciclos de relógio, ou melhor, cada ciclo de máquina
21
O ciclo de máquina ou clock é calculado do seguinte modo:
Frequência do clock = frequência do cristal = 12x10-6 = 1x10-6 ou 1µs
Ciclos de relógio 12
O tempo de clock de 1 µs foi escolhido para facilitar os cálculos feitos durante
a programação, devido ao numero ser inteiro.
O esquema do circuito usado no trabalho é mostrado na figura 7.
Figura 7: Esquema de ligação do circuito de clock.
3.1.2 CIRCUITO DE RESET DO AT89S8253
Para que o microcontrolador inicie a sua operação, é necessário que tenha
um processo de reset. Este processo pode ocorrer toda vez que o circuito é
energizado ou por meio de uma chave, mantida a Vcc durante 2 ou mais ciclos de
22
O reset ocorre quando o pino 9 (RST) é levado ao nível logico 1, após isso, o
programa será executado a partir do seu primeiro endereço na memória.
O esquema de reset é mostrado na figura 8.
Figura 8: Esquema do circuito de reset manual e automático.
3.1.3 CIRCUITO REGULADOR DE TENSÃO
Todos os componentes eletrônicos usados no projeto trabalham com nível de
tensão TTL, ou seja, 5 volts (DC) e a alimentação de todo o circuito é feita por uma
fonte de alimentação de 9 volts e 500 mA (DC).
Foi montado um circuito simples utilizando o regulador de tensão LM7805
para transformar a tensão de entrada de 9 volts em tensão de saída de 5 volts para
23
Figura 9: Circuito regulador de tensão com LM7805.
Os capacitores C1 e C2 eliminam ruídos e dão maior estabilidade à tensão de
saída.
Considerando a corrente de 500mA de entrada, podemos calcular a potencia
dissipada por este circuito integrado LM7805:
Potencia dissipada = (9 V -- 5 V)x0,5 A = 2 W
A potência dissipada pelo LM7805 é de 2 watts, o que é suficiente para
esquentá-lo, necessitando de um dissipador de calor adequado.
3.1.4 CIRCUITO DE COMUNICAÇÃO
O circuito de comunicação é responsável por receber o sinal RS232 (±12
volts) enviado pelo computador/notebook e converte-lo em sinal de nível TTL (5
volts), reconhecido pelo microcontrolador. Para isso foi utilizado o circuito integrado
MAX232 [2]. A ligação utilizada foi a contida no próprio datasheet do MAX232,
24
Figura 10: Esquema de ligação do MAX232 contida no datasheet, com respectivos valores dos
capacitores (1µf).
A comunicação é feita pela porta USB do computador/notebook, utilizando um
25
Figura 11: Cabo conversor USB/RS232.
A ponta do cabo serial RS232 tem 3 pinos que são usados na comunicação
entre computador/notebook e MAX232, que são:
-Pino 2: recebe o sinal enviado pelo microcontrolador;
-Pino 3: transmite o sinal enviado pelo computador/notebook.
-Pino 5: GND (terra).
O pino 2 do cabo é ligado ao pino 14 do MAX232, o pino 3 do cabo é ligado
ao pino 13 do MAX232 e o pino 5 do cabo é ligado direto ao GND (terra) da placa.
A comunicação entre MAX232 e microcontrolador necessita de 2 ligações, o
pino 11 do MAX232 é ligado ao pino 10 do microcontrolador e o pino 12 do MAX232
é ligado ao pino 11 do microcontrolador.
Os pinos 10 e 11 do microcontrolador são responsáveis por receber e enviar
os dados durante a comunicação.
26
Figura 12: Ligações e esquema de transmissão de dados.
3.1.5 CIRCUITO DOS LEDS
O microcontrolador AT89S8253 consome pouca corrente e apresenta baixa
corrente em suas portas, de no máximo 10 mA, essa baixa corrente não é suficiente
para acender os LEDs. Para corrigir esse problema foram usados circuitos
integrados 7402, que possuem em seu interior 4 portas NOR de 2 entradas cada.
Cada porta do microcontrolador foi ligada as 2 entradas de uma porta NOR,
assim, quando o sinal da porta do microcontrolador for de nível logico “0”, a saída da
porta NOR será de nível logico “1”, acendendo o LED. Conforme a tabela verdade
27
Tabela 1: Tabela verdade de uma porta NOR.
Cada LED RGB possui quatro terminais, três para as cores e um para o
ânodo ser ligado ao GND (terra). Cada terminal de cor do LED foi ligado a uma porta
do microcontrolador, assim, foram usadas vinte e uma portas do microcontrolador
para cada cor dos sete LEDs.
As ligações foram feitas conforme indicadas na tabela 2.
28
Os LEDs RGB possuem três cores principais que podem ser combinadas
para formar outras cores, como a ilustração mostrada na figura 13.
Figura 13: Combinações de cores com LED RGB e relação entre terminais e cores.
Foram usados resistores de 100 para limitar a corrente enviada aos LEDs e
29
Figura 14 : Esquema de ligação entre LED RGB e microcontrolador.
Uma foto da placa com todos os circuitos mencionados anteriormente é vista
na figura 15.
30
Os LEDs ficaram em outra placa fixada na ponta do eixo giratório, mostrado
na figura 16.
Figura 16: Foto da placa com LEDs no eixo giratório.
3.2 MONTAGEM DA ESTRUTURA E ADAPTAÇÃO DO MOTOR
Foi utilizado um motor DC de 24 volts e corrente de 8 A com rotação de até
3000 rpm. Neste projeto, foi preciso ter controle sobre a velocidade do motor e para
isso, foi utilizado um conversor de corrente PWM PULSE WIDTH MODULATION. O
conversor proporciona uma variação suave de rotação, mantendo estabilidade e
torque mesmo em baixas rotações. Para alimentação do motor e do conversor, foi
utilizada uma fonte de tensão DC de 24 volts e 10 A. O motor foi fixado na tampa da
caixa, e a fonte e o conversor ficam dentro da caixa, junto com a fonte de 9 volts que
alimenta o circuito e uma fonte de 6,5 volts que alimenta o cooler para refrigeração
31
Figura 17: Motor fixado na tampa, fonte do motor, fonte do circuito e conversor de corrente dentro da caixa.
Os circuitos ficam fixos no eixo giratório e para a alimentação deles não foi
possível a utilização de fios ou cabos, pois eles enrolariam no eixo quando o motor
fosse ligado. A solução para esse problema foi aumentar a extensão do eixo do
motor e a colocação de um eixo fixo ao lado do motor, para que fosse feito um
“contato deslizante” para transmitir eletricidade para fios no eixo do motor e
alimentar o circuito. O eixo fixo e a extensão do eixo do motor são feitos de cano
plástico rígido, e os fios passam por dentro deles. O contato deslizante foi feito com
camadas de papel alumínio, que devido às suas propriedades elétricas, conduz
muito bem a eletricidade, alimentando o circuito. No eixo do motor, foram enroladas
camadas de papel alumínio e no eixo fixo foi presa uma fita feita de camadas de
32
contato, através do papel alumínio. A figura 18 mostra uma ilustração de como o
contato deslizante é ligado aos fios e preso aos eixos.
Figura 18: Ilustração do contato deslizante.
As figuras a 19 e 20 mostram o contato deslizante.
33
O eixo giratório foi todo feito de material plástico, e os fios e circuitos ficam
dentro dele, conforme a figura 21.
Figura 21: Caixa de circuito principal e fios para ligação aos LEDs no eixo giratório e ao encaixe do cabo.
O eixo giratório onde foram fixados os circuitos, encaixe do cabo e LEDs tem
36 cm de comprimento e foi fixo ao eixo do motor pelo seu centro, para ter equilíbrio.
A placa com os circuitos principais foi colocada em uma caixa e fixada no centro do
eixo giratório, a placa com os LEDs foi colocada em uma caixa pequena e colocada
em uma ponta do eixo giratório, na outra ponta fica o encaixe do cabo, também em
uma caixa. Foi preciso colocar alguns pesos para contrabalancear e deixar o eixo
em equilíbrio, que é altamente necessário para o bom funcionamento do projeto.
A figura 22 mostra, ainda sem nenhum acabamento final, a parte de cima do
motor, o contato deslizante, o eixo giratório e como foram fixadas as caixas com os
34
Figura 22: Foto da estrutura giratória fixa ao eixo do motor, contato deslizante, caixas com LEDs à esquerda, caixa com encaixe do cabo à direita, caixa com a placa de circuitos no
centro e contra pesos para equilibrar o peso de cada ponta do eixo giratório.
Foram adicionados a caixa um ventilador e cooler para refrigeração do motor,
fontes e conversor de corrente. Do lado de fora da caixa se encontra o
potenciômetro do conversor de corrente, para o usuário controlar a velocidade do
35
Figura 23: Posição de ventilador cooler, potenciômetro do conversor de corrente e botão Liga/Desliga.
3.3PROGRAMAÇÃO
3.3.1 LINGUAGEM DE PROGRAMAÇÃO
A programação foi feita em linguagem assembler [1], que é considerada uma
linguagem de baixo nível, diretamente relacionada com a arquitetura do computador,
no caso desse trabalho, um microcontrolador da família 8051. Para usar essa
linguagem, deve-se conhecer a arquitetura e as localizações dos registradores,
memórias, temporizadores, portas e outros.
A programação deve ser compilada em formato HEX (hexadecimal), para ser
ser gravado nos microcontroladores da família 8051.
O compilador usado foi o PEQUI, que trabalha exclusivamente com a
linguagem assembler e funciona como compilador e simulador do programa,
mostrando eventuais erros de programação. Imagens do PEQUI são mostradas nas
36
Figura 24: Tela de programação do PEQUI.
37
3.3.2 GRAVAÇÂO DO PROGRAMA
A gravação do arquivo HEX gerado pelo compilador é feita pelo gravador
8051 USB. O modelo de gravador utilizado grava apenas dois tipos de
microcontroladores, o AT89S52 e o AT89S8253 utilizado neste projeto, o gravador
acompanha um software utilizado para apagar e gravar programas, mostrado na
figura 26.
38
3.3.3 FLUXOGRAMAS
A programação foi baseada nos fluxogramas das figuras 27 e 28.
39
Figura 28: Fluxogramas das rotina que criam a frase, letras e apagam os LEDs.
3.3.4 COMUNICAÇÃO
A programação da comunicação controla a velocidade de transmissão, a
recepção e transmissão de dados e habilita a interrupção, para que durante o
funcionamento do letreiro seja possível a mudança da frase sem precisar reiniciar o
40
Programação da configuração da comunicação:
Prog: MOV Tmod,#20h; configura timer 1 p/ MODO 2 (recarga automática) MOV TH1,#0E6H;recarrega o timer para taxa de 1200bps
SETB TR1; liga o temporizador 1
MOV IE,#90H; habilita interrupção pela comunicação
MOV SCON,#50H; configura comunicação para MODO 1 (taxa variável) SJMP $; loop infinito até receber algum dado pela comunicação
Org 0023h; endereço para onde o programa salta quando tem interrupção
Mov A,Sbuf; move o dado recebido em SBUF para o acumulador
CLR RI; limpa o aviso de interrupção do receptor, habilitando nova recepção
O valor #0E6H da recarga do timer 1 para 1200 bps é dado pela tabela
contida na aba de ajuda do PEQUI, onde também são encontrados todas as
instruções e exemplos de programação, como mostra a tabela 3.
Tabela 3: Tabela de recarga do temporizador e erro % obtido durante transferência de dados para uma determinada frequência de cristal oscilador.
A tabela 3 mostra que para uma taxa de transmissão de 1200 bps e 2400 bps
41
0,16% e durante os testes, não foram verificados problemas de transmissão devido
a sua velocidade.
O software utilizado para comunicação com o letreiro é o Hyperterminal, que
já vem instalado em versões do Windows. O Hyperterminal permite criar uma
conexão entre computador e um equipamento externo.
Ao conectar o cabo USB/RS232 no computador e no letreiro, é preciso
instalar um driver para reconhecimento do cabo pelo Windows, o driver vem em um
CD junto ao cabo USB/RS232 e faz a simulação da porta USB como sendo uma
porta COM.
O hyperterminal permite ao usuário escolher a porta de comunicação, a taxa
de transmissão, que tipos de dados serão transmitidos e outros parâmetros não
utilizados neste projeto.
O tipo de dados transmitidos são no formato ASCII, uma codificação de
caracteres de oito bits baseada no alfabeto inglês.
As figuras 29 e 30 mostram a configuração do hyperterminal e a tela de
42
Figura 29: Tela de configuração do Hyperterminal.
43
3.3.5 SINCRONIZAÇÃO
Ao iniciar os testes de sincronização, foi preciso achar um ponto para servir
como base e perceber como funciona o sincronismo entre tempo e velocidade do
motor.
O primeiro passo tomado foi criar duas rotinas de tempo, uma controlaria o
tempo em que uma coluna de LEDs ficaria acesa e outra rotina controlaria o tempo
que a coluna de LEDs ficaria apagada. O tempo que a coluna de LEDs ficaria
apagada deveria ser muito maior, para fazer com que os LEDs apenas piscassem
na mesma posição a cada volta.
Após algumas tentativas, mudando os valores das rotinas de tempos e
variando a velocidade do motor, a coluna de LEDs piscava sempre na mesma
posição, mas piscava a cada duas voltas ou mais. O resultado é mostrado na figura
31.
44
O próximo passo foi diminuir o tempo que a coluna de LEDs ficava apagada,
para apenas uma volta. Feito o ajuste, o tempo que a coluna de LEDs ficava
apagada foi ajustada para aproximadamente 104 ms e o tempo que a coluna de
LEDs ficava acesa ajustada para aproximadamente 352 us , com isso, a frequência
para acender apenas uma coluna a cada volta pôde ser calculada,
F = 1 / T = 1 / ( 101 ms + 352 us ) = 9,8 Hz. (1)
Como a frequência é de aproximadamente 9,8 Hz, próxima da frequência de
10 Hz considerada imperceptível pela persistência retiniana, podemos perceber que
a coluna de LEDs não apaga completamente, mas apenas varia sua intensidade
luminosa.
A velocidade aproximada do motor também pôde ser calculada sabendo-se o
tempo total que os LEDs demoram para dar uma volta e acender sempre na mesma
posição. Velocidade do motor = 60 s / (101 ms + 352 us) = 591 rpm. (2)
Com essa frequência, não seria possível criar o efeito estroboscópico com
uma coluna por vez feita em cada volta na formação dos caracteres, foi decidido que
o letreiro deveria mostrar todos os caracteres durante cada volta, assim, a
frequência dos LEDs seria alta e o efeito da persistência retiniana aconteceria.
O último passo foi acender todos os LEDs, formando colunas e preenchendo
toda a circunferência formada pelo giro, substituindo o tempo que o Led ficava
apagado por novas rotinas de tempos para acender e apagar os LEDs várias vezes,
45
Figura 32: Várias colunas de LEDs formadas durante os testes de sincronização.
As colunas foram formadas e o tempos utilizados para manter os LEDs
apagados e acesos foram iguais, 176 us. A velocidade do motor foi mantida em
aproximadamente 561 rpm.
A frequência dos LEDs para a formação das colunas é de:
F = 1 / T = 1 / (704 us) = 1,42 KHz. (3)
Como visto na figura , o efeito desejado foi alcançado, as colunas são vistas
de ponta a ponta na circunferência, devido a alta frequência dos LEDs.
As rotinas de tempo usadas são simples de serem calculadas, como no
exemplo a seguir:
.
MOV R0,#0B0h; move para o registrador R0 o valor de 176
DJNZ R0; decrementa o registrador R0 até chegar ao valor 0, depois continua com a próxima instrução
46
O exemplo cria um atraso de 511 us, a instrução MOV é realizada em 1 us e
cada decrementação da instrução DJNZ é realizada em 2 us, então:
1 + (2 x 176) = 353 us de atraso.
Durante os testes, foi percebido que quanto menor fosse os atrasos de
tempos, maior seria a velocidade do motor para que ocorresse sincronização. Com
atrasos de tempos menores, as colunas ficam mais próximas umas das outras e
para uma melhor visualização, a velocidade do motor deveria ser aumentada.
Como temos o controle sobre a sua velocidade, podemos varia-la até
chegarmos à sincronização desejada, além de mudar o sentido de rotação dos LEDs
quando acesos, fazendo-os girar em sentido horário e anti-horário, de forma rápida
ou devagar, conforme o desejado.
O único cuidado com a variação da velocidade do motor foi para não
prejudicar a estrutura feita de plástico, devido ao grande deslocamento de ar que o
eixo giratório cria. Por esse motivo, a velocidade do motor foi mantida em
aproximadamente 591 rpm.
3.3.6 FORMAÇÃO DOS CARACTERES E FRASE
Com o mapeamento do letreiro, obtido nos testes de sincronização com
colunas, foi possível entender como deveriam ser programados os caracteres.
Grande parte dos caracteres foi programada utilizando quatro colunas, e
algumas exceções, como as letras W, T e M foram programadas com cinco colunas,
assim seriam possíveis a formação de 31 caracteres. Caso haja alguma coluna a
mais ou a menos devido a programação dos caracteres, a correção é feita variando
47
O eixo giratório gira no sentido horário e os caracteres foram programados da
última coluna para a primeira coluna, como na figura 33.
Figura 33: Exemplo de como é feita a programação de uma letra C.
Um exemplo da programação da letra C verde é mostrada na sub-rotina
mostrada na figura 34.
48
Cada sub-rotina de criação das letras apresenta diferenças de tempo em
relação as outras, devido aos comandos para acender os LEDs serem diferentes.
Portanto, os resultados dos cálculos realizados até agora são diferentes para cada
tipo de combinação de letras que a frase necessita. As variações são de poucos
microssegundos em cada letra, mas em uma frase inteira poderá modificar
levemente e a frequência da frase, necessitando de uma modificação da velocidade
do motor.
A formação das frases, assim como as colunas das letras, é feita da última
49
4. RESULTADOS
Com o letreiro pronto e funcionando, a estrutura foi pintada na cor preta fosca,
para que em um ambiente noturno, conseguíssemos ver apenas os LEDs, sem
interferência luminosa devido a reflexos que poderiam ser feitos por luzes sobre a
estrutura. Uma foto da estrutura final é vista na figura 35.
50
Ao iniciar o letreiro, é preciso escolher uma frase através da conexão com um
computador/notebook. Assim que a frase é escolhida, o letreiro passa a apresentar a
frase até que receba outra informação de escolha, trocando a frase a ser mostrada.
Os testes de formação das frases foram feitos para 2 tipos de frases
coloridas, uma frase grande e outra pequena, com pouca variação entre as
velocidades exigidas pelo motor, para que fosse feita a sincronização que causasse
o efeito desejado.
O primeiro teste foi feito com as palavras FATEC – SP. Conforme a foto tirada
no momento do teste, vista na figura 36.
51
O segundo teste foi feito com uma frase grande, completando a circunferência
formada pelo eixo giratório. A frase usada foi TRABALHO DE CONCLUSÃO DE
CURSO! Uma parte da frase é mostrada na figura 37.
Figura 37: Foto do letreiro em funcionamento.
Nos momentos em que as fotos foram tiradas, os textos se apresentavam sem
movimentos, devido ao controle da velocidade do motor.
4.1 PROBLEMAS E DIFICULDADES
O principal problema encontrado foi a compatibilidade entre compilador e
gravador, devido ao compilador ser antigo e sua ultima atualização ser do ano de
52
apresentam mudanças na estrutura, como a quantidade de memória RAM. O
compilador PEQUI disponibiliza 128 Kbytes de memória RAM e os
microcontroladores gravados pelo gravador 8051 USB possuem 256 Kbytes de
memória RAM
Essa falta de compatibilidade fez com que nenhuma instrução utilizando a
memória RAM funcionasse, afetando o objetivo inicial do trabalho.
O objetivo inicial do trabalho era o usuário do letreiro poder escrever uma
frase, que seria reconhecida pelo microcontrolador e o letreiro mostraria o que foi
digitado. Para isso, os dados digitados deveriam ser gravados na memória RAM do
microcontrolador e depois comparados com os caracteres programados.
O manual do gravador 8051 USB indica que a maioria dos compiladores
geram arquivos .HEX incompletos, conforme a imagem da figura 38, retirada do
manual.
53
No manual, os fabricantes deram duas alternativas, a primeira é utilizar o
compilador BASCOM, porém este compilador é pago e sua compra é feita em
dólares. Existe a versão DEMO, mas disponibiliza pouca memória de gravação.
A segunda alternativa é utilizar o programa ICPROG, para compatibilizar o
arquivo HEX com o gravador. O ICPROG compatibiliza o arquivo a ser gravado
apenas criando outro arquivo HEX maior, compilando a memória de programação
usada e o restante não usado em um único arquivo. O ICPROG não compatibiliza a
quantidade de memória RAM compilada de 128 Kbytes para uma RAM de 256
Kbytes que é utilizada pelos novos microcontroladores.
Devido à falta de compatibilidade, o objetivo principal foi mudado para frases
54
5. CONCLUSÃO
Neste trabalho foi desenvolvido um letreiro utilizando 7 LEDs, que são girados
por um motor permitindo a visualização de um texto devido a uma anomalia na retina
humana denominada persistência da retina. Esta anomalia consiste na retenção de
um estímulo visual pela retina humana por uma fração de segundo, mesmo após o
desaparecimento da fonte de luz que o provocou. Graças a esta anomalia, podemos
ver o texto formado a partir da sincronização entre velocidade do motor e controle
dos LEDs por um microcontrolador.
O microcontrolador é responsável por controlar os LEDs necessários para
formação de cada letra e o tempo que cada um permanece aceso ou apagado.
Foram realizados diversos testes para conseguir uma sincronização perfeita,
gerando a visualização das frases de modo que conseguíssemos ver o texto em
qualquer ponto da circunferência.
Os cálculos apresentados sobre frequência e velocidade do motor são apenas
aproximados, devido a necessidade da modificação da velocidade do motor para
cada tipo de combinação das letras, devido ao fato da frequência variar para cada
frase formada.
Os circuitos utilizados são simples e não requerem um grande estudo para a
utilização dos mesmos. A maior parte dos circuitos utilizados é disponibilizada pelos
próprios fabricantes dos componentes, em seus respectivos datasheets.
Durante o desenvolvimento, surgiram pequenos contratempos durante a
55
estrutura, pois sendo de plástico, precisou ser colada com solda plástica, para uma
melhor fixação das caixas.
Os resultados finais foram satisfatórios, após a escolha da frase, o letreiro
começa a apresentar a frase e a visualização é perfeita. O letreiro mostra as frases
sem movimento, com movimento horário e com movimento anti-horário que podem
ser escolhidos variando a velocidade do motor.
5.1 TRABALHOS FUTUROS
O letreiro pode ser melhorado em alguns setores, como estrutura,
comunicação e programação. Com uma estrutura mais rígida e aerodinâmica,
poderiam ser feitas sincronizações com velocidades mais altas, sem a preocupação
de a velocidade de giro danificar a estrutura.
A comunicação pode ser feita sem utilização de cabos, aumentando a
comodidade do usuário, e mudando a frase sem precisar desligar o motor. A
comunicação poderia ser feita por WI-FI, simples sinais de rádio frequência, ou por
celulares, simplesmente discando o código necessário. Poderiam ser enviados
sinais por celulares, tablets e outros equipamentos eletrônicos.
A programação pode ser aperfeiçoada, diminuindo o número de instruções,
como o tamanho da programação não foi vista como algo preocupante no decorrer
do trabalho, a programação acabou ficando grande, mas pode ser otimizada.
A programação pode ser incrementada, por exemplo, com uma rotina de
56
6.REFERÊNCIAS
[1] NICOLOSI, D. E., Microcontrolador 8051 Detalhado, 6ª edição, São Paulo: Érica,
2007. Cap. 1, 2, 3, 8 e 10.
[2] Atmel Corporation. Datasheet do microcontrolador AT89S8253. Disponível em:
<http://www.atmel.com/Images/doc3286.pdf>; Acessado em 04/10/2011.
[3] Maxim inovation delivered. Datasheet do circuito integrado MAX232. Disponível
em: <http://www.maxim-ic.com/datasheet/index.mvp/id/1798>. Acessado em
29/10/2011.
[4] Instituto Newton C. Braga. Efeito estroboscópico. Disponível em:
<http://www.newtoncbraga.com.br/index.php/almanaque/1829-alm248.html>.
Acessado em 15/02/2012.
[5] Cerne tecnologia e treinamento. Manual do gravador 8051 USB. Disponível em:
57
7. ANEXO A: PROGRAMA
Neste anexo, estão contidas as linhas de programação principais, uma rotina
de frase e uma rotina de letra.
Prog: (rotina que configura a comunicação e recebimento do código digitado)
Mov Tmod,#20h; (configura timer 1 p/ MODO 2 (recarga automática))
MOV TH1,#0E6H; (recarrega o timer para taxa de 1200bps)
SETB TR1; (liga o temporizador 1)
MOV IE,#90H; (habilita interrupção pela comunicação)
MOV SCON,#50H; (configura comunicação para MODO 1 (taxa variável))
RECEBE: SJMP $; (loop infinito até receber algum dado pela comunicação)
Org 0023h; (endereço para onde o programa salta quando tem interrupção)
Mov A,Sbuf; (move o dado recebido em SBUF para o acumulador)
CLR RI; (limpa o aviso de interrupção do receptor, habilitando nova recepção)
JMP compara; (salta para a rotina de comparação)
compara: ( rotina que compara o que foi digitado e salta para a frase escolhida)
cjne a,#61h,frase2; (compara o que foi digitado, se for diferente de #61, salta para frase2)
jmp inicio; (salta para a frase com código #61)
frase2: cjne a,#62h,frase3; (compara o que foi digitado, se for diferente de #62, salta para frase3, se for igual, salta para a frase escolhida)
jmp inicio1; (salta para a frase com código #62)
frase3: cjne a,#63h,frase4; (compara o que foi digitado, se for diferente de #63, salta para frase4, se for igual, salta para a frase escolhida)
jmp inicio2; (salta para a frase com código #63)
frase4:cjne a,#64h,frase5; (compara o que foi digitado, se for diferente de #64, salta para frase5, se for igual, salta para a frase escolhida)
jmp inicio3; ( pula para a frase com código #64)
frase5: cjne a,#65h,frase6; (compara o que foi digitado, se for diferente de #65, salta para frase6, se for igual, salta para a frase escolhida)
jmp inicio4; (salta para a frase com código #65)
frase6: cjne a,#66h,frase7; (compara o que foi digitado, se for diferente de #66, salta para frase7, se for igual, salta para a frase escolhida)
jmp inicio5; (salta para a frase com código #66)
frase7: ( rotina que acende cada LED com uma cor diferente e chama rotina que envia a informação de código não aceito)
mov p1,#11011110b; mov p2,#00011000b; CLR p3.5;
58 CLR p3.3;
call envia; ( chama rotina que envia a informação de código não aceito)
JMP RECEBE; (salta para rotina RECEBE)
INICIO: ( rotina que cria uma das frases)
mov r2,#0CCh; ( carrega o registrador r2)
call letraspc; ( chama rotina que cria um espaço de 4 colunas)
call atraso; ( chama rotina que cria um espaço entre as letras)
mov r2,#0CCh; (carrega o registrador r2)
call letraEverde; ( chama a rotina que cria a letra E verde)
call atraso; ( chama rotina que cria um espaço entre as letras)
59 call atraso; mov r2,#0CCh; call letraFazul; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso; mov r2,#0CCh; call letraspc; call atraso;
60
Durante a execução, são chamados 31 caracteres por frase. A execução fica em
loop infinito, formando a mesma frase repetitivamente até que receba outro código.
letraEamarelo: ( rotina que cria a letra E amarela)
djnz r2,letraEamarelo; ( decrementa r2 para criar um atraso, após isso, acende uma coluna com as próximas instruções)
CLR P1.0; ( acende o LED ligado a porta P1.0)
CLR P2.1; CLR P3.4; CLR P1.1; CLR P2.2; CLR P3.2;
mov r2,#0B0h; ( carrega o registrador r2)
letraEamarelo4: djnz r2,letraEamarelo4; ( decrementa r2 para criar um atraso, que mantem os LEDs acesos)
call apaga;
mov r2,#0B1h; ( carrega o registrador r2)
letraEamarelo33: djnz r2,letraEamarelo33; ( decrementa r2 para criar um atraso, que mantem os LEDs apagados)
CLR P1.0; CLR P2.1; CLR P3.4; CLR P1.1; CLR P2.2; CLR P3.2;
mov r2,#0B0h; ( carrega o registrador r2)
letraEamarelo3: djnz r2,letraEamarelo3; ( decrementa r2 para criar um atraso, que mantem os LEDs acesos)
call apaga;
mov r2,#0B1h; ( carrega o registrador r2)
letraEamarelo22: djnz r2,letraEamarelo22; ( decrementa r2 para criar um atraso, que mantem os LEDs apagados)
CLR P1.0; CLR P2.1; CLR P3.4; CLR P1.1; CLR P2.2; CLR P3.2;
mov r2,#0B0h; ( carrega o registrador r2)
letraEamarelo2: djnz r2,letraEamarelo2; ( decrementa r2 para criar um atraso, que mantem os LEDs acesos)
call apaga;
mov r2,#0B1h; ( carrega o registrador r2)
letraEamarelo13: djnz r2,letraEamarelo13; ( decrementa r2 para criar um atraso, que mantem os LEDs apagados)
61 CLR P2.1;
CLR P2.4; CLR P2.7; CLR P3.4; CLR P1.5; CLR P1.7; CLR P1.1; CLR P2.2; CLR P2.5; CLR P3.6; CLR P3.2;
mov r2,#0B0h; ( carrega o registrador r2)
letraEamarelo1: djnz r2,letraEamarelo1; ( decrementa r2 para criar um atraso, que mantem os LEDs acesos)
call apaga; ( chama rotina que apaga todos os LEDs)