Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Präzisions-Temperaturcontainer für Probenversand mit PT100 & Arduino UNO

Komponenten & Zubehör

Bauteil Anzahl Hinweise
PT100 Temperatursensor (RTD) 1
Arduino UNO 1
Lithium-Ionen-Akku 1 10.400 mAh
Polystyrol-Box (Isolierbox) 1 Recycelt, ca. 250×250×250 mm, Wandstärke 45 mm
Kupferblöcke 2 ca. 80×50×10 mm, für Kühlkörper & Peltier-Aufnahme, mit Bohrungen für Heatpipes
Einstellbares Boost-Netzteil-Modul (ULS) 1
Heatpipe-Kühler (CPU-Kühler) 1
Digitalpotentiometer (MCP41100) 1 100 kΩ
„Magic Gel“ (therm. Leitgel) 1 Für besseren Wärmeübergang zu den Proben
DC-DC-Wandler (XL6019 Step-Up) 1
Peltier-Modul (TEC) 1 3,9 A / 7,6 V max.
Kondensator 3,3 µF 1
Heatpipes 3 Kupfer, für Wärmeableitung nach außen
Netzteil für Netzstrom 1 12 V DC
DC-Verteiler (Splitter) 1
Adafruit RGB LCD Shield (16×2) 1 Mit Tasten
Heizmatte 1 Zum Heizen der Proben
Klemmblöcke (3- & 5-polig) je 1
Hook & Loop DualLock Klettband 1
Adafruit Proto-Screwshield 1 Für sichere Schraubklemmen am Arduino
Adafruit Li-Ion USB-Ladegerät 1
Adafruit MAX31865 PT100 Verstärker 1 Für 4-Leiter-Messung
Schalter (4-polig, 2-polig) je 1 Für Betriebsart (Heizen/Kühlen) & Stromquelle (Netz/Akku)
Gehäuse (Kunststoff) für Elektronik 1 Extern
Panel-Mount DC-Buchse 1

Benötigte Werkzeuge

Software & Bibliotheken

Projektübersicht: „Mr ThermoParcel“

Ziel: Entwicklung eines temperaturgeführten Containers für den sicheren Versand temperatursensibler biologischer Proben (z. B. Blutproben für Malariaforschung) per Standard-Postdienst. Der Prototyp hält Temperaturen von 4–37 °C und kann über Netzteil, internen Akku oder 12 V Quellen (Kfz-Zigarettenanzünder, Laptop-Netzteil) betrieben werden.

Hintergrund

Der Versand gefrorener Proben ist teuer, erfordert spezielle Kuriere und das Auftauen beschädigt die Proben. Zudem kommen Pakete an Universitäten oft verspätet und unter ungeeigneten Bedingungen an. „Mr ThermoParcel“ löst dieses Problem durch aktive Temperaturregelung in einer Standard-Polystyrolbox.

Designkonzept

Mechanischer Aufbau

Die äußere Polystyrolbox (250³ mm, 45 mm Wand) enthält eine innere Kunststoffbox (125×70×40 mm) mit zwei 50 ml Zentrifugenröhrchen als Sekundärverpackung (UN3373 konform). Primärproben: sechs 2 ml Eppendorf-Röhrchen, getrennt durch Saugvlies. Zur Verbesserung der thermischen Kopplung und Gleichmäßigkeit wird das Innere mit elektrisch isolierendem, aushärtendem Gel („Magic Gel“) aufgefüllt, in das die Proben, der PT100-Sensor und die Heizmatte eingebettet sind.

Elektronik & Verdrahtung

Kühl-/Heizregelung

Der PTN78020W regelt die Spannung für Peltier (Kühlung) bzw. Heizmatte (Heizung). Da der Regelbereich des PTN78020W einen Widerstandsbereich > 1 MΩ erfordert, das MCP41100 aber nur 100 kΩ bietet, kann der Peltier nicht rein über das Potentiometer abgeschaltet werden – ein Hardware-Schalter (Toggle) trennt die Last physisch (Peltier vs. Heizmatte). Die Software unterscheidet entsprechend zwischen Heiz- und Kühlmodus (Vorzeichen der PID-Ausgabe).

Stromversorgung

Arduino-Verdrahtung

Software (PID-Regler)

Der Arduino-Sketch (PID_LCD_controller_v03) initialisiert alle Module, liest zyklisch die Temperatur (ca. alle 1 s), berechnet den PID-Wert (nur P-Anteil, kp=500), begrenzt die Ausgabe je nach Stromquelle (Akku: max 120, Netz: max 255) und steuert das Digitalpotentiometer. Über die LCD-Tasten kann der Sollwert (1 °C Schritte), der Betriebsmodus (Heizen/Kühlen) und die Stromquelle umgeschaltet werden. Serielle Debug-Ausgaben dokumentieren alle Größen.

Leistung & Ergebnisse

Betriebsart Kühlung auf 4 °C (von 21–23 °C) Heizung auf 37 °C (von RT) Genauigkeit
Netzbetrieb ~1 h (8–10 °C in 20 min) ~10 min ±0,5 °C
Akkubetrieb ~1,5–2 h (nur bis ~10 °C möglich) 40–60 min ±0,5 °C (bei reduzierter Leistung)

Die Limitation im Akkubetrieb resultiert aus dem maximalen Entladestrom (7 A @ 3,7 V) und dem Wirkungsgrad des Step-Up-Wandlers. Ein 3S-Li-Ion-Akku (11,1 V) würde das Problem lösen und den Step-Up überflüssig machen.

Zukünftige Erweiterungen

Arduino-Code (PID_LCD_controller_v03)

#include <Adafruit_MAX31865.h>
#include <MCP41_Simple.h>
#include <Adafruit_RGBLCDShield.h>
#include <utility/Adafruit_MCP23017.h>
#include <Wire.h>

MCP41_Simple digitalPotentiometer;
const uint8_t digitalPotentiometer_CS = 10;
Adafruit_MAX31865 PT100amplifier = Adafruit_MAX31865(2, 3, 4, 5);
#define RREF 430.0
#define RNOMINAL 100.0
Adafruit_RGBLCDShield LCD_shield = Adafruit_RGBLCDShield();

int powerMode = 1;      // 1 = Battery, -1 = Mains
int operationMode = 1;  // 1 = Cooling, -1 = Heating
float PT100ratio;
uint8_t buttonsPressed = 0;
float kp = 500.0;
float PID_p = 0.0;
float Tmeasured = -1.0;
float Tsetpoint = 22.0;
float PID_error = 5;
float PID_value = 0;
static char TsetpointString[3];
static char TmeasuredString[4];

void setup() {
  Serial.begin(115200);
  Serial.println("Mr ThermoParcel, starting operation...");
  PT100amplifier.begin(MAX31865_4WIRE);
  digitalPotentiometer.begin(digitalPotentiometer_CS);
  digitalPotentiometer.setWiper(200);
  LCD_shield.begin(16, 2);
  LCD_shield.print("Tsetpoint: C");
  LCD_shield.setCursor(0, 1);
  LCD_shield.print("Tsample: C");
}

void print_Tsetpoint(int T) {
  LCD_shield.setCursor(10, 0);
  dtostrf(T, 3, 0, TsetpointString);
  LCD_shield.print(TsetpointString);
}
void print_Tmeasured(float T) {
  LCD_shield.setCursor(8, 1);
  dtostrf(T, 5, 1, TmeasuredString);
  LCD_shield.print(TmeasuredString);
}
void print_powerMode() {
  LCD_shield.setCursor(15, 0);
  LCD_shield.print(powerMode == 1 ? "B" : "M");
}
void print_operationMode() {
  LCD_shield.setCursor(15, 1);
  LCD_shield.print(operationMode == 1 ? "C" : "H");
}

void loop() {
  uint16_t rtd = PT100amplifier.readRTD();
  PT100ratio = rtd / 32768.0;
  Tmeasured = PT100amplifier.temperature(RNOMINAL, RREF);

  Serial.print("Setpoint Temperature = "); Serial.println(Tsetpoint);
  Serial.print("Temperature = "); Serial.println(Tmeasured);

  print_Tsetpoint((int)Tsetpoint);
  print_Tmeasured(Tmeasured);
  print_powerMode();
  print_operationMode();

  PID_error = Tmeasured - Tsetpoint;
  PID_p = operationMode * kp * PID_error;
  PID_value = PID_p;

  if (powerMode == 1) { // Battery
    PID_value = constrain(PID_value, 0, 120);
  } else { // Mains
    PID_value = constrain(PID_value, 0, 255);
  }

  digitalPotentiometer.setWiper(255 - (int)PID_value);

  delay(1000);
  buttonsPressed = LCD_shield.readButtons();
  if (buttonsPressed & BUTTON_SELECT) {
    LCD_shield.setCursor(14, 0);
    LCD_shield.blink();
    delay(1000);
    buttonsPressed = 0;
    while (!(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((int)Tsetpoint);
      LCD_shield.setCursor(14, 0);
      delay(500);
    }
    LCD_shield.noBlink();
  }
  Serial.println();
}

Schaltpläne

Im Repository finden Sie:

Herstellungsprozess

  1. Temperaturgesteuerter Lüfter: DIY Relais-System für Medienmöbel-Kühlung
  2. DIY Heimbrau-Temperaturregelung: Überwachen & Steuern mit Arduino
  3. Präzise Thermoelement-Messung & Logging für Labor & Wissenschaftsexperimente
  4. Top wärmeleitende Metalle & ihre Anwendungen – Ein praktischer Leitfaden
  5. Wärmeableitung von Frequenzumrichtern (VFD) präzise berechnen
  6. High-Temperature PCB-Laminate wählen für zuverlässige Performance
  7. Umfassender Leitfaden zum PCB-Temperaturmanagement
  8. Präzisions-Wärmebehandlung für Aluminiumguss: Festigkeit & Duktilität steigern
  9. Legierung 36 (Invar®): Präzisions-Nickel-Eisen-Legierung mit Nahezu Nullexpansion
  10. Wärmebehandlung für CNC-gefertigte Metallkomponenten optimieren