산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

샘플 운송용 온도 조절 용기

구성품 및 소모품

PT 100 온도 센서
× 1
Arduino UNO
× 1
리튬 이온 배터리
10400mAh
× 1
폴리스티렌 상자
샘플/화학물질의 기존 배송 방식에서 재활용
× 1
구리 블록
동 블록 약 2개 80x50x10mm, 방열판 및 펠티에 부착용으로 가공되며 히트 파이프용 구멍이 있습니다.
× 1
조정 가능한 부스트 전원 공급 보드 모듈 ULS
× 1
히트파이프 쿨러
× 1
디지털 전위차계
× 1
매직 젤
열 전달을 개선하기 위해 샘플 사이에 금속 막대를 삽입할 수 있습니다.
× 1
DC 컨버터
× 1
펠티에 모듈
× 1
커패시터 3.3uF
× 1
히트 파이프
× 1
주 전원 공급 장치
× 1
전원 공급 장치용 DC 분배기
× 1
Adafruit LCD 화면 Adafruit
× 1
히터 매트
가열 샘플용
× 1
터미널 블록
× 1
플라스틱 인클로저
× 1
패널 장착 DC 플러그
× 1
4극 이중 스로우 스위치
× 1
단극 이중 스로우 스위치
× 1
플라스틱 인클로저
전자 제품용 외부 플라스틱 상자
× 1
터미널 블록 커넥터, 3방향
× 1
터미널 블록 커넥터, 5방향
× 1
후크 앤 루프 DualLock 테이프
× 1
Adafruit 프로토 스크류 실드
Arduino에 대한 더 단단한 나사 터미널 와이어 연결용
× 1
Adafruit 리튬 이온 USB 배터리 충전기
× 1
Adafruit PT100 온도 센서 증폭기
× 1

필요한 도구 및 기계

납땜 인두(일반)
Dremel 4000
바이스
드릴
케이블 스트리핑 도구, 플라이어, 절단기
수동 밀링
구리 부품 가공용

앱 및 온라인 서비스

GitHub
우리는 MCP41100 디지털 전위차계에 sleemanj의 라이브러리를 사용했습니다(sleemanj에게 감사드립니다!). 우리는 또한 우리가 사용한 각 Adafruit 모듈에 대해 Adafruit의 라이브러리를 사용했습니다. 제품 페이지에서 사용할 수 있습니다.
Arduino IDE

이 프로젝트 정보

Mr ThermoParcel:샘플 운송을 위한 온도 제어 컨테이너

목적은 기존의 우편 서비스로 민감한 샘플을 안전하게 운송하는 데 사용할 수 있는 온도 조절 용기를 개발하는 것입니다. Mr ThermoParcel이라는 프로토타입 장치는 4-37°C의 온도 범위에서 작동하며 주 어댑터, 내부 배터리 또는 자동차 담배 라이터나 노트북 충전기와 같은 기타 12V 소스로 전원을 공급할 수 있습니다.

우리 프로젝트의 기원

우리의 아이디어는 우리가 학술 연구에서 직면한 실제 문제, 즉 온도에 민감한 생물학적 샘플을 공동 작업자와 안전하게 교환하는 데서 비롯되었습니다. Viola는 말라리아 질병에 효과가 있으며 혈액 샘플을 보내거나 받아야 하는 경우가 많습니다. 그러나 샘플을 보관 및 운송 중에 올바른 온도로 유지하지 않으면 쉽게 분해되어 쓸모 없게 될 수 있습니다. 샘플에 말라리아에 특별한 반응을 보이고 희귀 환자에게서 나온 귀중한 유형의 혈액이 포함되어 있으면 더욱 실망스럽습니다.

이러한 유형의 혈액 샘플을 보내는 일반적인 방법은 배송 전에 완전히 동결하고, 냉동 제품은 일반 택배를 이용하고, 배송 후에는 조심스럽게 해동하는 것입니다. 동결/해동은 항상 샘플의 일부를 변경하거나 손상시키고 해동 프로세스 자체는 추가 화학물질이 필요한 특정 프로토콜을 따르기 때문에 여전히 비용이 많이 드는 것 외에도 이러한 시스템은 이상적이지 않습니다. 또한, 부적절한 보관 조건과 배송 알림 지연이 샘플 품질 저하의 빈번한 원인인 캠퍼스 소포 보관소에서 항목을 대학으로 배송하는 경우가 많습니다.

디자인 컨셉

우리는 화학 물질 배송에서 재사용되는 작은 소포 크기의 기존 폴리스티렌 컨테이너에 온도 제어 시스템을 통합했습니다. 우리는 혈액 샘플을 사용하여 최적화하고 테스트했지만, 동일한 시스템을 세포, 배양 배지, 온도에 민감한 화학 물질, 에멀젼 및 효소와 같은 광범위한 다른 생물학적 물질에 사용하거나 고체 품목에 적용할 수도 있습니다.

시스템의 개념은 그림 1에 나와 있습니다. . 냉각은 Peltier 모듈로 이루어지며, 차가운 쪽은 폴리스티렌 용기 내부의 작은 샘플 상자에 부착되고 뜨거운 쪽은 외부 방열판에 연결됩니다. 가열은 샘플 상자 내부에 배치된 히터 매트로 수행됩니다. 온도는 샘플과 접촉하는 센서를 사용하여 지속적으로 모니터링되며 가열/냉각 강도는 Arduino 컨트롤러에 의해 조절됩니다.

구현

컨테이너 하드웨어 디자인

외부 컨테이너는 치수가 250x250x250mm이고 벽 두께가 사방 45mm인 폴리스티렌 상자로 일반 우편 서비스와 함께 실험실 배달에 사용되는 일반적인 유형의 상자입니다. 내부에 플라스틱 인클로저(125x70x40mm)가 있으며 2개의 50mL 원심분리기 튜브가 있습니다. 이 튜브는 생물 및 감염 물질 카테고리 B UN3373에 대한 규정에 따라 2차 포장 역할을 합니다(링크: http://www.un3373.com/info/regulations/ ). 기본 샘플은 누출을 방지하기 위해 흡수성 조직으로 분리된 검체를 포함하는 6개의 2mL Eppendorf 튜브입니다. Mr ThermoParcel은 단단한 2차 포장을 더 많은 양의 시료를 담을 수 있는 유연한 파우치로 대체하여 최대 50mL의 액체 시료를 저장할 수 있습니다. 최대 3~4개의 15mL 튜브(링크:https://www.alphalabs.co.uk/laboratory-products/consumables/sample-handling/sample-transport/95kpa-pouches). 내부 상자 내부의 가열/냉각 균일성을 개선하고 구리 시트, 샘플 및 온도 센서 간의 열 접촉을 보장하기 위해 샘플 주위에 전기 절연성 고체 경화 젤을 부었습니다. 샘플이 들어 있는 내부 상자는 그림 2에 나와 있습니다. .

냉난방 시스템

내부 온도는 샘플과 접촉하여 배치된 100Ohm Pt 저항 온도계(또는 저항 온도 감지기, RTD)로 모니터링되고 Peltier 모듈(냉각) 또는 히터 매트(가열)를 사용하는 PID 시스템으로 제어됩니다. 펠티에의 열을 상자 외부로 발산하기 위해 펠티에 모듈의 뜨거운 면은 3개의 구리 히트 파이프를 통해 외부 구리 및 방열판(CPU 냉각기)과 열 접촉합니다. 차가운 쪽은 상자를 통과하는 얇은 구리 시트에 부착되어 샘플을 균일하게 냉각시킵니다. 열 결합에 대한 자세한 내용은 그림 3에 나와 있습니다. .

가열 매트는 온도 센서 및 샘플과 접촉하는 내부 인클로저 내부에 배치됩니다.

전자 및 배선

냉방 및 난방 조절

Mr ThermoParcel이 사용하는 Peltier 모듈은 최대 냉각 전력에서 3.9A 및 7.6V 정격입니다. 온도를 효과적으로 제어하기 위해 펠티에 모듈에 전달되는 전력량은 PTN78020W 스텝다운 조정 가능 스위칭 레귤레이터를 사용하여 전자적으로 관리됩니다. 레귤레이터는 7-36V 범위의 입력 전압을 수용하고 2.5-12.6V 범위의 출력을 생성하지만 출력은 입력 마이너스 2V를 초과할 수 없다는 제한이 있습니다. 출력 전압은 장치 데이터 시트의 표에 따라 두 레귤레이션 핀 사이의 특정 저항 값을 설정하여 조정됩니다. Mr ThermoParcel은 온도 판독값을 기반으로 출력 전압을 전자적으로 조절하기 위해 Arduino로 제어되는 MCP41100 100kOhm 디지털 전위차계를 사용합니다. PTN78020W의 전체 출력 전압 범위는 1MOhm 이상의 전압 변동이 필요하기 때문에 디지털 포텐셔미터가 100kOhm으로 설정되어 있어도 Peltier 모듈에 전압이 인가되므로 Peltier 모듈은 다음을 사용하여 "꺼질" 수 없습니다. 디지털 전위차계 단독. 히터 매트로 수행되는 가열에도 동일한 규정 개념이 적용됩니다. 매트는 단순히 전류를 열로 발산하는 저항이며 전압을 조절하면 전달되는 전력을 직접 제어할 수 있습니다.

전원 공급 장치

12V DC 전원 공급 장치는 Mr ThermoParcel이 주 전원 소켓 근처에 있을 때 PTN78020W에 직접 전원을 공급하는 데 사용됩니다. 이를 통해 최대 전력으로 Peltier를 구동하고 프로젝트 목적에 충분한 전력으로 히터 매트를 구동하기에 충분한 최대 10V 출력을 허용합니다. PTN78020W 레귤레이터의 7-36V 입력 범위를 감안할 때 Mr ThermoParcel은 랩톱 및 기타 전자 장치에 사용되는 대부분의 DC 전원 공급 장치와 자동차에 있는 담배 라이터 소켓으로도 구동할 수 있습니다. 외부 전원을 사용할 수 없는 경우 Mr ThermoParcel은 3.7V, 10400mAh 리튬 이온 배터리로 전원을 공급받습니다. 배터리는 여전히 PTN78020W 레귤레이터에 전원을 공급하지만 펠티에 모듈을 구동하는 데 필요한 입력 전압(PTN78020W 입력에서 10-12V)에 도달하기 위해 XL6019 스텝업 DC-DC 컨버터가 먼저 배터리 출력에 연결됩니다.

Arduino 배선

가능한 경우 보드의 잭 소켓을 통해 12V 외부 입력에서 Arduino에 직접 전원이 공급됩니다. 내부 배터리를 사용하는 경우 XL6019 컨버터의 출력을 사용하여 소켓에 유사한 전압이 설정됩니다.

Arduino는 디지털 전위차계의 저항을 제어하여 Peltier 모듈/히터 매트에 전달되는 전력을 조절합니다. 배선은 가변 저항 구성의 전위차계를 사용하여 sleemanj의 MCP41 시리즈 라이브러리의 지침에 따라 수행됩니다. Arduino는 또한 온도 센서를 읽는 데 사용되는 Adafruit MAX31865 Pt100 RTD 증폭기와 온도 데이터 및 시스템 작동을 표시하는 데 사용되는 Adafruit RGB LCD Shield에 연결됩니다. 둘 다 제품 페이지에 있는 철저한 Adafruit 설명서에 따라 연결되어 있습니다.

소프트웨어

Arduino에 연결된 모든 Adafruit 모듈은 각각의 라이브러리와 sleemanj의 MCP41 시리즈 라이브러리가 있는 디지털 전위차계로 작동됩니다. Mr ThermoParcel에 있는 Arduino 코드의 핵심 기능은 PID 폐쇄 루프 시스템으로 구현되는 온도 제어와 관련이 있습니다. 온도 설정점은 LCD 디스플레이 실드 버튼을 통해 사용자가 제공합니다. 측정된 각 온도 판독값은 설정점에서 편차를 얻는 데 사용되며, 따라서 냉각/가열 전력을 조절하기 위해 디지털 전위차계에 공급되는 PID 값을 계산합니다. 외부 물리적 토글 스위치는 전원 출력이 펠티에 모듈(냉각) 또는 히터 매트(난방)로 향하는지 여부를 결정합니다. 시스템에 전자 스위치가 없기 때문에 가열 모드와 냉각 모드 사이의 코드로 구분되며 사용자는 LCD 디스플레이 실드 버튼을 사용하여 적절한 모드를 선택해야 합니다. 이러한 구별은 계산된 PID 값이 올바른 부호를 갖도록 합니다. 테스트 중에 PID 요인에 대해 다양한 값을 시도했으며 대부분의 상황에서 P 항만으로도 설정점에서 ±0.5°C 이내로 유지하기에 충분하다는 것을 관찰하여 결국 I 및 D 요인을 제거했습니다. 이것은 아마도 온도 변화를 느리게 만드는 샘플과 내부 젤로 채워진 상자의 상대적으로 큰 열용량 때문일 것입니다(가장 빠른 영역에서 일반적으로 평균 0.02°C/s).

성능

주 전원이 공급되면 Mr ThermoParcel은 약 1시간 내에 21-23°C의 실온에서 시작할 때 4°C로 냉각됩니다. 처음 20분 이내에 8-10°C의 온도에 도달합니다. 실온에서 다시 시작하여 히터 매트를 사용하면 약 10분 이내에 37°C에 도달합니다. 모든 온도는 ±0.5°C 이내의 설정값에서 유지됩니다.

내부 배터리로만 전원을 공급할 때 약 10°C는 1.5-2시간 내에 도달할 수 있는 최소 온도입니다. 히터 매트를 사용하면 37°C를 얻을 수 있지만 40-60분이면 됩니다. 이러한 제한은 배터리의 방전율로 인한 것입니다. Mr ThermoParcel의 리튬 이온 배터리는 3.7V에서 7A의 최대 방전 전류로 평가되지만 10-12V로의 승압 변환을 고려할 때 방전 전류는 더 높아야 합니다. Peltier 모듈의 최대 전력을 유지합니다. 배터리에는 전류 과부하의 경우 출력을 차단하는 자체 보호 회로가 포함되어 있으므로 냉각/가열 시스템이 최대 정격보다 큰 전류를 끌어오려고 하면 시스템이 작동하지 않습니다. 배터리를 통해 작동할 때 전력 소비는 소프트웨어에 의해 안전한 수준으로 제한됩니다. 이 제한은 순전히 여기에 사용되는 배터리로 인한 것이며 방전율이 더 높은 배터리를 널리 사용할 수 있습니다. 또는 직렬로 연결된 3개의 셀과 11.1V의 공칭 전압이 있는 리튬 이온 배터리를 사용하면 문제가 해결되고 승압 DC 컨버터가 필요하지 않습니다.

향후 방향

현재 개발 단계에서 우리 장치는 주로 CPU 쿨러의 크기와 움직이는 부품, 구조의 견고성으로 인해 출하될 수 없습니다. 그러나 일단 방열판을 수동 냉각 시스템으로 교체하고 95k Pa 2차 포장을 사용하면 Mr ThermoParcel을 안전한 운송을 위해 적절한 단단한 용기에 넣어 비행기로 샘플을 운송하기 위한 표준 택배의 모든 요구 사항을 충족할 수 있습니다. 기타 운송 수단.

달성의 핵심 목표로 다른 구성 요소를 추가하여 장치의 기능을 확장할 수 있습니다. 운송 중 온도 프로필은 나중에 확인하기 위해 로컬 메모리에 저장하거나 GSM Arduino 모듈을 사용하여 정기적으로 SMS를 통해 사용자에게 직접 보낼 수 있습니다. 독립적인 소포 추적 및 배달 시 적시 수집을 위해 GPS 수신기도 포함될 수 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • PID_LCD_controller_v03
  • PID_LCD_controller_v03아두이노
    Mr ThermoParcel이 사용하는 모듈에 연결하기 위한 Arduino 코드, PID 컨트롤러를 실행하고 LCD 패널에 정보를 표시하고 사용자 입력을 수신합니다.
    #include  // PT100 온도 센서 라이브러리 가져오기#include  // 디지털 전위차계 라이브러리 가져오기#include  // LCD 디스플레이 및 버튼 가져오기 실드 라이브러리#include  // I2C 확장기 라이브러리 가져오기#include // 설정 디지털 전위차계MCP41_Simple digitalPotentiometer; // 디지털 전위차계 생성 objectconst uint8_t digitalPotentiometer_CS =10;// PT100 온도 센서 설정// PT100 온도 센서용 소프트웨어 SPI 사용:CS, DI, DO, CLKAdafruit_MAX31865 PT100amplifier =Adafruit_MAX31865,/4,53 Rref 저항의 값을 설정합니다. PT100 온도 센서에 430.0을 사용합니다.#define RREF 430.0// 센서의 공칭 0도-C 저항, PT100에 100.0ohm#define RNOMINAL 100.0// 버튼으로 LCD 디스플레이 실드 설정Adafruit_RGBLCDShield LCD_shield =Adafruit_RGBL define OFF 0x0 // ON 및 OFF 상태는 LCD 백라이트를 켜고 끄는 데 사용할 수 있습니다.//#define ON 0x1void setup() { Serial.begin(115200); Serial.println("미스터 ThermoParcel, 작업 시작 중..."); PT100amplifier.begin(MAX31865_4WIRE); // 필요에 따라 2WIRE 또는 4WIRE로 설정, 이 경우 4-wire RTD // 디지털 전위차계 초기화 digitalPotentiometer.begin(digitalPotentiometer_CS); // 와이퍼를 0과 255 사이의 임의의 지점으로 설정합니다. digitalPotentiometer.setWiper( 200 ); // LCD 디스플레이 실드 초기화 // LCD의 열과 행 수 설정:LCD_shield.begin(16, 2); // 정확한 간격으로 LCD에 설정값 및 측정된 T 텍스트를 설정합니다. LCD_shield.print("Tsetpoint:C"); LCD_shield.setCursor(0, 1); LCD_shield.print("Tsample:C");}// PID 상수, 온도 관련 변수 및 실드 버튼 값 초기화int powerMode =1; // 배터리 전원의 경우 powerMode=1, 주 전원의 경우 powerMode=-1; 배터리 과부하를 방지하는 데 사용int operationMode =1; // 냉방의 경우 operationMode=1, 난방의 경우 operationMode=-1; PID 항의 부호를 수정하는 데 사용float PT100ratio; // PT100에 대한 저항비 변수 정의 sensoruint8_t buttonsPressed =0;float kp =500.0; //; 정수 키 =5; 정수 kd =3.9; 부동 PID_p =0.0; // 정수 PID_i =0; int PID_d =0, float Tmeasured =-1.0, float Tsetpoint =22.0; // 실온 주변에서 시작float PID_error =5;float PID_value =0;// LCD 화면에 온도 설정값을 올바르게 인쇄하기 위해 print_Tsetpoint 함수를 정의합니다. char TsetpointString[3];void print_Tsetpoint(int T) { // 올바른 위치에 Tsetpoint를 인쇄합니다. 위치 LCD_shield.setCursor(10, 0); dtostrf(T, 3, 0, TsetpointString); LCD_shield.print(TsetpointString);}// 측정된 온도를 LCD 화면에 올바르게 인쇄하도록 print_Tmeasured 함수를 정의합니다. char TmeasuredString[4];void print_Tmeasured(float T) { // Tmeasured를 올바른 위치에 인쇄합니다. LCD_shield.setCursor(8, 1); dtostrf(T, 5, 1, TmeasuredString); LCD_shield.print(TmeasuredString);}// 전원 모드를 올바르게 인쇄하기 위해 print_powerMode 함수를 정의합니다. (B, 배터리; M, 주전원)void print_powerMode() { LCD_shield.setCursor(15, 0); if (powerMode ==1) { LCD_shield.print("B"); } else if (powerMode ==-1) { LCD_shield.print("M"); }}// 전력 모드를 올바르게 인쇄하기 위해 print_operationMode 함수를 정의합니다(C, Peltier 냉각기; H, 가열 매트)void print_operationMode() { LCD_shield.setCursor(15, 1); if (operationMode ==1) { LCD_shield.print("C"); } else if (operationMode ==-1) { LCD_shield.print("H"); }}// *** 메인 루프 ***void loop() { // 온도 읽기 uint16_t rtd =PT100amplifier.readRTD(); PT100비율 =rtd; PT100비율 /=32768; 측정 =PT100amplifier.temperature(RNOMINAL, RREF); Serial.print("설정 온도 ="); Serial.println(Tsetpoint); Serial.print("온도 ="); Serial.println(측정); // 온도 값 및 모드 인쇄 print_Tsetpoint(Tsetpoint); print_Tmeasured(측정); print_powerMode(); 인쇄 작업 모드(); // 설정값과 측정값 간의 오차 계산 PID_error =Tmeasured - Tsetpoint; //P 값 계산 PID_p =operationMode * kp * PID_error; // 전체 PID 값을 계산합니다. 최대값(255)보다 크면 255로 유지, 최소값(0)보다 작으면 0으로 유지 PID_value =(int) PID_p; //+ PID_i + PID_d; Serial.print("PID_p ="); Serial.println(PID_p); Serial.print("파워모드 ="); Serial.println(파워모드); Serial.print("작업 모드 ="); Serial.println(작업 모드); Serial.print("PID_error ="); Serial.println(PID_error); Serial.print("PID_값 ="); Serial.println(PID_값); // 배터리 모드인 경우(powerMode=1) 배터리 과부하를 피하기 위해 출력을 제한합니다. // 전원 모드인 경우(powerMode=-1) 최대 전력(255) 허용 if (powerMode ==1) { if (PID_value <0) { PID_값 =0; } if (PID_값> 120) { PID_값 =120; } } else if (powerMode ==-1) { if (PID_value <0) { PID_value =0; } if (PID_값> 255) { PID_값 =255; } } Serial.print("조정된 PID_값 ="); Serial.println(PID_값); // PID 값에서 디지털 전위차계 저항 설정 digitalPotentiometer.setWiper(255 - PID_value); // 누른 버튼을 감지하고, 필요한 경우 설정값을 변경하고, 측정된 설정값과 설정값을 표시합니다. 버튼 누름 =LCD_shield.readButtons(); if (buttonsPressed &BUTTON_SELECT) { // 커서를 깜박임으로써 편집 모드에서 해당 시스템을 강조 표시합니다. LCD_shield.setCursor(14, 0); LCD_shield.blink(); 지연(1000); 버튼 누름 =0; // SELECT 버튼을 다시 누를 때까지 편집 모드를 유지합니다. UP 및 DOWN 버튼은 Tsetpoint를 변경합니다. // LEFT는 작동 모드(가열/냉방)를 전환합니다. 오른쪽은 전원 모드(배터리/주전원)를 전환합니다. 동안 (not (buttonsPressed &BUTTON_SELECT)) { buttonsPressed =LCD_shield.readButtons(); if (buttonsPressed &BUTTON_UP) { Tsetpoint +=1; } if (buttonsPressed &BUTTON_DOWN) { Tsetpoint -=1; } if (buttonsPressed &BUTTON_RIGHT) { powerMode *=-1; print_powerMode(); } if (buttonsPressed &BUTTON_LEFT) { operationMode *=-1; 인쇄 작업 모드(); } print_Tsetpoint(Tsetpoint); LCD_shield.setCursor(14, 0); 지연(500); } // 편집 모드를 종료하고 커서 깜박임을 중지 LCD_shield.noBlink(); 버튼 누름 =0; } 직렬.println();}

    회로도

    온도 제어 용기의 모든 주요 구성 요소가 포함된 도식적 회로도. 커뮤니티의 다른 사용자가 요청한 배선도. 그것은 우리가 배선을 조립하는 데 사용한 것이므로 보기 흉하고 출판용으로 의도된 적이 없습니다! 하지만 도움이 될 수 있습니다. 다른 구성요소에 대한 전위차계 배선.

    제조공정

    1. 온도 제어 팬
    2. DIY:HomeBrew의 온도 모니터링 및 규정
    3. 실험실 및 과학 프로젝트를 위한 온도 측정
    4. 열전도에 가장 좋은 금속
    5. VFD의 방열 계산 방법
    6. 고온 PCB 라미네이트
    7. PCB 온도 가이드
    8. 알루미늄 주물 열처리
    9. Alloy 36(Invar®) 제어 팽창 합금
    10. CNC 가공 금속 부품의 열처리 공정