Published © CERN-OHL

Developing a Low-Cost Microcentrifuge Using E-Waste

Quality microcentrifuges are generally too expensive for most people to afford. This project aims to provide a low-cost alternative.

IntermediateWork in progress3 hours7,732
Developing a Low-Cost Microcentrifuge Using E-Waste

Things used in this project

Hardware components

Arduino 101 & Genuino 101
Arduino 101 & Genuino 101
Arduino Wifi Shield 101
Arduino Wifi Shield 101
Grove starter kit plus for Intel Edison
Seeed Grove starter kit plus for Intel Edison
Hard Drive

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
Allen Wrench
OpenBuilds Allen Wrench
3D Printer (generic)
3D Printer (generic)
Laser cutter (generic)
Laser cutter (generic)


Read more

Custom parts and enclosures

Sample Holder V1

If the model gets converted to a very small model, scale it up by 25.6, as there might be an issue with the SI to Metric conversion in Fusion 360

Sample Holder v2

This is an improved version of the sample holder. I changed the previous version so that the sample holder could be lighter, and could be printed faster. I am considering designing a laser cut sample holder, as fabrication could be much quicker, and it would be more precise. For some reason, I have to scale the stl models by 25.6, probably due to the messed up unit conversions while exporting from Fusion 360.


Basic Wiring

This is a basic test for the hard drive motor. Do not forget to add a potentiometer and wire it to 5V, A0, and GND, respectively. You can control the speed of the motor with the potentiometer


V0.1 Code(Current)

Copy/Paste this into the Arduino IDE, select your microcontroller and serial port, and click upload. This code uses the potentiometer's reading to control the speed of the motor via PWM to the ESC, There is also an LCD displaying an estimate speed for the motor.
#include <Wire.h>
#include "rgb_lcd.h"

#include <Servo.h>
Servo esc;
rgb_lcd lcd;
int throttlePin = 0;
void setup() {

    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
    // Print a message to the LCD.
    lcd.setRGB(50, 50, 50);

void loop() {
    int throttle = analogRead(throttlePin);
    throttle = map(throttle, 0, 1023, 0, 179);
    int throttlepercent = (throttle*100) / 179;
    int myRPM = 7200 / (100 - throttlepercent);
    // Turn off the display:
    lcd.print("Speed: ");
    if(myRPM == -1){
    }else if(myRPM <= 100){
    lcd.print(" RPM");




7 projects • 192 followers
i build robots