Circle Calendar
This instructable is my version of tomatoskins' great project: the Automated Perpetual Calendar.
Since I don't have access to a workshop to do woodworking and I wanted to learn how to use 3D printers and a laser cutter, I decided to make my own version of the Perpetual Calendar. This calendar will consist entirely of lasercut plywood, the 3D printed gears are optional and can also be cut out of plywood.
Something else I changed about tomatoskins' design is the size, I'm making a smaller one. This calendar, including the casing, will be 20 centimeters wide and 23 centimeters tall. (approximately 8 x 9 inches)
The last thing I wanted to add is to make the device battery powered, I just think it will look way better without having a cable hanging out the bottom.
Supplies
Tools:
- Laser cutter
- 3D printer (optional)
- Soldering iron
- Hot air station (optional)
- Drill and bits
- Small glue clamps
- Utility knife (optional)
- 400 grit sanding paper (optional)
- Arduino Uno (or serial programmer)
- QFP-32 ZIF socket (optional)
- Various jumper wires
- Tweezers
- Side cutters
Materials:
- [4] M3 hex nuts
- [4] M3 x 20mm bolts
- [12] M3 washers
- [4] M2 x 4mm screws
- [43] Magnets 3 x 1 mm
- Plywood 500 x 250 x 3mm
- Velcro
- Woodglue
- Heat shrink (optional)
- Superglue
- Solder
- Solderpaste
- Solder wick
Electrical components:
- [2] 28BYJ-48 stepper motors (5V)
- [1] 4 x AAA battery holder
- [4] AAA rechargable batteries (1.2V)
- [1] CR2032 battery
- [1] DS3132 RTC module
- [1] PCB (step 5)
- 24 awg solid wire
- [7] 100 nF capacitor (0805)
- [2] 20 pF capacitor (0805)
- [2] 10 Ohm resistor (0805)
- [1] 10 k Ohm resistor (0805)
- [2] Male stepper motor connectors (JST 800921)
- [2] 10 k potentiometers (3296W)
- [2] A3144 hall sensors
- [1] ATMEGA 328P-AU (TQFP-32) (with Arduino bootloader)
- [1] ULN2803ADW (SOIC-18)
- [1] LM393 (SO-8)
- [1] 16 MHz crystal (HC49)
Lasercutting the Parts
You may need to adjust the lineweight and color for your specific lasercutter.
The lasercutter settings I used are:
Trotec Rayjet 300
Engraving: Power 100%, Speed 50%
Cutting: Power 100%, Speed 2.5%
After lasercutting I used 400 grit sanding paper to remove the burn marks around the engraving and cuts.
3D Printing the Gears (optional)
I printed the gears on the Ultimaker 2+ using the following parameters:
- PLA
- 0.4mm layer height
- 100% infill
- Brim build plate adhesive
After printing, I used an utility knife and sanding paper to remove the brim. I found the gears were a little too small for the axle, so I used hot air to heat the hole in the gear and put the axle through.
Instead of 3D printing the gears, the gears can also be lasercut from plywood.
Assembling the Rings
- Make sure the lasercutter went all the way through the plywood, if not, use sanding paper to remove unwanted material from the gears
- Apply woodglue to the small gear and stick it to the ring
- Clamp the gear and ring to eachother
- Repeat for the larger gear
Assembling the Front Plate
- Glue the top plate level with the top of the front plate, leave 3mm on both sides for the side panels
- Apply clamps to the parts
- Glue the bottom plate level with the bottom of the front plate, again leave 3mm on both sides for the side panels
- Use the rings to get the middle part in position and glue it to the front plate, leaving 3mm left and right (make sure to check the text on the rings through the window in the front!)
- Let the glue dry
- Put the rings in their position
- Get 4 hex nuts and super glue
- Use the motors with attached gears to determine the perfect position for the hex nuts
- Super glue the nuts in position
- Make sure the rings are in position
- Apply woodglue to the corner where the side plates go in (make sure no glue gets on the rings or gears!)
- Put the side plates in their place
- Apply glue to the three sides of the top plate and glue it in place
- Remove excess woodglue before it dries
Assembling the PCB
In order to assemble the PCB, it should first be ordered. I used JCL's prototyping service for ordering my PCBs.
- Download the latest gerber files from my Github repository
- Send the files to your favourite PCB manufacturer
- Wait for the boards to arrive
Before soldering the microcontroller, make sure the Arduino bootloader has been burned onto it. This instructable will tell you how to burn the bootloader. For burning the bootloader, I used a ZIF socket so I didn't have to solder the chip twice.
There are many ways to solder this PCB, here is how I did it:
- Apply solder paste to the pads of the SMD components
- Using tweezers and the schematic, put the components in place
- Solder the components using hot air
- Remove excess solder using solder wick
- Solder the through hole components and connectors
- Solder the hall sensors using the solid core wire
- Solder cables to the battery holder
Optional: shorten the cables of the stepper motors.
Optional: reduce the power used by the RTC module by modifying the module
Mounting the Electronics
- Drill holes in the wood and use the M2 screws to mount the PCB in the enclosure
- Position the hall sensors above the rings
- Super glue a piece of velcro on the battery holder and in the enclosure
- Put the M3 bolts through the motor's mounting holes, place 3 washers and 3 wooden spacers
- Screw the motor in place
- Plug in the motors
- Plug in the RTC module
Attach the Magnets to the Rings
To get the magnets in the right places on the rings I marked the place of the hall sensors on the rings.
- Place the ring in the casing
- Position the number/name of month so it's visible through the window in the front of the casing
- Mark the place of the hall sensor
- Drill a 1-2mm deep, 3mm wide hole for the magnet
- Repeat for all positions of the rings
Glue the magnets in place:
- Mark the south side of the magnets (I used this tutorial)
- Apply super glue to the holes in the rings
- Glue the magnets in place with the south side facing up
Uploading Code
- Remove the microcontroller from the Arduino Uno board
- Connect GND, 5V and the RX, TX and reset lines to the PCB
- In the Arduino IDE make the following settings:
- Board: Arduino Nano
- Processor: ATmega 328P
- Port: select your Arduino Uno
- Programmer: Arduino as ISP
- Upload the code using the Arduino IDE
Downloads
Powering the Calendar
Now it's time for the final step, putting in the batteries. Make sure to use rechargable batteries with a voltage of 1.2V, because the operating voltage of the microcontroller has a maximum of 5,5V.
To operate the calendar using 1.5V batteries, you can add a (linear) voltage regulator.