Serial Monitor Probleme Luftfeuchtigkeit und Temperatur im Terrarium steuern

Hallo,
Ich regel die Temperatur und die Luftfeuchtigkeit Im Terrarium über ein Arduino UNO ,einem DHT 11 Sensor und einem 4 Kanal 5V Relay Module TTL-Logik (Amazon) um einen Abluftventilator und einen Luftbefeuchter zu schalten.
Da ich ein neuling in diesem Gebiet bin habe ich mich die letzten 3 Wochen mit dem Thema beschäftigt. Nun Bin ich so weit das alles Funktioniert nur ein Problem Bleibt. Da ich aus Verschiedenen Programmen ein Progamm zusammen gestellt habe denke ich das ich einen Fehler im Programm habe .

Das Problem ist folgendes ich möchte des Arduino Bord über ein Netzteil betreiben und die Relays ebenfalls mit einem 2. Netzteil.
Dies Funktioniert auch so lange bis ich den USB in den Laptop stecke und den Serial Monitor öffnen möchte ,um die MAX/MiN Temperatur und MAX/MIN Luftfeuchtigkeit auszulesen. in dem Moment wenn ich auf dem Serial Monitor Klicke hängt sich das Arduino Bord auf. Ziehe ich die Stecker des Luftbefeuchters und des Ventilators funktioniert es und ich sehe alle werte dann kann ich beide Stecker wieder in die steckdose stecken und es läuft alles einwandfrei dies bringt mir leider nicht viel da ich die max min werte ja nur so lange angezeigt bekomme wie ich den Laptop angeschlossen habe . Hoffe ihr Könnt mir helfen

#include "DHT.h"
int luftbefeuchter= 6;
int ventilatorabluft=4;
int temp,maxtemp,mintemp = 0;
int hum,maxhum,minhum = 0;
unsigned long time = 0;
#define DHTPIN 2
#define luftbefeuchterPIN 6
#define ventilatorabluftPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

void setup() {
   Serial.begin(9600); 
  Serial.println("Terrarium!");
  pinMode (luftbefeuchter,OUTPUT);
  digitalWrite(luftbefeuchter,LOW);
  pinMode (ventilatorabluft,OUTPUT);
  digitalWrite(ventilatorabluft,LOW);
 

  maxtemp=temp;
  mintemp=temp;
  maxhum = hum;
  minhum = hum; 
  dht.begin();


  time = millis();

}

void loop() {
  if ( millis() - time  > 1000 ) {
    time = millis();
    Serial.print("reading time :");
    Serial.println( (millis() / 1000));
  }
  float hum = dht.readHumidity();
  float temp = dht.readTemperature();

  if ( temp > maxtemp ) maxtemp = temp;
  if ( temp < mintemp ) mintemp = temp;
  if ( hum > maxhum ) maxhum = hum;
  if ( hum < minhum ) minhum = hum;






  if (hum < 60)
  {
    digitalWrite(luftbefeuchter,HIGH);
  }
  if (hum > 65)
  {
    digitalWrite(luftbefeuchter,LOW);
  }

  if (temp > 30)
  {
    digitalWrite(ventilatorabluft,HIGH);
  }
  if (temp < 27)
  {
    digitalWrite(ventilatorabluft,LOW);
  }



  if ( millis() - time  > 1000 ) {
    time = millis();
  }

  if (isnan(temp) || isnan(hum)){
    Serial.println("Failed to read from DHT");
  } 
  else 
  {
    Serial.print("Luftfeuchtigkeit: "); 
    Serial.print(hum);
    Serial.print(" %\t");
    Serial.print("MAX:");    
    Serial.print(maxhum);
    Serial.print(" %  ");
    Serial.print("MIN: ");
    Serial.print(minhum);
    Serial.print(" %\t     ");

    Serial.print("Temperatur: "); 
    Serial.print(temp);
    Serial.print(" *C\t  ");
    Serial.print("MAX:");
    Serial.print(maxtemp);
    Serial.print(" *C  ");
    Serial.print("MIN: ");
    Serial.print(mintemp);
    Serial.println(" *C");

  }
}