Today we put some finishing touches on the culture keeper since the report and final demo are due tomorrow. Here are some improvements we've added:
Built lid/walls out of particle board
Finished functional GUI
Devised more secure servo attachment mechanism (using wood glue and wood supports)
In addition to finishing work on the device and writing a final report for the class, we put together a comprehensive instruction manual. After presenting and demo-ing one final time at Olin Expo, we'll be passing the BioLight culture keeper off to Jean Huang's lab to use for research in the coming semester.
Thursday was Demo Day. Our new lid parts hadn't come back from the machine shop due to some last minute cut sheet errors, so we made the walls/lids out of cardboard as a temporary demonstration, but the whole thing worked! Finally, full integration was accomplished.
In the video above you can see Kendall pressing the button to open the lid (one servo at a time, in a specified order).
PCB attachment is a big part of our design. To make exchanging LED panels easy while maintaining a strong electrical connection, we designed an attachment system which uses male and female header pins (male pins on the PCB and female pins on the walls) and nails to secure the panels to the walls. Two panels (which are treated as one panel) are attached to each of the four opposing walls in the octagon.
The image above shows a PCB attached to one wall next to our breadboard testing circuit and three protoboard proof of concept panels.
This marks our first attempt at electrical/mechanical integration and is a proof of concept that the servo has enough power to open and close the lid of our device using the mechanism and materials we've selected without a counterweight.
The servo motor is being run by example Arduino code written by Alison which runs the servo 180 degrees, pauses, and returns.
Our original plan was to make our led panels out of protoboards, but we've decided to switch to PCBs for a few reasons:
Etching the protoboard is time consuming. (The first try took ~5 hours and even after deciding to using wires to jump the space instead of the pre-connected paths production of each board still took almost two hours)
One of our major goals is ease of use---if these boards break and need to be replaced, we want something that is easy to make. The Huang Lab at Olin (who are getting our culture keeper at the end of the semester) already has PCBs designed for this purpose, so we've altered our attachment design a bit to be more compatible with their equipment.
Even though we're changing our design to fit PCBs, we're still making the four protoboards as proof of concept and to help demo and test our system. Time and budget constraints prevent us from ordering PCBs at this point since three of these boards (shown above on the right) cost around $100.
Today we started building the panels which will eventually be our LED lights. We're using double-sided, wired protoboards, which means we need to cut the wires on both sides of the board. To facilitate this, we marked which lines should be preserved in sharpie as well as where the resistors and header pins (for signal and ground) will go. In addition, we've marked where the octagon wall will need to be cut to make room for the female header pins and the wooden dowels (which will be used to secure the LED panels in a removable fashion).
Now that we have the basic software working, we need to focus on manufacturing our protoboards to place on each wall of our inner octagon. One of our primary goals is to make these LED panels easily removable, so we have decided to use header pins as both a method of sending signal to our LEDs and fixing the panels to our walls in an easily removable and robust fashion, but first we need to determine the best place put them. We also need to determine how we are going to attach header pins to our wooden walls and where wires will be fed through the wall so that any changes that need to be made can be added to the CAD before our final cut sheet is submitted to the machine shop.
The protoboards are actually smaller than the walls, as shown above, so we decided to place them on the lower portion of the walls in the interest of best light exposure to culture tubes. We had originally considered cutting up the protoboards to allow for a more even spread of light near the top of the box, but this made the manufacturing process difficult enough that the benefits did not outweigh the added complexity. Ultimately, the LEDs are spaced out evenly across board which is located in the lower two thirds of the octagon wall.
As shown in the picture above, we have begun assembling our parts.
In order to attach the pieces, we planned on using L brackets; however, the brackets we have are too small to fit around the exterior of the box and must be attached to the interior. Unfortunately, because of the cutouts in the triangles to reduce weight, there is nowhere to attach the brackets. In this instance, we used scrap particle board to attach the L brackets to the triangles, but this is a temporary solution. The attachment has proven to be especially problematic since the small pieces are hard to attach and keeping everything flat is difficult, making assembly a challenge.
We have altered our CAD to reflect this design change. The triangles which form the top of the lid originally sat on the top of the walls but now will be attached to the inside edge of the walls. To enable this move, the sizes of the wall and bottom square needed to be changed and our newest cut sheet reflects these alterations.
Our first significant software integration milestone has been reached! Today our electrical and software subsystem team combined working LED- and servo motor-control code into one copy of functional code which successfully controls all LEDs and motors simultaneously. Check out the functional system as shown in the video above!
The machine shop had a much faster turnaround than we expected, and we received our parts today! Since we'd decided not to include some of the simpler pieces on the cut sheet, we first needed to hand-cut the remaining parts, mostly squares. First we marked the cuts we needed to make on the particle board and cut them in the wood shop using a band saw. Once we finished all of our parts, we started to put things together. To attach the two sections of the lid together, we were originally planning on using wood glue, but had difficulty finding the necessary supplies. In the absence of the glue and in the interest of time, we decided to nail the two parts together. This worked out well, and now our lid parts are complete.
To put the walls and the lid together, we have decided to use L-brackets, which we'll be working on for the next bit. Finally, we'll need to attach the hinges to allow the walls to open.
Up until now, we've been focused on controlling out LEDs and haven't given much thought to the mechanical control portion of our software. We're starting to build our first prototype soon though, so we needed to put together a basic method for controlling our 4 servos in order to open and close the four segments of outer box as discussed in this post.
We've succeeded in opening and closing all 4 servos in the correct order at the push of a button (critically separate from the computer-controlled portion for ease of use). The video shown above is a demo of this system working.
Because the lid fits together like a puzzle, the order in which all the servos open is crucial. We can toggle the time delay between each servo opening once we're able to test the servos on our particle board prototype. Unfortunately, there is still a bug with using the button. In order to close the lid, the user must press and hold the button rather than pushing it once, which is likely due to the fact that we used delays instead of using a counter. We will be able to fix this bug by implementing a counter in later iterations of the code.
After fixing this bug, we will integrate the arduino code for servo and LED control followed by development of a basic GUI.
Our first CAD model is finished and the next step is to create our first prototype. Since none of our team has training on any of the advanced machines in the machine shop, we decided to get our more complicated parts cut on the laser cutter.
Above you can see what our cut sheets look like. The lines denote areas to be cut from our particle board, which has a size of 2'x1'x1/4'', as discussed in this earlier post.
In order to make a cut sheet, you must select the 2D view of the part which does not include the 1/4" side and place it onto a drawing sheet. As you can see in the image above, all of the pieces are placed as close together as possible to minimize the amount of material we waste. We're also cutting additional parts in case of a screw up which results in destroying a piece. In order to get the pieces cut, we will be sending the cut sheets to the Olin machine shop. We're hoping to receive them some time this week so we can start putting together our first prototype, but it all depends on how busy the machine shop is. In the meantime, we can start putting together our LED panels and other circuits.
You may notice that this cut sheet doesn't include some of our bigger parts. Some pieces, like the sides of the box and the inside octagon are rectangular and easily cut with a band saw. We'll be cutting these parts ourselves, making less work for the machine shop and hopefully resulting in a speedier turnaround.
Today we've finished our first major code deliverable for the project. We can now control four panels of light simultaneously and independently, which we do using a serial connection from python to the Arduino.
Our next steps for software development will involve servo control, then switching panel sets (since we're working with 8 panels but only four will be used at a time), GUI design, and finally web interface.
We've been posting about our grand plans for this project we're planning to build, but to this point we haven't mentioned much about our components. The focus has been on our process and intentions. For those of you keeping track, or maybe looking to make a similar project yourself, this post details our budget and provides some more details regarding what exactly we're going to be working with.
The class we're making this project for provides us with a $250.00 budget. That seems like quite a bit, particularly for a box that is only about a cubic foot in volume. Our team is used to working in a university biology lab, though, where we're well aware that many of our consumable components cost hundreds of dollars for a few milliliters. Our lab equipment can run for hundreds of thousands of dollars per unit. As far as lab equipment goes, this would be a very affordable cost for the improvements we feel it would make, and the product should actually cost less. The $250.00 will cover three prototypes, provided we use our materials well.
The physical structure doesn't take too much to build. We'll be using a combination of 1'x2'x1/8'' particle board that we managed to scavenge from a completed student project, and 1/8'' thick plywood sheets, which will probably be purchased from a local hardware store, or a nearby chain like Lowe's or Home Depot. About 30 square feet of wood should be sufficient to make three prototypes, based on estimates from our current CAD layout. If you choose wisely, you can get that much wood for 30-35 dollars, providing you don't want anything fancier than simple fir plywood. Besides this, we'll need relatively small screws or nails, and L-Brackets, which we can obtain from the stockroom here. Anybody looking to make a similar project can obtain these at any hardware store for relatively cheap. The only other component we'll need are some small magnets for our lid. We'll be using the model sold at http://www.kjmagnetics.com/proddetail.asp?prod=R421, which run about $5.00 for 20, far more than we'd need.
The electrical components are when things really start to get pricey. We've estimated we'll need 50 each of our LED varieties to provide sufficient light density over the desired area. We'll need to reuse these between iterations. The particular LEDs we'll be working with are 590 nm and 940 nm wavelengths from ledsupply (http://www.ledsupply.com/l4-0-y5th30-1.php
and http://www.ledsupply.com/l2-0-ir5th30-1.php respectively). The LED orders cost $27.50 each, a substantial portion of our budget. The LEDs will also need to be mounted on proto boards (the particular ones we ordered from sparkfun can be found at https://www.sparkfun.com/products/8812). We'll also be re-using these through multiple prototypes if possible, as 9 (8 needed and 1 to spare) run us $32.40, even with our university discount. These aren't useful without a way to program and run them, though. We're going to be using an Arduino Wifi shield to program and communicate with our product. Using our university discount, we'll be getting one from sparkfun for 67.96 (https://www.sparkfun.com/products/11287?). We'll also need a power supply, also from sparkfun (https://www.sparkfun.com/products/298?) for just under five dollars. Additionally, we'll need some header pins (estimated price $5.00), and four 9kg-cm servo motors (estimated price $10.00 each), both of which we already have through stockrooms and prior class provisions. This brings our total up to about $240.00.
This is closer to our total budget than we'd like, but within limits, and has enough supplies included for multiple prototypes. We also have some leeway, given that many of these products were scavenged rather than actually purchased, in an emergency we could probably spend a little more. Our actual orders only came out to $193.09.
The first step in putting together the mechanical system for our culture keeper is to put the basic design into a CAD program so we can get the parts cut. Here is our first finished CAD model!
Above is an image of the box while closed. The circle on the top holds magnets which will keep the box shut and light-tight. The triangles on the top are the "petals" that open up like a flower, revealing the inside of the box.
Inside the box we have the octagonal shape which will enclose the area where the cultures will be kept and surrounded by LED panels. The octagon's walls will have a mechanism to mount the protoboards which will be our LED panels. The walls open up fully, allowing the user to remove the protoboards from the octagon easily. This opening method also makes it easier to remove the bacterial cultures without the walls being in the way.
In this picture, you can see the overlapping triangles that create the lid. As shown in a previous post, these triangles allow for easy light-proofing. The circle on the top both closes the lid using magnets and keeps the center light-tight.
In order to reduce the weight that the servos must move when they open the walls, we incorporated triangular holes in the lower layers of the box lid. These removal allow us to reduce the weight without letting light into the system and result in more efficiency in our use of materials, which is a major concern for this project. We'll be posting about budget requirements pretty soon, so stay tuned!
In order to control the light environment for our culture keeper, we needed to be able to set the intensity of several different LEDs simultaneously.
To tackle this task, our circuits and software subteam whittled down the interaction to the simplest case: controling 3 LEDs simultaneously.
First, we built several of the basic LED circuit which will be repeated on each of the eight walls of the inner "light box". The circuit was kept as simple as possible to allow for easy visual debugging.
After successfully building the basic light circuits, we set to work on writing the code which controls each LED circuit independently and simultaneously. We used a counter and switch case to control the LEDs using an Arduino. In each of the four cases each circuit is set to on or off in a particular pattern in order to create the different intensity levels (25, 50, 75, and 100%). In the Arduino code, the 75% LEDs were on in 3 of the 4 cases, the 50% LEDs were on in 2 of the 4 cases, and the 25% LEDs were on in 1 of the 4 cases. The top row of LED sets in the main picture of this post are at 75%, 50%, and 25% intensity from left to right.
The bottom right set of LEDs were used to determine if power and ground were plugged into the breadboard correctly and thus are pictured at 100% intensity.
As seen in this video, the LEDs are blinking in a way that is still visible to the eye. We originally had the case number and Timer value printing to the serial monitor at each case as a troubleshooting framework; however, eliminating those lines allowed for the code to complete each loop more quickly. Once those lines were removed, the blinking was no longer visible. We plan to attempt to keep the Arduino code as simple and streamlined as possible to avoid adding more delays to the blinking speed.