Einschaltautomatik

Hallo zusammen,

nach Stunden des einlesens und testen verschiedener Programmierungen,
hab ich heute meine Einschaltautomatik fertiggestellt.

Jetzt ist mir allerdings etwas aufgefallen was mir nicht passt.

Hier ein kleiner Auszug aus dem Programm

pinMode(11, OUTPUT); // Relay Steuer
pinMode(10, OUTPUT); // Relay 5V
pinMode(12, OUTPUT); // Relay GRND
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(10, HIGH);

Problem an der Sache ist, das Relais schaltet nicht wenn ich es an PIN 12 Grounde.
Benutze ich statt PIN12 das GND des Arduinos, geht es...

Fehlt mir hier etwas bzw. hab ich was falsch gemacht?

Die Idee war bzw. wurde wie folgt umgesetzt.

Steckdose 1 an der ein Sauger angeschlossen ist, steckt am Relais
Steckdose 2 an der das Gerät angeschlossen wird bei welchem Steckdose 1 schalten soll, wird mit einem Strommesser überwacht.
Zusätzlich hab ich noch einen Knopf programmiert mit dem ich die Steckdose 1 auch von Hand schalten kann.

Einschaltuatomatik.png

Gibt es die Beschreibung auch in verständlich? Das klingt etwas sehr wirr.

Was verstehst Du unter Relay Steuer, Relay 5V, Relay GRND?

Welches Relais benutzt Du (Link bitte) und wie hast Du es geschaltet?

Gruß Tommy

Hallo,

Deine Schaltung ist leider falsch. Ein I/O Pin hat ein max. 20mA. Der 5v Pin und der generelle GND (Masse) Pin sind dafür gedacht, die können weit mehr Strom zu verfügung stellen (>500mA) (über USB ca. 450mA).

Die Signalleitung des Strommessgerät gehört einzeln an einen Analogen Eingang angeschlossen (zB: A0).
Ein Relais schließt man typischer Weiße so an: Schaltung von Google.

Die I/O Pins (also die Digitalen Pins und Analogen Pins) sind eigentlich nicht für die Stromversorgung anderer Schaltungen ausgelegt, auch wenn sie es können, sie liefern viel zu wenig Strom.

Poste bitte Dein ganzen Sketch in Codetages (</>).

Grüße,
Donny
Nachtrag: Bild des TO:
b425f3eafa71dee58918dd9232db41b5864221b9.png

Mist, dabei wollte ich es doch verständlich schreiben =9

Das ist das Relais

der Stromsensor ist an A0 sowie 5V und GND angeschlossen aber hier der Sketch komplett

float gfLineVoltage = 235.0f;               // typical effective Voltage in Germany
float gfACS712_Factor = 50.0f;              // use 50.0f for 20A version, 75.76f for 30A version; 27.03f for 5A version
unsigned long gulSamplePeriod_us = 1000000;  // 100ms is 5 cycles at 50Hz and 6 cycles at 60Hz
int giADCOffset = 512;   
int Button = 3;
int Buttonactive = 0;
int Buttontime = 0;
// initial digital zero of the arduino input from ACS712

void setup()
{
 Serial.begin(9600);
 Serial.println("Precise AC Current Measurement with ACS712 - Stefan Thesen 09/2016");
 pinMode(11, OUTPUT);     // Relay Steuer
 pinMode(10, OUTPUT);     // Relay 5V
 pinMode(12, OUTPUT);     // Relay GRND
 digitalWrite(11, LOW);
 digitalWrite(12, LOW);
 digitalWrite(10, HIGH);
 pinMode(Button,INPUT_PULLUP);    // Knopf
}

void loop()
{

  if (digitalRead(Button) == LOW)
  { 
    Buttontime = Buttontime + 1;
  }
    if ((Buttontime >= 2) && (Buttontime < 4))
      { digitalWrite(11, HIGH);
      }
        if (Buttontime >= 4)
          { digitalWrite(11, LOW);
            Buttontime = 0;
          }
 long lNoSamples=0;
 long lCurrentSumSQ = 0;
 long lCurrentSum=0;

  // set-up ADC
  ADCSRA = 0x87;  // turn on adc, adc-freq = 1/128 of CPU ; keep in min: adc converseion takes 13 ADC clock cycles
  ADMUX = 0x40;   // internal 5V reference

  // 1st sample is slower due to datasheet - so we spoil it
  ADCSRA |= (1 << ADSC);
  while (!(ADCSRA & 0x10));
  
  // sample loop - with inital parameters, we will get approx 800 values in 100ms
  unsigned long ulEndMicros = micros()+gulSamplePeriod_us;
  while(micros()<ulEndMicros)
  {
    // start sampling and wait for result
    ADCSRA |= (1 << ADSC);
    while (!(ADCSRA & 0x10));
    
    // make sure that we read ADCL 1st
    long lValue = ADCL; 
    lValue += (ADCH << 8);
    lValue -= giADCOffset;

    lCurrentSum += lValue;
    lCurrentSumSQ += lValue*lValue;
    lNoSamples++;
  }
  
  // stop sampling
  ADCSRA = 0x00;

  if (lNoSamples>0)  // if no samples, micros did run over
  {  
    // correct quadradic current sum for offset: Sum((i(t)+o)^2) = Sum(i(t)^2) + 2*o*Sum(i(t)) + o^2*NoSamples
    // sum should be zero as we have sampled 5 cycles at 50Hz (or 6 at 60Hz)
    float fOffset = (float)lCurrentSum/lNoSamples;
    lCurrentSumSQ -= 2*fOffset*lCurrentSum + fOffset*fOffset*lNoSamples;
    if (lCurrentSumSQ<0) {lCurrentSumSQ=0;} // avoid NaN due to round-off effects
    
    float fCurrentRMS = sqrtf((float)lCurrentSumSQ/(float)lNoSamples) * gfACS712_Factor * gfLineVoltage / 1024;
    Serial.println(fCurrentRMS);
  if (fCurrentRMS > 50)
   {
    digitalWrite(11,HIGH);
   }
    else if (fCurrentRMS < 50 && Buttontime < 4)
    {
      delay(3000);
      digitalWrite(11,LOW);
    } 
    // correct offset for next round
    giADCOffset=(int)(giADCOffset+fOffset+0.5f);
  }
}

Hallo,

Du hast, wie gesagt, das Relais falsch angeschlossen. solltest Du über einen Transistor schalten der auf Deinem Relais höchst wahrscheinlich schon vorhanden ist. (So wie ich das sehe ist auf der Platine bereits einer drauf).
Du hast 3 Pins, 2 davon sind für den Strom die werden nicht mit irgendwelchen Pins verbunden (ausser es ist so gewollt) sondern mit 5v (oft mit Vcc gekennzeichnet) und Masse (GND).

Die dritte Leitung (welche manchmal mit In1 oder IN oder so gekennzeichnet ist) wird mit einem Arduino Pin verbunden. Wenn Du diesen dann auf HIGH oder LOW setzt, kannst Du das Relais schalten.

Der Spannungs/Strommesser soll was genau messen?

Grüße,
Donny

dony:
Hallo,

Du hast, wie gesagt, das Relais falsch angeschlossen. solltest Du über einen Transistor schalten der auf Deinem Relais höchst wahrscheinlich schon vorhanden ist. (So wie ich das sehe ist auf der Platine bereits einer drauf).
Du hast 3 Pins, 2 davon sind für den Strom die werden nicht mit irgendwelchen Pins verbunden (ausser es ist so gewollt) sondern mit 5v (oft mit Vcc gekennzeichnet) und Masse (GND).

Grüße,
Donny

Naja auf dem 5V und dem GND sitzt der Stromsensor. Das heißt ich klemm den einfach da dazu.
Ich dachte ich könnte die PINS auch als 5V Quelle nehmen, da es ja aktuell auch funktioniert.
5V auf HIGH PIN GND auf LOW PIN geht nicht aber 5V auf HIGH PIN und GND auf GND geht.

Der Stromsensor misst einfach ob an der Dose Strom größer 50 Watt anliegt.
Wenn ja dann schalte die andere Steckdose zu.

Du kannst Strom und Leistung nicht auseinander halten und willst Steckdosen schalten?
Der gemessene Strom liegt im 230V-Kreis?

Lass die Finger davon. Die Lebensversicherung zahlt nicht bei Tod durch eigenes Verschulden. Über den Tod von Anderen wollen wir lieber an dieser Stelle nicht nachdenken.

Gruß Tommy

Tommy56:
Du kannst Strom und Leistung nicht auseinander halten und willst Steckdosen schalten?
Der gemessene Strom liegt im 230V-Kreis?

Lass die Finger davon. Die Lebensversicherung zahlt nicht bei Tod durch eigenes Verschulden. Über den Tod von Anderen wollen wir lieber an dieser Stelle nicht nachdenken.

Gruß Tommy

Doch kann ich und mach ich sogar.

Ja liegt er.

zu schaltende Steckdose 1 (S1) Leitung zu einem Verteilerkasten.
zu messende Steckdose 2 (S2) Leitung zum selben Verteilerkasten.
Kabel von Sicherungskasten zum Verteilerkasten.

N von S1 an Relais. N von Relais an N vom Sicherungskasten
Phase von S1 an Phase von Sicherungskasten
Schutz an Schutz

N von S2 an Sensor
Phase von S2 an Phase Sicherungskasten
Schutz an Schutz

Wenn Du meinst. Viel Spaß noch.

Gruß Tommy

Danke und um es nochmal auf den Punkt zu bringen.

Ich versteh nur nicht warum ich an einem PIN mit 5V und 20ma mit einer GND Verbindung das Relais Schalten kann.

Mit einem PIN mit 5V, 20ma und einen LOW PIN aber nicht.

Wäre es der 5V Pin vs den HIGH PIN würde ich es verstehen....

p.s. Danke schonmal für die Hilfe Dony, ich werde es auf jeden Fall umbauen.

rambovi:
Naja auf dem 5V und dem GND sitzt der Stromsensor. Das heißt ich klemm den einfach da dazu.

Ja genau.
Aber Du kannst nicht beliebig viele Dinge anschließen oder gar einen Motor. Wenn das Arduino über den USB Port mit Strom versorgt wird hast Du (nach Norm) 500mA zur verfügung, davon braucht allerdings das Arduino schon mal etwas.

Ich dachte ich könnte die PINS auch als 5V Quelle nehmen, da es ja aktuell auch funktioniert.
5V auf HIGH PIN GND auf LOW PIN geht nicht aber 5V auf HIGH PIN und GND auf GND geht.

Das funktioniert grundsätzlich schon, aber der max. Strom sind 40mA, der empfohlene: 20mA. Die meißte Schaltungen verbrauchen mehr oder haben zumindest höhere Spitzen.

Der Stromsensor misst einfach ob an der Dose Strom größer 50 Watt anliegt.
Wenn ja dann schalte die andere Steckdose zu.

Steckdose (230V~)?: Da bin ich raus! Das ist Lebensgefährlich und schließe mich daher Tommy's Meinung an.

Grüße,
Donny
Nachtrag:

Ich versteh nur nicht warum ich an einem PIN mit 5V und 20ma mit einer GND Verbindung das Relais Schalten kann.

edit2: Ich meine eh den 5v Pin (vs. HIGH Pin) also vs. Digitaler (I/O) Pin.
Das ist nicht irgendein Pin, der 5v Pin ist die Stromversorgung des Arduino's (Vcc) und kann 500mA zu Verfügung stellen, nicht 20mA. U.u auch mehr, kommt auf die Stromquelle des Arduino an.

Schade aber du scheinst mein Problem auch nicht zu verstehen....

DigitalerPIN10 auf HIGH verbunden mit dem + des Relais
Digitaler PIN12 auf LOW verbunden mit dem - des Relais
Digitaler PIN11 auf HIGH/LOW verbunden mit dem Steuersignal

So geht es nicht

DigitalerPIN10 auf HIGH verbunden mit + des Relais
GND des Ardus verbunden mit dem - des Relais
Digitaler PIN11 auf HIGH/LOW verbunden mit dem Steuersignal

geht.

Daher macht es ja keinen Sinn das es an den 20ma liegt die vom PIN nur kommen können oder sehe ich das falsch?

Hi

Ich sehe hier GAR NICHTS - ein Foto würde ggf. Klarheit verschaffen - Das meine ich wirklich so.
Das Geschreibsel von 5V hier und 'gedacht' dort lässt darauf schließen, daß Du irgendwo einen Fehler verbaut hast.
Oder der Pin ist bereits 'durch', weil der Arduino nicht denkt, sondern stirbt.

MfG

PS: Ganz nebenbei: Die Versicherung sträubt sich auch bei Zahlungen, wenn am Strom 'gespielt' wurde - auch ohne, daß Jemand tot bleibt.

PPS: Mitnahmeschaltungen gibt's beim fC wohl für weniger Geld, als Du hier bereits an Stromkosten investiert hast.
Wenn's hier nicht um's selber bauen geht, vll. was Fertiges nehmen.
(wobei fC-E-Material auch eher belächelt wird - von meinen LED-'Birnen' bin ich Mal nicht sonderlich begeistert - gab auch schon Licht und Ton-Effekte)

fC=freundlicher Chinese

dony:
Der 5v Pin und der generelle GND (Masse) Pin sind dafür gedacht, die können weit mehr Strom zu verfügung stellen (>500mA).

Du übertreibst.
Wird der Arduino über USB versorgt dann stehen ca 450mA zur Verfügung.
Bei Stromversorgung über Vin Pin oder Netzteilbuchse ja nach Spannung ca 250mA bis 100mA (Je höher die Spannung desto weniger Strom).

Grüße Uwe

rambovi:
Schade aber du scheinst mein Problem auch nicht zu verstehen....

DigitalerPIN10 auf HIGH verbunden mit dem + des Relais
Digitaler PIN12 auf LOW verbunden mit dem - des Relais
Digitaler PIN11 auf HIGH/LOW verbunden mit dem Steuersignal

So geht es nicht

DigitalerPIN10 auf HIGH verbunden mit + des Relais
GND des Ardus verbunden mit dem - des Relais
Digitaler PIN11 auf HIGH/LOW verbunden mit dem Steuersignal

geht.

Daher macht es ja keinen Sinn das es an den 20ma liegt die vom PIN nur kommen können oder sehe ich das falsch?

ganz falsch, Ausgänge dürfen nicht als Spannungsversorgung von Schaltungen benutzt werden.
DigitalerPIN10 auf HIGH verbunden mit dem + des Relais
Digitaler PIN12 auf LOW verbunden mit dem - des Relais
Digitaler PIN11 auf HIGH/LOW verbunden mit dem Steuersignal

richtig ist:

  • Relaiskarte auf 5V Pin Arduino oder 5V Netzteil
  • Relaiskarte auf GND Pin Arduino oder auf GND Pin Arduino UND minus-Poli Netzteil
    Steuersignal Relaiskarte auf Arduino Ausgang.

Ich hoffe die Relaiskarte hat einen Transitor und eine Schutzdiode. auf den Bild und der Beschreibung kann ich das nicht erkennen.

Grüße Uwe

Okay ich weis halt nicht was ich euch alles hier geben soll ^^
Ja der Grund ist natürlich das selber bauen. Ich habe mir auch überlegt ob ich mir einfach einen Sauger mit Stromanschluss kaufe aber warum? Da lern ich ja nichts bei.
Zum Thema Elektrik nochmal. Also ich bin kein gelernter Elektriker aber schon von Jugend an Elektrik und Elektrotechnik Interessiert. Mein Schwiegervater ist Selbstständiger Elektriker und der ist genauso penibel wie hier die Leute gleich schreien mit 230V etc. (BTW ich helf ihm öfter aus)

Mein Problem ist ja nicht die 230V bzw. ich hab ja gar keins sondern nur ein Verständnisproblem.

Ich habe eigentlich alles schon detailiert geantwortet und ein Bild von der Grundschaltung gibt es auch schon....

Hier nochmal alles zusammengefasst.

Ich habe eine Slave Steckdose welche schalten soll, wenn an der Mastersteckdose Strom fließt.

Die Phasen der Master und der Slavesteckdose sind mit Steckklemmen in dem Kasten mit dem Versorgungkabel gesteckt.

Die Schutzleiter ebenfalls.

Der Nullleiter der Slavesteckdose ist am Relais angeschlossen und vom Relais zum Versorungskabel.
Der Nullleiter der Mastersteckdose ist am Stromsensor angeschlossen und von dort zum Versorgungskabel.

Der Arduino ist dazwischen und steuert den Stromsensor bzw. liest diesen aus. Wenn Dort mehr als 50 Watt gebraucht werden, dann schaltet er das Relais damit die Slavesteckdose versorgt wird.

Der Arduino hat am VCC und am GND den Stromsensor
Am PIN 12 (LOW) und 10(HIGH) ist das Relais angeschlossen.

Das geht nicht. Wenn ich aber statt PIN 12 LOW den GND verwende, schaltet das Relais (Natürlich wenn 5V am Steuerkabel anliegen)

Hier nochmal ein Bild dazu

Einschaltuatomatik.png

Hallo,

Warum willst Du eigentlich was auch immer über die Digitalen Pins mit Strom versorgen? Dafür ist der Pin 5v gedacht.

Sorry, aber ich kann es nicht verantworten Dir hier zu helfen. edit: Wenn ich etwas falsches schreibe oder Du es falsch verstehst... Wenn wir zusammen in einem Raum an Deinem Projekt arbeiten würde, wäre das was anderes.

uwefed:
Du übertreibst.

okey! Da muss ich jetzt aber nochmal nachfragen, das Arduino Uno hat einen ncp1117 dieser hat ein max. Output von 1A. (?) Natürlich fällt hier noch was ab. Aber 100mA - 250mA klingt dann doch sehr wenig?

Grüße,
Donny

dony:
Hallo,

Warum willst Du eigentlich was auch immer über die Digitalen Pins mit Strom versorgen? Dafür ist der Pin 5v gedacht.

Sorry, aber ich kann es nicht verantworten Dir hier zu helfen.
okey! Da muss ich jetzt aber nochmal nachfragen, das Arduino Uno hat einen ncp1117 dieser hat ein max. Output von 1A. (?) Natürlich fällt hier noch was ab. Aber 100mA - 250mA klingt dann doch sehr wenig?

Grüße,
Donny

Donny ich möchte das nicht, ich möchte nur verstehen warum es geht wenn ich es tue.
Also warum der GND geht der LOW PIN aber nicht ^^

Klar kann ich es einfach hinnehmen das es so ist, aber ich will es verstehen sorry =)

Danke aber auf jeden Fall für deine Hilfe bisher das hat mir schon geholfen und ich habe alles auf den 5V und den GND gesteckt. Nur noch die Steuersignale sind jetzt auf den PINs.

Es ging vorher und geht auch immernoch. Von daher bin ich ja schon Glücklich. Das Problem ist nur das Verstehen =)

p.s. ich hab noch die 5 Minuten sperre drin fürs Posten also dauert immer bis ich antworten kann ^^

dony:
okey! Da muss ich jetzt aber nochmal nachfragen, das Arduino Uno hat einen ncp1117 dieser hat ein max. Output von 1A. (?) Natürlich fällt hier noch was ab. Aber 100mA - 250mA klingt dann doch sehr wenig?

Grüße,
Donny

Ja, er kann 1A wenn er die Verlustleistung weg bekommt. Wieviel Kühlfläche hat der ncp1117 auf dem Arduino? Daraus kannst Du mittels des Datenblattes die max Verlustleistung errechnen und daraus mit der Spannungsdifferenz Eingang gegen Ausgang den max Strom. Die Versorgungsspannung an Vin bzw Netzteilbuchse für den Arduino UNO ist mit 7V bis 20V spezifiziert.

Daß ein Teil x A Strom bzw x W Verlustleistung verträgt (wie im Datenblatt spezifiziert) hängt nur von der Kühlung ab.

Grüße Uwe

@Uwe: Danke für die Erklärung! :slight_smile:

@rambovi: Ich denke (weiß es aber nicht mit sicherheit), dass das Relais einfach nicht schalten kann. Einfach weil diese 20mA zu wenig sind.

Grüße,
Donny