Have ever seen those fancy old style displays in train stations or airports? I find them very nice and after I saw an instructable about this topic I decided to make one for me.
I don’t have possibilities to use laser cutter or similar cutting tools, but I have a good access to 3d printers. So, the plan was set and the 3d printing was my aim.
Step 1: What Do You Need?
- Time and more time
- 1 Arduino Uno or Mega (depending how many displays you want to have)
For one segment one needs:
- 28BYJ-48 Stepper Motor with ULN2003 Driver
- 60 needles with diameter of ~0.5mm
- A lot of M3x12mm screws
- 4 M3x8mm screws
- 4 M3 nuts A
- hall sensor
- A 2x8mm magnet
- A MR115ZZ (5x11x4mm) ball bearing
- A breadboard
- Jumper wires
- Self-gluing paper
- 2N2222 transistor
- M3 coupling nuts with fitting M3 screws (if you want to connect several segments)
- Real time clock (optional, if you want to show time)
- 3d printer
- Soldering iron
- M3 threading bit (probably it would work without it too)
- A 1mm drill would be handy
Step 2: Design
I was long thinking how could I make the “flaps”. After a long thinking, I decided that I could print them out. It took me several trials to figure out all the mechanics and dimensions, but in the end the design is following:
- I have 30 different flaps- mixture with letters and numbers
- The flaps are moved by a 28BYJ-48 Stepper Motor and ULN2003 Driver.
- The flaps are fixed with needles. My wife had needles with diameter of ~0.5mm and that was the choice
- A magnet and a hall sensor will define the start point.
- Control is made with an Arduino.
The aim was to have 9 segments connected, as you can see from the pictures and the video.
It took several trials to fit everything together. At first I had difficulties to calculate the proper point where the needle should go and how many flaps can I have so that it still works. Therefore, I made few trial and error tests and in the end ended up with the design as shown.
Why I printed out the flap plates? I wasn’t sure how well I can control just a wire or something like that in a not defined space (in my case the hole in the thin plate). I was looking several other designs, but nobody was explaining this part. Now after I’m finished with the enormous work I think using just a self-gluing paper is sufficient. That would allow much more flaps to use with smaller cylinder.
My cylinder diameter is defined with the design I made for the stepper motor. The drive ratio between the wheels 1:4 thus the overall speed is not the highest. The cylinder is quite heavy and every small obstacle could be difficult for the motor. Nevertheless, like this I could make one segment nicely thin.
Step 3: Printing and Assembly
For one segment, you need to print:
- 1 Cylinder1
- 1 Cylinder2
- 2 Cylinder3
- 2 Cylinder4
- 1 Side1
- 1 Side2
- 1 Holder1
- 4 Holder2
- 1 Wheel
- 29 Plate1
- 1 Plate2 or (30 Plate2 and no Plate1)
After printing make threads to Cylinder1 and Cylinder2. Then you can screw them together, this will be the base for the cylinder.
Use a 1mm drill and clean the holes in Cylinder3. Now you can insert the needles and fix them with Cylinder4 by screwing them onto the cylinder. Other side has to wait.
Make threads to all the holes in Holder1, Holder2 and Side2. If the hole is too big for M3 threading, then there shouldn't be any thread.
In Holder1 goes the hall sensor. I placed the sensor so that the front side was towards the flaps. Solder extension wires to the sensor pins and glue the sensor to the slot. Try to place the sensor in the middle of the slot. The larger hole is for bringing the wires out. Don't forget to do it! Before fixing everything note down the wire order, you need to know which one was for 5V, ground and the actual signal.
Screw together Side1, 4 Holder2-s and Holder1. Probably you need to make the hole for the hall sensor wires bigger. I had difficulties to bring the wires through there.
Cut out all the symbols and arrange them as you like. Just be sure that you use always the same order if you build more than one segment, otherwise you need much more work with the programming. Additionally, it's useful to note down under which symbol is the magnet.
Place magnet into the Plate2 hole and fix it with the paper. I used invisible tape to fix the paper on the plate better. At the same time, I was hoping that it will make the movement smoother. Continue with the other 29 Plate1-s.
Each plate goes to cylinder, fix it with needles. I added first all 30 plates and then the the cover Cylinder3. Before screwing the other side to the place be sure that the placement is the same as on the other side. The 30 needle holes are not perfectly symmetric to the screw holes and you need to look that the holes are matching.
After all the needles and screws are there you should check if everything is OK. It will be annoying to correct it later.
Push the small cogwheel (Wheel) on the stepper. Be sure to press it really to the end (until the motor shaft is round), otherwise the whole thing doesn't fit. I know, not the best design as there is almost no place for errors. Screw the motor on the Side1.
Insert a bearing into the cylinder and fix everything.
Now you have one segment ready, continue with programming or make another one.
Step 4: Arduino Programming
I was using an Arduino Mega, as it had enough pins to control all 9 segments and it’s hall sensors.
I think the Arduino code explains itself already well enough, thus I don’t comment it too much here. I added a lot of comments between the code and that should be sufficient for most.
I used the breadboard to make the connections between the drivers, hall sensors, power source and Arduino. The transistors are there to turn off the power from a driver when it’s not active. I had some problems and was looking different solutions. The transistors can be removed.
The logic is following.
- Find the magnet
- Go to the desired flap.
- Do the same for the next segment
The desired flap is defined as a number. For example, symbol 29 is the last in the list. The counting starts from 0!
After so much effort to build it I didn't have too much energy to work with the code, thus each segment is controlled separately and it takes little more than 2 minutes to go through all the segments. Thus, using it as a clock is not very practical. I could control each segment separately and not always all the 9 together, but that would require little further programming. Additionally, all the 9 segments should be moved in parallel. Till now it’s raw, but it works.