Archive March, 2014

Improbable Contest?

21 March, 21:13, by EvaB

Aim:  To bear the most weight.

Method:   Make a table, at least two inches high, out of a page from a telephone book and 11 3/4 inches of masking tape.

Reward:  A three month membership to the Diyode Community Workshop, here at 71 Wyndham St S., Unit B, where do-it-yourselfers make all sorts of awesome things!

This was the challenge at the Ignite 3 event last week, held at the Guelph Youth Music Centre.

Ignite events are an opportunity for people to share their knowledge and passions with a short talk in front of an interested audience.  The topics cover a spectrum of ideas, and are delivered with enthusiasm and professionalism.  All of the events have been a great success, and the talks have been most fascinating. Here is a link to the web site:  http://igniteguelph.ca/

As a part of the evening, Diyode has been asked to contribute a Maker contest as part of the get-to-know-you discussions before the event and at the intermission.  At this last event, the seeming frailty of telephone book paper for the contest was part of the fun.

around table

 

 

 

 

 

 

crowd

 

 

Everyone got the same materials, and was given as long as they wanted to complete their table.

 

 

 

 

observemethod

 

Weights were balanced on top of each submitted table, one at a time, until the table collapsed.

 

 

 

 

 

 

 

The total weight for each table was recorded.   They went from 1 pound 14 ounces upward.

This  range of tables submitted showed very promising ideas.

contenders

close 2

 

 

 

 

 

This table withstood 4 pounds, 4.4 ounces…

 

 

2 withbooks

 

…from this pile of items.

 

 

 

 

 

 

Here is the victorious table, and the load of 4 pounds, 12.9 ounces it carried.

books held

 

 

 

 

 

Here is the design – a mighty tube.   It looks crumpled, because this was after its victory.holdingwinner

 

 

 

 

 

 

 

 

Congratulations to Vlad for his winning design!  Vlad received a gift boxed three month membership to our makerspace, the Diyode Community Workshop.  We hope to see you soon!

Thank you to all who participated, and to Ignite for hosting a terrific evening!

 

 

 

Counting RPM with an arduino

10 March, 09:49, by Simon Clark

For the latest IgniteGuelph contest, we needed a way to measure the speed of homebuilt electric motors. Simple RPM, not torque was the goal, so we opted to go with a light sensor on an arduino to count the light/dark cycles.

First, we need to figure out the threshold value of the light sensor.  We started with a CdS photocell, but the response time was too slow to count anything faster than 150 rpm.  Working with what we had on hand, we built a photo sensor with an LED. This tested out fine up to 600 RPM, or so.  Ideal would be a proper photodiode or phototransistor, but we were limited to what we had on hand.

#define LED_N_SIDE 3
#define LED_P_SIDE 2

void setup() {
Serial.begin (115200);
Serial.println(“Start”);
}

void loop() {
Serial.print(“Sensor : “);
Serial.println(readLight());
delay(100);
}

int readLight() {
unsigned int j;

// Apply reverse voltage, charge up the pin and led capacitance
pinMode(LED_N_SIDE,OUTPUT);
pinMode(LED_P_SIDE,OUTPUT);
digitalWrite(LED_N_SIDE,HIGH);
digitalWrite(LED_P_SIDE,LOW);

// Isolate the pin 2 end of the diode
pinMode(LED_N_SIDE,INPUT);
digitalWrite(LED_N_SIDE,LOW); // turn off internal pull-up resistor

// Count how long it takes the diode to bleed back down to a logic zero
for ( j = 10000; j > 1; j–) {
if ( digitalRead(LED_N_SIDE)==0) break;
}
return j;
}

Once we have a threshold value for the light sensor, we use the code below to spit out the RPM to the Serial

#define PHOTOCELL 5
#define LED_N_SIDE 2
#define LED_P_SIDE 3

int photocellThreshold = 2000;
int currentState = 0;
int leeway = 4;
unsigned long lastOnTime = 0;
unsigned long times[5] = {0,0,0,0,0};
int timesPos = 0;

void setup() {
Serial.begin (115200);
Serial.println(“Start”);
}

void loop() {
//Serial.print(“Photocell Value: “);
int currentVal = readLight();
if (currentState == 1 && currentVal < photocellThreshold – leeway) {
lightOff();
} else if (currentState == 0 && currentVal > photocellThreshold + leeway) {
lightOn();
}
//Serial.println(analogRead(PHOTOCELL));
delay(5);
}

void lightOff() {
currentState = 0;
}

void lightOn() {
currentState = 1;
unsigned long now = millis();
if (lastOnTime) {
unsigned long thisTime = now – lastOnTime;
times[timesPos] = thisTime;
averageTimes();
timesPos = (timesPos + 1) % 5;
}
lastOnTime = now;
}

void averageTimes() {
unsigned long sum = times[0] + times[1] + times[2] + times[3] + times[4];
float avg = 300000 / float(sum);
Serial.print(“RPM : “);
Serial.println(avg);
}

int readLight() {
unsigned int j;

// Apply reverse voltage, charge up the pin and led capacitance
pinMode(LED_N_SIDE,OUTPUT);
pinMode(LED_P_SIDE,OUTPUT);
digitalWrite(LED_N_SIDE,HIGH);
digitalWrite(LED_P_SIDE,LOW);

// Isolate the pin 2 end of the diode
pinMode(LED_N_SIDE,INPUT);
digitalWrite(LED_N_SIDE,LOW); // turn off internal pull-up resistor

// Count how long it takes the diode to bleed back down to a logic zero
for ( j = 10000; j > 1; j–) {
if ( digitalRead(LED_N_SIDE)==0) break;
}
return j;
}