Introduction: Digilog CLOCK
Digilog clock(Analog + digital clock)
Clock tells time and are easy to see around us, have a variety of designs and forms. To know the time only need just see it.
I am looking for a clock to know time several times in a day. Digital clocks give you time in numbers, and analog clocks tell time in hour and minute hands.
Digital clocks have been popular in the digital age, but analogue clocks have been more popular due to their design, color and size.
One day, suddenly I wondered why the clock keeps working on a flat surface. I have looked at a number of analog clocks, but because of the constraint that the hour and minute hands have to display time in the same concentric circles on the same plane. It had to exist in a plane of a circle. (Of course, there are square or ellipticals, but it is also all on one plane)
So, I began to worry that I could not create a three-dimensional three-dimensional clock instead of a two-dimensional plane, and I could create a stereoscopic analog type digital clock by combining digital and analog.
This method uses the phenomenon that the LED light is long like the clock hands when the light of the cylindrical LED is tilted at an angle to the translucent paper.
Because the hour and minute hands are visible and the LED can be positioned anywhere depending on the shape of the wire.
It was possible to complete an DIGILOG CLOCK(analog type digital clock) with three-dimensional configuration.
Step 1: Schematics : Using Eagle 9.0.1 Cad
First, decide the main controller is Arduino pro micro, and getting accurate time use RTC DS3231 with coin battery.
The symbol of sparkfun_pro_micro is in sparkfum-boards library. The symbol of CR2032 battery holder was made in new library, and also get in adafruit library.
To display time, needs design to control 60 LED that 6 to 60 multiplexer.
- design 6 to 64 Multiplexer
4-16 Multiplexer 74hc154 4ea
2 to 4 Multiplexer 74hc139 1ea
Output of PORTB1~6(Arduino pro micro) is sent to 60 LED by multiplexer.
Of course, we use four 74hc154, which is a 4 to 16 multiplexer ic, and 74hc139 which is a 2-4 multiplexer, to be able to select from 0 to 63.
In the 0th to 15th intervals, the first 74hc154 is selected and in the 16th to 31st intervals the second 74hc154 is selected, third’s 74hc154 for the period from 32 to 47, and the last 74hc154 is for the period from 48 to 60. PB1 to PB4 are connected in common to 74hc154, PB5 and PB6 are connected to 74hc139, and the output is connected to the enable of each 74hc154 to form a 6-64 multiplexer, where 0 to 59 are used.
In order to display the time, minutes and seconds, the LEDs are arranged. Based on the circle having a diameter of 100 mm, the LED 1 that lighted inward and the LED 2 that lighted outward are determined.
To display the time, follow the procedure below.
1. select hour -> PORTB = hour data -> display hour -> delay(4)
2. select minute -> PORTB = minute data -> display minute -> delay(6)
3. select sec -> PORTB = second data -> display second -> delay(4)
4. repeat 1~3
- 5PI cylindric dip type LED
By adding 60 LEDs to the outside and selecting the LEDs inside and outside
The inner LED indicates the hour hand, the outer LED indicates the second hand, and both LEDs indicate the minute hand.
The inner LED and the outer LED were selected using pins 5 and 6 of Arduino pro micro.
The real-time clock support chip was read once an hour to compensate the time.
In addition, time and minutes are set by using encoder switch as UI, and then switching is saved.
The power supply for LED driving is supplied through 7805, and the current limiting resistor is used for connecting to the main board with 330 ohms. Therefore, it is not shown in the circuit diagram. The entire supply voltage was supplied via a DC 8V 1A adapter.
Step 2: Parts List
The major components are as follows.
- Arduino pro micro(5V, 16MHz)
- 74HC154 4ea
- 74hc139 1ea
- ds3231 1ea
- encoder switch 1ea
- cr2032 battery holder 1ea
- 2sc1815 2ea
- etc(resistor) 60ea
- bright LED 120ea
Step 3: PCB Design : Use Eagle 9.0.1 Cad
The whole part is used in addition to the basic library, and the self-designed part has one CR2023 battery holder.
This is the part on the bottom left of the main board.
Looking at the dimensions of the datasheet, we added a battery holder to the component & library of eagle cad. When you create a library, you create device, symbol, and package together.
Even if the whole PCB size is 80mm round, the parts are connected to the LED by placing 60 connecting pins on the edge. The connecting part is 330 ohm resistor.
An encoder switch was placed in the center.
The LED watchmaking PCB was designed with 60 clock hands and made to fit the size.
The hour hand LED was pointing inward, and the second hand LED was pointing in the opposite direction.
The PCB size is designed as an 80 mm diameter circle and has 60 connectors on the edge.
Most parts were placed on the bottom and 74hc154, 74hc139, and ds3231 ic were placed on the top side. In addition, a connector for connecting LEDs is placed on the edge.
Run the cam processor to create the files necessary to make the PCB.
Layer is made of gerber file (cap, sol, pic, stc, gpi etc) according to RS-274
Step 4: 3D Design : Use Fusion 360
- knob design
You can place the encoder switch in the center of the PCB and attach the knob to it, which is designed as a circular three-dimensional knob and output to black with a 3d printer.
The knob has a 6PI shaft and the length is 15mm.
- led cover design
The hour hand LED is oriented inward, the second hand LED is oriented outward, and is obliquely projected.
The thickness of the front surface of the cover was reduced to about 0.4mm to allow the LED light to leak.
So that the light from the other side I was able to see the time.
- main board
After PCB board design in Eagle cad, main board was converted to 3d cad file using FUSION SYNC tool.
The result can be seen using Fusion 360.
Step 5: How It Works...
- display
After setting the time in program, the arduino internal millis() function is used to calculate and display the time itself for one hour.
Every hour the rtc ds3231 corrects the time. Select the internal LED for the time display, put the hour * 5 + min / 12 result in PORTB1 ~ PORTB6, and display during 4ms.
Minute display, select the internal LED and the external LED at the same time, put the min value in PORTB1 ~ PORTB6 and display during 6ms.
The seconds display selects the external LED and the sec value is displayed in PORTB1 ~ PORTB6 during 4ms.
It is executed repeatedly in the loop function.
- adjust time
You can adjust the time by turning the center knob and pressing the knob switch to save.
Step 6: Assembling
- Main PCB
After order PCB, solder each arduino and ICs. Attach small resistors and ICs, attach Arduino pro micro, battery holder, dc power socket and encoder switch. DC power supply is 5V. The knob was printed in black using a 3d printer.
The 60 holes on the edge are the holes for connecting the LEDs, and the connection to the LED board is using a 330-ohm resistor.
- Led board PCB
The LED is 5PI LEDs, bent lead wires 90 degrees, soldered to the PCB, and cut the long legs needed. After soldering, the LED cover was put on and the LED angle was adjusted so that the light was properly tilted.
- Connect the knob to the encoder switch to match the PCB.
- Make PCB : LED board & Main board
- Soldering LED
- Print LED cover using 3D printer
- Connecting Main board and LED board with LED cover
- Specially, 1~15 LED bar is soldering by longer and with LED cover
Step 7: Programming
- Library
install ds3231 library : https://github.com/jarzebski/Arduino-DS3231
- setup()
PORTB1 ~ PORTB6 : output
A0, A1 : encoder input
A2 : encoder switch
- loop()
Calculate 1/10sec using millis() and calculate sec, min, hour based on this. The hours, minutes, and seconds are displayed by LED as calculated values. Every hour, it connects to the rtc ds3231, reads the precision time, and corrects the time.
Turn the knob to adjust when time adjustment is needed. After adjusting the time, press the knob to activate the switch and save the time to rtc.
Step 8: Testing
After arduino programming, upload it with pc's time and synchronize it to rtc.
Program action ...
Well done.
Step 9: Results
I made a schematic by using eagle cad according to my first idea, and based on this, I designed and produced a PCB board.
In Fusion 360, import the PCB 3D file, design knob, led cover based on it, and output it using 3d printer.
Solder various parts to PCB board and assemble 3d outputs properly.
Create and upload the Arduino program and run it.
Overall shape is generally satisfactory, performance is good. It was a great opportunity to work with electronic circuit and parts drawings.
Step 10: Reference
- Start Eagle cad
https://www.autodesk.com/products/eagle/blog/getti...
https://learn.sparkfun.com/tutorials/using-eagle-s...
Adding to your Eagle Component library
https://core-electronics.com.au/tutorials/adding-...
https://github.com/sparkfun/SparkFun-Eagle-Librar...
https://core-electronics.com.au/tutorials/adding-...
https://www.instructables.com/id/Adding-a-Library-...
https://core-electronics.com.au/tutorials/adding-...
- PCB creation with Eagle
https://core-electronics.com.au/tutorials/adding-...
https://intranet.ee.ic.ac.uk/t.clarke/EAGLE/The%2...
https://core-electronics.com.au/tutorials/adding-...
https://www.instructables.com/id/PCB-Design-Using-...
- Fusion 360 integration with EAGLE How-to
Step 11: More Videos
Digilog Clock 1 : normal display
Digilog Clock 2 : How to adjust time
Digilog Clock 3 : tilted quarter
Digilog Clock 4 : apart quarter
Digilog Clock 5 : upplane