UNIVERSIDADE PAULISTA
INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS- ICET

TRABALHO DE APS - 8º SEMESTRE
ENGENHARIA MECATRÔNICA

SÃO JOSÉ DOS CAMPOS-SP
2013
UNIVERSIDADE PAULISTA
INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGICASICET

RELÓGIO ANALÓGICO POV
PROPELLER CLOCK
(PERSISTENCE OF VISION)

FABIANO FORMAGINI– A554JI0
JENNIFER DINIZ MACIEL-A496157
ANDRESS HEIJI NOMURA-A578CD5
JONATHAN YUJIRO GONDO-A4764J8
EDSON GABRIEL COLMAN MAIA-A4286I0
JONATHAN GUILHERME T DE MORAES-A480080

SÃO JOSÉ DOS CAMPOS-SP
Novembro de 2013
ÍNDICE
RESUMO

Pg4

ILUSÃO DE ÓPTICA

Pg4

EXPLICANDO O FENÔMENO POV

Pg5

O PROJETO

Pg5

PCI e MOTOR

Pg6

ALIMENTAÇÃO

Pg6

LEDs

Pg7

DRIVER

Pg7

MICROCONTROLADOR E SOFTWARE

Pg7

ACIONAMENTO DA BARRA DE LEDs

Pg8

MOSTRAGEM DOS PONTEIROS

Pg9

CÓDIGO FONTE

Pg10

DIAGRAMA ESQUEMÁTICO

Pg19

LAYOUT DA PLACA

Pg20

FOTO DO PROTÓTIPO

Pg21

REFERÊNCIAS BIBLIOGRÁFICAS

Pg22

3
RESUMO

Este é um dispositivo diferenciado, pois diferentemente dos relógios convencionais,
neste não existem ponteiros reais nem painéis estáticos.
Como o próprio nome deixa subentendido, “The PropellerClock ” é um relógio
constituído de uma hélice acoplada ao eixo de um motor. A interface deste é efetivada
através de uma barra de LEDs que se encontra acoplada a esta hélice.
Utilizando os princípios de varrimento mecânico, a barra de LEDs é previamente
programada para que, em determinados momentos já pré-estabelecidos, pisquem,
provocando aos observadores a ilusão de imagens serem exibidas no ar. Estes são
conhecidos também como Displays Aéreos.
Especificamente o “The PropellerClock”, consiste em um RTC – implementado por
software – que exibe, no ar, a imagem de um pseudo-relógio analógico mecânico.
ILUSÃO DE ÓPTICA

O termo Ilusão de Óptica aplica-se a todos os fenômenos que tem a capacidade de
distorcer a resposta do sistema visual humano, sendo capaz de induzir o ser a ver algo
que não está fisicamente presente ou simplesmente alterar a forma de percepção visual.
Estas podem assumir caráter fisiológico ou até mesmo cognitivo, surgindo
naturalmenteou sendo induzidas.As cores e as formas usuais sobre o que pode ser visto, surge
instantaneamente noscircuitos neurais dos seres humanos e influenciam na representação de
alguma cena. Aspropriedades percebidas dos objetos, tais como o brilho, tamanho angular e
cor sãodeterminadas inconscientemente e não são propriedades físicas reais. A interpretação
doque o ser humano vê no mundo exterior é uma tarefa muito complexa.
Estudos mostram que existem mais de trinta áreas diferentes de cérebro humano
voltadas a reproduzir e processar as imagens do mundo exterior. Algumas áreas
parecem corresponder ao movimento outras à cor, outras à profundidade e mesmo à
direção de um contorno. Existe também uma tendência do cérebro humano a simplificar
as coisas em relação ao que elas realmente são. E é essa simplificação que permite ao
ser humano uma apreensão mais rápida. - ainda que imperfeita - da realidade exterior, o
que dá origem às ilusões de óptica.

4
Foi em 1995 que Bob Blick desenvolver um relógio utilizando o conceito de escrita
por varrimento mecânico, utilizando um array de sete LEDs acopladas a um motor.Batizou
seu projeto de PropellerClock , a partir de então, inúmeros outros projetos foram criados.

EXPLICANDO O FENÔMENO POV
Foram encontradas em cavernas pré-históricas as primeiras sequências de figuras
desenhadas pelo homem de modo a produzirem a sensação de movimento.Essa descoberta
confirma a percepção de que quando folheamos rapidamente desenhos ou fotografias em
sequência elas parecem se mover. Foi só em 1826 que o médico e filólogo inglês Peter Mark
Rogetpublicou um estudo sobre o assunto.
Segundo o cientista, o olho humano retém a imagem que se forma na retina por alguns
décimos de segundo a mais (aproximadamente 1/24 de segundo) mesmo após o clarão que a
provocou haver desaparecido.Essa peculiaridade do sistema óptico humano capaz de reter a
imagem por esse pequeno lapso de tempo é conhecida como persistência da visão ou
persistência retiniana.
Três anos após essa descoberta, o físico belga Joseph-Antoine Plateau foi o primeiro a
medir o tempo da persistência da visão ao concluir quepara uma série de imagens darem a
ilusão de movimento é necessário que se sucedam à razão de dez por segundo.
Baseados nessas descobertas, inúmeros equipamentos foram criados para captar a
imagem do movimento. Os primeiros aparelhos de projeção eram formados por discos com
várias imagens coladas em posições diferentesque ao serem rodados, davam a impressão de
mobilidade. Para filmar um corpo em movimento, são feitas várias fotos (fotogramas) em
intervalos bem curtos e hoje a velocidade de filmagem e projeção é padronizada em 24
fotogramas por segundo.
Como a imagem na retina persiste no intervalo de tempo compreendido entre duas
imagens sucessivas, o fotograma seguinte é projetado no exato instante em que o fotograma
anterior está desaparecendo de nossa "memória visual", o que produz a sensação de
movimento contínuo.
A ciência da visão é muito mais complexa do que tudo que foi acima citado.

5
O PROJETO
Todos os componentes com exceção do microcontrolador são em SMD
( Surface Mounting Devices) em razão da miniaturização constate nos dias de hoje.

PCI e MOTOR
A PCI ( placa de circuito impresso) é de fenolite com um lado cobreado, o layout foi
montado no software Eagle, (EasilyApplicableGraphicalLayout Editor) da Cadsoft , e
impresso em folha A4 ,este foi transferido para a placa de fenolite por compressão e calor e
assim mergulhada na solução de percloreto de ferro para a corrosão do cobre. As partes
pintadas não são corroídas eas partes nú o ácido reage com o cobre corroendo o mesmo.
O alinhamento e o balanceamento foi observado com critério, uma vez que a placa
desbalanceada causa vibração no momento do giro. O motor usado é um Motor DC Mabuchi,
e com giro de 950RPM. A rotação do motor foi setada variando-se a tensão de alimentação do
mesmo e o eixo do motor foi acoplado ao centro de gravidade da placa.

ALIMENTAÇÃO
A alimentação do circuito é feita com 3 bobinas de 33uH, L1,L2 e L3 estas acopladas
posterior a placa. Estaticamente temos um imã , que com a rotação da PCI as bobinas geram
um campo eletromagnético e a DDP gerada é retificada por onda completa pelos diodos
retificadores de chaveamento rápido ( Schottky) fabricados pela Rohm, de PartNumber
RB161M-20, e D1,D2 e D3, se apresentam em encapsulamento SOD-1231 . A tensão é filtrada
por dois capacitores, C3 e C4.
A tensão gerada é insuficiente para acender os LEDs, esta então é elevada e
estabilizada em 5.3Volts pelo CI Step-UP EUP2584 2. A alimentação do PIC® é feita
através de D5 e mesmo com o motor parado, temos alimentação para o PIC® graças a um
capacitor de back-up ,C7, um Gold-Cap3 da Serie SD do fabricante Panasonic, PartNumberGC5.5V0.33F .Com este cuidado o PIC continua contando as horas sem que resete o
relógio, neste momento o diodo D5 desempenha outra função, impedir que a tensão retorne e
alimente os LEDs, descarregando C7.

6
LEDs
Os LEDs são montados em linha sendo intercaladas as cores para assim se obter o
ponteiro das horas ,minutos e segundos em cores distintas, um LED foi adicionado para
marcar a posição das horas e um segundo LED faz o circulo em torno do relógio, este
mantem-se aceso constantemente e com o giro do dispositivo, temos o contorno do relógio.
Para uma melhor visualização dos ponteiros, aumentamos o numero de "pixels"
(LEDs) ,usando 21 LEDs na cor Vermelha e 26 LEDs na cor verde. Os LEDs vermelhos,
LED 1 a LED 21 e LED48, são do fabricante Multicomp ,de PartNumber
MCL-S290SRC4 e encapsulamento 06035 com 15mcd de intensidade luminosa cada. Os LEDs
verde e o LED azul,( LED 22 a LED 47e LED 49) são do fabricante KingBright, de
PartNumber KP-2012SGC6, e encapsulamento 0603 com 15mcd de intensidade luminosa
cada.
DRIVER
O controle de alimentação dos LEDs é feito por 4 transistores Mos-Fet Canal-P SMD,
fabricado pela Advance Power Electronics Corporation, de PartNumber AP2301GN7,
suportam uma corrente de até -2.6A cada. Entretanto , a corrente máxima aplicada em cada
transistor neste projeto não passa de algumas centenas de mA.
Os resistores limitadores de corrente são SMD de encapsulamento 0603. R1 a R21 são
de 470 Ohms e R22 a R48 são de 240 Ohms .

MICROCONTROLADOR E SOFTWARE
O Microcontrolador escolhido foi o PIC16F6848 do fabricante Microchip, uma vez
que ele consome em operação normal com cristal de 32.768Khz apenas 11µA . A
programação é em Assembly, que é a língua primitiva dos micro-controladores. Linguagem
Assembly, como opróprio nome sugere é definida como linguagem de montagem. Tem essa
definição pois é uma linguagem de baixo nível, sendo ela a mais próxima da linguagem de
máquina.
A lógica de funcionamento do software pode ser dividida em quatro etapas: a
primeira etapa é o pré-set do relógio; a segunda etapa é responsável pelo controle da
7
base de tempo do relógio; a terceira etapa é a responsável por detectar a posição da barra e a
última etapa, responsável por controlar o acionamento da barra de LEDs – levando em
consideração as duas primeiras etapas.
Primeiramente, é necessário fazer o pré-set do horário para isso utilizam-se duas
portas do micro-controlador que estão conectadas a um sensor infravermelho. Cada vez que
um sensor é ativado, tem um respectivo valor de tensão analógico, zero, este que é
reconhecido e tratado pelo micro-controlador. Cada sensor tem uma função distinta: T1 ajusta
as horas e T2 os minutos.
Como é proposto em seu próprio título, é necessário criar um relógio para o controle
da base de tempo. A idéia inicial para implementação deste relógio foi utilizar o clock gerado
pelo cristal e dividir para se obter uma freqüência de 1Hz. Pensando nas limitações mecânicas
do dispositivo e nas limitações do próprio micro-controlador optou-se em implementar um
RTC (real time clock) por software. Para implementação do RTC foi adaptada uma biblioteca
pronta. Esta biblioteca configura um timer interno do micro-controlador para atender uma
interrupção a cada segundo, fazendo assim com que haja o incremento de segundo. Para
incremento do minuto, testa-se a variável que armazena os segundos. Para incremento da
hora, testa-se a variável dos minutos.
O monitor de posição é efetuado através da resposta do Sensor de efeito Hall, IC2
PartNumberA11049, da Allegro Micro Systems. Este sensor atua sempre que o motor
completa um giro de 360º marcando cada volta. Nos micro-controladores da família PIC®
existe um pino que pode ser configurado para atender uma interrupção externa toda vez que
detectar uma troca de nível de sinal,ou seja, sempre que o sensor atuar.
Para calcular a rotação do motor utiliza-se uma interrupção externa, esta que será
atendida sempre que o sensor atuar detectando uma borda de descida no pino do microcontrolador. Toda vez que esta interrupção externa for atendida, o programa incrementa uma
variável, que a cada segundo conta quantas vezes foram detectadas estas interrupções ou seja,
guarda o número de voltas que foram dadas pelo motor durante um segundo.

ACIONAMENTO DA BARRA DE LEDs
O controle para o acionamento dos LEDs é dependente das supra-referidas etapas,
pois o acionamento dos mesmos ocorre com base na hora e velocidade atual.
8
Primeiramente é necessário salientar o número de posições que cada ponteiro pode assumir.
O ponteiro responsável pela exibição das horas pode assumir 12 posições, enquanto os
ponteiros responsáveis pela exibição dos minutos e segundos assumem 60 posições cada.
Para saber a posição exata de cada ponteiro, é necessário que exista um ponto de
referência fixo. Para isto, o sensor de efeito Hall foi estrategicamente posicionado, servindo
de referência ao software e fazendo com que, no momento em que o sensor é acionado, o
dispositivo esteja na posição 12 Horas. É este ponto de referencia que possibilita estimar o
tempo necessário para atingir cada passo dos ponteiros. Partindo destas premissas, é possível
controlar devidamente o dispositivo.Feita a leitura do horário atual calcula-se a velocidade de
rotação do motor para corrigir o tempo de passo dos ponteiros. Com base no horário obtido,
sabem-se quantos passos é necessário dar para o ponteiro chegar à respectiva posição. Após
saber o número de passos necessários, configura-se um timer interno do micro-controlador
para aguardar o tempo correto para poder efetivar o acionamento da barra de LEDs no ponto
correspondente. Este procedimento é efetuado para os três ponteiros.

MOSTRAGEM DOS PONTEIROS
HORA
Para a mostrar o ponteiro marcador das horas as portas RC0 e RC4 do PIC® passam
o nível lógico para "1" para "0".
MINUTOS
Para a mostrar o ponteiro marcador dos minutos as portas RC3 e RC4 do PIC®
passam o nível lógico para "1" para "0".
SEGUNDOS
Para a mostrar o ponteiro marcador dos segundos as portas RC0 e RC1 do PIC®
passam o nível lógico para "1" para "0".

9
CÓDIGO FONTE
LIST P=16F684, R=DEC
INCLUDE "p16f684.inc"
__CONFIG _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _CPD_OFF & _CP_OFF &
_MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
CBLOCK 0x20
hours, minutes, seconds, hrpos
w_save, stat_save, pc_save
temp, tick, tickNotch
debounce:2
ENDC

ORG 0
goto

; iniciaprograma
main

ORG 4

; ISR é chamado a cada segundo

movwf

w_save

; salvaWreg

swapf

STATUS, w

; salvasem stat reg

movwf

stat_save

; troca flags

btfss

PIR1, TMR1IF

; TMR1 interrupção

goto

start

; -processo de sinc de pulso

movlw

128

; seta prox. interrupção

movwf

TMR1H

; separa 1 segundo

incf

seconds, f

; carrega o código ISR

movlw

60

subwf

seconds, w

btfss

STATUS, Z
10
goto

ISR_end

clrf

seconds

incf

minutes, f

movf

hours, w

movwf

hrpos

addwf

hrpos, f

addwf

hrpos, f

addwf

hrpos, f

addwf

hrpos, f

movf

minutes, w

movwf

temp

movlw

12

incf

hrpos, f

subwf

temp, f

btfsc

STATUS, C

goto

$-3

decf

hrpos, f

movlw

60

subwf

minutes, w

btfss

STATUS, Z

goto

ISR_end

clrf

minutes

incf

hours, f

; seconds = segundos (mod 60)

; hrpos = horas

; hrpos = horas * 5

; hrpos += floor(minutos/12)

; minutes = minutos (mod 60)

movlw 12
subwf

hours, w
11
btfss

STATUS, Z

goto

ISR_end

clrf

hours

; horas = horas (mod 12)

bcf

PIR1, TMR1IF

; limpainterrupção

swapf

stat_save, w

; carrega original flags in STATUS

movwf

STATUS

swapf

w_save, f

swapf

w_save, w

ISR_end

; restore Wreg

retfie
main

; código principal
clrf

PORTA

clrf

PORTC

movlw 0x07
movwf

CMCON0

; comparadores OFF

bsf

STATUS, RP0

; chaveiapara BANK 1

clrf

ANSEL ^ 0x80

; todas entradas digitais

clrf

TRISA ^ 0x80

; PORTA saída

bsf

TRISA ^ 0x80, 2

; INT pin para entrada

clrf

TRISC ^ 0x80

; enable PORTC para saída

bsf

TRISC ^ 0x80, 5

; PORTC pin 5 é entrada

bsf

PIE1 ^ 0x80, TMR1IE

; enable TMR1 interrupts

bcf

OPTION_REG^0x80, 6

; interromper ao cair nível RA2

bcf

STATUS, RP0

; retorna para BANK 0

movlw b'00001111'

; enable TMR1 com clock externo
12
movwfT1CON
bsf

INTCON, PEIE

bsf

INTCON, INTE

bcf

PIR1, TMR1IF

clrf

hours

clrf

hrpos

clrf

minutes

clrf

seconds

clrf

tick

; posiçãoatual da placa

clrf

tickNotch

; led azul, posição

incf

tickNotch, f

bcf

INTCON, INTF

; clear INT flag

bsf

INTCON, GIE

; (re)-enable todas interrupções

start

loop

; loop
movlw

b'011011'

movwf

PORTC

decfsz

tickNotch, f

goto

$+4

bsf

PORTC, 2

movlw

5

movwf

tickNotch

movf

seconds, w

subwf

tick, w

btfss

; apaga display

STATUS, Z

; set the Z flag

; liga led azul

; tickNotch = 5

13
goto

check_min

bcf

PORTC, 0

bcf

PORTC, 1

; exibir ponteiro segundos

check_min
movf

minutes, w

subwf

tick, w

btfss

STATUS, Z

goto

check_hours

bcf

PORTC, 3

bcf

PORTC, 4

; exibir ponteiro minutos

check_hours
movf

hrpos, w

subwf

tick, w

btfss

STATUS, Z

goto

$+3

bcf

PORTC, 1

bcf

PORTC, 4

call

delayOn

movlw

b'010111'

movwf

PORTC

call

delayOff

; gap delay

incf

tick, f

; atualiza mostrador de horas

; exibir ponteiro horas

; apaga display

movlw 60
subwf

tick, w

btfss

STATUS, Z
14
goto

loop

setTime
call

wait4Release

; aguarda 32 msec para soltar botão

call

wait4Press

; aguarda 32 msec para pressionar botão

goto

setTime

wait4Release
clrf

debounce

; aguarda soltar botões

clrf

debounce+1

btfss

PORTA, 3

; botão de minutos solto?

goto

wait4Release

; NAO-aguarda soltar

btfss

PORTC, 5

; botão horas liberado?

goto

wait4Release

; NAO - aguardar liberar

incf

debounce, f

btfsc

STATUS, Z

incf

debounce+1, f

btfss

debounce+1, 4

goto

$-6

; 4096*8 = 32msec

return
wait4Press
clrf

debounce

; aguardar botão ser pressionado

clrf

debounce+1

btfsc

PORTC, 5

; botão horas pressionado?

goto

checkMinButt

; NO - check outro botão

incf

debounce, f

btfsc

STATUS, Z
15
incf

debounce+1, f

btfss

debounce+1, 4

goto

$-6

call

incHours

; atualiza horas

call

blink

; pisca led azul

btfsc

PORTA, 3

; botão de minutos pressionado?

goto

wait4Press

; Não - aguarde pressionar

incf

debounce, f

btfsc

STATUS, Z

incf

debounce+1, f

btfss

debounce+1, 4

goto

$-6

call

incMinutes

; atualiza minutos

call

blink

;pisca led azul

; 4096*8 = 32msec

return
checkMinButt

; 4096*8 = 32msec

return
incHours

; incrementa horas mod 12

bcf

INTCON, GIE

incf

; desabillita interrupções

hours, f

movlw 12
subwf

hours, w

btfsc

STATUS, C

; hora é >= 12 ?

clrf

hours

; SIM - limpa

movf

hours, w

; computa nova posição de hrpos
16
movwf hrpos

; hrpos = hours

addwf

hrpos, f

addwf

hrpos, f

addwf

hrpos, f

addwf

hrpos, f

movf

minutes, w

movwf

temp

movlw

12

incf

hrpos, f

subwf

temp, f

btfsc

STATUS, C

goto

$-3

decf

hrpos, f

bsf

INTCON, GIE

inc

Minutes

bcf

INTCON, GIE

incf

minutes, f

; hrpos = hours * 5

; hrpos += floor(minutes/12)

return
; incrementa minutos mod 60

movlw 60
subwf

minutes, w

btfsc STATUS, C

; minutos é >= 60 ?

clrf

minutes

; YES - limpa

bsf

INTCON, GIE

return
blink

; pisca led azul base te tempo de 100ms
17
bsf

PORTC,2

movlw

100

movwf

temp

movlw

250

addlw

-1

btfss

STATUS, Z

goto

$-2

decfsz

temp, f

goto

$-5

bcf

PORTC, 2

; led azul, on

; desliga led azul

return
delayOn

; formar intervalo de tempo para mostrar posição horas

movlw

10

addlw

-1

btfss

STATUS, Z

goto

; e ponteiros

$-2

return
delayOff

; formar intervalos entre minutos

movlw 90

; mostrador

addlw -1
btfss STATUS, Z
; a soma dos dois últimos retardos não deverá
exceder 110 msec para prevenir efeitoflicker
goto

$-2

return
END

18
DIAGRAMA ESQUEMÁTICO

19
LAYOUT DA PLACA

20
FOTO DO PROTÓTIPO

21
REFERENCIAS BIBLIOGRÁFICAS
1-http://www.icbank.com/icbank_data/semi_package/sod123_dim.pdf
2-http://www.bdtic.com/DataSheet/EUTECH/EUP2584.pdf

3 -http://www.panasonic.com/industrial/components/pdf/goldcap_tech-guide_052505.pdf
4-http://www.farnell.com/datasheets/1671538.pdf
5-http://www.panasonic.com/industrial/components/pdf/AOA0000CE1.pdf
6-http://datasheet.octopart.com/KP-2012SGC-Kingbright-datasheet-7584627.pdf
7- http://www.tme.eu/at/Document/b0c1ffacb22e23996c5177b97bc3c132/AP2301GN-3.pdf
8- http://ww1.microchip.com/downloads/en/devicedoc/41202f-print.pdf
9-http://www.farnell.com/datasheets/926082.pdf

22

POV- Propeller Clock- Relógio Analógico

  • 1.
    UNIVERSIDADE PAULISTA INSTITUTO DECIÊNCIAS EXATAS E TECNOLÓGICAS- ICET TRABALHO DE APS - 8º SEMESTRE ENGENHARIA MECATRÔNICA SÃO JOSÉ DOS CAMPOS-SP 2013
  • 2.
    UNIVERSIDADE PAULISTA INSTITUTO DECIÊNCIAS EXATAS E TECNOLÓGICASICET RELÓGIO ANALÓGICO POV PROPELLER CLOCK (PERSISTENCE OF VISION) FABIANO FORMAGINI– A554JI0 JENNIFER DINIZ MACIEL-A496157 ANDRESS HEIJI NOMURA-A578CD5 JONATHAN YUJIRO GONDO-A4764J8 EDSON GABRIEL COLMAN MAIA-A4286I0 JONATHAN GUILHERME T DE MORAES-A480080 SÃO JOSÉ DOS CAMPOS-SP Novembro de 2013
  • 3.
    ÍNDICE RESUMO Pg4 ILUSÃO DE ÓPTICA Pg4 EXPLICANDOO FENÔMENO POV Pg5 O PROJETO Pg5 PCI e MOTOR Pg6 ALIMENTAÇÃO Pg6 LEDs Pg7 DRIVER Pg7 MICROCONTROLADOR E SOFTWARE Pg7 ACIONAMENTO DA BARRA DE LEDs Pg8 MOSTRAGEM DOS PONTEIROS Pg9 CÓDIGO FONTE Pg10 DIAGRAMA ESQUEMÁTICO Pg19 LAYOUT DA PLACA Pg20 FOTO DO PROTÓTIPO Pg21 REFERÊNCIAS BIBLIOGRÁFICAS Pg22 3
  • 4.
    RESUMO Este é umdispositivo diferenciado, pois diferentemente dos relógios convencionais, neste não existem ponteiros reais nem painéis estáticos. Como o próprio nome deixa subentendido, “The PropellerClock ” é um relógio constituído de uma hélice acoplada ao eixo de um motor. A interface deste é efetivada através de uma barra de LEDs que se encontra acoplada a esta hélice. Utilizando os princípios de varrimento mecânico, a barra de LEDs é previamente programada para que, em determinados momentos já pré-estabelecidos, pisquem, provocando aos observadores a ilusão de imagens serem exibidas no ar. Estes são conhecidos também como Displays Aéreos. Especificamente o “The PropellerClock”, consiste em um RTC – implementado por software – que exibe, no ar, a imagem de um pseudo-relógio analógico mecânico. ILUSÃO DE ÓPTICA O termo Ilusão de Óptica aplica-se a todos os fenômenos que tem a capacidade de distorcer a resposta do sistema visual humano, sendo capaz de induzir o ser a ver algo que não está fisicamente presente ou simplesmente alterar a forma de percepção visual. Estas podem assumir caráter fisiológico ou até mesmo cognitivo, surgindo naturalmenteou sendo induzidas.As cores e as formas usuais sobre o que pode ser visto, surge instantaneamente noscircuitos neurais dos seres humanos e influenciam na representação de alguma cena. Aspropriedades percebidas dos objetos, tais como o brilho, tamanho angular e cor sãodeterminadas inconscientemente e não são propriedades físicas reais. A interpretação doque o ser humano vê no mundo exterior é uma tarefa muito complexa. Estudos mostram que existem mais de trinta áreas diferentes de cérebro humano voltadas a reproduzir e processar as imagens do mundo exterior. Algumas áreas parecem corresponder ao movimento outras à cor, outras à profundidade e mesmo à direção de um contorno. Existe também uma tendência do cérebro humano a simplificar as coisas em relação ao que elas realmente são. E é essa simplificação que permite ao ser humano uma apreensão mais rápida. - ainda que imperfeita - da realidade exterior, o que dá origem às ilusões de óptica. 4
  • 5.
    Foi em 1995que Bob Blick desenvolver um relógio utilizando o conceito de escrita por varrimento mecânico, utilizando um array de sete LEDs acopladas a um motor.Batizou seu projeto de PropellerClock , a partir de então, inúmeros outros projetos foram criados. EXPLICANDO O FENÔMENO POV Foram encontradas em cavernas pré-históricas as primeiras sequências de figuras desenhadas pelo homem de modo a produzirem a sensação de movimento.Essa descoberta confirma a percepção de que quando folheamos rapidamente desenhos ou fotografias em sequência elas parecem se mover. Foi só em 1826 que o médico e filólogo inglês Peter Mark Rogetpublicou um estudo sobre o assunto. Segundo o cientista, o olho humano retém a imagem que se forma na retina por alguns décimos de segundo a mais (aproximadamente 1/24 de segundo) mesmo após o clarão que a provocou haver desaparecido.Essa peculiaridade do sistema óptico humano capaz de reter a imagem por esse pequeno lapso de tempo é conhecida como persistência da visão ou persistência retiniana. Três anos após essa descoberta, o físico belga Joseph-Antoine Plateau foi o primeiro a medir o tempo da persistência da visão ao concluir quepara uma série de imagens darem a ilusão de movimento é necessário que se sucedam à razão de dez por segundo. Baseados nessas descobertas, inúmeros equipamentos foram criados para captar a imagem do movimento. Os primeiros aparelhos de projeção eram formados por discos com várias imagens coladas em posições diferentesque ao serem rodados, davam a impressão de mobilidade. Para filmar um corpo em movimento, são feitas várias fotos (fotogramas) em intervalos bem curtos e hoje a velocidade de filmagem e projeção é padronizada em 24 fotogramas por segundo. Como a imagem na retina persiste no intervalo de tempo compreendido entre duas imagens sucessivas, o fotograma seguinte é projetado no exato instante em que o fotograma anterior está desaparecendo de nossa "memória visual", o que produz a sensação de movimento contínuo. A ciência da visão é muito mais complexa do que tudo que foi acima citado. 5
  • 6.
    O PROJETO Todos oscomponentes com exceção do microcontrolador são em SMD ( Surface Mounting Devices) em razão da miniaturização constate nos dias de hoje. PCI e MOTOR A PCI ( placa de circuito impresso) é de fenolite com um lado cobreado, o layout foi montado no software Eagle, (EasilyApplicableGraphicalLayout Editor) da Cadsoft , e impresso em folha A4 ,este foi transferido para a placa de fenolite por compressão e calor e assim mergulhada na solução de percloreto de ferro para a corrosão do cobre. As partes pintadas não são corroídas eas partes nú o ácido reage com o cobre corroendo o mesmo. O alinhamento e o balanceamento foi observado com critério, uma vez que a placa desbalanceada causa vibração no momento do giro. O motor usado é um Motor DC Mabuchi, e com giro de 950RPM. A rotação do motor foi setada variando-se a tensão de alimentação do mesmo e o eixo do motor foi acoplado ao centro de gravidade da placa. ALIMENTAÇÃO A alimentação do circuito é feita com 3 bobinas de 33uH, L1,L2 e L3 estas acopladas posterior a placa. Estaticamente temos um imã , que com a rotação da PCI as bobinas geram um campo eletromagnético e a DDP gerada é retificada por onda completa pelos diodos retificadores de chaveamento rápido ( Schottky) fabricados pela Rohm, de PartNumber RB161M-20, e D1,D2 e D3, se apresentam em encapsulamento SOD-1231 . A tensão é filtrada por dois capacitores, C3 e C4. A tensão gerada é insuficiente para acender os LEDs, esta então é elevada e estabilizada em 5.3Volts pelo CI Step-UP EUP2584 2. A alimentação do PIC® é feita através de D5 e mesmo com o motor parado, temos alimentação para o PIC® graças a um capacitor de back-up ,C7, um Gold-Cap3 da Serie SD do fabricante Panasonic, PartNumberGC5.5V0.33F .Com este cuidado o PIC continua contando as horas sem que resete o relógio, neste momento o diodo D5 desempenha outra função, impedir que a tensão retorne e alimente os LEDs, descarregando C7. 6
  • 7.
    LEDs Os LEDs sãomontados em linha sendo intercaladas as cores para assim se obter o ponteiro das horas ,minutos e segundos em cores distintas, um LED foi adicionado para marcar a posição das horas e um segundo LED faz o circulo em torno do relógio, este mantem-se aceso constantemente e com o giro do dispositivo, temos o contorno do relógio. Para uma melhor visualização dos ponteiros, aumentamos o numero de "pixels" (LEDs) ,usando 21 LEDs na cor Vermelha e 26 LEDs na cor verde. Os LEDs vermelhos, LED 1 a LED 21 e LED48, são do fabricante Multicomp ,de PartNumber MCL-S290SRC4 e encapsulamento 06035 com 15mcd de intensidade luminosa cada. Os LEDs verde e o LED azul,( LED 22 a LED 47e LED 49) são do fabricante KingBright, de PartNumber KP-2012SGC6, e encapsulamento 0603 com 15mcd de intensidade luminosa cada. DRIVER O controle de alimentação dos LEDs é feito por 4 transistores Mos-Fet Canal-P SMD, fabricado pela Advance Power Electronics Corporation, de PartNumber AP2301GN7, suportam uma corrente de até -2.6A cada. Entretanto , a corrente máxima aplicada em cada transistor neste projeto não passa de algumas centenas de mA. Os resistores limitadores de corrente são SMD de encapsulamento 0603. R1 a R21 são de 470 Ohms e R22 a R48 são de 240 Ohms . MICROCONTROLADOR E SOFTWARE O Microcontrolador escolhido foi o PIC16F6848 do fabricante Microchip, uma vez que ele consome em operação normal com cristal de 32.768Khz apenas 11µA . A programação é em Assembly, que é a língua primitiva dos micro-controladores. Linguagem Assembly, como opróprio nome sugere é definida como linguagem de montagem. Tem essa definição pois é uma linguagem de baixo nível, sendo ela a mais próxima da linguagem de máquina. A lógica de funcionamento do software pode ser dividida em quatro etapas: a primeira etapa é o pré-set do relógio; a segunda etapa é responsável pelo controle da 7
  • 8.
    base de tempodo relógio; a terceira etapa é a responsável por detectar a posição da barra e a última etapa, responsável por controlar o acionamento da barra de LEDs – levando em consideração as duas primeiras etapas. Primeiramente, é necessário fazer o pré-set do horário para isso utilizam-se duas portas do micro-controlador que estão conectadas a um sensor infravermelho. Cada vez que um sensor é ativado, tem um respectivo valor de tensão analógico, zero, este que é reconhecido e tratado pelo micro-controlador. Cada sensor tem uma função distinta: T1 ajusta as horas e T2 os minutos. Como é proposto em seu próprio título, é necessário criar um relógio para o controle da base de tempo. A idéia inicial para implementação deste relógio foi utilizar o clock gerado pelo cristal e dividir para se obter uma freqüência de 1Hz. Pensando nas limitações mecânicas do dispositivo e nas limitações do próprio micro-controlador optou-se em implementar um RTC (real time clock) por software. Para implementação do RTC foi adaptada uma biblioteca pronta. Esta biblioteca configura um timer interno do micro-controlador para atender uma interrupção a cada segundo, fazendo assim com que haja o incremento de segundo. Para incremento do minuto, testa-se a variável que armazena os segundos. Para incremento da hora, testa-se a variável dos minutos. O monitor de posição é efetuado através da resposta do Sensor de efeito Hall, IC2 PartNumberA11049, da Allegro Micro Systems. Este sensor atua sempre que o motor completa um giro de 360º marcando cada volta. Nos micro-controladores da família PIC® existe um pino que pode ser configurado para atender uma interrupção externa toda vez que detectar uma troca de nível de sinal,ou seja, sempre que o sensor atuar. Para calcular a rotação do motor utiliza-se uma interrupção externa, esta que será atendida sempre que o sensor atuar detectando uma borda de descida no pino do microcontrolador. Toda vez que esta interrupção externa for atendida, o programa incrementa uma variável, que a cada segundo conta quantas vezes foram detectadas estas interrupções ou seja, guarda o número de voltas que foram dadas pelo motor durante um segundo. ACIONAMENTO DA BARRA DE LEDs O controle para o acionamento dos LEDs é dependente das supra-referidas etapas, pois o acionamento dos mesmos ocorre com base na hora e velocidade atual. 8
  • 9.
    Primeiramente é necessáriosalientar o número de posições que cada ponteiro pode assumir. O ponteiro responsável pela exibição das horas pode assumir 12 posições, enquanto os ponteiros responsáveis pela exibição dos minutos e segundos assumem 60 posições cada. Para saber a posição exata de cada ponteiro, é necessário que exista um ponto de referência fixo. Para isto, o sensor de efeito Hall foi estrategicamente posicionado, servindo de referência ao software e fazendo com que, no momento em que o sensor é acionado, o dispositivo esteja na posição 12 Horas. É este ponto de referencia que possibilita estimar o tempo necessário para atingir cada passo dos ponteiros. Partindo destas premissas, é possível controlar devidamente o dispositivo.Feita a leitura do horário atual calcula-se a velocidade de rotação do motor para corrigir o tempo de passo dos ponteiros. Com base no horário obtido, sabem-se quantos passos é necessário dar para o ponteiro chegar à respectiva posição. Após saber o número de passos necessários, configura-se um timer interno do micro-controlador para aguardar o tempo correto para poder efetivar o acionamento da barra de LEDs no ponto correspondente. Este procedimento é efetuado para os três ponteiros. MOSTRAGEM DOS PONTEIROS HORA Para a mostrar o ponteiro marcador das horas as portas RC0 e RC4 do PIC® passam o nível lógico para "1" para "0". MINUTOS Para a mostrar o ponteiro marcador dos minutos as portas RC3 e RC4 do PIC® passam o nível lógico para "1" para "0". SEGUNDOS Para a mostrar o ponteiro marcador dos segundos as portas RC0 e RC1 do PIC® passam o nível lógico para "1" para "0". 9
  • 10.
    CÓDIGO FONTE LIST P=16F684,R=DEC INCLUDE "p16f684.inc" __CONFIG _FCMEN_OFF & _IESO_OFF & _BOD_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT CBLOCK 0x20 hours, minutes, seconds, hrpos w_save, stat_save, pc_save temp, tick, tickNotch debounce:2 ENDC ORG 0 goto ; iniciaprograma main ORG 4 ; ISR é chamado a cada segundo movwf w_save ; salvaWreg swapf STATUS, w ; salvasem stat reg movwf stat_save ; troca flags btfss PIR1, TMR1IF ; TMR1 interrupção goto start ; -processo de sinc de pulso movlw 128 ; seta prox. interrupção movwf TMR1H ; separa 1 segundo incf seconds, f ; carrega o código ISR movlw 60 subwf seconds, w btfss STATUS, Z 10
  • 11.
    goto ISR_end clrf seconds incf minutes, f movf hours, w movwf hrpos addwf hrpos,f addwf hrpos, f addwf hrpos, f addwf hrpos, f movf minutes, w movwf temp movlw 12 incf hrpos, f subwf temp, f btfsc STATUS, C goto $-3 decf hrpos, f movlw 60 subwf minutes, w btfss STATUS, Z goto ISR_end clrf minutes incf hours, f ; seconds = segundos (mod 60) ; hrpos = horas ; hrpos = horas * 5 ; hrpos += floor(minutos/12) ; minutes = minutos (mod 60) movlw 12 subwf hours, w 11
  • 12.
    btfss STATUS, Z goto ISR_end clrf hours ; horas= horas (mod 12) bcf PIR1, TMR1IF ; limpainterrupção swapf stat_save, w ; carrega original flags in STATUS movwf STATUS swapf w_save, f swapf w_save, w ISR_end ; restore Wreg retfie main ; código principal clrf PORTA clrf PORTC movlw 0x07 movwf CMCON0 ; comparadores OFF bsf STATUS, RP0 ; chaveiapara BANK 1 clrf ANSEL ^ 0x80 ; todas entradas digitais clrf TRISA ^ 0x80 ; PORTA saída bsf TRISA ^ 0x80, 2 ; INT pin para entrada clrf TRISC ^ 0x80 ; enable PORTC para saída bsf TRISC ^ 0x80, 5 ; PORTC pin 5 é entrada bsf PIE1 ^ 0x80, TMR1IE ; enable TMR1 interrupts bcf OPTION_REG^0x80, 6 ; interromper ao cair nível RA2 bcf STATUS, RP0 ; retorna para BANK 0 movlw b'00001111' ; enable TMR1 com clock externo 12
  • 13.
    movwfT1CON bsf INTCON, PEIE bsf INTCON, INTE bcf PIR1,TMR1IF clrf hours clrf hrpos clrf minutes clrf seconds clrf tick ; posiçãoatual da placa clrf tickNotch ; led azul, posição incf tickNotch, f bcf INTCON, INTF ; clear INT flag bsf INTCON, GIE ; (re)-enable todas interrupções start loop ; loop movlw b'011011' movwf PORTC decfsz tickNotch, f goto $+4 bsf PORTC, 2 movlw 5 movwf tickNotch movf seconds, w subwf tick, w btfss ; apaga display STATUS, Z ; set the Z flag ; liga led azul ; tickNotch = 5 13
  • 14.
    goto check_min bcf PORTC, 0 bcf PORTC, 1 ;exibir ponteiro segundos check_min movf minutes, w subwf tick, w btfss STATUS, Z goto check_hours bcf PORTC, 3 bcf PORTC, 4 ; exibir ponteiro minutos check_hours movf hrpos, w subwf tick, w btfss STATUS, Z goto $+3 bcf PORTC, 1 bcf PORTC, 4 call delayOn movlw b'010111' movwf PORTC call delayOff ; gap delay incf tick, f ; atualiza mostrador de horas ; exibir ponteiro horas ; apaga display movlw 60 subwf tick, w btfss STATUS, Z 14
  • 15.
    goto loop setTime call wait4Release ; aguarda 32msec para soltar botão call wait4Press ; aguarda 32 msec para pressionar botão goto setTime wait4Release clrf debounce ; aguarda soltar botões clrf debounce+1 btfss PORTA, 3 ; botão de minutos solto? goto wait4Release ; NAO-aguarda soltar btfss PORTC, 5 ; botão horas liberado? goto wait4Release ; NAO - aguardar liberar incf debounce, f btfsc STATUS, Z incf debounce+1, f btfss debounce+1, 4 goto $-6 ; 4096*8 = 32msec return wait4Press clrf debounce ; aguardar botão ser pressionado clrf debounce+1 btfsc PORTC, 5 ; botão horas pressionado? goto checkMinButt ; NO - check outro botão incf debounce, f btfsc STATUS, Z 15
  • 16.
    incf debounce+1, f btfss debounce+1, 4 goto $-6 call incHours ;atualiza horas call blink ; pisca led azul btfsc PORTA, 3 ; botão de minutos pressionado? goto wait4Press ; Não - aguarde pressionar incf debounce, f btfsc STATUS, Z incf debounce+1, f btfss debounce+1, 4 goto $-6 call incMinutes ; atualiza minutos call blink ;pisca led azul ; 4096*8 = 32msec return checkMinButt ; 4096*8 = 32msec return incHours ; incrementa horas mod 12 bcf INTCON, GIE incf ; desabillita interrupções hours, f movlw 12 subwf hours, w btfsc STATUS, C ; hora é >= 12 ? clrf hours ; SIM - limpa movf hours, w ; computa nova posição de hrpos 16
  • 17.
    movwf hrpos ; hrpos= hours addwf hrpos, f addwf hrpos, f addwf hrpos, f addwf hrpos, f movf minutes, w movwf temp movlw 12 incf hrpos, f subwf temp, f btfsc STATUS, C goto $-3 decf hrpos, f bsf INTCON, GIE inc Minutes bcf INTCON, GIE incf minutes, f ; hrpos = hours * 5 ; hrpos += floor(minutes/12) return ; incrementa minutos mod 60 movlw 60 subwf minutes, w btfsc STATUS, C ; minutos é >= 60 ? clrf minutes ; YES - limpa bsf INTCON, GIE return blink ; pisca led azul base te tempo de 100ms 17
  • 18.
    bsf PORTC,2 movlw 100 movwf temp movlw 250 addlw -1 btfss STATUS, Z goto $-2 decfsz temp, f goto $-5 bcf PORTC,2 ; led azul, on ; desliga led azul return delayOn ; formar intervalo de tempo para mostrar posição horas movlw 10 addlw -1 btfss STATUS, Z goto ; e ponteiros $-2 return delayOff ; formar intervalos entre minutos movlw 90 ; mostrador addlw -1 btfss STATUS, Z ; a soma dos dois últimos retardos não deverá exceder 110 msec para prevenir efeitoflicker goto $-2 return END 18
  • 19.
  • 20.
  • 21.
  • 22.