Friday, April 22, 2016

Final Project Week 3 (Iterate, iterate, iterWAIT-- IT WORKS!)

Partner: Katrina Montales

This week we worked on prototyping (lots and lots of iteration).

The first problem we tackled was creating the mechanism to release only one marble! After many iterations, we found a lego piece that could be attached to the track to separate the marbles. However, we could only find 10 and ordering the T pieces would take some time (and money!) so we decided to work with what we got. With the limitation of 10 T-pieces, we needed to create a track that was short enough to only use ten, but large enough to fit around the gears used to turn the track. We tried 8 and 24-toothed gears and had the most success with the 24toothed gears. In addition, we had to find the optimal amount of space between the T-pieces that was also compatible with the separation in the gears(so the chain didn't go slack in the middle). The ideal distance was to have one chain link between each T piece, however this loop did not work well with the gears, so we went with two chains between each T piece. In order to only release one marble at a time, we set a top bar that would push any marbles above the bottom one (to be released) into the next holder in the chain. Note, this works almost 100% of the time. Since the grey T pieces are removable, they also rotate, so if we were to place very heavy marbles or more than 15 marbles to be all loaded simultaneously, the T pieces may rotate and release more than one marble at a time.
initial prototypes (not all documented)
the top bar (red) prevents multiple marbles from being released at once

Top view (where marbles will be loaded)
The next material we dealt with was the rigid clear tube! Using a ruler, we divided our 6 foot tube into 10, 6 inch long pieces. Using a power-saw we cut the tube. The first one was a little bit shorter than we wanted it to be (difficulty maneuvering the 6 foot tube), but practice makes perfect and by the end, we were cutting spot on! In the end, we were left with 10 tubes, 5 for each activity during the day, and 5 for recollecting the marbles to be reset at the end of the day.










Next, we experimented with various different structures for holding and releasing the marble. One of the ideas I experimented with was pieces of lego that stuck out, reducing the force of all of the marbles directly on the rotating track.

In the end, we had a structure similar to that of a tube that allowed the marbles to stack up. But the lego pieces in front and back prevents more than one marble from being released at a time.


Another problem we ran into was that the Arduino and Bricktonics Shield only had two ports for motors, so we had to brainstorm a way to have the top and bottom rotating mechanisms for the marble tubes powered by the same motor. (see solution in the video)































Next, we worked on the arduino code for turning the motors. Let motor 1 be the one powering the releasing mechanism and motor 2 be the one powering the rotating track (that holds the tubes of marbles). In english, the code says: when the light sensor senses there are marbles there, then rotate motor 1. If the light value is higher (meaning no marbles are sensed), then rotate motor 2.

One of the (many) problems we ran into was the that there were still marbles that needed to be released after the light sensor had sensed that there was no more marbles, so we set the code to: after it senses the higher light value, then rotate motor 1 six times (the number of undetected marbles) before rotating motor 2.

Another problem we came across was that there was a difference in the light value that was sensed when there was nothing above the marble tube and when there was the empty tube, so we had to adjust the code to account for that, but still now it is a bit finnicky about when it wants to turn.





In the video: you will see the light sensor sensing no marbles above it, so motor1 turns six times before rotating the bottom and top platform. 

Lastly, we spent a (surprisingly) long time trying to attach the velcro to the track for the marble tubes. This was because the spaces between the chain (when the chain is in contract with the gear) is larger than when the chain is not in contact with the gear. Thus, we found out the hard way that gluing (with a hot glue gun) just one long piece of velcro around the track was not going to work. After multiple iterations, we found success in gluing separate small pieces of velcro to the track. 



A final(ish) video of our semi-working prototype (we found that we needed paper over the legos to smooth and reduce the friction of the bottom of the tubes against them.) The first time we tested this all together, the marble tube that was releasing the marbles (hypothetically) shifted over, but got caught on the ledge. Since the gear chain was held tightly around the gears, it snapped and both the chain and attached tubes fell off (and into my lap!), so in the video, I am holding a paper band around the tubes in hopes of keeping them more balanced for the sake of testing. 



Reflection: Overall, the design process (note: we aren't done yet!) has been long and full of bumps, however it really is fun to try and solve new ways around these problems. A lot of engineering has been working at building something until it works. Sometimes it is easier to step away from a problem for a little bit (let it stew in your mind) and then come back at it from a fresh angle. Katrina and I spent about 14 hours in the engineering lab hacking at this project and I am glad it is starting to shape up. Notes for improvement for next time, we need to implement two buttons each with very similar functions 1) press the button how many marbles you want to delay 2) press the button how many times you wish to fast forward. In addition, we know that the marble tube structure isn't all too stable, so we were thinking that raising the rotating mechanism to attach to the middle of the tube might be a more effective way to keep the structure balanced and functioning. 



1 comment:

  1. https://www.arduino.cc/en/Tutorial/StateChangeDetection

    ReplyDelete