这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 毕业设计专区 » 便携式器官&血液冷藏装置

共2条 1/1 1 跳转至

便携式器官&血液冷藏装置

专家
2013-01-07 15:07:34     打赏

作者:四川大学 吴帆 吴彦冰 夏莹
指导教师:杨刚

  作品简介

  一.开发背景
  供者身上移植的器官在体外存活时间大约只有3天左右,即使对移植器官进行处理和冷藏,最多也只能存活7天。血液可以存放为一定温度冷藏,在低温冷藏的环境下,血液中细胞仍然具有“活性”,冷藏的最长期限为35天。多年来,人们采用的低温保存方法已有应用(如:保存哺乳动物的细胞,包括血液细胞,动物胚胎和人的胚胎等),而用于器官移植的低温保存技术与普通的保存方法不同,其技术的关键是:(1)降温迅速,待升温后,器官仍能恢复活性。(2)采用低温而不是冷冻,这样可以防止器官细胞内形成冰冻结晶。该保存技术的方法是:将移植器官放入到水中,使期处于液态下,并加入低温保存剂(浓度为8克分子浓度/升),然后,置于冷贮环境(迅速降温至-125摄氏度)及压力(500个大气压力)下,此时,浸入器官中的水并不产生冻结。在这里,低温保存剂的作用如同汽车水箱加防冻剂的原理一样。而大气压力的作用,主要是降低水的冰点,有助于阻止冰在器官中的形成。而该低温保存技术中存在溶液浓度高及压力过大问题,为解决该问题,我们提出了用半导体制冷片制冷来实现对器官以及血液的便携式冷藏功能。

  二.功能
  便携式器官、血液的冷藏功能的实现

  三.使用说明
  将传感器置入需要测控的空间内,通过按键设置需要达到的温度。当设置温度低于当前温度时,装置开始工作,直至当前温度低于设置温度为止。

  四.结构说明  

 

  平台选型说明

  单片机开发板(以STC15F2K60S2芯片为控制核心)

  设计说明

  一.作品原理
  1.总体原理
  在开始或系统运行间,通过按键设置需要保温的温度。通过DS18B20温度传感器将温度读入到单片机中,单片机判断当前温度是否低于设置温度,若低于,单片机输出控制信号控制电磁继电器断开,使得制冷片停止工作,当当前温度高于设置温度时,单片机输出控制信号,控制电磁继电器吸合,使得制冷片开始工作,降低保温装置的温度。总体工作原理示意图如下:  

   2.硬件原理
  2.1制冷片原理
  热电制冷主要是珀尔帖效应在制冷技术方面的应用。实用的热电制冷装置是由热电效应比较显著、热电制冷效率比较高的半导体热电偶构成的。半导体热电偶由N 型半导体和P型半导体组成。N 型材料有多余的电子,有负温差电势。P 型材料电子不足,有正温差电势;当电子从P 型穿过结点至N 型时,其能量必然增加,而且增加的能量相当于结点所消耗的能量。这一点可用温差降低来证明。相反,当电子从N型流至P型材料时,结点的温度就会升高。

  2.2 DS18B20工作原理
  DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理如下图所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。  

   2.3电磁继电器原理
  电磁继电器一般由 电磁铁、衔铁、弹簧片、触点等组成的,其工作电路由低压控制电路和高压工作电路两部分构成。电磁继电器还可以实现远距离控制和自动化控制。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常闭触点”;处于接通状态的静触点称为“常开触点”。

  3.软件原理
  当整个系统接通电源开始工作时,程序先初始化lcd显示屏和温度传感器,之后进入循环体循环,不断检测外界的温度,不断接受用户设置的温度,并且比较用户设置的温度与当前温度之间的关系,如果当前温度高于用户设置的温度,程序则使电磁继电器吸合,使电源和制冷片工作,如果当前温度低于用户设置的温度,程序则使电磁继电器断开,使电源和制冷片停止工作,这样就可以使保温空间中的温度时刻恒定在用户设置的温度了。

  程序流程图如下:  

  (1)温度检测子程序  /**********************************************************
  复位子程序  *********************************************************/
  uchar reset(void)
  {
  unsigned char Now;
  DQ = 1; //DQ复位
  delay(80); //稍做延时
  DQ = 0; ///*拉低DQ总线开始复位*/
  delay(800); ///*保持低电平 大于 480us
  DQ = 1; /*释放总线*/
  delay(100); /*在总线变为高电平后等待45US后将总线拉低60-240us*/
  Now=DQ; //稍做延时后 获取应答信号 如果x=0则初始化成功 x=1则初始化失败
  delay(50); /*延时以完成整个时序*/
  return(Now);/*返回应答信号,有芯片应答返回0,无芯片返回1*/
  }
  /********************************************************
  写一字节数据子程序
  *******************************************************/
  void writebyte(uchar dat)
  {
  uchar i=0;
  for (i=8; i>0; i--)
  {
  DQ = 0;
  DQ = dat&0x01;
  delay(50);
  DQ = 1;
  dat>>=1;
  }
  delay(50);
  }
  /******************************************************
  读一字节数据子程序
  *******************************************************/
  uchar readbyte(void)
  {
  unsigned char i=0;
  unsigned char dat = 0;
  for (i=8;i>0;i--)
  {
  DQ = 0; // 给脉冲信号
  dat>>=1;
  DQ = 1; // 给脉冲信号
  if(DQ)
  dat|=0x80;
  delay(50);
  }
  return(dat);
  }
  /*******************************************************




关键词: 便携式     器官     血液     冷藏     装置     温度     原理     制冷         

专家
2013-01-07 15:19:00     打赏
2楼
  获取温度子程序
  ******************************************************/
  void gettemper(void)
  {
  unsigned char a=0;
  unsigned char b=0;
  int t=0;
  float tt=0;
  //float tt=0;
  reset();
  writebyte(0xCC); // 跳过读序号列号的操作/*忽略64位ROM地址,直接向DS18B20发温度变换命令,是适合单片机操作的命令*/
  writebyte(0x44); // 启动温度转换 /*启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果存入内部9字节ROM中*/
  delay(2000);
  reset();
  writebyte(0xCC); //跳过读序号列号的操作
  writebyte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
  a=readbyte();
  b=readbyte();
  //b<<=4;
  //b+=(a&0xf0)>>4;
  t=b;
  //tt=t*0.0625;
  //t=tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  t<<=8;
  t=t|a;
  tt=t*0.0625;
  Temper=tt*10+0.5;
  b<<=4;
  b+=(a&0xf0)>>4;
  temper1=b;
  a=readbyte();
  b=readbyte();
  //b<<=4;
  //b+=(a&0xf0)>>4;
  t=b;
  //tt=t*0.0625;
  //t=tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  t<<=8;
  t=t|a;
  tt=t*0.0625;
  Temper=tt*10+0.5;
  b<<=4;
  b+=(a&0xf0)>>4;
  temper1=b;
  //tt=t*0.0625;
  //t= tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  }
  (2)显示子程序
  void gettemper(void)
  {
  unsigned char a=0;
  unsigned char b=0;
  int t=0;
  float tt=0;
  //float tt=0;
  reset();
  writebyte(0xCC); // 跳过读序号列号的操作/*忽略64位ROM地址,直接向DS18B20发温度变换命令,是适合单片机操作的命令*/
  writebyte(0x44); // 启动温度转换 /*启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果存入内部9字节ROM中*/
  delay(2000);
  reset();
  writebyte(0xCC); //跳过读序号列号的操作
  writebyte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
  a=readbyte();
  b=readbyte();
  //b<<=4;
  //b+=(a&0xf0)>>4;
  t=b;
  //tt=t*0.0625;
  //t=tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  t<<=8;
  t=t|a;
  tt=t*0.0625;
  Temper=tt*10+0.5;
  b<<=4;
  b+=(a&0xf0)>>4;
  temper1=b;
  //tt=t*0.0625;
  //t= tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  }
  3.1温度检测子程序:
  /*******************************************************
  获取温度子程序
  ******************************************************/
  void gettemper(void)
  {
  unsigned char a=0;
  unsigned char b=0;
  int t=0;
  float tt=0;
  //float tt=0;
  reset();
  writebyte(0xCC); // 跳过读序号列号的操作/*忽略64位ROM地址,直接向DS18B20发温度变换命令,是适合单片机操作的命令*/
  writebyte(0x44); // 启动温度转换 /*启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果存入内部9字节ROM中*/
  delay(2000);
  reset();
  writebyte(0xCC); //跳过读序号列号的操作
  writebyte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
  a=readbyte();
  b=readbyte();
  //b<<=4;
  //b+=(a&0xf0)>>4;
  t=b;
  //tt=t*0.0625;
  //t=tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  t<<=8;
  t=t|a;
  tt=t*0.0625;
  Temper=tt*10+0.5;
  b<<=4;
  b+=(a&0xf0)>>4;
  temper1=b;
  //tt=t*0.0625;
  //t= tt*10+0.5; //放大10倍输出并四舍五入
  //Temper=t;
  }
  3.2显示子程序
  void display()
  {
  uchar code number[]="0123456789";
  char Dnum[16]=" ";
  char Dnum1[16]=" ";
  int t;
  int t1;
  t=Temper-1;
  t1=Settemper;
  if(t1<0)
  {
  t1=abst1);
  Dnum1[0]='-';
  }else Dnum1[0]='+';
  if(t<0)
  {
  t=abs(t);
  Dnum[0]='-';
  }else Dnum[0]='+';
  /*Dnum[1]=number[t/100]; //十位温度
  Dnum[2]=number[t%100/10]; //个位温度
  Dnum[3]='.';
  Dnum[4]=number[t%10]; */
  Dnum1[1]=number[t1/10]; //十位温度
  Dnum1[2]=number[t1%10]; //个位温度
  lcd_init();
  lcd_disp(0,"置温度是: ");
  lcd_disp(1,Dnum1);
  lcd_disp(2,"温度是: ");
  lcd_disp(3,Dnum);
  lcd_p(3,1,(t/100));
  lcd_p(3,2,(t%100/10));
  lcd_p1(3,3,".");
  lcd_p(3,4,(t%10));
  //lcd_disp(3,Dnum);
  Delay1(500);
  }
  int t;
  int t1;
  t=Temper-1;
  t1=Settemper;
  if(t1<0)
  {
  t1=abs(t1);
  Dnum1[0]='-';
  }else Dnum1[0]='+';
  if(t<0)
  {
  t=abs(t);
  Dnum[0]='-';
  }else Dnum[0]='+';
  /*Dnum[1]=number[t/100]; //十位温度
  Dnum[2]=number[t%100/10]; //个位温度
  Dnum[3]='.';
  Dnum[4]=number[t%10]; */
  Dnum1[1]=number[t1/10]; //十位温度
  Dnum1[2]=number[t1%10]; //个位温度
  lcd_init();
  lcd_disp(0,"设置温度是: ");
  lcd_disp(1,Dnum1);
  lcd_disp(2,"温度是: ");
  lcd_disp(3,Dnum);
  lcd_p(3,1,(t/100));
  lcd_p(3,2,(t%100/10));
  lcd_p1(3,3,".");
  lcd_p(3,4,(t%10));
  //lcd_disp(3,Dnum);
  Delay1(500);
  }

  二.改进方案
  1.增加湿度检测报警功能
  2.采取双层抽真空方式增强保温效果,增大冷藏空间
  3.双电源供电,提高制冷效率。

  作品特色

  该便携式器官及血液冷藏装置通过DS18B20温度传感器将温度读入到单片机中实现对温度的检测、显示以及调控,单片机按钮控制温度,适时显示温度变化情况,并可以自由调节。无噪音、无污染,绿色环保,节能轻便,使用寿命长, 耗电少,结构简单,体积小巧,室内外均可使用。具有多种用途,携带方便可车载(可放置于车内座位或车尾箱,直接连接车内点烟器的12V直流电源)及家用。区别于现有的冷藏装置,改用半导体制冷片来实现制冷功能,该制冷片不需要任何制冷剂,可连续工作,没有污染源没有旋转部件,不会产生回转效应,没有滑动部件是一种固体片件,工作时没有震动、噪音、寿命长,安装容易。既能制冷,又能加热,使用一个片件就可以代替分立的加热系统和制冷系统。通过输入电流的控制,可实现高精度的温度控制,再加上单片机温度检测和电磁继电器控制开关,很容易实现自动控制,加以蜂鸣的提示作用,便于操作者的使用。半导体制冷片热惯性非常小,制冷制热时间很快,在热端散热良好冷端空载的情况下,通电不到一分钟,制冷片就能达到最大温差,即在短时间内提高制冷效率,冷藏效果更好。

系统演示视频:http://v.eepw.com.cn/video/play/id/2332


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]