Flock Clock

by MikeTheMaker in Circuits > Clocks

15069 Views, 22 Favorites, 0 Comments

Flock Clock

27.jpg
 


The Flock Clock uses male and female drinking birds to display time.  Binary addition of the female birds (left to right) yields the hour.  Binary addition of the male birds (multiplied by five) yields the minute--within five minutes.  An Arduino processor provides the signals needed to drive Peltier cells which heat the fluid in the birds and causes the bobbing motion.  

102-1671-nd  Peltier  digikey.com
pb1124-nd  relay  digikey.com
drinking birds   teachersource.com
320081  5 volt 6 amp power supply for Peltier   jameco.com




01.jpg
 Cut a 12" by 12" piece of 1/4" thick plexiglass for the base.  Use four three inch long acrylic rods to support the upper plate (I cut the handle of a fancy toilet plunger for these rods).

02.jpg
 Fasten the plexiglass to the rods with screws.  Pre drill holes that are slightly smaller than the screw threads (1/16" smaller).

03.jpg
 Fasten the top plate with screws.

04.jpg
 Cut small notches in the base of the dunking bird (to accept the Peltier cells).

05.jpg
 Ideally, the Peltier cell should be a snug fit.

06.jpg
 Drill two holes in each bird's base--the holes should be toward the front of the base.

07.jpg
 Drill holes in the upper plate to match the holes in the bird base.  ONE AT A TIME.

08.jpg
 As you prepare each base, insert the bird body and bob it to its full extent both directions.  Be certain that the birds don't collide before you drill holes.

09.jpg
 Number each base, or you will have trouble later matching the base holes to the top plate holes.

11.jpg
 Solder about 15 inches of wire (#22 stranded) to each Peltier cell.  Place heat shrinkable tubing over the solder joint.

12.jpg
 Using epoxy, glue the Peltier cells to the bird base.

13.jpg
 In the upper acrylic plate, drill a hole behind the bird base (about 1 inch behind the base) large enough to slip both Peltier wires (and solder joints) through.

14.jpg
 Place the wires through the hole.

15.jpg
 Number the red wire as you prepare each bird base.  You will need to keep up with this to match the relays to the correct bird.  
Bird 1 Arduino pin 11, "8" hour
Bird 2 Arduino pin 10, "4" hour
Bird 3 Arduino pin 9,   "2" hour
Bird 4 Arduino pin 8,  "1" hour

Bird 5  Arduino pin 4, "8" minute
Bird 6  Arduino pin 3  "4" minute
Bird 7  Arduino pin 2,  "2" minute
Bird 8  Arduino pin 1, "1" minute


16.jpg
 Drill holes in perfboard and use nuts and bolts to prepare to mount the relay interface (perfboard).

dwg.jpg
 This is the schematic--quite a bit of wiring.  I mounted the relays in wire wrap sockets to make the work easier.  The pushbutton is used to "set" time.  The clock starts at 1 o'clock and each push advances the time five minutes.  The LED's help you to know where you are when setting the time (the birds have about a 100 second delay before they start or quit bobbing).

 
 
int second=0;
int minute=0;
int hour=1;  //start time at 0
int valm=0;
 
static unsigned long lastTick = 0; // set up a local variable to hold the last time we moved forward one second
// move forward one second every 1000 milliseconds
 
void setup() { //set outputs and inputs
pinMode(1, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);pinMode(4, OUTPUT);pinMode(5, OUTPUT);
pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);
pinMode(11, OUTPUT);pinMode(12, OUTPUT);pinMode(13, OUTPUT);
 
}
 
void loop() {
 
 
if (millis() - lastTick >= 1000) {
lastTick = millis();
second++;
 
}
 
// move forward five minutes every 300 seconds
if (second >= 300) {
minute++;
second = 0; // reset seconds to zero
}
 
// move forward one hour every 12 five minute intervals
if (minute >=12) {
hour++;
minute = 0; // reset minutes to zero
}
 
if (hour >=13) {
hour=1;
minute = 0; // reset minutes to zero
}
 
 
 
if(minute == 1 || minute == 3 || minute == 5 || minute == 7 || minute == 9 || minute == 11) {  digitalWrite(1, HIGH);} else {  digitalWrite(1,LOW);}
if(minute == 2 || minute == 3 || minute == 6 || minute == 7 || minute == 10 || minute == 11) {digitalWrite(2, HIGH);} else {digitalWrite(2,LOW);}
if(minute == 4 || minute == 5 || minute == 6 || minute == 7) {digitalWrite(3, HIGH);} else {digitalWrite(3,LOW);}
if(minute == 8 || minute == 9 || minute == 10 || minute == 11) {digitalWrite(4, HIGH);} else {digitalWrite(4,LOW);}
 
 
//hour units
if(hour == 1 || hour == 3 || hour == 5 || hour == 7 || hour == 9 || hour == 11) {digitalWrite(8, HIGH);} else {digitalWrite(8,LOW);}
if(hour == 2 || hour == 3 || hour == 6 || hour == 7 || hour == 10 || hour == 11) {digitalWrite(9, HIGH);} else {digitalWrite(9,LOW);}
if(hour == 4 || hour == 5 || hour == 6 || hour == 7 || hour == 12) {digitalWrite(10, HIGH);} else {digitalWrite(10,LOW);}
if(hour == 8 || hour == 9 || hour == 10 || hour == 11 || hour == 12) {digitalWrite(11, HIGH);} else {digitalWrite(11,LOW);}
 
 
 
valm = analogRead(0);    // add five minutes when pressed
if(valm<800) {
minute++;
second=0;
delay(250);
}
  
 
 
}
 
 This is the Arduino code.

17.jpg
 Mount the terminal strip.

18.jpg
 Drill holes and mount the Arduino processor board.

19.jpg
 Wire the relay interface board.  When connecting "pin 8" on the relays, use two runs of wire wrap wire.

20.jpg
 Insert relays into sockets.

21.jpg
 Electronics should look pretty good--before you tie everything together.

22.jpg
 Take a 1.5 inch piece of #22 solid, strip both ends and leave one end open to receive wire wrap wire from the relay board.

23.jpg
 Turn the relay board upside down and add wires to connect to Arduino and the terminal strip.  Don't forget that wires to the terminal strip have to survive turning the perforated board over (next step).  I ran those wires toward the lower part of the picture shown, then under the board (so they wouldn't get tangled when the perf board is flipped).

24.jpg
 Hide the wires as much as possible.

25.jpg
 Add the wires from the 5volt 6 amp power supply (each Peltier cell will consume about .7 amps).

26.jpg
 Bring the wires from each bird to the terminal strip (now, aren't you glad that you marked those wires!)

28.jpg
 Everybody is ready to bob!  If you've been wading through all of this for the secret on how to determine drinking bird sex, think "blue" for boy and pink for girl (and just what were you thinking?)