Sie sind auf Seite 1von 24

Reloj del propulsor Casero De nuevo a ndice de los proyectos

________________________________________ ste es uno de los proyectos ms aseados a


construir con un PIC. El diseo del reloj es principalmente una copia del reloj del propulsor de
Bob Blick, junto con algunas modificaciones el mos. Utilic un PIC16F84A, bsicamente una
versin mejorada del 16F84 y el 16C84. Tendra que admitir que el final de programacin de
cosas era ms difcil que construyendo el reloj s mismo; Constru originalmente sobre cinco
programadores hechos en casa con el vario software disponible sobre el Internet, que no pudo
programar el PIC. Finalmente di para arriba y compr un programador del kit, que no era muy
bueno tampoco, pero despus de tocar el violn con el software, manej programar un PIC con
xito. Una modificacin importante del diseo de Bob Blick est obteniendo energa. El diseo
original tom la energa de la armadura que haca girar de un motor de la C.C. y la convirti a la
C.C. del striaght para el reloj. He intentado esta modificacin en dos motores y los resultados no
eran muy satisfactorios; o result el confundir del motor poco o no trabaj eficientemente.
Tambin aprend que el diseo original tena un condensador de .047F (FARADIO) para la
memoria, y yo no tena un tal condensador en la mano, as que decida hacer algunas
modificaciones. En lugar, pongo una placa de goma sobre un motor sin modificar de la C.C. para
el aislamiento, y una arandela en tapa (la arandela se asla de la caja del metal del motor). La caja
del metal del motor est conectada con la tierra, y la arandela fue conectada con 5V. El tablero
que hace girar obtiene el 5V a travs de un contacto que resbala a la arandela, y la tierra a travs
del centro que hace girar del motor que es tambin parte del cuerpo puesto a tierra. Esta
modificacin trabajada muy bien, pero all era el problema de proporcionar un punto de
referencia para el reloj (el diseo original obtiene el punto de referencia a partir del uno de los
terminales en la armadura). Puse una muesca pequea en el extremo externo de la arandela y puse
un alambre de la recogida en el tablero que haca girar a tomo el pulso de la muesca. Esto trabaj,
pero no fui satisfecho por la exhibicin occassionally que bamboleaba porque el alambre flexible
no guarda siempre su posicin despus de que golpee la muesca, y tambin ste caus un sonido
que chascaba suave que era irritante. Por lo tanto, substitu el alambre por un sensor infrarrojo, e
instal un LED infrarrojo en el lado del motor. Una ventaja de esta modificacin total es el hecho
que puedes proporcionar velocidades variables en el motor, puesto que la energa al motor es
totalmente independiente de la energa al reloj, tambin t podra dar vuelta apagado al motor y
todava fijar el reloj, que omiti la necesidad de un condensador de la memoria de .047F. Debajo
est un diagrama esquemtico de mi reloj:
El programa para el PIC se puede encontrar en el Web site de Bob Blick, el nombre de fichero es
MCLOCK8.HEX y est situado en la pgina del reloj del propulsor en la seccin de la
informacin tcnica y de los proyectos. Cuadros:

Front of clock

Rear of clock

Clock during operation


Decida reconstruir el reloj original del propulsor usando una intensidad ms alta LED. Sin
embargo, el reloj original del propulsor tena algunos problemas con el contacto que resbalaba,
que era lejos comido debido a la friccin en un cierto plazo. Tambin construyeron al tablero un
ao antes de que el reloj fuera realmente en servicio (admito que no podra calcular hacia fuera
cmo programar el PIC en un de largo plazo!), tan haba varias modificaciones en el cableado,
que dio lugar a ciertas conexiones frgiles y operacin intermitente. El fondo, necesit construir
un nuevo. Reutilic algunas partes del reloj del orignal, especialmente el PIC y tambin utilic un
cdigo revisado en alguna parte en el Internet para agregar los segundos a la exhibicin. Encontr
un motor agradable en mi pila de la chatarra que fue utilizada probablemente en un viejo jugador
del laserdisc si recuerdo correctamente. Decida construir este reloj usando el estilo clsico de
Bob Blick, obteniendo energa de la armadura del motor. Era afortunado quitar esto con este
motor, puesto que el resto de los motores anteriores no pudieron funcionar suavemente cuando
construa el reloj original. Utilic un rodamiento de bolitas de una cabeza del VCR para llevar a
cabo el extremo superior del motor en lugar, ms algunas otras partes de jugadores de cinta de
cassette. Puesto que este reloj no obtiene energa independientemente del motor como la original,
un condensador de .047F era absolutamente necesario guardar el PIC accion para arriba as que
puedes fijar la hora. Sin embargo, esto no era fcil para que obtenga, as que lo substitu por una
batera miniatura del reloj del litio 3V, que funciona agradable. Tambin hice algunas
modificaciones al diagrama esquemtico original en el Web site de Bob Blick; Agregu un zener
para regular el voltaje de la armadura del motor a 5V para el PIC, as que el motor podra
funcionar en velocidades ms altas con el reloj que tena solamente 5V. Debajo estn algunos
cuadros.

New clock
Click Picture for Larger Image
Clock during operation

Constru otro reloj del propulsor usando un ultra-brillante ms pequeo - los LED verdes. Plane
en la fabricacin de un reloj usando 5m m ultra-brillantes los LED azules, pero despus de que
construyera el reloj experimental usando estos LED los dgitos no salieron segn lo esperado.
Pens que este un azul ms brillante LED pudo dar lugar a dgitos que miraban ms agudos en
comparacin con mi segundo con los LED rojos ultra-brillantes ms dbiles, pero los dgitos
aparecieron mal desenfocado. Decepcionado por los resultados, compr algunos 3m m ultra-
brillantes - los LED verdes y cambiado hacia fuera los LED azules con stos. Los resultados
estaban mucho mejor; los dgitos salieron mucho ms agudo y quebradizo.

El circuito es mucho idntico bonito a excepcin de algunas modificaciones. El segundo reloj del
propulsor utiliz el mtodo de Bob Blick de obtener energa de la armadura del motor. No dese
incomodar con alinear la bola concerniente la tapa del motor as que el reloj funciona
suavemente, que no era muy fcil. Comenc a revisitar mi plan original en el primer reloj
proveyendo la potencia constante del tablero que haca girar de eliminar la necesidad de un
condensador o de una batera de la memoria. En vez de una arandela encima del motor con un
contacto del resorte, saqu simplemente la armadura fuera de otro motor y la puse en el eje de un
motor sin modificar. Tambin, los cepillos del motor destripado fueron colocados encima del
motor sin modificar. Para la mayora de los motores de la C.C., el eje no es suficientemente largo
para la armadura y el pedazo plstico que conecta a tablero que hace girar con el eje. Utilic un
motor de la cinta de cassette, que tienen tpicamente ejes largos debido a el montaje del engranaje
para las cintas de funcionamiento adelante e invierten. Algn jugador de cassette viaja en
automvili funcionamientos los mecanismos va una correa, pero algo tiene un motor que
conduzca las cintas directamente va el montaje del engranaje. El eje de los motores como stos
es cerca de tres cuartos de una pulgada, que es abundancia para la armadura entera y el pedazo
que conecta para el tablero. Debajo est un cuadro de cmo los cepillos y la armadura estn
montados en el motor sin modificar de la cinta de cassette: El circuito es bsicamente igual que el
segundo reloj del propulsor con modificaciones simples; la energa para el reloj se alimenta a
travs de la armadura as que el reloj tiene energa mientras que el motor no est funcionando. No
hay necesidad del condensador o de la batera de la memoria. Debajo est el diagrama
esquemtico: Ocult el motor, la armadura y cepillos en la tapa dentro de un poco de madera del
cedro. Taladr el agujero en un pedazo de madera del cedro para el motor, entonces cort el
exterior alrededor de un de media pulgada grueso con una sierra de la venda. Utilic un pedazo
de aluminio (pintado) negro como la base para el reloj. Hay un interruptor rojo muy pequeo en
la base que da vuelta al motor por intervalos al sistema y funciona el tiempo respectivamente.
Debajo estn algunos cuadros (chascar encendido los thumbnails para una imagen ms grande):
Notar el interruptor rojo en el fondo de la base Registrar durante la operacin
Este diagrama esquemtico es duro de leer, consigue este diagrama esquemtico ms grande. La
lista de piezas del reloj del propulsor Condensadores: C1, C2 - 33pf de cermica C3, C6 - 0.1uf
de cermica C4 - 47uf electroltico C5 - supercap 47,000uf (casquillo de la memoria) Diodos:
D1-D7 - diodos electroluminosos D8-16 - fines generales 1N4001 rectificadores de 1 amperio
Resistores: R1 - arsenal de la INMERSIN de 120 ohmios o siete resistores de 120 ohmios R2-
R6 - ohmio 10k Miscelneo: J1 - conectador de Berg de tres terminales SW1-SW3 - interruptores
de botn normalmente abiertos U1 - PIC16C84 programado con cdigo del mclock XTAL1 -
cristal 4MHz MOTOR - RMOTV1007GEZZ agudo
________________________________________ El propulsor, un reloj mecnicamente
explorado del LED de Bob Blick. El reloj est en un pedazo que hace girar de perfboard, pero
debe conseguir energa. Pens en muchas maneras de hacer esto, incluyendo usar dos motores (el
motor uno tiene su eje fijado a una base, y vueltas del motor dos el cuerpo del motor uno,
generando electricidad), haciendo un transformador rotatorio, o usando los anillos colectandos.
Decida hacerlo otra manera, tomando energa de la armadura que haca girar de un motor llano
de la C.C. Para funcionar los alambres del motor, quit el cojinete a partir de un extremo del
motor, saliendo de un agujero grande. Hay interior de tres terminales la mayora de los motores
pequeos de la C.C., y acta mucho como corriente alterna trifsica, as que debe ser rectificado
de nuevo a la C.C. Un efecto secundario agradable de esto es que la posicin del motor puede ser
detectada tomando una de las fases derecho en el microprocesador. Paso uno: Mangle un motor.
Encontrar un VCR, quizs un sostenido o Samsung, con un motor plano del carrete. El motor que
tengo es JPA1B01 marcado, pero el sostenido lo sabe por el nmero RMOTV1007GEZZ.
Separarlo sin mangling los cepillos (hay pequeos agujeros para deslizar un paperclip en para
mover los cepillos apartados), y notar que tiene un rodamiento de bolitas y un cojinete de manga.
Golpear el cojinete de manga fuera del caso y del pegamento o soldarlo al otro extremo del
motor, como extensin del rodamiento de bolitas. El eje del motor tendr que ser colocado de
nuevo levemente para conseguir la altura derecha, la presiona en un tornillo con un espaciador
hueco en un extremo. Tomar un conectador de Berg con tres alambres y soldarlos a los tres
terminales en la armadura del motor. Pegar un espaciador roscado corto al eje en el extremo que
pegar hacia fuera el agujero, y volver a montar el motor (tener cuidado con los cepillos). Puedes
pegar el motor a una cabeza del VCR como una base cargada. Paso dos: Construir el circuito.
Utilic el perfboard (Vectorboard) y handwired el circuito junto. Utilizar 18 un perno zcalo para
el 16C84 porque necesita ser programado antes de ponerlo en el circuito. Para los 7 resistores del
actual-lmite utilic un arsenal del resistor de la INMERSIN, porque hizo fcil experimentar
con brillo del LED. Coloqu en 120 ohmios. Puedes utilizar siete resistores regulares, porque 120
ohmios de trabajos muy bien, aunque pone la derecha de corriente mxima en el lmite para el
16C84. Pensar de balance mientras que construyes este circuito, y referirte a mis cuadros, as que
no tienes que agregar muchos de peso que balancea ms adelante. Substituto para cualquieres
valores de la parte que tengas gusto. Observar que yo utiliz un supercap 47000uf, es guardar el
reloj el funcionar despus de darte vuelta apagado, as que puedes fijar la hora. Los LED
consiguen energa a parte de esto. No substituir un resonador de cermica para el cristal 4MHz,
esto es un reloj y debe ser exacto. Paso tres: Programar el 16C84. Necesitars un programador
que programe un PIC16C84. Si encontraste este archivo/Web page, puedes encontrar planes para
construir un programador 16C84. Programarlo que usa el archivo de la tuerca hexagonal que
acompaa este documento. He incluido el cdigo de fuente (.asm) apenas para tu diversin. Al
programar la viruta, fijar las opciones de la viruta a: contador de tiempo del perro guardin
(WDT) ENCENDIDO y oscilador al cristal normal de XT. Paso cuatro: Lanzarlo junto y guardar
Tiempo. Atornillar el tablero de circuito al motor, y tapar el conectador pulg. de tres alambres
aplican energa al motor. El voltaje preferido es 6.2 voltios, pero funcionar a partir de 5 voltios a
cerca de 7.5 voltios. Observar que 5 voltios consiguen al circuito cuando 6.2 voltios se aplican al
motor, debido a prdidas del diodo. El reloj puede trabajar a este punto, exhibiendo 12:00. Si no
es. haba probablemente un cierto voltaje en el supercap cuando enchufaste la viruta. Dar vuelta
apagado a los pernos 5 y 4 de la energa y momentneamente del cortocircuito junto (tierra y
/mclr) de reajustar la viruta. Ahora en que aplicas energa el reloj debe trabajar, y puedes fijarlo
dando vuelta de la energa y empujando los botones (horas, 10 minutos, minutos) el nmero
derecho de pocas. Si aparecen los nmeros al revs, invertir la polaridad al motor para hacer que
hace girar la otra manera. Puede ser que experimentes con balancear el reloj, y el uso de la
espuma bajo base para reducir la vibracin. Paso cinco: Modificaciones. Si miras de cerca el
cdigo de fuente, vers que la tarifa del punto est ajustada a la velocidad del motor para hacer
la exhibicin una anchura constante sin importar la velocidad del motor. El motor que utilic
tiene sistema de cepillos 90 grados de separado, y da a dos ndices cada revolucin. Las
exhibiciones del reloj en dos lados, 180 grados de separado. Si utilizas un motor con los cepillos
180 aparte, el reloj exhibir solamente en uno lateral, y t he numbers will be too wide. You'll
want to modify the program, in the section marked D_lookup_3. The value in the W register
when Delay gets called effects the width of the digits. You might try sending half of the
period_calc value to Delay, perhaps by rotating period_calc right into W(remember to clear the
carry flag first). Like this: bcf STATUS,C rrf period_calc,w call Delay
Reloj mecnicamente explorado del reloj LED del propulsor Siete diodos electroluminosos
hacen girar, dando la ilusin de nmeros en el aire.

Reloj mecnicamente explorado del reloj LED del propulsor Siete diodos electroluminosos
hacen girar, dando la ilusin de nmeros en el aire. Vista lateral de la visin superior ste es el
primer reloj que constru siempre. He construido algunas muestras del LED, pero consiguen el
taladro porque s ya el mensaje. Cmo este reloj funciona: Un motor hace girar el propulsor, y
un microprocesador pequeo no pierde de vista tiempo y cambia el patrn en siete LED con la
sincronizacin exacta para simular 7 por el arsenal 30 de los LED. Es una ilusin, pero trabaja
agradable. Si deseas construir este reloj, necesitars algunas cosas, incluyendo: Habilidad con los
motores y las cosas mecnicas. Experiencia electrnica anterior. El VCR muerto o la impulsin
floja o la otra fuente de un motor conveniente y de piezas miscelneas. Un programador que
programar un microprocesador PIC16C84 o 16F84. He proporcionado (casi) todo: La pgina
siguiente con los dibujos y los planes. Transferencia directa: descripcin completa de mclock.txt
A cmo construirla. mclkpart.txt la lista de piezas. mclock8.asm el cdigo de fuente en formato
del microchip MPASM. mclock8.hex el cdigo de la tuerca hexagonal listo cargar en una viruta
PIC16C84 o 16F84. mclksch2.gif diagrama esquemtico grande y muy legible de A. dibujo de
mclkmoto.gif A de las modificaciones al motor. Si no puedes conseguir esa clase de motor,
puedes utilizar el motor de un viejo accionamiento de disco. Esta pgina tiene muchos de cuadros
y tomar un cierto tiempo para cargar. Si utilizas un motor del accionamiento de disco o cualquier
otro motor de la C.C. con los cepillos 180 grados de separado, necesitars el cdigo levemente
revisado: Transferencia directa: mclockt3.asm el cdigo de fuente. mclockt3.hex el cdigo de la
tuerca hexagonal listo poner en una viruta. Si no tienes ninguna manera de poner el programa en
una viruta 16C84 o 16F84 de PIC, puedes construir tu propio programador. Disposicin del
tablero del circuito impreso para una versin del reloj. Licencia: El diseo y el software del
hardware se cubren debajo de la licencia el pblico en general del GNU. Garanta: Ninguno.
Preguntas con frecuencia hechas: Q: Cul es este .047 condensador del FARADIO?? A: Puedes
conseguiros muchos lugares, incluyendo los condensadores de la memoria en la electrnica de
Jameco. Q: Cul es un conectador de Berg? A: Cul es Kleenex? :-) el lado del tablero de PC a
veces se llama un jefe. Las luces y los botones que enganchan a las placas base de la
computadora las utilizan. Los pernos son .025 cuadrado, en .1 centro. El extremo femenino se
compone de los terminales de la encrespadura cabidos en una cubierta plstica. Un ejemplo en
Jameco. Q: Vi una versin grande de esto en un almacn pero era diferente. Lo has visto? A: S,
he visto muchos persistencia de relojes de la visin estos ltimos aos. Hice ste de 1996, as
que pienso que me copiaron todo:) Q: Mi motor principal del VCR tiene porciones de alambres.
Que lo hacen yo utilizaron? A: No utilic un motor principal. Utilic un motor del carrete. Tiene
solamente 2 alambres y funcionamientos en la C.C.

El propulsor, un reloj mecnicamente explorado del LED de Bob Blick. El reloj est en un
pedazo que hace girar de perfboard, pero debe conseguir energa. Pens en muchas maneras de
hacer esto, incluyendo usar dos motores (el motor uno tiene su eje fijado a una base, y vueltas del
motor dos el cuerpo del motor uno, generando electricidad), haciendo un transformador rotatorio,
o usando los anillos colectandos. Decida hacerlo otra manera, tomando energa de la armadura
que haca girar de un motor llano de la C.C. Para funcionar los alambres del motor, quit el
cojinete a partir de un extremo del motor, saliendo de un agujero grande. Hay interior de tres
terminales la mayora de los motores pequeos de la C.C., y acta mucho como corriente alterna
trifsica, as que debe ser rectificado de nuevo a la C.C. Un efecto secundario agradable de esto
es que la posicin del motor puede ser detectada tomando una de las fases derecho en el
microprocesador. Paso uno: Mangle un motor. Encontrar un VCR, quizs un sostenido o
Samsung, con un motor plano del carrete. El motor que tengo es JPA1B01 marcado, pero el
sostenido lo sabe por el nmero RMOTV1007GEZZ. Separarlo sin mangling los cepillos (hay
pequeos agujeros para deslizar un paperclip en para mover los cepillos apartados), y notar que
tiene un rodamiento de bolitas y un cojinete de manga. Golpear el cojinete de manga fuera del
caso y del pegamento o soldarlo al otro extremo del motor, como extensin del rodamiento de
bolitas. El eje del motor tendr que ser colocado de nuevo levemente para conseguir la altura
derecha, la presiona en un tornillo con un espaciador hueco en un extremo. Tomar un conectador
de Berg con tres alambres y soldarlos a los tres terminales en la armadura del motor. Pegar un
espaciador roscado corto al eje en el extremo que pegar hacia fuera el agujero, y volver a montar
el motor (tener cuidado con los cepillos). Puedes pegar el motor a una cabeza del VCR como una
base cargada. Paso dos: Construir el circuito. Utilic el perfboard (Vectorboard) y handwired el
circuito junto. Utilizar 18 un perno zcalo para el 16C84 porque necesita ser programado antes de
ponerlo en el circuito. Para los 7 resistores del actual-lmite utilic un arsenal del resistor de la
INMERSIN, porque hizo fcil experimentar con brillo del LED. Coloqu en 120 ohmios.
Puedes utilizar siete resistores regulares, porque 120 ohmios de trabajos muy bien, aunque pone
la derecha de corriente mxima en el lmite para el 16C84. Pensar de balance mientras que
construyes este circuito, y referirte a mis cuadros, as que no tienes que agregar muchos de peso
que balancea ms adelante. Substituto para cualquieres valores de la parte que tengas gusto.
Observar que yo utiliz un supercap 47000uf, es guardar el reloj el funcionar despus de darte
vuelta apagado, as que puedes fijar la hora. Los LED consiguen energa a parte de esto. No
substituir un resonador de cermica para el cristal 4MHz, esto es un reloj y debe ser exacto. Paso
tres: Programar el 16C84. Necesitars un programador que programe un PIC16C84. Si
encontraste este archivo/Web page, puedes encontrar planes para construir un programador
16C84. Programarlo que usa el archivo de la tuerca hexagonal que acompaa este documento. He
incluido el cdigo de fuente (.asm) apenas para tu diversin. Al programar la viruta, fijar las
opciones de la viruta a: contador de tiempo del perro guardin (WDT) APAGADO y oscilador al
cristal normal de XT. Paso cuatro: Lanzarlo junto y guardar Tiempo. Atornillar el tablero de
circuito al motor, y tapar el conectador pulg. de tres alambres aplican energa al motor. El voltaje
preferido es 6.2 voltios, pero funcionar a partir de 5 voltios a cerca de 7.5 voltios. Observar que
5 voltios consiguen al circuito cuando 6.2 voltios se aplican al motor, debido a prdidas del
diodo. El reloj puede trabajar a este punto, exhibiendo 12:00. Si no es. haba probablemente un
cierto voltaje en el supercap cuando enchufaste la viruta. Dar vuelta apagado a los pernos 5 y 4 de
la energa y momentneamente del cortocircuito junto (tierra y /mclr) de reajustar la viruta. Ahora
en que aplicas energa el reloj debe trabajar, y puedes fijarlo dando vuelta de la energa y
empujando los botones (horas, 10 minutos, minutos) el nmero derecho de pocas. Si aparecen
los nmeros al revs, invertir la polaridad al motor para hacer que hace girar la otra manera.
Puede ser que experimentes con balancear el reloj, y el uso de la espuma bajo base para reducir la
vibracin. Paso cinco: Modificaciones. Si miras de cerca el cdigo de fuente, vers que la tarifa
del punto est ajustada a la velocidad del motor para hacer la exhibicin una anchura constante
sin importar la velocidad del motor. El motor que utilic tiene sistema de cepillos 90 grados de
separado, y da a dos ndices cada revolucin. Las exhibiciones del reloj en dos lados, 180 grados
de separado. Si utilizas un motor con los cepillos 180 aparte, el reloj exhibir solamente en un
lado, y los nmeros sern demasiado anchos. Desears modificar el programa, en el D_lookup_3
marcado seccin. El valor en el registro de W cuando retrasa consigue a efectos llamados la
anchura de los dgitos. Puede ser que intentes enviar la mitad del valor del period_calc a retrasas,
quizs por la derecha del period_calc que rotaba en W (recordar al claro la bandera del llevar
primero). Como esto:

bcf STATUS,C
rrf period_calc,w
call Delay

The Propeller Clock Parts List

Capacitors:
C1, C2 - 33pf ceramic
C3, C6 - 0.1uf ceramic
C4 - 47uf electrolytic
C5 - 47,000uf supercap(memory cap)
Diodes:
D1-D7 - light emitting diodes
D8-16 - 1N4001 general purpose 1amp rectifiers

Resistors:
R1 - 120 ohm DIP array or seven 120 ohm resistors
R2-R6 - 10k ohm

Misc:
J1 - three terminal Berg connector
SW1-SW3 - normally open pushbutton switches
U1 - PIC16C84 programmed with mclock code
XTAL1 - 4MHz crystal
MOTOR - Sharp RMOTV1007GEZZ

;--------
; mclock8.asm
; "The Propeller" mechanically scanned LED clock
; some changes since last version -
; modified table etc for compatiblility with 8th LED
; watchdog timer used to ensure startup
; Bob Blick February 12, 1997
; Licensed under the terms of the GNU General Public License, www.gnu.org
; No warranties expredded or implied
; Bob Blick February 18, 2002
;--------
list p=16C84
radix hex
include "p16c84.inc"
;--------
; remember to set blast-time options: OSC=regular xtal, WDT=ON
; timings all based on 4 MHz crystal
;--------
; are these equates already in the include file? someday I'll look.
;--------
w equ 0
f equ 1
;--------
; Start of available RAM.
;--------
cblock 0x0C
safe_w ;not really temp, used by interrupt svc
safe_s ;not really temp, used by interrupt svc
period_count ;incremented each interrupt
period_dup ;copy of period_count safe from interrupt
period_calc ;stable period after hysteresis calc.
flags ;b2=int b1=minute b4=edge
dot_index ;which column is being displayed
digit_index ;which digit is being displayed
hours ;in display format, not hex(01-12)
minutes ;00 to 59
bigtick_dbl ;incremented each interrupt
bigtick_hi
bigtick_lo
keys ;key value
scratch ;scratch value
tick ;used by delay
endc
;--------
; Start of ROM
;--------
org 0x00 ;Start of code space
goto Start
;--------
; INTERRUPT SERVICE ROUTINE
;--------
org 0x04 ;interrupt vector
Intsvc movwf safe_w ;save w
swapf STATUS,w ;swap status, w
movwf safe_s ;save status(nibble swap, remember)
;--------
; done saving, now start working
;--------
; clear watchdog timer to ensure startup
clrwdt
;
; increment period count
incf period_count,f
btfsc STATUS,Z ;zero set means overflow
decf period_count,f
; 234375 interrupts every minute. Increment the bigtick each time.
incf bigtick_lo,f
btfsc STATUS,Z
incf bigtick_hi,f
btfsc STATUS,Z
incfsz bigtick_dbl,f
goto Bigtick_out
;--------
; here? bigtick has rolled over to zero and one minute has passed.
; reload bigtick and set a flag for the main counter
;--------
movlw 0xFC ;234375 = 0x039387
movwf bigtick_dbl ;0 - 0x039387 = 0xFC6C79
movlw 0x6C
movwf bigtick_hi
movlw 0x79
movwf bigtick_lo
bsf flags,1 ;notify Keep_time
Bigtick_out
;--------
; done working, start restoring
;--------
swapf safe_s,w ;fetch status, reswap nibbles
movwf STATUS ;restore status
swapf safe_w,f ;swap nibbles in preparation
swapf safe_w,w ;for the swap restoration of w
bcf INTCON,2 ;clear interrupt flag before return
retfie ;return from interrupt
;--------
; CHARACTER LOOKUP TABLE
; ignore high bit. set=LED off, clear=LED on, bit0=bottom LED, bit6=top LED
;--------
Char_tbl
addwf PCL,f
dt 0xC1,0xBE,0xBE,0xBE,0xC1 ;"O"
dt 0xFF,0xDE,0x80,0xFE,0xFF ;"1"
dt 0xDE,0xBC,0xBA,0xB6,0xCE ;"2"
dt 0xBD,0xBE,0xAE,0x96,0xB9 ;"3"
dt 0xF3,0xEB,0xDB,0x80,0xFB ;"4"
dt 0x8D,0xAE,0xAE,0xAE,0xB1 ;"5"
dt 0xE1,0xD6,0xB6,0xB6,0xF9 ;"6"
dt 0xBF,0xB8,0xB7,0xAF,0x9F ;"7"
dt 0xC9,0xB6,0xB6,0xB6,0xC9 ;"8"
dt 0xCF,0xB6,0xB6,0xB5,0xC3 ;"9"
dt 0xFF,0xC9,0xC9,0xFF,0xFF ;":"
Char_tbl_end
;--------
; SUBROUTINES STARTING HERE
;--------
; clear important bits of ram
;--------
Ram_init movlw 0x07
movwf keys
movlw 0x12 ;why do clocks always start
movwf hours ;at 12:00 ?
clrf minutes
clrf dot_index
clrf digit_index
movlw 0xFC
movwf bigtick_dbl
retlw 0
;--------
; unused pins I am setting to be outputs
;--------
Port_init movlw 0x00 ;all output, b7=unused
tris PORTB ;on port b attached to LEDs
movlw b'00010111' ;port a has 5 pins. I need 4 inputs
;b0=minutes, b1=10mins, b2=hours
;b3=unused, b4=rotation index
tris PORTA ;on port a
retlw 0
;--------
; get timer-based interrupts going
;--------
Timer_init bcf INTCON,2 ;clear TMR0 int flag
bsf INTCON,7 ;enable global interrupts
bsf INTCON,5 ;enable TMR0 int
clrf TMR0 ;clear timer
clrwdt ;why is this needed? just do it..
movlw b'11011000' ;set up timer. prescaler(bit3)bypassed
option ;send w to option. generate warning.
clrf TMR0 ;start timer
retlw 0
;--------
; test for index in rotation and store period in period_dup
;--------
Check_index movf PORTA,w ;get the state of port a
xorwf flags,w ;compare with saved state
andlw b'00010000' ;only interested in bit 4
btfsc STATUS,Z ;test for edge
retlw 0 ;not an edge, same as last
xorwf flags,f ;save for next time
btfsc flags,4 ;test for falling edge
retlw 0 ;must have been a rising edge
movf period_count,w ;make a working copy
movwf period_dup ;called period dup
clrf period_count ;a fresh start for next rotation
clrf digit_index ;set to first digit
clrf dot_index ;first column
; calculate a period that does not dither or jitter
; period will not be changed unless new period is really different
movf period_calc,w
subwf period_dup,w ;find difference
btfss STATUS,C ;carry flag set means no borrow
goto Calc_period_neg ;must be other way
sublw 2 ;allowable deviation = 3
btfss STATUS,C ;borrow won't skip
incf period_calc ;new value much larger than calc
retlw 0
Calc_period_neg addlw 2 ;allowable deviation = 3
btfss STATUS,C ;carry will skip
decf period_calc ;no carry means it must be changed
retlw 0
;--------
; change LED pattern based on state of digit_index and dot_index
;--------
Display_now movlw 0x05
xorwf dot_index,w ;test for end of digit
movlw 0xFF ;pattern for blank column
btfsc STATUS,Z
goto D_lookup_3 ;it needs a blank
bcf STATUS,C ;clear carry before a rotate
rlf digit_index,w ;double the index because each
addwf PCL,f ;takes two instructions
D_10hr swapf hours,w
goto D_lookup ;what a great rush of power
D_1hr movf hours,w ;I feel when modifying
goto D_lookup ;the program counter
D_colon movlw 0x0A
goto D_lookup
D_10min swapf minutes,w
goto D_lookup
D_1min movf minutes,w
goto D_lookup
D_nothing retlw 0
D_lookup andlw b'00001111' ;strip off hi bits
movwf scratch ;multiply this by 5 for lookup
addwf scratch,f ;table base position
addwf scratch,f ;is this cheating?
addwf scratch,f ;I think not.
addwf scratch,f ;I think it is conserving energy!
btfss STATUS,Z ;test for zero
goto D_lookup_2 ;not a zero
movf digit_index,f ;this is just to test/set flag
movlw 0xFF ;this makes a blank LED pattern
btfsc STATUS,Z ;test if it is 10 hrs digit
goto D_lookup_3 ;it's a leading zero
D_lookup_2 movf dot_index,w ;get column
addwf scratch,w ;add it to digit base
call Char_tbl ;get the dot pattern for this column
D_lookup_3 movwf PORTB ;send it to the LEDs
movlw 0x0C ;overhead value sub from period
subwf period_calc,w ;compensate for overhead and set
call Delay ;width of digits with this delay
incf dot_index,f ;increment to the next column
movlw 0x06 ;6 columns is a digit plus space
xorwf dot_index,w ;next digit test
btfss STATUS,Z
retlw 0 ;not a new digit
clrf dot_index ;new digit time
incf digit_index,f
retlw 0 ;Display_now done.
;--------
; a short delay routine
;--------
Delay movwf tick
Delay_loop decfsz tick,f
goto Delay_loop ;w is not damaged, so Delay can
return ;be recalled without reloading
;--------
; test for keypress and call time adjust if needed
;--------
Check_keys movf PORTA,w ;get port "a"
xorwf keys,w ;compare with previous
andlw b'00000111' ;only care about button pins
btfsc STATUS,Z ;zero set=no buttons
retlw 0 ;return
xorwf keys,f ;store key value
movlw 0x64 ;a fairly long delay will
movwf scratch ;prevent key bounces
Key_delay movlw 0xFF
call Delay
decfsz scratch
goto Key_delay
btfss keys,2 ;test "minutes" button
goto Inc_mins
btfss keys,1 ;test "tens" button
goto Inc_tens
btfss keys,0 ;test "hours" button
goto Inc_hours
retlw 0 ;must be a glitch. yeah, right!
;--------
; increment ten minutes
;--------
Inc_tens movlw 0x0A
movwf scratch ;scratch has ten
Inc_tens_loop call Inc_mins
decfsz scratch
goto Inc_tens_loop ;another minute added
retlw 0
;--------
; increment one hour
;--------
Inc_hours movlw 0x12
xorwf hours,w
btfsc STATUS,Z
goto Inc_hours_12
movlw 0x07 ;this part gets a little sloppy
addwf hours,w
movlw 0x07
btfss STATUS,DC
movlw 1
addwf hours,f
retlw 0
Inc_hours_12 movlw 0x01
movwf hours
retlw 0
;--------
; increment the time based on flags,1 as sent by interrupt routine
; Inc_mins loop also used by time-setting routine
;--------
Keep_time btfss flags,1 ;the minutes flag
retlw 0 ;not this time
bcf flags,1 ;clear the minutes flag
Inc_mins movlw 0x07 ;start incrementing time
addwf minutes,w ;add 7 minutes into w
btfsc STATUS,DC ;did adding 7 cause digit carry?
goto Sixty_mins ;then test for an hour change
incf minutes ;otherwise add 1 for real
retlw 0 ;and go back
Sixty_mins movwf minutes ;save the minutes
movlw 0x60 ;test for 60
xorwf minutes,w ;are minutes at 60?
btfss STATUS,Z
retlw 0 ;no? go back
clrf minutes ;otherwise zero minutes
goto Inc_hours ;and increment hours
;--------
; End of subroutines
; Program starts here
;--------
Start call Ram_init ;set variables to nice values
call Port_init ;set port directions
call Timer_init ;start timer based interrupt
;--------
; Done initializing, start the endless loop.
;--------
;
Circle ;begin the big loop
;
;--------
; detect falling edge on PORTA,4 to determine rotary index
; calculate rotation period and store in period_dup
; compare with working period(period_calc) and adjust if way different
;--------
call Check_index
;--------
; check display state and change if needed
;--------
call Display_now
;--------
; check keyboard and adjust time
;--------
call Check_keys
;--------
; check minute flag and increment time if a minute has passed
;--------
call Keep_time
;--------
; gentlemen, that's a clock, keep it rolling
;--------
goto Circle ;you heard the man, get going!
end
;--------
; end of file
;--------

:020000040000FA
:10000000F028FF3FFF3FFF3F8C00030E8D00640090
:100010008E0A03198E03980A0319970A0319960F7B
:100020001828FC3096006C309700793098009114B5
:100030000D0E83008C0E0C0E0B1109008207C134CB
:10004000BE34BE34BE34C134FF34DE348034FE34BA
:10005000FF34DE34BC34BA34B634CE34BD34BE34AE
:10006000AE349634B934F334EB34DB348034FB34BF
:100070008D34AE34AE34AE34B134E134D634B6342B
:10008000B634F934BF34B834B734AF349F34C934DC
:10009000B634B634B634C934CF34B634B634B534E5
:1000A000C334FF34C934C934FF34FF3407309900F6
:1000B00012309400950192019301FC3096000034B7
:1000C000003066001730650000340B118B178B165B
:1000D00081016400D83062008101003405081106F6
:1000E0001039031900349106111A00340E088F00DC
:1000F0008E019301920110080F02031C8328023C19
:10010000031C900A0034023E031C900300340530A7
:100110001206FF300319A9280310130D8207140ECD
:100120009A2814089A280A309A28150E9A28150831
:100130009A2800340F399A009A079A079A079A0763
:10014000031DA6289308FF300319A92812081A07CF
:100150001E2086000C301002B520920A06301206CE
:10016000031D00349201930A00349B009B0BB628B8
:100170000800050819060739031900349906643088
:100180009A00FF30B5209A0BC128191DE328991C4D
:10019000CC28191CD22800340A309A00E3209A0B8C
:1001A000CE280034123014060319DD280730140756
:1001B0000730831C01309407003401309400003470
:1001C000911C00349110073015078318E928950A0F
:1001D0000034950060301506031D00349501D228C7
:1001E0005620602065206E208720B920E020F3286B
:0201F000FF3FCF
:02400E00F53F7C
:00000001FF
Con el motor de IBM original 5 1/4 avanzar a poquitos la impulsin floja para el reloj del
propulsor Las porciones de ti no podrn encontrar el motor agudo del carrete del VCR que utilic
para el reloj original del propulsor. He encontrado otro motor que puedes utilizar, y he calculado
hacia fuera cmo modificarlo para utilizar en el reloj. Necesitars encontrar una lleno-altura 5 de
Tandon impulsin floja de 1/4 pulgada, tal como utilizado en la PC original de IBM y muchos se
reproducen. Otros fabricantes hicieron impulsiones que miraban similares, pero Tandon hizo los
mejores, con un motor hecho por Buehler. se es el que deseas. Este motor funciona mucho ms
rpidamente que el motor agudo. El motor agudo funciona cerca de 1800 RPM con 6.5 voltios
adentro, y este motor funciona cerca de 3000 RPM. Desears probablemente funcionarlo en 4.5 a
5 voltios para retardarlo abajo. El efecto secundario de esto es brillo disminuido de tu reloj
(recordar, las aplicaciones del reloj el voltaje del motor menos cerca de 1.25 voltios). Utilizar el
alto-brillo LED y los resistores de 47 ohmios en vez de 120 ohmios.

A typical Tandon full-height drive.

The Buehler motor.


Motor despus del desmontaje. El montaje de cepillo tiene dos cepillos pequeos y dos resortes
pequeos que amen volar. Puede ser que desees hacer algo del desmontaje dentro de un bolso
plstico claro.

Desechar el montaje de generador de frecuencia.


________________________________________ Desmontar el resto del
accionamiento de disco, particularmente el montaje principal del disco/de la rueda
volante. Contiene dos cojinetes. Excepto llevar ensanchado. Mide 0.625 " OD y 0.25 "
identificaciones Perforar un 0.625 " agujero en el casquillo de extremo del motor (el
extremo de la nariz, no el extremo con el montaje de cepillo). Un pedacito de taladro
caminado hace un trabajo agradable. Conseguir un 0.25 " espaciador roscado redondo.
El accionamiento de disco no contiene uno, aunque el eje principal del disco pudo
tentarte. Es probablemente ms duro que tu lmina de la sierra para metales, as que
olvidarte de ella. El espaciador demostrado aqu se camina abajo en un extremo. Esto
no es necesario, l era el nico tipo que tena con las dimensiones derechas.

El casquillo de extremo despus de perforar, del cojinete, del espaciador, y de un taladro del paso
Utilizar una sierra para metales para cortar tres muescas en el espaciador. Las
muescas deben funcionar de extremo al extremo, y sean bastante grandes caber un alambre
aislado pequeo. Esto es un cuadro agrandado que demuestra un extremo del espaciador.

Moler del extremo del eje del motor, saliendo de cerca de 0.2 ". No arruinar tu lmina de la sierra
para metales que intenta a la sierra el eje.

Pegar el espaciador en el eje del motor y dejar seco. Utilic


Goop automotor, pero puede ser que tambin tengas xito con la autgena de J.B. o de
epoxy. Limpiar todas las piezas con alcohol antes de pegar. Necesitars tres alambres aislados
pequeos con un conectador de Berg en un extremo. El accionamiento de disco tiene porciones
de los alambres que son demasiado grandes exprimir en las muescas en tu espaciador. Los
alambres principales coaxiales trabajarn si pelas el aislamiento y blindar externos. Roscar los
alambres a travs del rodamiento de bolitas. El reborde de cojinete necesitar estar en el interior
del motor. Soldar los tres alambres a los terminales en el conmutador del motor. El conmutador
tiene 7 terminales, tienes 3 alambres, as que la simetra no es posible. El mejor funcionamiento
estar con dos de los alambres en los terminales adyacentes, y el tercer alambre en el lado
opuesto. No disturbar los alambres existentes del motor. Pegar los alambres al motor,
encajndolos en los espacios entre las secciones de la armadura y atndolas firmemente con el
hilo de rosca o la seda dental.

Montar el motor, comenzando con el montaje de cepillo. Los cepillos del motor necesitan ser
instalados correctamente, los extremos curvados hacia el centro, y los extremos inclinados a los
resortes. Los surcos en los cepillos deben ser visibles mientras que montas el montaje de cepillo.
Para coger piezas del vuelo, montar el montaje de cepillo dentro de un bolso plstico claro.
El motor terminado tiene un eje roscado para montar el reloj del
propulsor a, y un conectador del tres-alambre que rote con el motor a la fijacin al circuito del
reloj

________________________________________ Una disposicin del tablero del circuito


impreso (PWB) para el reloj del propulsor. Si es fcil que hagas tableros del circuito impreso,
aqu est una disposicin que puedes utilizar para tu reloj. Es toda la una sola pieza, clase de
un modelo de la pared. Este invierno prximo escribir muy probablemente una nueva
versin del cdigo que simular el reloj anlogo da, un nd que este modelo trabajar
agradable con se. Esta disposicin est para el uso personal solamente, no utiliza por favor
este diseo para fabricarlos para la venta. ________________________________________

El PWB mont completamente.


The clock running, clamped in a vise.

Same thing, not running.

Opinin de la hoja del PWB.

Para hacer una transferencia impresa por laser, utilizar uno de estos dos archivos que cre la
impresin al disco. Necesitars caer al DOS y copiar el nombre de fichero lpt1 para imprimir.
Recordar substituir el nombre de fichero verdadero para el nombre de fichero y el puerto de
impresora correcto si no es lpt1. Si tienes un Macintosh, tendrs que encontrar una de esas
utilidades que permitan que copies un archivo derecho a una impresora sin la traduccin. Si
tienes algo adems de un Mac o de una PC, eres probablemente bastante elegante calcularla hacia
fuera sin mi ayuda. La manera ms fcil pudo apenas ser utilizar el archivo del pdf y ver como de
bien se interpreta tu impresora. formato de Laserjet IIP de los CABALLOS DE FUERZA de
clkfoil.prn. formato de la posdata de clkfoil.ps. formato del pdf de clkfoil.pdf.

Das könnte Ihnen auch gefallen