banner

释放双手——“安心点滴”智能输液装置

icon
发布时间:2021-05-30
步骤1 创意来源

       2017-2022年中国临床医疗行业市场发展现状及投资前景预测报告表示,2016年全国门诊总量增长3.1%,高于去年1.8个百分点,住院总量增长8.0%,高于去年5.0个百分点。2016年居民平均就诊由2015年的5.6次增加到2016年的5.8次,年住院率由2015年的15.3%增加到2016年的16.5%,对于病人的增多,在治疗方法上,而静脉输液是临床上应用最多的一种用药方式,一次性输液器是完成这一治疗的主要用具,其用量也就逐年增加。

       中国人口众多,对于一次性输液器的需求量之大也是必然的,在打点滴时常需要换瓶,而换瓶又需要医疗护士,这就对医疗护士的数量作了很大的要求,然而从某种程度上来说,可能会因求之过急,而不得不降低质量,也会为打点滴的安全性带来更严峻的考验,同时,也提高了成本,让政府和社会在对医疗卫生机构的定性上存在偏差。因此,我们希望制作一款可以自动拔针换瓶的输液器,改善上述问题。

步骤2 设计方法和总体思路

       设计分为四个阶段,选题阶段,我们根据资料等文献发现我国医疗方面对于一次性输液器方面的漏洞,从而确认了设计内容,制造阶段,我们用3D打印机将对于点滴瓶的固定装置打印好,对用激光切割机所制作的木板进行组装,编程阶段,根据所要实现的目标而进行编程,实现部分的关联。调试阶段,用强化实验法确保装置的可靠性。

步骤3 作品展示
projectImage
projectImage
projectImage
projectImage
projectImage
projectImage
projectImage
projectImage
步骤4 整体设计原理

       本作品由四部分构成,分别为水位传感模块,小灯模块,红外模块,电机模块。水位传感模块:用来检测点滴瓶里的点滴是否滴完;小灯模块:使用三颗ws2812灯,用来显示每个点滴瓶的状态。红外模块:用来确认横向电机的位置;电机模块:实现电机带动瓶塞穿刺针实现换瓶和带动针头左移右移的功能。

步骤5 硬件清单
硬件清单
1x
Arduino主控板
1x
L298驱动板
1x
限位传感器
2x
电机
1x
水位传感器
1x
光电计数器
若干x
杜邦线
步骤6 原理简介
projectImage

       总体设计如上图所示,从结构上可以分为两部分,一是横向电机部分,二是竖直电机。

       横向电机部分: 本项目中,我们采用一次性三瓶的点滴瓶作为实验,为能够让系统识别当前正在点滴的点滴瓶,我们使用光电技术传感器作为技术工具。其工原理作如下图所示。

projectImage

       我们制作了一条栅格,栅格有三个凹槽,使用对射式光电开关检测,由横向电机带动光电技术器移动,每遇到一个凹槽就表示移动到了下一瓶点滴瓶的位置上。通过调整好点滴瓶和栅格的位置,就可以精确的定位,如下图所示是光电传感器模块。

projectImage

       竖直电机部分:竖直电机部分工作原理是按照计算机指令,将与可上下移动的滑块连接一起的针头进行上下移动,这里我们只需要知道滑块上移和下移的边界条件。通过位置的调整,我们使得每个点滴瓶的高度位置保持一致,所以电机每次上移下移的位置固定就可以,我们使用了两个行程开关作为边界条件。其原理简图如下图所示。

projectImage

       本项目研究还涉及到检测点滴瓶对的点滴是否点滴完成,我们选用目前市场上常用的非接触式液位传感器来作为输入源,如下图所示是液位传感器,通过将液位传感器安装在点滴瓶口处,这种传感器可以不用放在液体里就能感应到有无液体,而本项目中也不许要检测瓶内的液体有多少,只需要知道瓶内有没有就可以。

projectImage
步骤7 软件源代码
代码
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define LED_PIN     2
#define LED_COUNT  5

#define BRIGHTNESS 50

#define hengxiangxianwei 10
#define chuizhixianweishang 9
#define chuizhixianweixia 8
#define hengxiangdianjiIN1 7
#define hengxiangdianjiIN2 6
#define chuizhidianjiIN1 5
#define chuizhidianjiIN2 4

#define jishuqi 3
#define yewei1 A0
#define yewei2 A1
#define yewei3 A2

#define hengxiangqianjin digitalWrite(hengxiangdianjiIN1,HIGH);digitalWrite(hengxiangdianjiIN2,LOW);
#define hengxianghoutui digitalWrite(hengxiangdianjiIN1,LOW);digitalWrite(hengxiangdianjiIN2,HIGH);
#define hengxiangtingzhi digitalWrite(hengxiangdianjiIN1,LOW);digitalWrite(hengxiangdianjiIN2,LOW);

#define chuizhishang digitalWrite(chuizhidianjiIN1,HIGH);digitalWrite(chuizhidianjiIN2,LOW);
#define chuizhixia digitalWrite(chuizhidianjiIN1,LOW);digitalWrite(chuizhidianjiIN2,HIGH);
#define chuizhitingzhi digitalWrite(chuizhidianjiIN1,LOW);digitalWrite(chuizhidianjiIN2,LOW);

// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRBW + NEO_KHZ800);
int flag = 0,flagstatus  = 0;
void init()
{
    while(hengxiangxianwei!=0)
       hengxianghoutui;
    while(chuizhixianweixia!=0)
       chuizhixia;
    strip.setPixelColor(1, 0,0,255);         //  Set pixel's color (in RAM)
    strip.setPixelColor(2, 0,0,255);         //  Set pixel's color (in RAM)
    strip.setPixelColor(3, 0,0,255);         //  Set pixel's color (in RAM)
    strip.show();                          //  Update strip to match
    
  }
void setup() {

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  // END of Trinket-specific code.

  strip.begin();           // INITIALIZE NeoPixel strip object (REQUIRED)
  strip.show();            // Turn OFF all pixels ASAP
  strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
  pinMode(jishuqi,INPUT);
  pinMode(yewei1,INPUT);
  pinMode(yewei2,INPUT);
  pinMode(yewei3,INPUT);

  pinMode(hengxiangxianwei,OUTPUT);
  pinMode(chuizhixianweishang,OUTPUT);
  pinMode(chuizhixianweixia,OUTPUT);
  pinMode(hengxiangdianjiIN1,OUTPUT);
  pinMode(hengxiangdianjiIN2,OUTPUT);
  pinMode(chuizhidianjiIN1,OUTPUT);
  pinMode(chuizhidianjiIN2,OUTPUT);
  
}

void loop() {
    
  machinerun();
}

void  machinerun()
{
   if(flag==0)
   {
       hengxiangqianjin;
       while(jishuqicheck());
       hengxiangtingzhi;
       strip.setPixelColor(1, 0,255,0);         //  Set pixel's color (in RAM)
       strip.show();  
       while(zhuizhixianweishang==0)
       chuizhishang;
       chuizhixia;
       flag = 1;
    }
    if(flag==1)
   {
       hengxiangqianjin;
       while(jishuqicheck());
       hengxiangtingzhi;
       strip.setPixelColor(2, 0,255,0);         //  Set pixel's color (in RAM)
       strip.show();  
       while(zhuizhixianweishang==0)
       chuizhishang;
       chuizhixia;
       flag = 2;
    }
     if(flag==1)
   {
       hengxiangqianjin;
       while(jishuqicheck());
       hengxiangtingzhi;
       strip.setPixelColor(3, 0,255,0);         //  Set pixel's color (in RAM)
       strip.show();  
       while(zhuizhixianweishang==0)
       chuizhishang;
       chuizhixia;
       flag = 3;
    }
  }
int jishuqicheck()
{
    if(jishuqi==0)
    {
       delay(5);
       if(jishuqi==0)
       {
          while(jishuqi==0);
          return 0;
        }
      }

     return 1;
  }
步骤8 项目总结及未来展望

       经过几个月的研究制作,我们团队最终基本实现了装置的自动化运行。当我们使用将三瓶点滴放好,按下启动键,设备开始工作,第一瓶结束,自动将针头移动到第二瓶,然后第三瓶,直到按指令完整将三瓶点滴滴完。

       当前我们只是是实现了基本的功能,但是还存在着如下一些问题:1、只能一次性固定的三瓶点滴;2、整体装置体积太大,空间使用率低;3、点滴结束后没有自动提醒功能。针对上述的几点不足,我们在接下来的时间将重点改进这些问题,我们希望点滴瓶数是可以动态调节的,由护士设定不同的病人的点滴瓶数,可以支持1-5瓶不同大小的点滴瓶一次性安放完成。空间上我们需要重新设计以满足不同点滴瓶的形状大小,做到小体积大使用的特点。最后我们希望引入目前前沿的5g物联网技术,将医院每个点滴的过程状态接入网络,由护士台统一监控,这样可以减少护士去病房的次数,减少护士的工作量,同时还可以建立数据库,自动记录病人用药记录,做到每一处可以快速查询。

       本文研究的点滴装置,具有全自动更换点滴的功能,护士只需要将点滴放进装置里面,然后装置会自动更换点滴瓶数,避免需要病人自己或者家属要时刻看着点滴瓶,然后叫护士来换点滴,这一过程耗费了大量的人力。而如果将本文设计的项目应用于医院,将大大降低这一方面的人力支出。

步骤9 软件源代码、结构设计文件
附件
icon 周汉鸿、姜欢庭:释放双手——“安心点滴”智能输液装置.zip 502KB
下载
队伍名称 社会主义接班人 参赛组别 高中,中专,职高
参赛学生 周汉鸿 浙江省诸暨市海亮高级中学 姜欢庭 浙江省诸暨市海亮高级中学
指导老师
黄龙青 浙江省诸暨市海亮高级中学
指导老师
郦钰筠 浙江省诸暨市海亮高级中学