亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

教你利用电子废弃物开发低成本微型离心机

发布时间:2022-11-05
分享到:

教你利用电子废弃物开发低成本微型离心机

发布时间:2022-11-05
分享到:

高质量的微型离心机通常太贵,大多数人买不起。该项目旨在提供低成本的替代方案。

简介
微型离心机是任何生物医学实验室的必备设备。然而,像这样的生物医学设备对于大多数爱好者来说通常都太贵了,所以我开发了这个离心机来帮助降低一个合适的微型离心机的成本。

什么是微型离心机?

微型离心机是一种设备,以很高的转速旋转样品,以分离和纯化样品中的材料。微离心机的一个常见用途是差速离心,它用于从细胞样本中分离细胞器和核酸(如DNA)。高质量、可靠的微型离心机的价格从1000美元起,入门级微型离心机的价格约为300- 700美元。这对许多业余爱好者和其他人来说太贵了,所以我开始开发自己的开源微离心机。

项目影响
该项目的目标贫困学校和资金不足、买不起适当设备的医院。我希望这个项目将对许多人有用,并能在其他方面无法提供机会的领域开辟机会。

设计过程
1. 硬件

对于这个项目,我将使用Arduino 101,因为我正在参加发明未来比赛。不过不幸的是,我没有赢得Arduino 101,所以我买了一个。我想让这个设备联网,以便把它集成到我即将到来的互联网连接生物黑客实验室,并将最终开发一个应用程序,可以集成这些设备,以提供无缝的实验室体验。

为了制作离心机,我需要一个马达,它可以以很高的转速旋转,以产生足够的向心力来分离细胞样本。我决定使用一个3.5英寸的硬盘,因为它可以以7200转/分钟的速度旋转,并且应该能够产生高达4400克的功率!因为我想让这个离心机尽可能的用户友好,同时给用户最大的控制权,我选择增加一个液晶显示器,电位器,和几个按钮,这样我就可以开发一个有用的设备界面。我还想增加一个互联网控制的离心机接口,使设备更容易使用。

为了能够使用硬盘驱动器,我们需要移除硬盘驱动器的所有部分,除了电机。为了做到这一点,我们需要从使用TORX扳手去除背板上的PCB开始。我没有正确大小的torx扳手,所以我只是撕下了PCB。我并不打算使用它,虽然它应该是好的。

现在已经取下了PCB,翻转硬盘驱动器,并开始删除螺丝在红色圈的区域。一旦你做对了,你应该能够撬开保护板。

现在,您已经拆卸了前板,然后您可以拆卸针的硬盘驱动器通过拆卸顶部磁铁撬出它与螺丝刀。它只是被两块磁铁的力粘在了一起。取下它们的时候要小心,因为磁铁的吸力非常强大,我之前在玩它们的时候很多次不小心压到了我的手指。

只要能够把上面的磁铁拿掉,剩下的就很简单了!只要取下针铰链上的螺丝,然后取下针。然后你就可以继续拆卸固定第二个磁铁的其他螺丝了。

完成之后,取下固定盘片的螺丝,取下盘片和垫片。

布线
要控制硬盘驱动器,我们必须添加一个ESC(电子速度控制器)到设备。我使用的是一个标准的爱好ESC,常用在爱好飞机,因为它运行12v,和硬盘运行12v。为了给ESC和硬盘提供足够的电源,你可以使用任何12v电源,但我找不到,所以我使用了一个标准的计算机电源。我把一个跳线连接到绿色的电线和一个GND端子上,这样它一插进去就能接通电源。你也可以添加一个电源开关来增加一些额外的控制设备。

将ESC连接到12v轨和GND上。然后将ESC的PWM线缆连接到GND、5V和D7。从5v和GND接一个电位器,中间端接A0。然后你可以测试一下电机的接线。

测试/基本的原型
上传以下代码到Arduino 101:

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

esc.attach(9); 

void loop() 

int throttle = analogRead(throttlePin); 
throttle = map(throttle, 0, 1023, 0, 179); 
esc.write(throttle); 
}

要连接电机到ESC,你必须做一个连续性测试,检查是否在硬盘驱动器的底部的引脚连接或不。你也可以随机焊接在ESC的电线上的针上的硬盘驱动器电机,并切换他们如果电机不工作,因为有6个可能的组合,只有2个工作正常。这些代码和线路应该足以开发一个基本的离心机。

3D打印照片:

安装和测试之后,我们就可以改进代码和界面了。我在Arduino上添加了格罗夫盾(Grove Shield)和液晶显示器(LCD),并在程序中添加了RPM指示器。不能完全依靠它的读数,因为它提供的估计基于电位器上的读数,而不是电机。下面是v0.1代码的副本:

#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.print("Initializing..."); 
   esc.attach(9); 
   lcd.setRGB(50, 50, 50); 

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

该设备工作时的照片:

V0.1 Code(Current):

#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.print("Initializing...");
    esc.attach(9);
    lcd.setRGB(50, 50, 50);
}

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

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:kemfic,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论