Close
0%
0%

Microplate Reader

A High School project

Public Chat
Similar projects worth following
Micro Plate Reader Build

Here, three high school students will report the full process of creating their own low-cost micro plate reader. 

JPEG Image - 136.28 kB - 12/25/2020 at 02:52

Preview
Download

JPEG Image - 3.61 MB - 11/21/2020 at 06:50

Preview
Download

  • Week 9 +2/3 Days

    wwang12/27/2020 at 09:18 0 comments

    On Day 2 of Week 9, we suffered great loss, our belt receiving gear left us forever, so we decided to remake it with a higher infill rate. And today we finally assembled the X-axis and Y-axis components of the motor, with the belt included and gears needed to receive the belt! Actually a few days ago we already had 3D printed most of the components, however, many of the first draft components broke due to insufficient infill and  not careful handling. Therefore, we had to revise the models and reassemble them onto the assembled aluminium beams. 

    After we finished assembling these components, we then worked on the code to control both motors' movements and directions. Although it took some time, we were finally able to figure out the code suited: 

    // System Inialization Setup
    String protocolString = "";
    boolean protocolWait = false;
    String parsedString = "";
    int startIndex = 0;
    String totalString = "";
    String ledString = "";
    unsigned long Timecount1;
    unsigned long Durationcount1;
    unsigned long Time1;
    unsigned long Duration1;
    unsigned long Timecount2;
    unsigned long Durationcount2;
    unsigned long Time2;
    unsigned long Duration2;
    unsigned Direction1;
    unsigned Direction2;
    int DIRCount1 = 0;
    int DIRCount2 = 1;
    const int DIRPin1 = 2;
    const int STEPPin1 = 3;
    const int ENNPin1 = 7;
    const int DIRPin2 = 6;
    const int STEPPin2 = 5; 
    int STEPState1 = LOW;
    int DIRState1 = HIGH;
    int STEPState2 = LOW;
    int DIRState2 = HIGH;

    void initOutput() {
      //digitalWrite(ENNpin,HIGH);   // Disable motors
      //We are going to overwrite the Timer1 to use the stepper motors
      // STEPPER MOTORS INITIALIZATION
      // TIMER1 CTC MODE
      TCCR1B &= ~(1<<WGM13);
      TCCR1B |=  (1<<WGM12);
      TCCR1A &= ~(1<<WGM11); 
      TCCR1A &= ~(1<<WGM10);

      // output mode = 00 (disconnected)
      TCCR1A &= ~(3<<COM1A0); 
      TCCR1A &= ~(3<<COM1B0); 

      // Set the timer pre-scaler
      // Generally we use a divider of 8, resulting in a 2MHz timer on 16MHz CPU
      TCCR1B = (TCCR1B & ~(0x07<<CS10)) | (2<<CS10);

      //OCR1A = 125;  // 16Khz
      //OCR1A = 100;  // 20Khz
      OCR1A = 250;   // 25Khz
      TCNT1 = 0;

      TIMSK1 |= (1<<OCIE1A);  // Enable Timer1 interrupt
      //digitalWrite(ENNpin, LOW);   // Enable stepper drivers
    }
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(115200);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB
      }
      pinMode(DIRPin1, OUTPUT);
      pinMode(STEPPin1, OUTPUT);
      pinMode(DIRPin2, OUTPUT);
      pinMode(STEPPin2, OUTPUT);
      pinMode(ENNPin1, OUTPUT);
      digitalWrite(DIRPin1, HIGH);
      digitalWrite(STEPPin1, LOW);
      digitalWrite(DIRPin2, LOW);
      digitalWrite(STEPPin2, HIGH);
      digitalWrite(ENNPin1, LOW);
      initOutput();
    }

    void loop() {
    //  Serial.println("pass");
      if (Serial.available() > 0) {
        protocolString = Serial.readString();
        Serial.println(protocolString);
        for (int i = 0; i <= protocolString.length(); i++){ // Analyze command string one character at a time
          parsedString = protocolString.substring(i,i+1); 
          if (parsedString == "~"){ // '~' Symbolizes the end of a command
            if (protocolString.substring(startIndex, startIndex+3) == "LED"){
              totalString = protocolString.substring(startIndex,i);
              Serial.println(totalString.length());
              if (totalString.length() <= 4){
                ledString = protocolString.substring(startIndex+3,i);
                if (ledString == "1"){
                  digitalWrite(2, !digitalRead(2));
                  }
                else if (ledString == "2"){...

    Read more »

  • week 10

    steven zhang12/27/2020 at 06:42 0 comments

    In the morning, we finalized the prototype for the x-y axis of the micro plate reader. Despite it is not the final model that we will be using, the prototype is functioning properly as it moves along the x-axis and y-axis. In the image below, you can see that the micro plate is ready !( somehow). 

    This is the position where the optical train will operate and illuminate the sample( just to show the idea). 

    In the afternoon, we learnt the coding part.  Our attempt is to expand our knowledge on coding and create a program for the blinking of LED light( we will replace LED light with motor when we master the coding part) However, all of us but warren failed to complete the program. ( warren is drawing the sketch for the prototype !!! featuring warren and Dr. xu). 

  • Week 9

    wwang12/24/2020 at 07:26 0 comments

    This week, we will be having four continuous days that we can utilize to continue work on our microplate reader, and because its Christmas Eve today we were all super happy!

    As we try try again to write out the code to control the number of times the LED light will blink, the duration of the light to be on, and the duration of the light to be off, one of us finally succeeded in writing out the code in the afternoon! The reason why we tried to write out the code to manipulate a LED light was because the code behind controlling a motor, in which regulates how the plate holder will move in both X and Y directions, is actually quite similar to the code controlling the LED light. The number of times the LED light will blink corresponds to the number of times the motor will move and the duration of each blink corresponds to the movement of each step of the motor's movements.

    Adding on, we also assembled the beams, the belt, and the track that regulates how the plate holder will move along the X-axis with those that control the plate holder moving along the Y-axis. 

    The sense of accomplishment, finally getting things done after weeks of preparation, drilling holes, 3D printing models, and learning how to code, feels just so good as our hears are filled with pride and happiness. 

  • week 8

    steven zhang12/19/2020 at 10:08 0 comments

    This week, we finalized the hole drilling part for our aluminium beam and constructed them together( as shown below). 

    This part will become our Y-axis of the micro plate reader. (ps: we are still printing the accessory for immobilization).

    In addition, we tried to figure out how to program the advanced code for the  microplate reader using Arduino.( we are testing it with the program of LED light. ( here's our progress, featuring Warren's laptop). 

  • Week 7

    liugodric12/12/2020 at 06:28 0 comments

    We finish the drilling of the aluminum bars for the x and y-axis of the microplate on the CNC. The milling model uploaded was designed last week. We ran the process without the blade once to make sure no errors were made. 

    We started to write the program to turn the LED lights on and off on the apparatus. The pin on the Arduino Uno we chose were 2 and 4. We utilized serial transmission to send the command to the Uno. Then, the serial monitor was used to sending commends that were present in the program to the Arduino. The lights are able to be controlled now. Parts of the program were referencing alternating sources. 

  • Week 6

    liugodric12/12/2020 at 05:57 0 comments

    We were not able to upload and report our progress last week, therefore, we are publishing week 5's log this week. Last week, after we successfully connected the belt, which allows the motor to control the plate holder to move along the X-axis, with the plate holder, we started to devise ways to enable the plate holder to move along the Y-axis. Since we cannot do the same thing with the Y-axis to make the plate holder move sideways because the beams have fixed positions and the only way to make the plate holder move along the Y-axis is to make the whole setup move altogether. Therefore, we begin to plan how are we going to drill the holes on the aluminum beams. We first created a 3D image of the beam via Fusion 360 and then utilized the manufacturing features of it and came up with the pathway of how the holes of the beams shall be drilled by CNC. Unfortunately, the builder we were working in had an interrupted electricity supply and we were not able to use anything, including machines, the wifi, and the plugs, that used electricity, so we went home early:)

  • Week 5

    steven zhang11/29/2020 at 07:56 0 comments

    This week, we successfully constructed the  X-axis of the detector as part of the main component of the device. Despite the fact that the band track was a bit loose, we were able to adjust it simply using pilers. ( as shown in the image below)

    This picture shows the complete model of the sample holder. we designed the model via Fusion 360 and printed it with a 3D printer. 

    Apart from the actual making of the micro plate reader, we designed the control panel for the micro plate reader( it finally arrived last weekend !) Based on the mistakes and flaws from the last control panel, we updated the data and made a couple of minor changes on the construction of circuit, hopefully it will work this time! 

    Last but not least, we started with the Arduino programming part. Although it is difficult and hard to scrutinize, I think we we will work this out in the future. ( here is an example of the coding part, featuring warren's laptop).  

  • Week 4

    steven zhang11/08/2020 at 10:20 0 comments

    As I'm temporarily separated from the rest of my group-mates, I continued with the laser cutting part of the microplate reader. Today, I finalized the sketch for the right panel holder and its door and cut the right panel with only a few minor issues left. 

    This image shows the completed right panel and the front panel. The conjunction component provides versatility for the microplate reader as a whole and it enables the door to move in 180 degrees. We also constructed the front side of the microplate reader with the help of another student, as most of the laser cutting parts are done, we will enter the next section of the assembly next week. 

  • Week 3

    wwang11/07/2020 at 10:02 0 comments

    As we continue to work on building the outer pieces of the plate reader that needs to be laser cutted. The main focus of the day was that we worked on 3D printing and installing several of the pieces crucial for the motor, the belt, and the plate holder to cooperate better. We had quite a tough time making slight changes to the plate holder,

    the holder meant for holding samples in the future, since our plate reader's dimensions and the motors we are using more quite different from the original one. In addition, we also added a piece on top of a motor in order to adjust the height of the motor to make the belt stable and maintain the same elevation throughout. Overall it was quite a successful day as we were able to continue to progress and as we are becoming more and more skilled and confident with the tools we are using. 

  • Week 2

    wwang10/31/2020 at 10:06 0 comments

    As we continue to progress, we kind of divided the tasks into the works related to laser cutting and actually assembling the laser-cut pieces to the beams and the structures we already assembled. We used Inkscape to draw out the holes and the lines before we open the file in K40 Whisperer to laser cut the pieces. As it was our first time working to draw out the pieces, we inevitably made the mistake of cutting out holes that didn't really appear as it should be, perhaps off by 2 millimeters. However, we still managed to fit it in the beams, with great efforts to fit in the screws and to the drill the holes on the four sides, and that was our top panel done! In a similar fashion, we were also able to draw out the circles and lines that needs to be laser cutted for the bottom panel, but we wasn't able to cut it out because the thick boards needed for the bottom didn't arrive yet. 

View all 11 project logs

Enjoy this project?

Share

Discussions

steven zhang wrote 12/12/2020 at 04:14 point

http://labmedical.en.hisupplier.com/product-1196543-Microplate-Culture-Plate.html

Hi,  here is a link to the image of a "Micro Plate". 

They are used as small test tubes in modern enzyme-linked immunosorbent assay (ELISA).It is a fundamental tool in modern medical testing. 

  Are you sure? yes | no

Bharbour wrote 12/24/2020 at 11:08 point

Thanks! Interesting stuff

  Are you sure? yes | no

Bharbour wrote 10/31/2020 at 13:13 point

What is a "Micro Plate" ? What are they used for?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates