pov- propeller clock- relógio analógico
Post on 04-Jul-2015
1.935 Views
Preview:
DESCRIPTION
TRANSCRIPT
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ÓGICAS-
ICET
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
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
4
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.
5
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.
6
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, Part-
NumberGC5.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.
7
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
8
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 micro-
controlador. 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.
9
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".
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 ; iniciaprograma
goto 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
11
goto ISR_end
clrf seconds ; seconds = segundos (mod 60)
incf minutes, f
movf hours, w
movwf hrpos ; hrpos = horas
addwf hrpos, f
addwf hrpos, f
addwf hrpos, f
addwf hrpos, f ; hrpos = horas * 5
movf minutes, w
movwf temp
movlw 12 ; hrpos += floor(minutos/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 ; minutes = minutos (mod 60)
incf hours, f
movlw 12
subwf hours, w
12
btfss STATUS, Z
goto ISR_end
clrf hours ; horas = horas (mod 12)
ISR_end
bcf PIR1, TMR1IF ; limpainterrupção
swapf stat_save, w ; carrega original flags in STATUS
movwf STATUS
swapf w_save, f ; restore Wreg
swapf w_save, w
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
13
movwfT1CON
bsf INTCON, PEIE
bsf INTCON, INTE
bcf PIR1, TMR1IF
clrf hours
clrf hrpos
clrf minutes
clrf seconds
start
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
loop ; loop
movlw b'011011' ; apaga display
movwf PORTC
decfsz tickNotch, f ; set the Z flag
goto $+4
bsf PORTC, 2 ; liga led azul
movlw 5
movwf tickNotch ; tickNotch = 5
movf seconds, w
subwf tick, w
btfss STATUS, Z
14
goto check_min
bcf PORTC, 0 ; exibir ponteiro segundos
bcf PORTC, 1
check_min
movf minutes, w
subwf tick, w
btfss STATUS, Z
goto check_hours
bcf PORTC, 3 ; exibir ponteiro minutos
bcf PORTC, 4
check_hours
movf hrpos, w
subwf tick, w
btfss STATUS, Z
goto $+3
bcf PORTC, 1 ; exibir ponteiro horas
bcf PORTC, 4
call delayOn
movlw b'010111' ; apaga display
movwf PORTC
call delayOff ; gap delay
incf tick, f ; atualiza mostrador de horas
movlw 60
subwf tick, w
btfss STATUS, Z
15
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 ; 4096*8 = 32msec
goto $-6
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
16
incf debounce+1, f
btfss debounce+1, 4 ; 4096*8 = 32msec
goto $-6
call incHours ; atualiza horas
call blink ; pisca led azul
return
checkMinButt
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 ; 4096*8 = 32msec
goto $-6
call incMinutes ; atualiza minutos
call blink ;pisca led azul
return
incHours ; incrementa horas mod 12
bcf INTCON, GIE ; desabillita interrupções
incf 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
17
movwf hrpos ; hrpos = hours
addwf hrpos, f
addwf hrpos, f
addwf hrpos, f
addwf hrpos, f ; hrpos = hours * 5
movf minutes, w
movwf temp
movlw 12 ; hrpos += floor(minutes/12)
incf hrpos, f
subwf temp, f
btfsc STATUS, C
goto $-3
decf hrpos, f
bsf INTCON, GIE
return
inc Minutes ; incrementa minutos mod 60
bcf INTCON, GIE
incf minutes, f
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
18
bsf PORTC,2 ; led azul, on
movlw 100
movwf temp
movlw 250
addlw -1
btfss STATUS, Z
goto $-2
decfsz temp, f
goto $-5
bcf PORTC, 2 ; desliga led azul
return
delayOn ; formar intervalo de tempo para mostrar posição horas
movlw 10 ; e ponteiros
addlw -1
btfss STATUS, Z
goto $-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
22
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
top related