It’s A Marble Clock, But Not As We Know It

[Ivan Miranda] is taking a very interesting approach to a marble clock. His design is a huge assembly that uses black and white marbles to create a (sort of) dot matrix display. It’s part kinetic art and part digital clock, all driven by marbles.

Here’s how it works: black and white marbles feed into a big elevator. This elevator lifts marbles to the top of the curved runs that make up the biggest part of the device. The horizontal area at the bottom is where the time is shown, with white and black marbles making up the numerical display. But how to make sure the white marbles and black marbles go in the right order?

The solution to that is simple. Marbles feed into the elevator in an unpredictable order. An array of sensors detects the color of each marble. Solenoids simply eject any marble that isn’t in the right place. For example, if the next marble for track n needs to be white, then simply kick out any black marbles in that position until there’s a white one. Simple, effective, and guarantees plenty of mesmerizing moving parts.

Of course, this means that marble ejection and marble color sensing need to be utterly reliable, and [Ivan] ran into problems with both. Marble ejection took some careful component testing and selection to get the right solenoids.  Color sensing (as well as detecting empty spaces) settled on IR-based sensors commonly used in line-following robots.

You can watch the clock in action in the video embedded below just under the page break. We recommend giving it a look, because [Ivan] does a great job of showing all of the little challenges that reared their heads, and how he addressed them. There are still a few things to address, but he expects to have those licked by the next video. In the meantime, [Ivan] asks that if anyone knows a source for high quality glass marbles in bulk, please let him know. Low quality ones vary in size and tend to get stuck.

Marble clocks are great expressions of creativity, especially now that 3D printing is common. We love clock hacks, so if you ever create or run across a good one, let us know about it!

28 thoughts on “It’s A Marble Clock, But Not As We Know It

    1. The first part of this came up in my feed a week or two ago and I watched it then. He spent a good amount of effort sifting through a lot of marbles to get ones of a consistent shape and size. The stuff he used was very inconsistent, “larger by a couple of mm than average” would jam up the channels, and there were quite a few that just weren’t spherical.

  1. Cool project! Lot’s of challenges, so a recipe for lot’s of fun.

    I noticed that the solenoids are hitting the marbles out of their transport with a metal plunger, perhaps something that hits less like a real hammer might be better for the marbles. A simple rubber pad might protect the glass marble from chipping a marble on each hit of the solenoid.

    I wonder what will happen to this project when it is finished, it would look nice in a museum or other kind of exhibition. Definitely not an item for the average living room.

  2. Impressive project, but he would be well served to understand how to prototype properly. Make sure your solution works before you implement it.

    Instead of making a full board with 16 sensors and seeing that it doesn’t work (twice!), make a single sensor mount and get 1 sensor to work. Then purchase/mount the rest of the sensors.

    Same with the channels – make a short/small single channel and make sure the balls roll properly. Make a single gate and be sure it works before implementing it 16x in the actual clock.

    I also think that glass marbles hitting each other will eventually spall and fracture over time, leading to errant pieces of glass in the channels, and broken/non-round glass balls in the machine.

      1. The video is long and I did not see the clock really working – does he manage to do this under a minute so it can update on time? does he prepare next set of numbers in advance so next minute just slides in at right time?

          1. The next min is supposed to be prepped, got a gate that holds the next batch around that curved section – still picking random marbles from the bucket so its only probably going to be able to keep up. But it does have a whole min to try once he has enough marbles that actually work.

            Though if you add at the 30 seconds remaining mark a ‘try next n marbles and accept n+1 even if the colour is wrong’ type approach. Where n is defined in some way related to how fast the marble system cycles and remaining marbles to select, probably with a bias so the first marble you still need to select being more important to the display gets more attempts than its fair share of possible attempts.

            Then it will still fill up and keep time, just every now and then a pixel will be wrong – shouldn’t stop you from reading it correctly to have a few errors, and as the min section is the first bit filled it will matter even less as the hour doesn’t change nearly as often so even if it was illegible this pass you aught to have a good idea what it should read.

        1. There are multiple issue due to bad planning. The machine takes more time to fill the complete time than a minute. Sure you can store the next “buffer” and slide it completely, but that doesn’t fix the problem. Also, the marble tray is too small to store 2 “buffers” of marbles. It would have been a lot easier to prepare each digit independently (so instead of replacing 4 digits per min, only ~1 is required on average), this only requires to store one “buffer” for single digit (instead of 4), consume 4x less power, probably uses 4x less space since you don’t need storage space for the next “buffer”. Using relay to control the solenoid won’t last long, specially those chinese module which don’t have a snubber circuit against inductive load like solenoids and a small MTBF, a mosfet would have been better and smaller.

          1. For sure there’s room for optimizations.
            One improvement could be achived by using white marbles with metal core and black with plastic core, so it would be possible to operate a selection by the buffer (mechanically not simple, but more efficent. I can think some ways to do it, anyway)

            As a concept it is still very nice. But like in software: do not overoptimize too early.

            Biggest problem in my opinion is the noise. But hey, it’s a marble clock. It is supposed to make some noise.
            Just do not put it next to a bed room.

  3. I was wondering how he could increase the odds that he’ll get the correct color marbles when needed. Obviously one answer is to increase the number of white marbles in the pool (ie, make the ratio closer to 50:50). Even though fewer white marbles appear in the display, you still want to have good odds of getting a white one when you need one.

    Beyond this, though, more complexity is needed. For instance, you could have two levels of ejectors, with a lower set only ejecting black marbles, and an upper set only ejecting white marbles. The ejected white marbles could go into a separate holding area, above the regular holding area and also above the black marble ejectors, such that the white marbles could fill in any holes left by ejected black marbles.

    1. I think 50:50 would be far too many white marbles, but I’ve not run the numbers at all – just clear you need more black than white at all times. Can’t waste all your time rejecting marbles with the excessive chance to pick up a white marble – as assume you start 50:50 mix but the time right now is very heavily black leaning – maybe its 11:11 and you are prepping 11:12, then by the time you are trying to fill out the hour on the refresh that 50:50 mix is now 60:40? 70:30? in favour of the wrong marble colour. Though obviously it depends on just how many marbles fit in that lower hopper – if it can hold enough that the ones currently in the display don’t make up much % of the total marbles in the system then the ratio available won’t change so dramatically.

      I’d suggest pick the time (which will depend on 24 vs 12 hour display) with the ratio with most white to black and add a smidgen of extra white but no more is the way to go.

  4. The whole ‘let the feeder fill randomly and eject and retry for what isn’t correct’ is slow, noisy, and obviously foolish. He’d be better off using his sensor to sort the balls into segregated holding areas and filling the feed with exactly the balls needed.

    And I second PWalsh’s point, the failure to prototype is clear here; and it is obviously YouTube click bait so he’s not incentivized to get better at it. Compare with Wintergatan where Martin has been prototyping every mechanism after having felt a few failures.

  5. Use marbles of different sizes. Marbles cleared from the display filter to two feed levels as appropriate (just like sorting ball bearing or eggs by size). All the smaller black marbles feed the entire lower level of slots from the bottom tray. The next stack level kicks out black marbles where there should be white marbles. The black marbles kicked out roll back down a ramp to the black marble feed supply level. The next level up the larger white marbles drop into the vacant slots. The slots move up with each rank already presorted and loaded properly for the display. Further, the next display is already preloaded for each minute change. Works equally well if it’s black marble that are larger than white marbles. With several different diameter marbles you could even explore using colors but with substantial additional complexity. Direct vertical feed is also possible and would make minute changes even faster.

  6. It almost needs two hoppers at the top.
    Have the black/white sensing done on the belt on the way up and then kick the black balls off first into the first lower hopper tray and the white into the second upper hopper tray.
    Then it’s just a matter of one gate on each hopper per slide, open and close the gates for black and white as needed, mostly letting black through, but occasionally dropping a white into place when needed.

    Add a sensor per slide after the gates to check that a marble has been sent on its way sucesfully and maybe a vibrator motor to pulse a couple times if things get stuck.

  7. It’snit clear that it will never make a functional clock as demonstrated . It has to completely rebuild all four digits and black space every time the minute changes from a random selection of marbles for each raster. The only way it could work is to prestage the next time ahead of the minute then empty the previous time then release the next time assuming it can build the next complete time in a minute which I don’t think it can at the rate it was moving marbles and the random unpredictable pick up of marbles for each raster. It should be separating marbles by color and feeding the correct color as needed to the raster to build the matrix in a predictable manner. It should have been designed to build the matrix vertically to keep from needlessly repainting non changing digits

    1. Exactly. Many people commenting to say how it would be better, but why bother making the same marble clock that has been done before. I consider Ivan more on the level of Simone Giertz; it doesn’t have to be useful or good looking, just fun. And sometimes you get some inspiration.

      Also the guy gets metric tons of filament for free from his sponsors so he’s usually print first, try later.

    2. Also you can perfect a gate that works for exactly one channel only to find cross talk renders it useless when you stack them etc – sometimes prototypes that are at or even beyond the expected deployed scale are the way to go as that catches every failure – perhaps those relays when you are triggering 8 of them create enough draw to brown out the projects brain or enough noise to make the ball detecting sensors erratic.

      Small unit testing does have its place, but there is still a need after it passes that test to verify it does actually work at scale – so for relatively small scale projects like this doing the whole lot at once may well work out much more efficient.

  8. Strange placement of the color detector, I would think color detection and placement into the holes would go one right after the other, rather than hoping a random placement would occur to the correct hole. Mandating a color detection, and placement of marble should improve things — ex: if color – white for the next marble, then gates open to the white-placements, and when searching for black, only the black-capable rows open.

    simplified a bit — if you serialize the marbles so that a color detection only requires a single sensor, it would then use a servo controlled arm/plate to direct the marble to the right position into a “black bin” and “white bin” with gates that open at the right time depending on the next colors required. To get rid of this detection you could make the black marbles a little larger, and the white ones a little smaller — resulting in the the neat coin-sorting trick here — https://www.youtube.com/watch?v=SbWc3bSdDlw , or, if you truly must have the same size marbles, a nudge off on a simple rail to the “bin” on the other side is also possible — as the marble passes in front of the detector, you have the opportunity to knock it off ( see industrial cherry tomato color sorters on youtube for inspiration )

    bonus points if you have magnetized marbles which help position them ( or have some kind of magnetic -responsive core inside). You would then be able to “pull” one of the colors (let’s say black) with a mild electromagnet, and repel it when you want the other (white).

    With these changes it will likely prevent the marbles from crashing into one another on their rejection (which now becomes nearly obsolete). I suspect this is where most marbles break ?

    Anyhow, cool to see it working !

  9. Being somewhat of a newbie here, I’m fascinated between the split between those wanting to over-engineer, just because we can. And those proposing optimisations. I can truly see (and enjoy) both sides, but I’m probably in the optimisation category by nature. Hence a probably too-radical suggestion, why not scan the numbers vertically, instead of horizontally? Yes it creates slightly more channels to control (*see later) but gravity is your friend and changes could be quite quick. I can even envisage a short of SERDES to require only one marble selector to feed slices horizontally into the vertical channels. Next step, marble-driven logic!

  10. I find most of his projects filament wasteland and time consuming productions, which could be done with much less material and time wasted, like in this case using wood and cnc. I understand that most of this are more like an entertainment, but somehow I don’t find wasting “cool” at all. For me a real hacker or engineer would try to make optimal/minimal solutions, rather than wasting resources.
    It’s like using a rpi5 for flashing a single led, where a single $0.1 or $0.02 mcu will do the trick (don’t come up with the 555, that’s also silly in the age of 2 cent mcu-s)

    1. Not sure you can call additive manufacturing more wasteful than subtractive, both have their place in the dog house on that score. For something like this that is quite thin and fine to be carved into wood it would need to be either a rather dense slow growing wood or an engineered timber product and you are then turning 95% of it to chips and sawdust. And any flaw you in the wood could mean starting large areas again wasting even more stock.

      For a project like this where you know the devil is going to be in the fiddling and tolerancing details a 3d print is for me the clear winner (even if you then go and make the final versions in wood and brass etc) – it is much easier to iterate a 3d print so you probably end up getting a working result faster and with massively less waste, and a 3d printer produces waste that is really not that bad to recycle – even if just taking the heat and smash into flat plastic boards you can then use on your CNC mill approach. Wooddust on the other hand is only really able to be usefully burnt and is hell to clean so it won’t destroy your machine tools…

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.