收藏官网首页
查看: 128|回复: 0

[分享] 利用电子废弃物制作的低成本离心机,物联网远程环境监...

496

主题

528

帖子

2万

积分

版主

Rank: 7Rank: 7Rank: 7

积分
26374
 楼主| 发表于 2022-11-17 14:57:12 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
本帖最后由 Kara 于 2022-11-17 15:02 编辑

利用电子废弃物制作的低成本离心机,物联网远程环境监控系统


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

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

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

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

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

2.png

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

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

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


5.png

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


6.png

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

7.png

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

8.png
9.png

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

10.png

测试/基本的原型
上传以下代码到Arduino 101:
  1. #include <Servo.h>
  2. Servo esc;
  3. int throttlePin = 0;
  4. void setup()
  5. {
  6. esc.attach(9);
  7. }
  8. void loop()
  9. {
  10. int throttle = analogRead(throttlePin);
  11. throttle = map(throttle, 0, 1023, 0, 179);
  12. esc.write(throttle);
  13. }
复制代码

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

11.png

3D打印照片:
12.png

安装和测试之后,我们就可以改进代码和界面了。我在Arduino上添加了格罗夫盾(Grove Shield)和液晶显示器(LCD),并在程序中添加了RPM指示器。不能完全依靠它的读数,因为它提供的估计基于电位器上的读数,而不是电机。下面是v0.1代码的副本:
  1. #include <Wire.h>
  2. #include "rgb_lcd.h"
  3. #include <Servo.h>
  4. Servo esc;
  5. rgb_lcd lcd;
  6. int throttlePin = 0;
  7. void setup() {
  8.    // set up the LCD's number of columns and rows:
  9.    lcd.begin(16, 2);
  10.    // Print a message to the LCD.
  11.    lcd.print("Initializing...");
  12.    esc.attach(9);
  13.    lcd.setRGB(50, 50, 50);
  14. }
  15. void loop() {
  16.    lcd.clear();
  17.    int throttle = analogRead(throttlePin);
  18.    throttle = map(throttle, 0, 1023, 0, 179);
  19.    int throttlepercent = (throttle*100) / 179;
  20.    int myRPM = 7200 / (100 - throttlepercent);
  21.    esc.write(throttle);
  22.    // Turn off the display:
  23.    lcd.print("Speed: ");
  24.    if(myRPM == -1){
  25.    lcd.print("7200");
  26.    }else if(myRPM <= 100){
  27.      lcd.print("0");
  28.    }else{
  29.    lcd.print(myRPM);
  30.    }
  31.    lcd.print(" RPM");
  32.    delay(50);
  33. }

复制代码
该设备工作时的照片:
  1. V0.1 Code(Current):

  2. #include <Wire.h>
  3. #include "rgb_lcd.h"

  4. #include <Servo.h>

  5. Servo esc;
  6. rgb_lcd lcd;
  7. int throttlePin = 0;
  8. void setup() {

  9.     // set up the LCD's number of columns and rows:
  10.     lcd.begin(16, 2);
  11.     // Print a message to the LCD.
  12.     lcd.print("Initializing...");
  13.     esc.attach(9);
  14.     lcd.setRGB(50, 50, 50);
  15. }

  16. void loop() {
  17.     lcd.clear();
  18.     int throttle = analogRead(throttlePin);
  19.     throttle = map(throttle, 0, 1023, 0, 179);
  20.     int throttlepercent = (throttle*100) / 179;
  21.     int myRPM = 7200 / (100 - throttlepercent);
  22.     esc.write(throttle);
  23.     // Turn off the display:
  24.     lcd.print("Speed: ");
  25.     if(myRPM == -1){
  26.     lcd.print("7200");
  27.     }else if(myRPM <= 100){
  28.       lcd.print("0");
  29.     }else{
  30.     lcd.print(myRPM);
  31.     }
  32.     lcd.print(" RPM");
  33.     delay(50);
  34. }
复制代码



如果您对此项目有任何想法、意见或问题,请在下方留言。
以上内容翻译自网络,原作者:kemfic,如涉及侵权,可联系删除。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2022 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表