Ausgänge dauerhaft HIGH

Ich habe momentan ein paar probleme mit meinem ersten arduino Projekt

Ich hab einen Arduino nano der ein paar Relais temperaturabhängig im Auto steurn soll. diese wiederum steuern einen Lüfter und eine Pumpe für meinen Wasser Ladeluft Kühler.

Nun hab ich das Problem das mein Programm de Eingänge die ich definiere dauerhaft HIGH schalten.

vielleicht findet ja Jemand was ich falsch gemacht habe

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIE_BUS 2

OneWire ourWire(ONE_WIRE_BUS); 

DallasTemperature sensors(&ourWire);

int TemperaturLLK = 0;
int TemperaturMotor = 0;
int LuefterLLK = 7;
int PumpeLLK = 5;
boolean LLKcool1;
boolean LLKcool2;
boolean MotorAn;

void setup()
{

pinMode(LuefterLLK,OUTPUT);
pinMode(PumpeLLK,OUTPUT);
LLKcool1 = false;
LLKcool2 = false;
MotorAn = false;
digitalWrite(LuefterLLK, LOW);
digitalWrite(PumpeLLK, LOW);

delay(1000);
Serial.begin(9600);


sensors.begin();/* Inizialisieren der Dallas Temperature library */

adresseAusgeben(); /* Adresse der Devices ausgeben */
Serial.println();
Serial.print("Starte Temperatur abfragen ...");
Serial.println();
}

void loop()
{
Serial.println();

sensors.requestTemperatures(); // Temp abfragen
TemperaturLLK = sensors.getTempCByIndex(0);
TemperaturMotor = sensors.getTempCByIndex(1);

Serial.print("Wasser LLK ");
Serial.print(TemperaturLLK);
Serial.println(" Grad Celsius");
Serial.print("Wasser Motor ");
Serial.print(TemperaturMotor);
Serial.println(" Grad Celsius");
{
if(TemperaturMotor > 50){
    MotorAn = true;
    }
}
{
if(TemperaturMotor  < 50){
    MotorAn = false;
    }
}
{
if(TemperaturLLK > 13 + 2){
    LLKcool1 = true;
    Serial.println("LLKool1 true"); 
    }
if(TemperaturLLK  < 13 - 2){
    LLKcool1 = false;
    Serial.println("LLKool1 false"); 
    }
}
{
if(TemperaturLLK > 25 + 2){
    LLKcool2 = true;
    Serial.println("LLKool2 true"); 
    }
if(TemperaturLLK  < 25 - 2){
    LLKcool2 = false;
    Serial.println("LLKool2 false"); 
}
}
{
if ((LLKcool1 == true) && (MotorAn == true))
   { 
   // digitalWrite(PumpeLLK, HIGH);
    Serial.println("Kuehlung 1 AN"); 
    }
else 
   { 
   // digitalWrite(PumpeLLK, LOW);
   Serial.println("Kuehlung 1 AUS"); 
   }
}
{
if (LLKcool2 == true)
    { 
    // digitalWrite(PumpeLLK, HIGH);
    Serial.println("Kuehlung 2 AN"); 
    }
else
    { 
    // digitalWrite(PumpeLLK, LOW);
    Serial.println("Kuehlung 2 AUS"); 
    }
}
Serial.println();
delay (3000);


}
void adresseAusgeben(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Suche 1-Wire-Devices...\n\r");// "\n\r" is NewLine 
  while(ourWire.search(addr)) {
    Serial.print("\n\r\n\r1-Wire-Device gefunden mit Adresse:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  ourWire.reset_search();
  return;

}

Leider ist dein Sketch schwer lesbar.
Setze den bitte in Code-Tags und nicht in Quote-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Kode-Tags wären besser gewesen als Quote-Tags.

Viele Relaisboard schalten bei LOW ein und bei HIGH aus,
könnte es schon das sein?

Whandall:
Kode-Tags wären besser gewesen als Quote-Tags.

Viele Relaisboard schalten bei LOW ein und bei HIGH aus,
könnte es schon das sein?

leider nein
ich kann an den Ausgängen die ich im sketch definiere ja 5v messen aber leider direkt sobald ich das sketch aufspiele

ins85:
ich kann an den Ausgängen die ich im sketch definiere ja 5v messen aber leider direkt sobald ich das sketch aufspiele

Und das obwohl du diese im Setup auf "LOW" setzt ?

Und du bist sicher, das es die Pins D5 und D7 sind, nicht wie manches mal fälschlich die Pin Nummer genommen wird.

Der obige Sketch kann keine 5V auf den Pins LuefterLLK oder PumpeLLK erzeugen.
(wenn man vom Einschaltmonent absieht, bevor der PinMode gesetzt wird)

Oder versehentlich an A5 und A7 (a wie Ausgang) angeschlossen ?

ins85:
Ich habe momentan ein paar probleme mit meinem ersten arduino Projekt

Ich hab einen Arduino nano der ein paar Relais temperaturabhängig im Auto steurn soll. diese wiederum steuern einen Lüfter und eine Pumpe für meinen Wasser Ladeluft Kühler.

Nun hab ich das Problem das mein Programm de Eingänge die ich definiere dauerhaft HIGH schalten.

vielleicht findet ja Jemand was ich falsch gemacht habe

Vielleicht verwendest Du für den Temperatursensor eine Library ohne Fehlerbehandlung? Und Du selbst scheinst im Programm auch überhaupt keine Fehlerbehandlung zu haben.

Die Dallas-Temperatursensoren sind dafür bekannt, dass sie bei fehlerhaft funktionierender Hardware zusammen mit manchen Libraries fehlerhafte Werte statt Fehlermeldungen produzieren.

Oft führen beispielsweise eine fehlerhafte Schaltung, eine fehlerhafte Stromversorgung, oder "lektromagnetische Störungen dazu, dass unbedarfte und ahnungslose Arduino-Neulinge mit solchen Sensoren dauerhaft Temperaturen von beispielsweise "+85"C" oder "-127°C" messen".

Das sind allerdings keine echten Messwerte, sondern Fehlerwerte des Sensors, die in Form von unsinnigen Temperaturen geliefert werden und im Datenblatt auch dokumentiert sind.

Kannst Du das bei Deinem Programm ausschließen, dass das beobachtete Schaltverhalten darauf zurückzuführen ist, dass der Sensor "gemessene" Temperaturen von entweder minus 127 Grad oder plus 85 Grad zurückliefert?

In dem Fall müßtest Du nämlich zuerst mal Deine Hardware prüfen, und dann die Fehlerbehandlung in der Library und in Deinem Programm.

Ich bin mir zu 100% sicher das meine Relais an den richtigen pins (D5 &D7) angeschlossen sind.

Schalten tun die Relais auch richtig.
Wenn der Arduino stromlos ist fallen die Relais ab und nach dem "Bootvorgang" des Arduiono ziehen sie sofort wieder an.

Das meine Temperatur sensoren passende werte ausgeben kann ich online auch überprüfen und die Temperaturen sind im plausiblen Bereich.

Aber wenn ich die Schaltpunkte in meinem Programm so anpasse das die Ausgänge nicht geschaltet sein dürfen, und auch meine Prüf Variablen (die ich auf dem
seriellen Monitor ja ausgebe) "false" sind, schalten die ausgänge trotzdem auf high.

Im obenliegenden Programmauszug habe ich ja sogar die schaltung der Ausgänge auskommentiert und im
Setup teil auf false gesetzt. Trotzdem schalten die Ausgänge D5&7 auf HIGH.

Was passiert denn, wenn du die Kabel der Relais nach dem Bootvoorgang abziehst ?
Hast du mal die Spannung am Ausgangspin gemessen, wenn das Relais anzieht ?

Wenn dein Sketch so wie gepostet aussieht, liegt es nicht an dem.
Dann mustt du ein Problem in deiner Hardware haben.
Und das können wir nicht sehen nur raten.

bist du sicher, dass das:

#define ONE_WIE_BUS 2

OneWire ourWire(ONE_WIRE_BUS);

richtig ist?

ardubu:
bist du sicher, dass das: richtig ist?

Ganz ehrlich das hab ich aus dem
beispiel übernommen.
Und da ich kriege plausible sich logisch erklärbar verändernde Temperaturwerte über die serielle ausgabe zurück kriege gehe ich davon aus das das richtig ist

mach aus

#define ONE_WIE_BUS 2

mal#define ONE_WIRE_BUS 2

Würdest du bitte auch meine Fragen in Post #9 beantworten.

HotSystems:
Würdest du bitte auch meine Fragen in Post #9 beantworten.

Sorry vollkommen überlesen.

Kabel abstecken gestaltet dich schwierig ist ne gelötete platine
Ich bau das ganze gleich aber nochmal mit nem breadboard und nem UNO nach.

Spannung an D5&7 ist ziemlich genau 5v sobald das relais anzieht

ins85:
Sorry vollkommen überlesen.

Kabel abstecken gestaltet dich schwierig ist ne gelötete platine
Ich bau das ganze gleich aber nochmal mit nem breadboard und nem UNO nach.

Spannung an D5&7 ist ziemlich genau 5v sobald das relais anzieht

Was hast du denn da für Relais drauf und wie steuerst du die an ?
Langsam wird es unverständlich.

Ein Schaltbild ist da hilfreich.

Fehler gefunden war ein billiges China 2x Relais das quasi Rüchgespeist hat. Neues 2fach relais Modul(anderes Fabrikat) genommen funktioniert. Das schaltet übrigens auf Masse

Jetzt habe ich allerdings das Problem das die Ausgänge 5&7 bei jeweilig erfüllter Bedingung quasi Pulsen.
Könnte noch mal einer über das Sketch gucken warum das so ist

Wie rückgespeist.
Dann hätte das Relais ja ständig angezogen sein müssen.

Und in deinem Sketch sind die Ausgänge deaktiviert, daran kann es nicht liegen.
Oder hälst du etwas zurück ?

Wie geagt anderes 2fach Modul genommen geht.

Jetzt pulst er den Ausgang halt nur?

Verhält sich ein Arduino gleich wie eine SPS ? Bleit ein gesetzter Ausgang quasi einen Zyklus gesetzt ?

Was meinst du mit "rückgespeist" ?
Und NEIN, der Arduino verhält sich so, wie du ihn programmierst.