CLEPCIDRE: a Cider Bottles Digital Clock

by rivandemo in Circuits > Clocks

1264 Views, 6 Favorites, 0 Comments

CLEPCIDRE: a Cider Bottles Digital Clock

Clepcidre-Pressoir - 1.jpg
Clepcidre-OriginalSpec.jpg
Clepcidre-Garden - 1.jpg
Clepcidre-Garden-2 - 1.jpg
CLEPCIDRE - ClockMode.jpg
Clepcidre - 1.jpg

Before diving into the object description i need to explain the context in which it has been designed and built. My wife is an artist and works basically with clay, as ceramist, but also with other materials like wood, slate or glass. In most of her art works, she tries to show the traces left by the time on objects and she often incorporates materials found in the nature like pieces of wood on the beach, so as to "give a second life to used items". Her sister and brother in law used to make their own cider (in Normandy) and still have hundreds of cider bottles sleeping under a thick layer of dust in their old press. That was more than enough to trigger my wife's next creation idea: "a cider bottles clock". The link with the time is evident: those bottles have had a glorious past and should now be a witness of the time passing and together form a clock. So one year ago she asked me: "Darling can you make me a clock with lamps under 12 cider bottles? I'm going to flatten the bottles in my kiln myself and you care for the rest: the wooden support,-a pallet-, the lamps and all the electronic circuitry! I want to display the time but not always, the leds should also blink randomly, is it possible? You should also find the solution to fix the bottles on the pallet". The clock should be ready within one month...

The "nick name" of this art work is "CLEPCIDRE" which stands (in French) for "Circuit Lumineux Electronique Programmé sous bouteilles de CIDRE", it is a nod to the name "CLEPSYDRE" which designates a water clock invented by the Egyptians. My wife calls it "Les Bouteilles de Ma Soeur" (My sister's bottles).

Picture #1: The stock of cider bottles of my sister in law

Picture #2: The original specification document

Picture #3 to #6: views of the clock

CLEPCIDRE has been shown during two exhibitions last year, the first one in the "Greniers à Sel" in Honfleur (Calvados, Normandy, France) in April 2019 (picture #6) and the second one in Touques (Calvados, Normandy, France) in June 2019.

Supplies

  • Twelve cider bottles (you can try other types of bottle: champagne, sparkling wine, ... but without guarantee)
  • A ceramic kiln (we used a 5kVA top-loaded cylindrical kiln)
  • A pallet (edge-to-edge boards, dimensions: +/- 107cmx77cmx16cm)
  • Some wooden boards (to close the pallet sides)
  • 24 high-power 10mm diameter white leds (eg https://www.gotronic.fr/pj-1255.pdf)
  • An Arduino board: Uno or Leonardo OK, smaller board may be OK, Mega is a little bit overkill
  • Two power-supplies (5V for Leds and 12V for Arduino and RTC boards, although 5V for Arduino should be OK but not tested)
  • A RTC board (I have used an Adafruit DS1307 but i would recommend a more accurate temperature-compensated RTC based on DS3231; the DS1307 shifts 2 - 3 seconds every day and needs regular re-adjustment)
  • 4 shift registers 74HC595 either as individual items (16 pin DIL CMOS IC) or already board-mounted (eg SparkFun Shift Register Breakout - 74HC595 ref BOB-10680)
  • Epoxy test boards (50*100 mm, holes in group of 3 and general purpose boards with linear copper bands)
  • Diamond drill bit (6 or 8mm) and wooden dowels (6 or 8 mm)
  • 24 1/4 W resistors (220 Ω)
  • Fixing collar for mechanical bottle plug (found in hardware store or Internet)
  • Glue, Wires, heat-shrink sleeve, tools,.., screws,.., soldering iron (18W OK)

The Easiest Thing: Closing the Pallet's Sides

Clepcidre-DessousPalette - 1.jpg

Try to find a wooden pallet (i found one of about 107cm*77cm). There shouldn't be any gap between the wooden boards.

Fix 4 wooden boards with screws, one on each side. Cut the 4 boards from lager ones to get the right dimensions.

As there might be (and probably there will) foot boards, i recommend to cut them as shown on the picture, this will free the access to the bottom boards and allow the drilling of holes for the leds.

Later, when the positions of the leds will have been marked, it will be necessary to drill in two stages, first the hole with the diameter of the led (9 - 10mm) and then the larger hole (say 2cm) to obtain the thickness corresponding to the height of the led (the thickness of the wooden board is likely to be greater than the led's height)

Picture 1: The pallet seen from below with the led holes already drilled

Flatten the Cider Bottles

Clepcidre-Four2.JPG
Clepcidre-Four1.JPG
Clepcidre-ProfileTemp.jpg

Our kiln capacity allows the heating of 6 bottles at a time on 3 levels. When placing the bottles make sure that the bottles are not in contact with each other, neither with the oven walls nor the columns.

You can be creative and add, for example, glass beads or shells or little stones in the bottles. You can also insert a terracotta support under the bottles, the latter will take the shape of the support during heating.

The most important in this process is to let the bottles cool down very slowly and not to open the kiln too early, even if you think that the kiln temperature is equal to the room's one, you should know that the glass temperature remains higher than the kiln one during a certain time, and any temperature shock, even a small one, can cause glass break. We have had bottles break one or two days after the heating and i recommend to take +/- 30% of lost into account (foresee 16 to 18 bottles to get 12 at the end, not to speak about the ones you will not be satisfied of).

The temperature profile provided here should be considered as an example and only reflects the characteristics of our kiln, you should execute some tests with your own equipment in order to find the most appropriate final temperature. If you heat too much you will get completely flat bottles while if you heat too less the bottles will not be flattened enough.

Picture 1: The kiln, general view

Picture 2: Two bottles flattened (i don't have any picture of the bottles in the kiln before the heating right now)

Picture 3: Typical temperature profile

Locate the Bottles and Leds' Positions

Clepcidre-TimeTable.jpg
Clepcidre-PositionneurLed - 1.jpg
Clepcidre-PositionneurLed - 2.jpg
Clepcidre-AlignementBouteilles - 1.jpg

In the clock design, i'll explain later, there are two leds under each bottle, the "external" ones showing the hours (0 to 11 and 12 to 23) and the internal ones showing the minutes by step of 5 (0, 5, ... 55). First you need to position the bottles around the pallet. For that you need first to stretch strings between a central pushpin and 12 pushpins around the pallet, "diametrically opposed" if possible. 4 positions are obvious and easy to find: 0, 3, 6 and 9 hours (the strings join the middle of each side, two by two). The 4 other lines are a little more tricky. You need to orientate the strings so that there is enough room for each bottle (bottles are aligned two by two with their axis corresponding to the string) and the bottle giving the impression to be equally distributed. This step requires a little trial and error. Note also that as they are not all the same you have to choose where each bottle should go (this is a matter of "artistic feeling"). Once the place of each bottle has been chosen, do not forget to attach a label with its number to each bottle and to put a mark on the pallet for the bottom center of each bottle (see further). Those points and the strings will be used later to locate the holes of the fixing dowels.

Next the two leds must be positioned relatively to each bottle and the positions then transferred to the pallet.

For that i have built a box with two "mobile" boards (see picture), the first one perpendicular to the bottle axis and the second one, which is screwed on the first in its middle, allowing rotation, is aligned on that axis. In this second board i drilled two holes (9 or 10 mm diam.) one of them in the form of a buttonhole so that one led can be moved along the axis direction. I apply 5V to each led, picked from an Arduino board or any other source. BE CAREFUL! High luminosity leds can be harmful if you look at them directly, so it is highly recommended to put a band of translucent scotch tape above the leds.

Place each bottle on the top of the box and move the two boards and the "mobile" led until you are satisfied with the effect (remember you may have inserted glass beads in some bottles and placing leds under such beads enhance the light effect), measure the position of the leds relatively to the bottom center of the bottle and its axis and transfer these points to the pallet with a pencil. When all 24 points have been marked on the pallet, drill pilot holes (2-3 mm diam).

Note: the last picture shows the first string positioning which was based on a fix 30° angle between them, but, as one can see, this was not compatible with the space needed by the bottles; i had to re-align the strings on the bottles.

Picture 1: Drawing showing the leds and their meaning

Picture 2: The special box to locate the leds' position under each bottle

Picture 3: The same box with a bottle

Picture 4: Positioning the bottles (and strings) on the pallet

Drilling Holes for the Leds

Clepcidre-DessousPalette - 4.jpg

Using the pilot holes of previous step you should now drill the holes for the leds, but, as the pallet board thickness is likely to be greater than the leds' height, you should reduce the thickness by drilling a larger hole (for example with a 2 cm wood drill). Drill first the larger hole (depth must be such that the "non-drilled" thickness corresponds to the led's height) and then the leds' holes. Adjust if necessary so that the top of the lamp is flush with the surface of the wood.

Mark each hole with Hx and Mx labels (H for Hours and M for Minutes, x = 0, 1, ..11).

This is illustrated by the picture.

Drilling Holes in Bottles for the Fixing Dowels

Clepcidre-DrillProcess - 1.jpg

How to drill holes in glass can be found on this site: https://www.instructables.com/id/Drilling-Holes-in...

Find the hole position on the bottle axis so that it does not overlap a led, at about 2-3 cm from the bottom center of the bottle should be OK. Drill a hole (8 mm diameter) on the bottom side, but on half the thickness (don't drill through the entire thickness of the bottle !). Mark the same point on the top side of the pallet and drill a hole of the same diameter (through entire thickness OK). The hole position is measured on the string from the bottom of the bottle which you should have marked while positioning them.

Fix the dowels on each bottle in the hole with strong glue (dual components) and let the glue dry.

As soon as the dowels are fixed you can place the bottles on the (horizontal) pallet by inserting their dowels in the holes. The bottles must be placed head to tail, the first one (12h) with its neck facing outwards.

Remove the bottles (gently pulling their dowel out of the wood).

You can now insert the leds in their holes, re-adjust the holes which are too small. For those which are too large, you will need to block the led with a small piece of wood screwed under it.

I noticed that, even through the bottles, the light produced by the leds was too strong and I painted them in pale yellow.

Picture 1: The glass drilling material (note: i used a rubber mat under the bottle)

The Electronic Part

Clepcidre-SchemaPrincipe.jpg
Clepcidre-TimeTable.jpg
Clepcidre-DessousPalette - 5.jpg
Clepcidre-74HC595_PCB.jpg
Clepcidre-Sparkfun-74HC595_PCB.jpg
Clepcidre-74HC595Pin.jpg
Clepcidre-Sparkfun-74HC595-Pin.jpg
Clepcidre-ClockMode - 1.jpg
Clepcidre-RandomMode - 1.jpg
Clepcidre-Arduino-RTC - 1.jpg
Clepcidre-74HC595-Interface - 1.jpg
Clepcidre-GND-DistribBoard - 1.jpg

The basic led command circuit is shown on the first picture (note that the RTC board is not shown on this diagram, but connecting it to Arduino is easy and well documented, in most cases a library is provided by the RTC manufacturer). In the final version the bread boards have been replaced by PCB's.

I decided to separate the hour interface from the minute interface to make the program slightly easier. Each interface is based on two 74HC595 shift registers serially connected. All outputs of the first register are used (0 to 7) whereas only the first four are needed for the second one (8 to 11).

For the final system i created two separate interfaces by using 5cm x 10cm test boards (holes grouped by 3). I have used two types of 74HC595, the first one being native 16-pins DIL IC's that i mounted on two 16-pins supports, soldered on the board and the second one being two small boards that i purchased from Sparkfun, with one 74HC595 surface mounted on each (picture #7).

As I was in a rush, I could not wait for the manufacture of printed circuits, so I made the PCB myself with test boards, but the PCB diagrams are now available for both interface (see PCB images). Note that you have the choice between either only one type or the mix of the two types, this is up to you. Note also that i didn't test the manufactured PCB yet (Fritzing files cannot be uploaded here but i can provide them if requested).

RTC Adjustment: the first time the Arduino is connected to the RTC you'll need to set the clock correctly. Eventually, this adjustment is required again to compensate the RTC shifting (2-3 sec per day).

This setting takes place in the set-up() provided that the following instruction is uncommented:

//#define RTC_ADJUST true // If define, RTC adjustment will take place in set-up

If the line above is commented out, set-up() will adjust the RTC with the values of the following constants (do not forget to initialise these constants with the current values, i.e. the values at the moment of the compilation and download of the program to Arduino)

// Do not forget to adjust the constant below if RTC_ADJUST is defined !!
#define DEF_YEAR 2019 // The default year used in initial RTC adjustment

#define DEF_MONTH 11 // The default month used in initial RTC adjustment

#define DEF_DAY 28 // The default day used in initial RTC adjustment

#define DEF_HOUR 11 // The default hour used in initial RTC adjustment

#define DEF_MIN 8 // The default minute used in initial RTC adjustment

#define DEF_SEC 0 // The default second used in initial RTC adjustment

Also important: once the adjustment took place do not forget to re-comment the line and re-download the program to Arduino

//#define RTC_ADJUST true // If define, RTC adjustment will occur in set-up

otherwise RTC adjustment would take place with incorrect values each time the program restarts (power-on or reset of Arduino). That did happen during my tests!! (I forgot to re-comment that line and did not understand what was going on...).

Now let's have a look at the clock functionality itself.

Basically, there are two display modes:

  1. The CLOCK mode (see picture #9)
    1. the hour led corresponding to the current hour is ON
    2. the minute led corresponding to the current multiple of 5 minutes is ON (this led stays ON for 5 minutes)
    3. each minute led, other than the one which is ON, blinks during 5 seconds (which led is derived from the "second" value read from the RTC)
  1. The RANDOM mode (see picture #10)
    1. all leds are switched ON and OFF randomly, except the current "hour" and "minute" ones.

The time during which a minute led is ON lasts 5 minutes, but during that time the "real" minute advances. For example, when the current minute becomes 15 the "eastern" led will be switched ON during 5 minutes but the real minute will be 15, 16, 17, 18 and 19 during those 5 minutes (we'll call this the "5 minutes cycle")

The program does three things:

  1. It calculates the difference between the "real" minute and the one displayed, giving 5 values: 0, 1, 2, 3 and 4
  2. It calculates how long the random mode should last by multiplying the number found just above by 6 seconds, leading to 5 values: 0, 6, 12, 18 and 24 (seconds) for the random mode and the difference between these values and 30 for the clock mode (30, 24, 18, 12 and 6 seconds)
  3. It repeats this inter-mode distribution twice inside each minute (the total of both modes always being 30 seconds)

This "5 minutes cycle" is applied again and again each time the next "minute led" is switched ON (which happens every 5 minutes).

Remark: one can derive the real minute simply by counting how long the random mode lasts and divide this duration by 6; for example if you count 18 seconds for the random mode and the "25" minutes is ON, this means that the real minute is 28 (18/6 = 3 and 25+3 = 28)

On this video one can see first the clock mode (current time is between 10h25 and 10h29) then the random mode (lasting 6 seconds, meaning that the current minutes are 26) and then the clock mode again. Note that the pallet here is placed on the ground and that the "midnight" bottle is on the right. Since this first exhibition, the clock is now presented vertically on a tripod support (Picture #11)

Notice also that the current hour (10h) and minute (25m) leds are not affected by the random mode.

Notes on PCB diagrams

First PCB (native 74HC595: picture #4):

  • U1 and U2 are 74HC595 IC's
  • Pin layout can be found on picture #6 (see also the pin used in Arduino in the variable declaration of the program)

Second PCB (Sparkfun 74HC595 breakout boards: picture #5)

  • Pin layout can be found on picture #7

I've used male pin headers soldered on both interface boards so all wires' connectors are female.

Fixing the Bottles on the Pallet and Connecting the Leds

Clepcidre-CollierBouchon.JPG
Clepcidre-DessousPalette - 3.jpg
Clepcidre-DessousPalette - 6.jpg

For each bottle in turn:

  • Locate its neck on the pallet (put the bottle in place, mark the neck and remove the bottle)
  • Screw a fixing collar with the screw in its center and in the center of the neck (marked on the pallet). I used auto-drilling plaster screws. You can drill a pilot hole in the collar if you find this easier.
  • Insert the bottle's dowel in its hole in the pallet
  • Close the collar around the bottle's neck, the bottle should now be fixed on the pallet

That's it! (do not forget to remove the strings and the bottle labels at the end).

For each led:

  • Connect both led legs to the + and GND wires. The + comes from the appropriate output pin on the interface board and the GND from one of the intermediate "GND distribution boards"; these boards are simply test boards (+/- 2cm x 5cm) with linear bands on which you solder male pin headers with all their pins soldered on the same band, one pin being connected to one interface GND pin available; if you are running short of GND pins , simply connect the band to a second one and connect them together. I recommend to isolate the soldered led-connections with a heat-shrink sleeve (blue for GND and red for led-signal, "+").

Fix all the boards on the pallet, below, and connect them together with female-connector-ended wires (Arduino to interface boards, 6 signals + GND, power supplies to Arduino and interface boards and RTC, RTC to Arduino, interface boards to 24 leds (12 on one interface board). Do not forget to connect the GND to all boards.

Fix the power-supplies on one vertical wooden board, connect the AC cable to the first one and daisy-chain to the second (be careful, only plug the AC cable once the connections are done!).

The video below shows the three first minutes of one 5 minutes cycle. The current time is almost 4h55 and the video starts just before the "50min" led switches to the "55min" one (first the last seconds of the 24sec random mode, the 6sec of clock mode and then the switching to 55min led) . During the first minute (16h55), only the clock mode is displayed (60 seconds), during the second minute (16h56), each step of 30 seconds starts with 6 seconds random mode and then 24 seconds clock mode follows, during the third minute (16h57), 12 seconds random and 18 seconds clock (twice)

Remarks, Extensions and Improvements

ClepSucre.jpg

Remarks:

  • When the program starts, it wait until the next "full minute" (i.e. RTC-seconds = 0) before led displaying starts
  • Some parameters in the program allow to
    • Select a different orientation for the "midnight" led
    • Distribute the two modes on one full minute instead of twice 30 seconds
  • The pallet support and the cider bottles are not absolutely necessary, you can invent other types of display supports like a sugar box for example , as shown on the picture

Extensions:

  • I adapted the program and made a "table-driven" version enabling the clock/random modes subdivision based on a timing table rather than on a pre-defined rule
  • A "calendar dependent" table (date, start-hour, stop-hour) allows the control of the start and stop time of the clock, so that it can be left powered on when the exhibition is closed in the evening (it will automatically stops the display and start in the morning without any manual action)
  • The program has a version where the display is triggered by a visitor presence detection and stops 5 minutes after absence of visitors.

Improvements:

  • RTC: a more stable version could replace the 1307 used so far
  • A manual RTC adjustment could be added (for example by adding two rotative encoders, like https://wiki.dfrobot.com/Rotary_Switch_Module_V1__... and a pushbutton to confirm the new hour and minute settings)