Temperatuurgestuurde container voor monstertransport
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Benodigde gereedschappen en machines
| ||||
| ||||
| ||||
| ||||
| ||||
|
Apps en online services
| ||||
|
Over dit project
Mr ThermoParcel:temperatuurgecontroleerde container voor monstertransport
Het doel is om een temperatuurgecontroleerde container te ontwikkelen die kan worden gebruikt om gevoelige monsters veilig te vervoeren met een conventionele postservice. Ons prototype-apparaat, Mr ThermoParcel genaamd, werkt binnen een temperatuurbereik van 4-37 °C en kan worden gevoed door een lichtnetadapter, interne batterij of andere 12V-bronnen zoals een sigarettenaansteker in de auto of een laptoplader.
Het ontstaan van ons project
Ons idee komt voort uit een reëel probleem dat we tegenkwamen in ons academisch onderzoek:de veilige uitwisseling van temperatuurgevoelige biologische monsters met medewerkers. Viola werkt tegen de malariaziekte, en vaak is het nodig om bloedmonsters te sturen of te ontvangen. Als de monsters echter niet op de juiste temperatuur worden gehouden tijdens opslag en transport, kunnen ze gemakkelijk degraderen en onbruikbaar worden. Dit is des te frustrerender wanneer monsters kostbare soorten bloed bevatten die een speciale reactie op malaria hebben en afkomstig zijn van zeldzame patiënten.
De gebruikelijke methode om dit soort bloedmonsters te verzenden, is om ze voor verzending volledig in te vriezen, een standaardkoerier voor diepgevroren goederen te gebruiken en ze na levering zorgvuldig te ontdooien. Behalve dat het nog steeds duur is, is zo'n systeem verre van ideaal, omdat invriezen/ontdooien altijd delen van de monsters verandert of beschadigt, en het ontdooiproces zelf een specifiek protocol volgt waarvoor extra chemicaliën nodig zijn. Bovendien worden artikelen vaak afgeleverd bij de universiteit in het pakketdepot van de campus, waar ongepaste opslagomstandigheden en vertragingen bij leveringsmeldingen vaak de oorzaak zijn van degradatie van het monster.
Ontwerpconcept
We hebben een temperatuurcontrolesysteem geïntegreerd in een conventionele polystyreen container ter grootte van een klein pakket, hergebruikt uit een levering van chemicaliën. We hebben het geoptimaliseerd en getest met bloedmonsters, maar hetzelfde systeem kan worden gebruikt voor een groot aantal andere biologische materialen zoals cellen, kweekmedia, temperatuurgevoelige chemicaliën, emulsies en enzymen, of zelfs aangepast voor vaste items.
Het concept van het systeem wordt getoond in Figuur 1 . Koeling wordt bereikt met een Peltier-module, waarbij de koude kant is bevestigd aan een kleine monsterbox in de polystyreencontainer en de warme kant is aangesloten op een extern koellichaam. Verwarming wordt uitgevoerd met een verwarmingsmat die in de monsterdoos is geplaatst. De temperatuur wordt constant gecontroleerd met behulp van een sensor die in contact staat met de monsters, en de verwarmings-/koelintensiteit wordt geregeld door een Arduino-controller.
Implementatie
Containerhardware ontwerp
De externe container is een doos van polystyreen met afmetingen 250x250x250 mm en een wanddikte van 45 mm aan alle kanten, een veelgebruikt type doos dat wordt gebruikt bij laboratoriumbezorging met standaard postdiensten. Binnenin is een plastic behuizing (125x70x40mm) geplaatst die twee centrifugebuisjes van 50 ml bevat. Deze tubes fungeren als secundaire verpakking volgens de regelgeving voor Biologische en Infectieuze Stoffen, Categorie B UN3373 (link: http://www.un3373.com/info/regulations/ ). De primaire monsters zijn zes Eppendorf-buisjes van 2 ml die monsters bevatten, gescheiden door absorberend weefsel om lekken te voorkomen. Mr ThermoParcel kan tot 50 ml vloeibare monsters opslaan door harde secundaire verpakkingen te vervangen door flexibele zakjes die een grotere hoeveelheid monsters kunnen bevatten, b.v. tot drie of vier buizen van 15 ml (link:https://www.alphalabs.co.uk/laboratory-products/consumables/sample-handling/sample-transport/95kpa-pouches). Om de uniformiteit van verwarming/koeling in de interne doos te verbeteren en om thermisch contact tussen de koperen plaat, monsters en temperatuursensor te garanderen, hebben we een elektrisch isolerende, vaste gel rond de monsters gegoten. De binnendoos met monsters wordt getoond in Figuur 2 .
Koel- en verwarmingssysteem
De interne temperatuur wordt bewaakt met een 100 Ohm Pt-weerstandsthermometer (of Resistance Temperature Detector, RTD) die in contact wordt gebracht met de monsters en wordt geregeld met een PID-systeem met behulp van een Peltier-module (koeling) of verwarmingsmat (verwarmen). Om de warmte van de Peltier buiten de doos af te voeren, wordt de warme kant van de Peltier-module in thermisch contact gebracht met een extern stuk koper en een koellichaam (CPU-koeler) via drie koperen heatpipes. De koude kant is bevestigd aan een dunne koperen plaat die door de doos gaat en de monsters gelijkmatig afkoelt. Details van de thermische koppeling worden getoond in Figuur 3 .
De verwarmingsmat wordt in de binnenbehuizing geplaatst in contact met de temperatuursensor en de monsters.
Elektronica &bedrading
Koeling en verwarming regeling
De Peltier-module die door Mr ThermoParcel wordt gebruikt, is geschikt voor 3,9 A en 7,6 V bij maximaal koelvermogen. Om de temperatuur effectief te regelen, wordt de hoeveelheid stroom die aan de Peltier-module wordt geleverd elektronisch beheerd met behulp van de PTN78020W step-down instelbare schakelregelaar. De regelaar accepteert een ingangsspanning in het bereik van 7-36V en produceert een uitgang in het bereik van 2,5-12,6V, met de beperking dat de uitgang de ingang minus 2V niet kan overschrijden. De uitgangsspanning wordt aangepast door een bepaalde weerstandswaarde in te stellen tussen twee regelpennen, volgens de tabel in het gegevensblad van het apparaat. Mr ThermoParcel gebruikt de MCP41100 100kOhm digitale potentiometer, bestuurd door Arduino, om de uitgangsspanning elektronisch te regelen op basis van de temperatuurmeting. Aangezien het gehele uitgangsspanningsbereik van de PTN78020W een spanningsvariatie van meer dan 1 MOhm vereist, wordt een spanning op de Peltier-module toegepast, zelfs wanneer de digitale potentiometer is ingesteld op 100kOhm, zodat de Peltier-module niet kan worden "uitgeschakeld" met alleen de digitale potentiometer. Hetzelfde regelconcept is van toepassing op de verwarming die wordt uitgevoerd met de verwarmingsmat. De mat is gewoon een weerstand die stroom als warmte dissipeert, en het regelen van de spanning is een directe manier om het geleverde vermogen te regelen.
Voeding
Een 12V DC-voeding wordt gebruikt om de PTN78020W rechtstreeks van stroom te voorzien wanneer Mr ThermoParcel zich in de buurt van een stopcontact bevindt. Dit zorgt voor een output tot 10V, wat voldoende is om de Peltier op maximaal vermogen aan te drijven, en de verwarmingsmat op voldoende vermogen voor de doeleinden van het project. Gezien het 7-36V ingangsbereik van de PTN78020W-regelaar, kan de Mr ThermoParcel ook worden aangedreven met de meeste gelijkstroomvoedingen die worden gebruikt voor laptops en andere elektronische apparaten, evenals met de sigarettenaanstekeraansluitingen die in auto's worden aangetroffen. Als er geen externe voeding beschikbaar is, wordt Mr ThermoParcel gevoed door een 3.7V, 10400mAh Li-ion batterij. De batterij voedt nog steeds de PTN78020W-regelaar, maar om de ingangsspanning te bereiken die nodig is om de Peltier-module aan te sturen (10-12V bij de PTN78020W-ingang), wordt eerst de XL6019 step-up DC-DC-converter aangesloten op de batterij-uitgang.
Arduino-bedrading
Stroom wordt rechtstreeks aan Arduino geleverd via de externe 12V-ingang, indien beschikbaar, via de jack-aansluiting op het bord. Als u de interne batterij gebruikt, wordt een vergelijkbare spanning ingesteld op het stopcontact met behulp van de uitgang van de XL6019-converter.
Arduino regelt het vermogen dat aan de Peltier-module/verwarmingsmat wordt geleverd door de weerstand van de digitale potentiometer te regelen. De bedrading wordt uitgevoerd volgens de instructies in de bibliotheek van de MCP41-serie van sleemanj, met de potentiometer in een configuratie met variabele weerstand. Arduino is ook verbonden met de Adafruit MAX31865 Pt100 RTD-versterker, die wordt gebruikt om de temperatuursensor te lezen, en met het Adafruit RGB LCD-scherm, dat wordt gebruikt om de temperatuurgegevens en de systeemwerking weer te geven. Deze zijn beide bedraad volgens de uitgebreide Adafruit-documentatie op de productpagina's.
Software
Alle Adafruit-modules die op Arduino zijn aangesloten, worden bediend met hun respectievelijke bibliotheken en de digitale potentiometer met sleemanj's MCP41-serie bibliotheek. De kernfunctionaliteiten van de Arduino-code in Mr ThermoParcel hebben betrekking op de temperatuurregeling, die is geïmplementeerd met een PID-gesloten-lussysteem. Het temperatuurinstelpunt wordt door de gebruiker geleverd via de schildknoppen op het LCD-scherm. Elke gemeten temperatuurmeting wordt vervolgens gebruikt om de afwijking van het instelpunt te verkrijgen en zo de PID-waarde te berekenen die naar de digitale potentiometer wordt gevoerd om het koel-/verwarmingsvermogen te regelen. Een externe fysieke tuimelschakelaar bepaalt of het uitgangsvermogen naar de Peltier-module (koeling) of de verwarmingsmat (verwarming) wordt gestuurd. Aangezien er geen elektronische schakelaars in het systeem zijn, wordt er onderscheid gemaakt in de code tussen een verwarmingsmodus en een koelmodus, en moet de gebruiker de juiste modus selecteren met behulp van de schermknoppen op het LCD-scherm. Dit onderscheid zorgt ervoor dat de berekende PID-waarde het juiste teken heeft. Tijdens onze tests hebben we een reeks waarden voor de PID-factoren geprobeerd, en we hebben vastgesteld dat de P-term alleen in de meeste situaties voldoende was om binnen ±0,5 °C van het instelpunt te blijven, dus hebben we uiteindelijk de I- en D-factoren verwijderd. Dit is waarschijnlijk te wijten aan de relatief grote warmtecapaciteit van de monsters en de interne met gel gevulde doos, die temperatuurveranderingen traag maken (meestal een gemiddelde van 0,02 °C/sec in de snelste regimes).
Prestaties
Bij netvoeding koelt Mr ThermoParcel binnen ongeveer 1 uur af tot 4°C bij een kamertemperatuur van 21-23°C. Binnen de eerste 20 minuten wordt een temperatuur van 8-10°C bereikt. Opnieuw beginnend vanaf kamertemperatuur, en met behulp van de verwarmingsmat, wordt binnen ongeveer 10 minuten 37°C bereikt. Alle temperaturen worden binnen ±0,5°C op het instelpunt gehouden.
Wanneer alleen de interne batterij van stroom wordt voorzien, is ongeveer 10°C de minimumtemperatuur die kan worden bereikt in een tijd van 1,5-2 uur. Met de verwarmingsmat kan nog steeds 37°C worden bereikt, maar in 40-60 minuten. Deze beperkingen zijn te wijten aan de ontladingssnelheid van de batterij:de Li-ion-batterij in Mr ThermoParcel heeft een maximale ontlaadstroom van 7 A bij 3,7 V, maar gezien de step-up conversie naar 10-12 V zou de ontlaadstroom hoger moeten zijn om het maximale vermogen van de Peltier-module te behouden. Aangezien de batterij zelfbeschermende circuits bevat die de output afsnijden in geval van overbelasting, kan het systeem niet functioneren als het koel-/verwarmingssysteem probeert een stroom te trekken die groter is dan de maximale nominale waarde. Bij gebruik via de batterij wordt het stroomverbruik door de software beperkt tot een veilig niveau. Deze beperking is puur te wijten aan de batterij die hier wordt gebruikt, en batterijen met een hogere ontlading zijn overal verkrijgbaar. Als alternatief zou een Li-ionbatterij met 3 cellen in serie en een nominale spanning van 11,1 V het probleem oplossen en ook de noodzaak voor een step-up DC-converter elimineren.
Toekomstige richtingen
In de huidige ontwikkelingsfase kan ons apparaat niet worden verzonden, voornamelijk vanwege de grootte en bewegende delen van de CPU-koeler en de robuustheid van de constructie. Zodra het koellichaam echter is vervangen door een passief koelsysteem en een secundaire verpakking van 95k Pa wordt gebruikt, kan de heer ThermoParcel in een geschikte, stevige container worden geplaatst voor veilig transport, waarbij wordt voldaan aan alle vereisten van standaardkoeriers voor het verzenden van monsters per vliegtuig en alle ander vervoermiddel.
Met het kerndoel van het bereikte, zouden andere componenten kunnen worden toegevoegd om de functionaliteit van het apparaat uit te breiden. Het temperatuurprofiel tijdens transport kan worden opgeslagen in een lokaal geheugen voor latere verificatie, of met regelmatige tussenpozen rechtstreeks naar de gebruiker worden verzonden via sms met behulp van een GSM Arduino-module. Er kan ook een GPS-ontvanger worden meegeleverd voor het onafhankelijk volgen van pakketten en het tijdig ophalen bij aflevering.
Code
- PID_LCD_controller_v03
PID_LCD_controller_v03Arduino
Arduino-code om verbinding te maken met de modules die door de heer ThermoParcel worden gebruikt, de PID-controller uit te voeren, informatie op het LCD-paneel weer te geven en gebruikersinvoer te ontvangen.#include// import PT100 temperatuursensorbibliotheek#include // importeer digitale potentiometerbibliotheek#include // importeer LCD-scherm &knoppen schildbibliotheek#include // importeer I2C-uitbreidingsbibliotheek#include // Instellen digitale potentiometerMCP41_Eenvoudige digitale potentiometer; // maak een digitale potentiometer objectconst uint8_t digitalPotentiometer_CS =10;// Instellen van PT100 temperatuursensor// Gebruik software SPI voor PT100 temperatuursensor:CS, DI, DO, CLKAdafruit_MAX31865 PT100amplifier =Adafruit_MAX31865(2, 3, 4, 5);// Ingestelde waarde van de Rref-weerstand. Gebruik 430.0 voor PT100 temperatuursensor.#define RREF 430.0// Nominale 0-graden-C weerstand van de sensor, 100.0ohm voor PT100#define RNOMINAL 100.0// Instellen van LCD scherm schild met knoppenAdafruit_RGBLCDShield LCD_shield =Adafruit_RGBLCDShield();//# definieer UIT 0x0 // AAN- en UIT-statussen kunnen worden gebruikt om de LCD-achtergrondverlichting in of uit te schakelen//#define ON 0x1void setup() { Serial.begin(115200); Serial.println("Meneer ThermoParcel, start operatie..."); PT100versterker.begin(MAX31865_4WIRE); // stel indien nodig in op 2WIRE of 4WIRE, in dit geval 4-draads RTD // Initialiseer digitale potentiometer digitalPotentiometer.begin(digitalPotentiometer_CS); // Stel de wisser in op een willekeurig punt tussen 0 en 255 digitalPotentiometer.setWiper (200); // Initialiseer LCD-schermscherm // stel het aantal kolommen en rijen van het LCD-scherm in:LCD_shield.begin (16, 2); // stel instelpunt en gemeten T-tekst in op LCD met de juiste afstanden LCD_shield.print ("Tsetpoint:C"); LCD_shield.setCursor (0, 1); LCD_shield.print ("Tsample:C");}// Initialiseer PID-constanten, temperatuurgerelateerde variabelen en schildknopwaarde in powerMode =1; // powerMode=1 voor batterijvermogen, powerMode=-1 voor netvoeding; gebruikt om overbelasting van de batterij te voorkomen. operatieMode =1; // operationMode=1 voor koeling, operationMode=-1 voor verwarming; gebruikt om teken van PID-termenfloat PT100ratio te corrigeren; // Definieer de variabele weerstandsverhouding voor PT100 sensoruint8_t buttons Pressed =0;float kp =500,0; //; intki =5; int kd =3.9;float PID_p =0.0; // int PID_i =0; int PID_d =0;float Tmeasured =-1,0;float Tsetpoint =22,0; // Begin rond kamertemperatuur float PID_error =5; float PID_value =0;// Definieer print_Tsetpoint-functie om het temperatuursetpoint correct af te drukken op het LCD-schermstatic char TsetpointString [3]; void print_Tsetpoint (int T) { // Print Tsetpoint in de juiste plaats LCD_shield.setCursor (10, 0); dtostrf(T, 3, 0, TsetpointString); LCD_shield.print(TsetpointString);}// Definieer print_Tmeasured-functie om de gemeten temperatuur correct af te drukken op het LCD-schermstatic char TmeasuredString[4];void print_Tmeasured(float T) { // Print Tmeasured op de juiste plaats LCD_shield.setCursor(8, 1); dtostrf(T, 5, 1, TmeasuredString); LCD_shield.print(TmeasuredString);}// Definieer de functie print_powerMode om de energiemodus (B, batterij; M, netspanning) nietig print_powerMode() { LCD_shield.setCursor (15, 0); if (powerMode ==1) { LCD_shield.print("B"); } else if (powerMode ==-1) { LCD_shield.print("M"); }}// Definieer de functie print_operationMode om de energiemodus correct af te drukken (C, Peltier-koeler; H, verwarmingsmat) void print_operationMode() { LCD_shield.setCursor (15, 1); if (operationMode ==1) { LCD_shield.print("C"); } else if (operationMode ==-1) { LCD_shield.print("H"); }}// *** hoofdlus *** ongeldige lus () { // Lees temperatuur uint16_t rtd =PT100amplifier.readRTD (); PT100-verhouding =rtd; PT100-verhouding /=32768; Tmeasured =PT100amplifier.temperatuur (RNOMINAL, RREF); Serial.print("Ingestelde temperatuur ="); Serial.println(Tsetpoint); Serial.print("Temperatuur ="); Serial.println (gemeten); // Print temperatuurwaarden en modi print_Tsetpoint (Tsetpoint); print_Tmeasured (Tmeasured); print_powerMode(); print_operationMode(); // Bereken de fout tussen setpoint en gemeten waarde PID_error =Tmeasured - Tsetpoint; // Bereken de P-waarde PID_p =operationsMode * kp * PID_error; // Bereken de totale PID-waarde, indien boven het maximum (255), houd het op 255, indien onder het minimum (0) houd het op 0 PID_value =(int) PID_p; //+ PID_i + PID_d; Serial.print("PID_p ="); Serieel.println(PID_p); Serial.print("powerMode ="); Serial.println(powerMode); Serial.print("operationMode ="); Serial.println(operationMode); Serial.print("PID_error ="); Serial.println(PID_error); Serial.print("PID_value ="); Serial.println(PID_waarde); // Indien in batterijmodus (powerMode=1) beperk de output om overbelasting van de batterij te voorkomen // Indien in netvoedingsmodus (powerMode=-1) volledig vermogen toestaan (255) if (powerMode ==1) { if (PID_value <0) { PID_waarde =0; } if (PID_value> 120) { PID_value =120; } } else if (powerMode ==-1) { if (PID_value <0) { PID_value =0; } if (PID_value> 255) { PID_value =255; } } Serial.print("Aangepaste PID_waarde ="); Serial.println(PID_waarde); // Stel digitale potentiometerweerstand in van PID-waarde digitalPotentiometer.setWiper (255 - PID_value); // Detecteer alle ingedrukte knoppen, wijzig indien nodig de instelwaarde en toon gemeten en instelpunt T // delay() functie-oproepen zorgen ervoor dat er voldoende tijd wordt gegeven om op de knoppen te drukken en de waarden te zien veranderen vertraging (1000); buttonsPressed =LCD_shield.readButtons(); if (buttonsPressed &BUTTON_SELECT) { // Markeer dat systeem in de bewerkingsmodus door met de cursor te knipperen LCD_shield.setCursor (14, 0); LCD_shield.blink(); vertraging (1000); knoppen ingedrukt =0; // Blijf in de bewerkingsmodus totdat de SELECT-knop opnieuw wordt ingedrukt. Knoppen UP en DOWN veranderen Tsetpoint. // LINKS schakelt tussen bedrijfsmodus (verwarmen/koelen). RECHTS schakelt tussen de stroommodus (batterij/netspanning). while (niet (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_operationMode(); } print_Tsetpoint(Tsetpoint); LCD_shield.setCursor (14, 0); vertraging (500); } // Sluit de bewerkingsmodus af en stop met knipperende cursor LCD_shield.noBlink(); knoppen ingedrukt =0; } Serieel.println();}
Schema's
Schematisch schakelschema met alle hoofdcomponenten van onze temperatuurgecontroleerde container. Bekabelingsschema aangevraagd door een andere gebruiker van de community. Het is degene die we hebben gebruikt om de bedrading te monteren, dus het is lelijk en was nooit bedoeld voor publicatie! Maar misschien kan het nuttig zijn. Bedrading van de potentiometer naar andere componenten.Productieproces
- Temperatuurgestuurde ventilator
- DIY:temperatuurbewaking en -regeling voor HomeBrew
- Temperatuurmeting voor laboratorium- en wetenschappelijke projecten
- Beste metalen voor warmtegeleiding
- Hoe de warmteafvoer voor VFD's te berekenen
- PCB-laminaten op hoge temperatuur
- PCB-temperatuurgids:
- Warmtebehandeling voor aluminium gietstukken
- Legering 36 (Invar®) Legering met gecontroleerde expansie
- Warmtebehandelingsproces voor CNC-gefreesde metalen onderdelen
- Container bouwt voor arm op x86