Eingang kommt sporadisch- Störung durch 230V Feld?

Hallo zusammen,
ich bin Maschinenbautechniker und habe Grundkenntnisse in der Elektrotechnik und wenig Kenntnisse in der Programmierung, egal welcher Programmiersprache.
Ich kämpfe nun vergeblich gegen folgenden Fehler. Zuerst aber mal Infos zu meinem Projekt.

Es handelt sich dabei um einen Münzautomaten eines Billard-Clubs, der für die Steuerung einer Billardtisch-Beleuchtung installiert ist. Der Automat ist 30 Jahre + alt, die installierte Steuerung via Elektroplatine, Transistoren, ICs etc. war defekt. Reparieren war vergebens, weshalb ich einen Arduino Uno inkl. Display eingebaut habe.
Ziel ist folgendes:
Ähnlich wie bei einem Münzautomat im Solarium, soll eine Zeitschaltung aktiviert werden. Konkret, Münze rein, 60min Timer soll gestartet werden, Licht geht an, Display soll Restzeit anzeigen.
Wenn eine Münze nachgeworfen wird, soll die Restzeit um 60 min erhöht werden. Bsp.: 12 min Restzeit -> weitere Münze einwerfen -> 72 min Restzeit.
Ein weiterer Taster soll die Möglichkeit bieten, den Timer zurückzusetzen.
Ein NOT-Schalter soll bei einem Defekt des Arduino das Tischlicht manuell dauerhaft einschalten.

Dafür habe ich das auf den Fotos ersichtliche Setup erstellt.
Zusammenfassend:

  • Uno
  • Relais für 230V Durchschalten der Beleuchtung
  • Taster des alten Münzeinwurfs
  • Taster für Timer-Rückstellung
  • Not-Ein Schalter
  • Display LCD
  • Ein paar Reihenklemmen
  • Eine grüne LED für die Anzeige das der Timer aktiv ist

Programmiert habe ich in OpenRoberta, da mir ehrlich gesagt die zeilenbasierte Programmiersprache zu hoch ist, und ich früher bereits Erfahrungen mit grafischen Programmiersprachen sammeln konnte. Dazu auch ein Bild unten.

Nun zur Historie und meinem Fehler.
Zuhause habe ich den Frontdeckel des Automaten mit allen Komponenten versehen, sowie die Programmierung erstellt und über Stunden über "Trial and Error" Verkabelung und Programm erstellt (mit Hilfe eines Freundes), sowie getestet, getestet, getestet. Speziell die wohl bauartbedingte Taktzeit des Unos hat mir viele graue Haare hinsichtlich der Timerzeit beschert.

Für gut befunden und den Fronteckel in den Club zum Einbau mitgenommen. Dort habe ich:

  • 230V Steckdose für Steckernetzteil installiert
  • 230V der Beleuchtung über Reihenklemmen ans Relais sowie den Not-Schalter angeschlossen

Ergebnis: Wenn ich den Deckel des Automaten geschlossen habe, spann das Display und zeigte nur noch Hieroglyphen an. Entstörung nur durch spannungsfrei schalten des Arduino.
Meine Vermutung, 230V Verteilung im Automaten funkt mir auf den Uno und stört diesen.

Nächster Akt:
Alles was ihr auf dem Bild im Hintergrund an Kabeln seht, habe ich extern verlegt. In den Kasten geht nur noch ein 2-adriges Kabel mit 230V zum Relais/Not-Ein Schalter (parallel geschalten), sowie wieder zurück zur Beleuchtung.

Ergebnis: Das Display ist stabil, der Uno funktioniert augenscheinlich, Münzeinwurf funktioniert, Reset funktioniert, Not-Ein sowieso da hart-verdrahtet.

Jetzt das ABER: Der Timer schaltet sporadisch ohne Münzeinwurf ein, zählt sogar willkürlich nach oben, wie wenn ich Münzen nachwerfen würde.

Fehlersuche:

  • Steckdose unter Automaten für Steckernetzteil weiter weg installiert
    -> Keine Besserung
  • 230V zum Relais entfernt, somit vermutet elektrisches Feld entfernt
    -> Besserung! Kein sporadisches Einschalten mehr!

Daher vermute ich, dass der Eingang durch jegliche 230V Spannung gestört wird.
Kann das sein?
Kann das Problem ggf. durch das Enstören des Eingangs behoben werden?
Verbaut habe ich bei beiden Tastern einen Pull-Down Widerstand, sieht man auch auf meinem Schaltplan.

Könnt ihr mir hier helfen? Vorab, ich habe keine Ahnung wie ich den von OpenRoberta generierten Programmcode anpassen kann. Daher seht es mir bitte nach, dass ich mich da ggf. blöd anstelle.

Vielen Dank im Voraus!



Hier noch der Programmcode:


// This file is automatically generated by the Open Roberta Lab.

#include <Arduino.h>

#include <LiquidCrystal_I2C/LiquidCrystal_I2C.h>
#include <NEPODefs.h>

void ____anzeige_BC73();
void ____anzeige_Spielzeit();
void ____anzeige_ENDE();
void ____spielzeit();

double ___Spielzeit;
int _led_gruen = 1;
int _relay_R = 7;
int _taster_Abbruch = 3;
int _taster_Ein = 2;
LiquidCrystal_I2C _lcd_L(0x27, 16, 2);

void ____anzeige_BC73() {
    _lcd_L.setCursor(5,0);
    _printToDisplay(_lcd_L, "-BC73-");

}

void ____anzeige_Spielzeit() {
    _lcd_L.setCursor(11,1);
    _printToDisplay(_lcd_L, ___Spielzeit / ((float) 135000));

}

void ____anzeige_ENDE() {
    _lcd_L.setCursor(5,0);
    _printToDisplay(_lcd_L, "-ENDE-");

}

void ____spielzeit() {
    _lcd_L.setCursor(0,1);
    _printToDisplay(_lcd_L, "Spielzeit");

}

void setup()
{
    pinMode(_led_gruen, OUTPUT);
    pinMode(_relay_R, OUTPUT);
    pinMode(_taster_Abbruch, INPUT);
    pinMode(_taster_Ein, INPUT);
    _lcd_L.begin();
    ___Spielzeit = 0;
}

void loop()
{
    delay(11);
    if ( ___Spielzeit > 0 ) {
        digitalWrite(_led_gruen, HIGH);
        digitalWrite(_relay_R, HIGH);
        ___Spielzeit = ___Spielzeit - 1;
        ____anzeige_Spielzeit();
        ____anzeige_BC73();
        ____spielzeit();
    } else {
        digitalWrite(_led_gruen, LOW);
        digitalWrite(_relay_R, LOW);
        _lcd_L.clear();
        ____anzeige_ENDE();
    }
    if ( digitalRead(_taster_Ein) ) {
        // Baustein für Zeiteinstellung
        ___Spielzeit += 81000;
        while (true) {
            if ( digitalRead(_taster_Ein) == false ) {
                break;
            }
            delay(1);
        }
    }
    if ( digitalRead(_taster_Abbruch) ) {
        ___Spielzeit = 0;
    }
}

Hier noch ein Bild der alten 230v Verteilung, die ich wie erwähnt rausgeworfen habe.

Setze Deinen Sketch bitte in Codetags. Wie das geht, steht hier.

Gruß Tommy

1 Like

Ändere den mal auf 1K
image
Und parallel dazu noch ein 100nF Kondensator

Danke. Hab sowas schon mal gelesen.

Leg ich mit meiner Vermutung des 230v Feldes richtig? Weist du das?
Oder was wäre die Störquelle?

Hört sich nach EMV Problem an. Die sind immer schwer in den Griff zu bekommen. Da gibt es Rezepte, aber es ist manchmal auf sehr viel ausprobieren dabei.

Bei der Verdrahtung: Versuche GND schwarz, 5V rot, 3.3V orange, 12V gelb zu halten. Die restlichen Signale dann mit anderen Farben.

Ich weis, leider nicht ausreichend Kabel in der Farbe vorhanden. Darum ja auch mein Plan mit den Farbinfos.

Pin D1 soll unbenutzt bleiben. Daran hängt der USB Adapter.
Grüße Uwe

vielleicht mal probieren, den Münzschalter auf kürzestem Weg direkt an das Board anschließen. ich sehe noch Buchsenleisten auf den Extension-Boards, da könntest du auch den Pulldown-Wiederstand einstecken, wenn in der Nähe von Pin 2 auch ein GND-Pin ist (kann ich jetzt auf den Fotos nicht genau erkennen. Auch solltest du mal Nachmessen, ob nicht zwischen Deckel und Gehäuse eine Spannung anliegt, wenn alles angeschlossen ist, bei der alten 220V-Verdrahtung sehe ich im Hintergrund drei dicke Schutzleiter am Gehäuse. Hast du die Zuleitung dran gelassen oder alles wegsubtrahiert?

D1 wird als Ausgang für die Status-LED-Grün verwendet. Ist es daher relevant, da ja mein Eingang des Münztasters spackt?

Es ist wahrscheinlich (ich habe nicht tiefgründig Dein Projekt analysiert) für Dein Projekt nicht rilevant ob da was an D1 hängt. Da Du aber 13 andere Pins frei hast (D4-D6; D8 bis D13 und A0 bis A3) wieso nimmst Du nicht einen der anderen. ZB D13 wo schon eine Led da ist.

PS es gibt keinen NOT-EIN Taster nur NOT AUS Taster.
Es gibt MANUAL ON Taster.
Ich würde diese Funktion aber auf der Niederspannungsseite realisieren.
Das Relais ist wahrscheinlich nicht für 230V geeignet ( fehlende sicherheitsabstände). Um sicher zu sein müßte ich die Unterseite der Platine sehen.

Außerdem fehlt mir eine Sicherung auf der 230V Seite und einen Hauptschalter, der die 230 V doppelpolig abtrennt.

Du kannst sehr wohl 9V einspeisen und gleichzeitig USB verwenden (falls Du Pin D1 nicht verwendest) Der Arduino UNO ist dafür entworfen.

Könnte Sein daß 250mA auf 5V zu wenig Strom sind. (Du hast ca 50mA für den Arduino UNO, ca 80mA fürs Relais-Platine. Dann bleiben 130mA für das Display ( soweit ich verstanden habe ist der Münzenautomat ist rein mechanisch) .

Je nach Hintergrundbeleuchtung des Displays könnten 130mA zu wenig sein und der Spannungsstabilisator auf dem Arduino UNO überlastet werden.

Grüße Uwe

Zuerst mal danke für alle eure Tipps. Bevor ich diese ausprobiere, hab ich mich mal weiter gespielt.

Ich habe alles an 230 v inkl. Relais nach draußen verlegt und die Lampe vorerst nicht übers Relais angeschlossen, dann getestet.

Wenn ich nun Münztaster sowie Reset Taste wild aktivier, also in sehr kurzen Abständen wild ein, aus, ein, aus, schalte, ist der Uno stabil. Programm sowie Display funktionieren einwandfrei.

Nun 230v -> also Stecker in Steckdose rein, somit Relais Kontakt (Schließer) bestromt (Lampe hängt als Verbraucher natürlich dazwischen), fängt es an, dass sich der Uno nach 2-3 ein-aus Zyklen aufhängt, sowie das Display spinnt.

Es muss also damit zusammenhängen, wenn Leistung geschaltet wird, bzw. Die Wechselspannung übers Relais fliest.

Ideen?

Danke!

BTW, auf dem Realais steht 250VAC 10A

Ist die Masse (Minuspol) der 5V geerdet?

Grüße Uwe

Das gilt nur für das Relais, nicht für die Platine.
Hat die Ausfräsungen um die Schaltkontakte?

Gruß Tommy

Ich würde immer noch vorschlagen, dass du die Eingänge (Münz- und Reset-Taster) direkt an die Controller-Eingänge anschließt und nicht den Umweg über die Klemmleisten nimmst oder zumindest etwas Luft zwischen den Klemmleisten für den 5V- und den 240V-Kreis lässt und die Kabel sich nicht unnötig überkreuzen.

Hallo,
oder die 220 V aus dem Verteiler lassen (wie im Versuch) und hier einen kleinen Unterverteiler, mit dem Relais da drin.
VG Uwe

Gibt es diesen Satz auch in verständlich?

Gruß Tommy

Hast du mal #4 ausprobiert?