Guten Morgen,
Ich habe auf einem Bauernhof ein Programm für automatische Fütterung von
Ziegen installiert. Leider scheint es so, als würde der Arduino Mega
2560 teilweise Programmzeilen überspringen.
Dazu gibt es 2 brisante Beispiele:
1) Während des Melkbetriebes bleibt das Karussell manchmal einfach
stehen und de LED leuchtet blau. um das Karussell aber wieder wegfahren
zulassen muss der Stoptaster aber 2 mal gedrückt werden statt nur einmal
Entprellung beginnt ab Zeile 534
die Variable „Var_KarusellStop“ wird im Melkbetrieb (state = 2) in Zeile
875 abgefragt und der Motor ausgeschaltet. Die Variablen
„EntprellenStopTaster“, „Var_KarusellStopAlt“ usw. werden komischerweise
nicht verändert(siehe Foto Debugger).
2) Der im Nebenraum stehende PC sendet dem Mega die Futtermege zu jeder
Ziege bzw bietet einige Einstellungen wie zum Beispiel das der
Futterschneck auf Dauerlauf geschaltet wird (falls er einmal leer
gelaufen ist..)
Als Bestätigung, das der Arduino alles Richitg erledigt hat, sollte er
dem PC eine Antwort senden, in diesem Beispiel sendet er "Dauerlauf ein"
und "DA" abwechselnd wie es sich gehört - schaltet den schneck aber nie
ein...
Im Programm ab Zeile 479 + Foto SchneckDauerlauf
Weiters noch im Anhang der ganz aufbau des Karussells mit allen
Sensoren.
Schaltkasten
Alle 230V & 400 V Leitungen gehen oben Hinein/Hinaus – alle
Signalleitungen (Taster, geber…) sind geschiermt und gehen unten
Hinein/Hinaus
Arduino und RFID Reader werden mit 12V DC versorgt, Relais mit 9V DC
(habe dort den einen Rückschlag vermutet – hat aber nichts geändert)
Für den Schaltkasten sollte man jemanden züchtigen. Aber ordentlich.
Hast du WIKRLICH Lüsterklemmen auf nen Euro-Stecker gemacht?
Und dann der restliche Verhau mit irgendwelchen Arduino Boards und
Lochrastern. Dich sollte man nichts für den produktiven Einsatz, und
dann noch an LEBEWESEN, machen lassen.
Dein Programm ist genau so Pfusch. Kannst du nur Pfusch?
Thomas Kloiber schrieb:> Als Bestätigung, das der Arduino alles Richitg erledigt hat, sollte er> dem PC eine Antwort senden, in diesem Beispiel sendet er "Dauerlauf ein"> und "DA" abwechselnd wie es sich gehört - schaltet den schneck aber nie> ein...
Warum sollte der das auch tun?
Oliver
Der Code ist zum umfangreich, um ihn mal eben schnell per Sichtkontrolle
zu prüfen.
An den Fotos sehe ich allerdings relativ dünne Käbelchen zur
Stromversorgung, die anscheinen nicht sternförmig zu einem Masse-Punkt
am Arduino Board zusammen laufen. Das ist vor allem für die GND
Leitungen wichtig. Ändere das.
Dann würde ich die Steckverbindung der Stromversorgung am Arduino Board
durch eine gelötete oder geschraubte Verbindung ersetzen.
Sehe ich es richtig, dass das größere Netzteil dein Arduino Board
versorgt und das kleinere die Relais? Im Prinzip ist das eine gute Idee,
aber mir stellt sich die Frage, was sonst noch alles an den großen
Netzteil hängt. Ich würde alle größeren Verbraucher (Motoren, Relais,
Lichterketten) an das Zweit-Netzteil hängen damit das Arduino Board von
allen bösen Störungen fern gehalten wird. Denn großartige Filter enthält
es ja leider nicht.
Diese Relais sind meiner Meinung nach nicht geeignet, da sie nur auf
1500V isolieren. Hier wären nach VDE 4000V angebracht. Vermutlich ist
das jedoch derzeit nicht dein Hauptproblem.
Cyblord -. schrieb:> Hast du WIKRLICH Lüsterklemmen auf nen Euro-Stecker gemacht?
Und du meinst, dass die Steckdose einen besseren Kontakt hat ?
> Und dann der restliche Verhau mit irgendwelchen Arduino Boards und> Lochrastern. Dich sollte man nichts für den produktiven Einsatz, und> dann noch an LEBEWESEN, machen lassen.
3D-Printer werden auch mit Arduino Boards gemacht.
Das übersteigt natürlich deine Fähigkeiten bei weitem, deswegen auch
dein idiotischer Kommentar über Arduino Boards und Lochraster.
Thomas Kloiber schrieb:> Ich habe auf einem Bauernhof ein Programm für automatische Fütterung von> Ziegen installiert. Leider scheint es so, als würde der Arduino Mega> 2560 teilweise Programmzeilen überspringen.
Mal ganz sicher nicht.
Aber du hast hier mehrere Probleme. Dein Programm hat keine gescheite
Struktur! Du hast ALLES als eine MEGA-Funktion in deine Loop() Funktion
geschrieben! Das ist sehr schwer nachvollziehbar und damit auch schwer
analysierbar. Ebenso ist eine Fehlersuche deutlich erschwert. Du
solltest das umstrukturieren und in sinnvolle Funktion packen. Dann
sieht man eher durch und es wird einfacher und damit weniger
fehleranfällig.
Strukturierte Programmierung auf Mikrocontrollern
Marc V. schrieb:> Cyblord -. schrieb:>> Hast du WIKRLICH Lüsterklemmen auf nen Euro-Stecker gemacht?>> Und du meinst, dass die Steckdose einen besseren Kontakt hat ?
Irrelevent. Da gehört ein Hutschienennetzteil mit passenden Klemmen rein
und kein Steckernetzteil.
> 3D-Printer werden auch mit Arduino Boards gemacht.
Die sind ja auch von Pfuscher für Pfuscher, äh Maker. Interessiert uns
hier aber nicht. Das ist nämlich kein 3D Printer fürs Kinderzimmer.
> Das übersteigt natürlich deine Fähigkeiten bei weitem, deswegen auch> dein idiotischer Kommentar über Arduino Boards und Lochraster.
Natürlich. Ich könnte NIE einen Arduino Board absolut amateurhaft SO in
einen Schaltschrank bauen und dann nicht funktionierenen Pfusch-Code
dafür schreiben. Übersteigt meine Fahigkeiten. Sorry.
>An den Fotos sehe ich allerdings relativ dünne Käbelchen zur>Stromversorgung, die anscheinen nicht sternförmig zu einem Masse-Punkt>am Arduino Board zusammen laufen. Das ist vor allem für die GND>Leitungen wichtig. Ändere das.
Masse Punkt mitten über dem Board oder ist das egal wo? Und dabei Alle
GND Pins des Boards + Netzeil-GND verbinden?
>>Leider scheint es so, als würde der Arduino Mega>>2560 teilweise Programmzeilen überspringen.>Mal ganz sicher nicht.
Dann bitte ich dich, mir zu erklären wie es sein kann, dass lt. Bild
"Debugger" die Variable "EntprellenStopTaster" 0 sein kann (in der
Spalte Max) und trotzdem die Variable "D" 37 ist - außerdem sollte dann
auch die Variable "C" 36,37 oder 38 sein, oder? Weiters ist die Variable
"A" auch 0, was zwar dafür spricht das "EntprellenStopTaster"
richtigerweise 0 ist, aber nicht dass "D" 37 ist
- zur info-laut "millis()" lief dabei das Programm noch nicht lange und
es wurde der Stoptaster auch nicht gedrückt
>Sehe ich es richtig, dass das größere Netzteil dein Arduino Board>versorgt und das kleinere die Relais? Im Prinzip ist das eine gute Idee,>aber mir stellt sich die Frage, was sonst noch alles an den großen>Netzteil hängt. Ich würde alle größeren Verbraucher (Motoren, Relais,>Lichterketten) an das Zweit-Netzteil hängen damit das Arduino Board von>allen bösen Störungen fern gehalten wird. Denn großartige Filter enthält>es ja leider nicht.
Auf dem 12V Netzteil hängt der Mega, der RFID Reader und ein
Kapazitivsensor(nicht ab Bild) diese wurden aber alle schon abgehängt -
ohne Erfolg
>Aber du hast hier mehrere Probleme. Dein Programm hat keine gescheite>Struktur! Du hast ALLES als eine MEGA-Funktion in deine Loop() Funktion>geschrieben! Das ist sehr schwer nachvollziehbar und damit auch schwer>analysierbar. Ebenso ist eine Fehlersuche deutlich erschwert. Du>solltest das umstrukturieren und in sinnvolle Funktion packen. Dann>sieht man eher durch und es wird einfacher und damit weniger>fehleranfällig.
Das Programm lief vorher ca 3 Monate lang ohne Reset ohne Motoren im
Test.. Dabei hatte ich diese Problem nicht. Für eine Umstrukturierung
bitte ich um ein Programm das deinen Vorstellungen entsprechend
programmiert ist.
Thomas schrieb:> Masse Punkt mitten über dem Board oder ist das egal wo?
Möglichst nahe an dem Punkt, wo du das Netzteil anschließt. Also
momentan noch die Steckbuchse, die du durch etwas festeres austauschen
sollst.
Es könnte hilfreich sein, eine Menge Debug Meldungen hinzuzufügen (z.B.
hinter jedem if und else) und diese mit Zeitstempel in eine Datei
aufzuzeichnen.
Thomas schrieb:>>Ein Controller ist nur so schlau wie sein Programmierer ;)> und du anscheinend nicht schlauer als ich ;)>> aber wieso funktioniert es dann ohne Motoren?
Vielleicht weil deine horrende Verkabelung und deine Hobbyplatine für
diese Umgebung nicht geeignet sind?
Dein schlechter Code verhindert eben auch eine schnelle Fehlersuche.
Liegts an der HW oder der SW? Wäre die SW sauberer, ließe sich die Frage
schneller beantworten.
Es kann auch eine Kombination sein: Ein schlecht beschalteter
Eingang/Sensor liefert durch anlaufende Motoren falsche Daten ans
Programm. Programm macht daraufhin Unsinn.
ICH würde bei einer passenden Stromversorgung nebst ordentlicher
Verkabelung mit passenden Querschnitten anfangen. Das ist das A und O.
Von da aus kann man dann weiter machen.
Thomas schrieb:>>Aber du hast hier mehrere Probleme. Dein Programm hat keine gescheite>>Struktur! Du hast ALLES als eine MEGA-Funktion in deine Loop() Funktion>>geschrieben! Das ist sehr schwer nachvollziehbar und damit auch schwer>>analysierbar. Ebenso ist eine Fehlersuche deutlich erschwert. Du>>solltest das umstrukturieren und in sinnvolle Funktion packen. Dann>>sieht man eher durch und es wird einfacher und damit weniger>>fehleranfällig.>> Das Programm lief vorher ca 3 Monate lang ohne Reset ohne Motoren im> Test..
Dann war das nur ein halber Test. Vermutlich hast du ein EMV-Problem,
die Motoren spucken dir in die Suppe und deine Entprellung wird
ausgehebelt.
> Dabei hatte ich diese Problem nicht. Für eine Umstrukturierung> bitte ich um ein Programm das deinen Vorstellungen entsprechend> programmiert ist.
Du meinst ein Beispiel? Ok, etwa so. Allerdings ist dort keine
statemachine drin, die als Vorbild dienen könnte. Die gibt es aber
im gleichnamigen Artikel. Oder wie im Artikel Multitasking.
Beitrag "Re: I2CLCD Library für HD44780 LCDs"
Bist du der OP? Dann sollte man aber bitte schön IMMER unter dem
gleichen, idealerweise angemeldeten Namen schreiben.
erstmal gratulation das du das nach unten geschreibe in einer funktion
so lange durchgehalten hast ^^
sowes hab ich auch noch nicht gesehen.
Man kann da vieles umbauen und in funktionen umlagern.
Das macht die ganze sache übersichtlicher ,
zumal sich einige teile stark ähneln.
Es gibt auch lokale Variablen.
zB bei der Eepromgeschichte
1
voidEEPROMWritelong(intaddress,longvalue)
2
{
3
//Write the 4 bytes into the eeprom memory.
4
EEPROM.write(address,(value&0xFF));
5
EEPROM.write(address+1,((value>>8)&0xFF));
6
EEPROM.write(address+2,((value>>16)&0xFF));
7
EEPROM.write(address+3,((value>>24)&0xFF));
8
}
9
10
longEEPROMReadlong(longaddress)
11
{
12
longvalue=0;
13
value=EEPROM.read(address);
14
value|=(EEPROM.read(address+1)<<8);
15
value|=(EEPROM.read(address+2)<<16);
16
value|=(EEPROM.read(address+3)<<24);
17
returnvalue;
18
}
wenn man das so weiter führt kann man minimum 50% der globalen variablen
wegwerfen.
in jedem Status setzt du die 3 strings immer zurück.
Wenn man die auswertung in eine extrafunktion auslagert kannst du das am
ende vor dem rücksprung erledigen.
Gleichzeitig sind die stati insgesammt deutlich kürzer und wiederholen
sich stellenweise sogar -> weniger code
die 3 strings ..
1
if(Serial2.available()>2)
2
{
3
Empfangen=Serial2.readStringUntil(':');
4
Empfangen1=Serial2.readStringUntil(':');
5
Empfangen2=Serial2.readStringUntil(':');
6
}
auf was wartetst du hier genau?
Was sendest du dem arduino?
"xx:yy:zz\r\n" ?
Wenn ja dann würde ich nur auf das \r\n triggern
LOOOOOOOOOOOOOOOOOL
Der traut sich tatsächlich, Bilder von diesem Schaltkasten hier
anzuhängen?
Sorry, aber schalte die Scheiße ab und lass das von jemandem machen, der
Ahnung davon hat und vor allem weiß, was er tut. Ansonsten werden sich
Deine Ziegen bald als Brathähnchen verkaufen lassen nachdem die
Feuerwehr wieder weg ist. Versicherung zahlt bei so einem Pfusch
übrigens auch keinen Cent.
Cyblord -. schrieb:> Natürlich. Ich könnte NIE einen Arduino Board absolut amateurhaft SO in> einen Schaltschrank bauen
Arduino Board ist eigentlich ziemlich gut bis gut gemacht, kein
Grund ihn so anzuspucken. Das gleiche gilt für Lochraster wenn es
anständig gemacht wird.
Das die Verkabelung Pfusch ist, gebe ich allerdings zu.
> und dann nicht funktionierenen Pfusch-Code> dafür schreiben. Übersteigt meine Fahigkeiten. Sorry.
ob der Code Pfusch ist oder nicht, will ich gar nicht beurteilen,
wird wahrscheinlich so sein.
Die Behauptung vom TO, dass der MEGA Programmzeilen überspringt ist
auf jeden Fall Blödsinn.
gdfgsdgsg schrieb:> Es gibt auch lokale Variablen.> zB bei der Eepromgeschichte> void EEPROMWritelong(int address, long value)> {> //Write the 4 bytes into the eeprom memory.> EEPROM.write(address , (value & 0xFF) );> EEPROM.write(address + 1, ((value >> 8) & 0xFF) );> EEPROM.write(address + 2, ((value >> 16) & 0xFF) );> EEPROM.write(address + 3, ((value >> 24) & 0xFF) );> }>> long EEPROMReadlong(long address)> {> long value = 0;> value = EEPROM.read(address);> value |= (EEPROM.read(address + 1)<<8);> value |= (EEPROM.read(address + 2)<<16);> value |= (EEPROM.read(address + 3)<<24);> return value;> }
Tipp:
Sowas muss man mit Arduino nicht tun!
Denn so gehts auch:
>ICH würde bei einer passenden Stromversorgung nebst ordentlicher>Verkabelung mit passenden Querschnitten anfangen. Das ist das A und O.>Von da aus kann man dann weiter machen.
Querschnittswunsch? ich meine Telefonkabel sollten für die kleinen Stöme
die der µC liefert reichen - wenn nicht wären sie schon längst
verschmort
>Ein schlecht beschalteter Eingang/Sensor liefert durch anlaufende Motoren >falsche Daten ans Programm. Programm macht daraufhin Unsinn.
Ich bin der Meinung dass ich das so ausschließen kann. Es ist zwar
absolut richtig, dass der µC vorallem beim anlaufen Signale erhält - das
ist aber der Grund warum nicht auf die erste fallende Flanke der
Taster/Schalter geschaltet wird.
Da mein code anscheinend Pfusch ist, möchte ich zu meiner Verteidigung
sagen, dass ich mir Programmieren selbst beigebracht habe (klar sieht
man dass, aber die meisten hätten vermutlich schon lange aufgegeben)
>Es gibt auch lokale Variablen
habe einmal gehört, dass so ev. einige Variablen doppelt angelegt werden
und dann die flasche ausgelesen werden kann. und ich sah keinen Nachteil
alle Variablen einfach zu machen. lieg ich da Falsch?
vor wenigen Stunden getestet - Alle motoren von den Schützen abgeklemmt
und alles Funktioniert wie am Schnürchen. ankelemmt = gleiches Problem
>Vermutlich hast du ein EMV-Problem
bin seither auch der Meinung, aber kann es sein, das µC dadurch in
irgendwelche Zeilen hüpft? und wie schirme ich die am besten ab?
>dass ich mir Programmieren selbst beigebracht habe
Mein Professor sagte zu mir, dass JEDER Mensch auf der Welt
programmieren kann. >>*Gute<< (effiziente) Programmierer findet man aber
selten.
Dein Code ist sehr unübersichtlich. Wenn ich in deinem Code "den einen
Fehler" suchen müsste der das alles verursacht was dir passiert dann
würde ich nach einer halben Stunde das Handtuch schmeissen aus Frust und
Verzweiflung weil dein Code nicht systematisch durchgearbeitet werden
kann. Ich würde mich ständig im Kreis drehen. Daher bringt es hier gar
nichts den Quellcode anzuhängen, da sich niemand durcharbeiten wird.
Es besteht nur aus haufenweisen if-Abfragen: sowas ist als
Spaghetti-Code bekannt.
*"gut": Strukturiertes Programmieren, effizent, gut dokumentierter Code
(Variablennamen, Kommentare), einfache Portabilität, erweiterbar und
wartbar durch Dritte (z.B. Mitarbeiter aus einem Unternehmen wenn man
z.B. krank ist) ohne notwendige Einweisung in den Code durch dich selber
Thomas schrieb:>>Vermutlich hast du ein EMV-Problem> bin seither auch der Meinung, aber kann es sein, das µC dadurch in> irgendwelche Zeilen hüpft?
µC kennt keine Zeilen, kann also auch keine überspringen.
> und wie schirme ich die am besten ab?
Metal Gehäuse für Arduino Board.
Abgeschirmte Kabel (und ordentlich verlegen).
Elkos und Entstörkondensatoren verwenden.
Thomas schrieb:> Querschnittswunsch? ich meine Telefonkabel sollten für die kleinen Stöme> die der µC liefert reichen - wenn nicht wären sie schon längst> verschmort
Es geht nicht um die Belastbarkeit der Leitungen, sondern um den
Spannungsabfall.
Fehlfunktion sind zu erwarten, wenn GND Pegel zwischen Modulen um mehr
als 0,5V unterschiedlich sind, weil die Pegel von digitalen Signalen aus
Sicht des Empfängers um eben diesen Wert vom Soll abweichen.
Wenn der Sender z.B. LOW mit 0,2V sendet und das GND Potential des
Empfängers um 0,5V nach unten verschoben ist, das "sieht" dieser ein
Signal mit 0,7V, was er unter Umständen nicht mehr zuverlässig als LOW
verarbeitet.
Dazu kommt, das Spannungen unterhalb von GND und oberhalb von VCC ab
einer gewissen Stromstärke einen Latch-Up Effekt auslösen können. Der
betroffene Eingang blockiert sich dann selbst und es fliesst so lange
ein erhöhter Strom, bis die Stromversorgung unterbrochen wird. Manche
Chips gehen dabei kaputt, andere erwärmen sich nur harmlos.
Dabei kommt es nicht nur auf den Gleichtstrom an, sondern auch auf HF
Anteile, die dazu überlagert sind. Für HF ist jede Leitung wesentlich
hochohmiger, als für Gleichstrom. Eine verdrillte Telefonleitung hat zum
Beispiel einen Wellenwiderstand von ca. 100 Ohm! Da kann schon der
Lichtbogen einer startenden Leuchtstoffröhre ganz erhebliche Spannung
induzieren.
>Alle motoren von den Schützen abgeklemmt und alles Funktioniert wie am Schnürchen
Wäre ja alles zu einfach auf der Welt wenn der Betrieb im Feld genauso
wäre wie im störungsfreien Labor.
Nicht umsonst geben Unternehmen tausende Euros aus für EMV-Prüfungen um
ein "CE-Zeichen zu bekommen und das Produkt auf dem Markt vertreiben zu
dürfen.
Ja: Du hast ein enormes EMV-Problem und EMV ist Voodoo und kann man
nicht aus Büchern lernen, sondern erfordert jahrelange
Praxis-Erfahrungen.
Thomas schrieb:>>Ein schlecht beschalteter Eingang/Sensor liefert durch anlaufende Motoren>>falsche Daten ans Programm. Programm macht daraufhin Unsinn.>> Ich bin der Meinung dass ich das so ausschließen kann.
1. Fehler!
Siehe Fehlersuche>>Es gibt auch lokale Variablen> habe einmal gehört, dass so ev. einige Variablen doppelt angelegt werden> und dann die flasche ausgelesen werden kann. und ich sah keinen Nachteil> alle Variablen einfach zu machen. lieg ich da Falsch?
Du liegst falsch. Think global, act local ist auch bei der
Programmierung das Mittel der Wahl. Dadurch verhindert man
Unübersichtlichkeit und komische Quereffekte. Man sollte möglichst
wenige, globale Variablen nutzen.
> vor wenigen Stunden getestet - Alle motoren von den Schützen abgeklemmt> und alles Funktioniert wie am Schnürchen. ankelemmt = gleiches Problem>>Vermutlich hast du ein EMV-Problem> bin seither auch der Meinung, aber kann es sein, das µC dadurch in> irgendwelche Zeilen hüpft?
Kann sein, ist hier aber eher nicht der Fall.
> und wie schirme ich die am besten ab?
Du mußt erstmal eine systematische Fehlersuche betreiben, ehe du da
was "abschirmen" kannst. EMV ist zwar logisch, aber trotzdem komplex.
Man muss erstmal rausfinden, an welcher Stelle die böse Störung
zuschlägt. Bei Einschalten oder Ausschalten welches Motors? Dann kann
man weiter suchen, wie die Störung einkoppelt. Viele Sachen sind
leitungsgebunden, da hilft eine Blechdose so gut wie gar nicht. Es kann
aber auch ein Motor sein, der durch seinen Anfahrstrom ein Netzteil kurz
in die Knie zwingt. Dann macht deine CPU einen Reset und rennt wieder
vom Anfang los. Wenn du 230VAC bzw. 400VAC Motoren direkt mit Schützen
schaltest, wirst du wohl auch Snubber brauchen, denn ohne die funkt
es schon ganz ordentlich.
Stefanus F. schrieb:> Dabei kommt es nicht nur auf den Gleichtstrom an, sondern auch auf HF> Anteile, die dazu überlagert sind. Für HF ist jede Leitung wesentlich> hochohmiger, als für Gleichstrom. Eine verdrillte Telefonleitung hat zum> Beispiel einen Wellenwiderstand von ca. 100 Ohm! Da kann schon der> Lichtbogen einer startenden Leuchtstoffröhre ganz erhebliche Spannung> induzieren.
Kaum. Denn gerade verdrillte Leitungen haben sehr kleine effektive
Querschnittsflächen. Du malst mal wieder den Teufel an die Wand.
Falk B. schrieb:> Stefanus F. schrieb:>> Dabei kommt es nicht nur auf den Gleichtstrom an, sondern auch auf HF>> Anteile, die dazu überlagert sind. Für HF ist jede Leitung wesentlich>> hochohmiger, als für Gleichstrom. Eine verdrillte Telefonleitung hat zum>> Beispiel einen Wellenwiderstand von ca. 100 Ohm! Da kann schon der>> Lichtbogen einer startenden Leuchtstoffröhre ganz erhebliche Spannung>> induzieren.>> Kaum. Denn gerade verdrillte Leitungen haben sehr kleine effektive> Querschnittsflächen. Du malst mal wieder den Teufel an die Wand.
Ich bezog mich auf unsymmetrisch betriebene Leitungen, zum Beispiel eine
für GND und die andere für das Signal. Hätte ich hinschreiben sollen.
Und nein, ich male den Teufel nicht an die Wand. Meine Hobbyschaltungen
haben bisher alle tadellos viele Jahre lang funktioniert - auch in
Industrie-Anlagen. Keine einzige wurde je reklamiert. Denn ich habe
diesen EMV Kram vor 30 Jahren in einer ordentlichen Berufsausbildung
gelernt und einigermassen korrekt angewendet.
Wie krass sich schlechte Masseführung auswirken kann, könnt ihr in
diesem Thread in Bildern sehen:
Beitrag "Oszi Tastkopf <> Schaltungsmasse"
Oder auch hier: Beitrag "Fehler im Datenblatt oder schlechte Messung?"
Falk B. schrieb:
> Bei Einschalten oder Ausschalten welches Motors?
Beim Karussell Motor nur beim einschalten (400VAC 0,2kW) und beim
Schneckmotor beim Ausschalten (400VAC 0,5kW)
Frank S. schrieb:> Wie wärs mit galvanischer Abtrennung deiner Eingänge z.B mit> Optokopplern oder Koppelrelais um dein offensichtliches EMV-Problem zu> lösen.
Jaja, der Optokopplerwahn mal wieder. Der Heilsbringer schlechthin. Was
für ein Irrtum!
Solange der Koppelpfad nicht mal ansatzweise nachgewiesen ist, ist das
alles nur ein Schuß ins Blaue.
Thomas schrieb:> Falk B. schrieb:>>> Bei Einschalten oder Ausschalten welches Motors?>> Beim Karussell Motor nur beim einschalten (400VAC 0,2kW) und beim> Schneckmotor beim Ausschalten (400VAC 0,5kW)
Was zum Geier ist ein Schneckmotor? Einer der Firma Schneck?
Nun, da kommen wir der Sache schon mal näher.
Zunächst sollte man prüfen, ob der uC einen Reset hinlegt. Das geht
einfach, indem man zum Start einen Text per UART ausgibt "Hallo Reset"
oder die LEDs in einer eindeutigen Weise schaltet bzw. blinken läßt.
Wenn das nicht der Fall ist, wird es wohl in eine Signalleitung
reinspucken und falsche Signale vorgaukeln. Hier spielen 3 Dinge eine
Rolle.
1.) Leitungs- und Masseführung; dafür braucht es einen Verdrahtungsplan,
ggf. auch eine Skizze des realen Aufbaus mit ein paar Längenangaben (1m
Sensorkabel oder 10m Sensorkabel?) Zu jedem Taster/Schalter etc. muss
sowohl das Signal aus auch die zugehörge Masse direkt hingehen! Wenn man
da die Masse spart und über mehrere Taster zieht, die weit verteilt sind
(>20cm), spannt man sich Koppelschleifen auf, in die Störungen gut und
gern einkoppeln.
2.) Eingangsfilter auf deiner Schaltung (Hardware), -> Schaltplan; Auf
deinem Schaltkastenbild sehe ich nur ein winziges Stück
Lochrasterplatine mit fast nix drauf und Kabelsalat. Da fehlt mindestens
ein gescheiter RC-Filter für jeden Sensor/Tastereingang. Der macht dann
auch gleichzeitig eine Entprellung. Der Pull-Up R1 sollte eher
niederohmig sein, so 1-5k.
https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster
3.) Entprellung per Software. Deine Software sehen wir, wenn gleich
nicht wirklich durch 8-0
Weiterhin hilft es ungemein, wenn der Steuerungsablauf durch eine
gescheit aufgebaute, lesbare Statemachine gebildet wird. Denn dann
sieht man sofort, daß diese wegen der falschen Signale in den falschen
Zustand springt. Dabei sollte man mit einem enum arbeiten, welcher mit
sinnvollen Namen die States benennt, dann braucht man nämlich keine
zusätzlichen Kommentare. Siehe Artikel Statemachine.
Arduino Fanboy D. schrieb:> Tipp:> Sowas muss man mit Arduino nicht tun!>> Denn so gehts auch:#include <EEPROM.h>> long value = 4711L;>> struct> {> long value;> // hier weitere Dinge im EEPROM> } EEMEM imEEPROM;>> // in einer Funktion:> EEPROM.put((int)&imEEPROM.value,value); // schreiben> EEPROM.get((int)&imEEPROM.value,value); // lesen> Die Adressberechnung kann man so dann auch noch dem Kompiler überlassen
^^
ok das es das schon fertig gibt war mir nicht bewusst.
kenne die arduino umgebung nur von unseren Praktikanten
die kommen damit recht brauchbar klar.
Noch ein Tipp zur Software. Du musst die einzelnen Aufgaben in einzelne
Funktionen auslagern. Dabei ist es wichtig, daß diese Funktion nur das
machen, was sie WIRKLICH sollen. D.h. ein Funktion zur Entprellung tut
eben nur das und greift NICHT in den Steuerablauf ein! Diese Funktion
entprellt nur die Eingänge und gibt sie entprellt über Variablen weiter!
Das gleiche für deinen Befehlsdekoder am UART. Nur die Ablaufsteuerung
in Form einer FSM steuert die Ausgänge und greift dabei auf die
entprellten Eingänge und dekodierten Befehle zu! Deine Loop() sieht dann
ca. so aus. Den Watchdog brauchst du nicht, das ist nur ein Würg-Around
für schlechte Software.
1
voidloop(){
2
UART_COM();
3
Entprellung();
4
Verarbeitung();
5
}
Diese einzelnen Funktionen könnte man sogar in einzelne .cpp Files
stecken, wie es bei Profis gemacht wird.
Marc V. schrieb:> Metal Gehäuse für Arduino Board.> Abgeschirmte Kabel (und ordentlich verlegen).> Elkos und Entstörkondensatoren verwenden.
So einfach kann das sein, muss aber nicht ;)
Generell ist es im günstigsten Fall die zweitbeste Idee, eine
empfindliche Stelle zu schirmen. Besser ist es, eine Störung dort zu
bekämpfen, wo sie entsteht. Beides ist aber ohne Erfahrung wenig
aussichtsreich und es macht MMN erst recht keinen Sinn, den TO jetzt zu
Experimenten mit Kondensatoren zu animieren.
Und ein Metallgehäuse mag schön und oft sinnvoll für HF-Baugruppen sein,
ist aber nicht nötig für ein Controllerboard.
Falk B. schrieb:> Was zum Geier ist ein Schneckmotor?
ein Motor mit Schneckengetriebe (Umgangssprache)
Falk B. schrieb:> Nun, da kommen wir der Sache schon mal näher.> Zunächst sollte man prüfen, ob der uC einen Reset hinlegt. Das geht> einfach, indem man zum Start einen Text per UART ausgibt "Hallo Reset"> oder die LEDs in einer eindeutigen Weise schaltet bzw. blinken läßt.
Nein, er führt keinen Reset durch. - er verändert nur einzelne
Variablen(ohne Code davor bzw danach auszuführen) kann es sein, dass
durch EMV der Speicher des Arduinos Variablen verändert/kippt?
Falk B. schrieb:> Wenn das nicht der Fall ist, wird es wohl in eine Signalleitung> reinspucken und falsche Signale vorgaukeln
Wenn mir ausschließlich NUR der "Stoptaster" Probleme bereitet, kann der
"Fehler" trotzdem auch bei anderen Signalleitungen liegen?
Thomas schrieb:> Nein, er führt keinen Reset durch. - er verändert nur einzelne> Variablen(ohne Code davor bzw danach auszuführen) kann es sein, dass> durch EMV der Speicher des Arduinos Variablen verändert/kippt?
Unsinn. Nein das kann NICHT sein.
Jetzt strukturiere dein Programm mal ordentlich und stell es hier
nochmal, als Code nicht als Bild, ein. Dann kann man auch was dazu
sagen.
Thomas Kloiber schrieb:> Während des Melkbetriebes bleibt das Karussell manchmal einfach> stehen und de LED leuchtet blau. um das Karussell aber wieder wegfahren> zulassen muss der Stoptaster aber 2 mal gedrückt werden statt nur einmal
Da dass anscheinend von Bedeutung ist, muss man "manchmal" auf "manchmal
ABER NUR beim ausschalten des Motors mit Schneckengetriebe" ändern.
(blieb in den letzten Tagen ca 20 mal stehen, dabei wurde der Motor
150mal Ein/Aus geschalten)
2 mal gedrückt heißt, dass der Arduino kein LOW an der Signalleitung vom
Stoptaster erhalten hat - sonst müsst man nur einmal drücken, um wieder
loszufahren
Du solltest dir auch mal klar machen welche globalen Zustände dein
Controller intern überhaupt verwalten muss. Diese kannst du dann auch
einfach mal dauernd über UART ausgeben. Damit siehst du, was der
Controller so denkt was da draussen eigentlich abgeht.
Aber auch dafür muss man sich erst mal im Kopf und dann im Code etwas
ordnen.
Schon mal eine Zustandsdiagramm gesehen? Kannst du so was für deine
Anlage malen?
Thomas schrieb:> kann es sein, dass durch EMV der Speicher des Arduinos> Variablen verändert/kippt?
Kann sein, ist aber sehr unwahrscheinlich. Ich würde zuerst alle anderen
möglichen Ursachen in Betracht ziehen.
Thomas schrieb:> NUR beim ausschalten des Motors
Klingt nach EMV-Problem durch induktive Störungen.
Hast du Snubber an deinen Relais verbaut?
Ist das eigentlich deine Eigenkonstruktion und gehörend die Ziegen dir
oder hast du das verkauft?
Udo S. schrieb:> Hast du Snubber an deinen Relais verbaut?
Nein, habe habe ich nicht - lediglich das Relais Shield mit einem
zweiten Netzteil versorgt.
Udo S. schrieb:> Ist das eigentlich deine Eigenkonstruktion und gehörend die Ziegen dir> oder hast du das verkauft?
Ja, Eigenkonstruktion für Zuhause - alles was irgendwie mit Strom zu tun
hat habe ich (18 Jahre) gemacht bzw. war vorher schon.
Thomas schrieb:> Udo S. schrieb:>> Hast du Snubber an deinen Relais verbaut?>> Nein, habe habe ich nicht - lediglich das Relais Shield mit einem> zweiten Netzteil versorgt.
Warum gönnst du dir nicht eine Logo oder S7-1200 und ein paar richtige
Hutschienenrelais und ein Industrienetzteil und machst diesem Graus ein
Ende?
So eine Mini-SPS wurde genau für Leute erfunden die nur so programmieren
können wie du. Also gar nicht.
Ein Arduino-Relais-Shield in so einen Schaltschrank auf ne Hutschiene
gedübelt ist echt nicht schön.
Schau dir doch mal die obere Hälfte an und vergleiche mit der unteren
Hälfte.
Oben professionell, unten Bastler-Pfusch. Willst du das wirklich? Willst
du das in 5 Jahren nochmal durchschauen wenn da irgendwas nicht mehr
geht (Falls du es jemals zum laufen bekommst.)?
Was ist wenn sich das mal ein Fachmann anschauen muss weil du gar keine
Zeit mehr hast oder im KH liegst oder sonst was?
Das ist doch kein Jugend-Forscht Projekt, das soll doch wohl über
längere Zeit zuverlässig laufen und wird ja wohl gewerblich genutzt.
Thomas schrieb:>> Was zum Geier ist ein Schneckmotor?>> ein Motor mit Schneckengetriebe (Umgangssprache)
Dachte ich mir schon.
> Nein, er führt keinen Reset durch. - er verändert nur einzelne> Variablen(ohne Code davor bzw danach auszuführen)
Naja, bei dem Kauderwelsch von "Struktur" ist das keine Kunst
> kann es sein, dass> durch EMV der Speicher des Arduinos Variablen verändert/kippt?
Theoretisch möglich, praktisch aber eher SEEEEEHR Unwahrscheinlich. Denn
einzelne Bits kippen eher bei ionisierender Strahlung als bei EMV.
>> Wenn das nicht der Fall ist, wird es wohl in eine Signalleitung>> reinspucken und falsche Signale vorgaukeln>> Wenn mir ausschließlich NUR der "Stoptaster" Probleme bereitet, kann der> "Fehler" trotzdem auch bei anderen Signalleitungen liegen?
Kann sein.
Was kann man machen? Man baue sich ein minimales Testprogramm, das im
1-10s Takt den "Schneckmotor" ein- und aus schaltet. Im gleichen
Programm muss dann auch der GLEICHE Code zur Entprellung der Eingänge
laufen, auch wenn die Ergebnisse nicht weiter verwendet werden. Dann
sieht man aber, in welche Eingänge was reinkoppelt. Dazu braucht man
aber eine Funktion zur Entprellung, die wie schon geschrieben NUR
entprellt und nicht weiter direkt in die Steuerung reingreift.
Hallo Thomas,
aus meiner Sicht gibt es ein paar augenscheinliche Mängel:
Es fehlen RC-Glieder zur Entstörung der Schützspulen. Ohne diese kann
bereits das Ein- und Ausschalten der Schütze Probleme verursachen.
Es fehlen wahrscheinlich auch 3-phasige Motorentstörglieder.
Es fehlt ein Steuertrafo, welcher bei Verwendung von mehr als einem
Schütz zwingend vorgeschrieben ist. Hier hast du weiterhin das Problem,
dass jeder Spike, welcher durch das Schalten der Motoren entsteht, ohne
jede Dämpfung in das Netzteil des Arduino einkoppelt.
Wahrscheinlich hast du die Taster Melkbetrieb, Zurück und Stop direkt
mit 5V beschaltet und auf die Eingänge des Arduino geführt. Dies ist
aber deshalb ungünstig, weil die Leitungen wie Antennen wirken und die
Störimpulse bis zu den Eingängen gelangen. Obwohl die Kollegen oben
anderer Meinung sind, solltest du die Taster mit 24V beschalten und über
Interfacerelais oder Optokoppler auf den Arduino führen, dann hast du
diese Fehlerursache sicher ausgeschlossen.
Wurde für den Stopp-Taster ein Öffner verwendet? Ausser das dies eine
Vorschrift (Drahtbruchsicher) ist, hat es noch weitere Vorteile.
Wie wurde der Personenschutz (Bedienpersonal) und der der Tiere
realisiert? Sind z. B. Sicherheitseinrichtungen gegen Quetschung
vorhanden? Ich sehe weiterhin weder Not-Aus-Taster für den Gefahrenfall
noch einen Hauptschalter.
Viel Glück und Grüße
Otto
Falk B. schrieb:> Man baue sich ein minimales Testprogramm, das im> 1-10s Takt den "Schneckmotor" ein- und aus schaltet.
Danke für den Tipp, werde ich morgen machen.
Habe den Arduino heute den ganzen Tag lang mit Metall abgeschirmt und es
gab keine Probleme - kaum klemmte ich die Erdung von der Schirmung ab
hüpfte die Variable auf 1..
Cyblord -. schrieb:> Du solltest dir auch mal klar machen welche globalen Zustände dein> Controller intern überhaupt verwalten muss. Diese kannst du dann auch> einfach mal dauernd über UART ausgeben.
Es verändert sich NUR die StopVariable - alle anderen machen was sie
sollen.
Das gleiche Programm läuft übrigens seit vorgestern wieder in meiner
Wohnung (klar ohne Starkstromleitungen in der nähe) aber trotzdem ohne
Probleme
Thomas schrieb:> Falk B. schrieb:>>> Man baue sich ein minimales Testprogramm, das im>> 1-10s Takt den "Schneckmotor" ein- und aus schaltet.>> Danke für den Tipp, werde ich morgen machen.>> Habe den Arduino heute den ganzen Tag lang mit Metall abgeschirmt und es> gab keine Probleme - kaum klemmte ich die Erdung von der Schirmung ab> hüpfte die Variable auf 1..
Ahhhh, ich glaube dein Steckernetzteil ist schuld. Das hat nämlich keine
Schutzerde. Die holst du dir zufällig irgendwo rein. Das ist aber
schlecht. Du brauchst eine DIREKTE, SOLIDE Verbindung von der
Arduino-Masse nach PE!
Ebenso dein 2. Netzteil für deine Relais. Diese Billig-China-Dinger sind
sowieso ein schlechter Witz! Dort hat man Billigst-Relais verbaut, die
einen sehr geringen Kriechweg zwischen Steueranschluß und
Schaltkontakten haben. Mit dem Optokoppler meint man, die
Isolationsfestigkeit zu erhöhen. Aber Murks bleibt Murks. Tu dir einen
Gefallen und beschaff dir gescheite Relais mit ordentlichen Abständen.
Dann braucht es auch keine Optokoppler und kein 2. Netzteil.
> Das gleiche Programm läuft übrigens seit vorgestern wieder in meiner> Wohnung (klar ohne Starkstromleitungen in der nähe) aber trotzdem ohne> Probleme
Nett, aber weniger als die halbe Wahrheit.
Falk B. schrieb:> Man baue sich ein minimales Testprogramm, das im> 1-10s Takt den "Schneckmotor" ein- und aus schaltet.
Hab ich gerade 30min lang getestet (ohne PE anzuschließen, oder Bleche
im Schaltkasten) - es wurden keine Variablen verändert. ich habe dem uC
auch zählen lassen wie oft er verschiedene Eingänge als LOW erkennt -
waren beim Stoptaster in den 30 min 75 Durchläufe - alle anderen lagen
bei max 20.
Weiters habe ich gerade ein Mini Programm geschrieben, dass einfach in
jeden Futterstand Futter hineinschmeißt (= Schneckmotor einschaltet),
bin gespannt was sich dabei rausstellt.
Thomas schrieb:> Falk B. schrieb:>> Man baue sich ein minimales Testprogramm, das im>> 1-10s Takt den "Schneckmotor" ein- und aus schaltet.>> Hab ich gerade 30min lang getestet (ohne PE anzuschließen, oder Bleche> im Schaltkasten) - es wurden keine Variablen verändert. ich habe dem uC> auch zählen lassen wie oft er verschiedene Eingänge als LOW erkennt -> waren beim Stoptaster in den 30 min 75 Durchläufe - alle anderen lagen> bei max 20.
Wie ist das zu verstehen? Es wurden in 30min 75x LOW erkannt, obwohl
keiner gedrückt hat? Ist das nicht eher ein Fehler?
> Weiters habe ich gerade ein Mini Programm geschrieben, dass einfach in> jeden Futterstand Futter hineinschmeißt (= Schneckmotor einschaltet),> bin gespannt was sich dabei rausstellt.
Ja, aber schließe erstmal PE sauber an deinen Arduino an! Siehe mein
anderer Beitrag!
Falk B. schrieb:>> auch zählen lassen wie oft er verschiedene Eingänge als LOW erkennt ->> waren beim Stoptaster in den 30 min 75 Durchläufe - alle anderen lagen>> bei max 20.>> Wie ist das zu verstehen? Es wurden in 30min 75x LOW erkannt, obwohl> keiner gedrückt hat? Ist das nicht eher ein Fehler?
Ja, das würde mich auch interessieren.
Pull-Up am Taster ?
Frag doch mal die Taster in der Timer ISR ab und warte in loop() nur
auf gesetzte Flags - ist übersichtlicher und sicherer auf jeden Fall.
Für seriellen Empfang und Wiegand getrennte Funktionen vorsehen, in
loop() nur eine Statemachine und schon wird es viel übersichtlicher.
Falk B. schrieb:> Wie ist das zu verstehen? Es wurden in 30min 75x LOW erkannt, obwohl> keiner gedrückt hat? Ist das nicht eher ein Fehler?
Ja, richtig verstanden
Marc V. schrieb:> Pull-Up am Taster
Ja, sind 4k7 gegen 5V
Thomas schrieb:> Falk B. schrieb:>> Wie ist das zu verstehen? Es wurden in 30min 75x LOW erkannt, obwohl>> keiner gedrückt hat? Ist das nicht eher ein Fehler?>> Ja, richtig verstanden
Na immerhin ein eindeutiges Ergebnis!
Schließ PE an den Arduino an und test nochmal. Denn durch das
undefinierte Massepotential am Arduino können die tollsten Dinge
passieren, vor allem weil in den meisten dieser Netzteile
Y-Kondensatoren von L und N gegen die Ausgangsmasse geschaltet sind.
Dort huschen Störungen liebend gern drüber!
Versuch mal, die beiden Lüsterklemmen am Eurostecker zu tauschen.
Dadurch geht der Y-Kondensator vielleicht ja an den Nullleiter, so dass
das 50Hz Brummen nicht mehr in die Schaltung gerät. Übrigens: Das Foto
sieht einfach geil aus!
Im Ernst: Hast du einen Schaltplan davon? Oder ein Blockschaltbild oder
Prinzipzeichnung oder hingerotzte Skizze oder so?
Selbst etwas in dieser Art könnte schon ein wenig Klarheit bringen:
https://xkcd.com/730/
Und vielleicht entdeckst du beim Zeichnen ja selbst das Problem...
Stefanus F. schrieb:> Eingänge mit Taster und Schalter würde ich etwa so entstören:
Jaja, und noch so ein "Expertentip". Der Rest der Welt macht das anders,
und das aus gutem Grund.
https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster
Denn dann hat man einen echten Tiefpaß vor dem Eingang, der sowohl gegen
HF als auch sehr gut gegen ESD schützt. Vor allem weil es immer ein
hochohmiges Längselement gibt (R2) und ein HF-mäßig niederohmiges
Querelement (C1). Und zwar genau DORT, wo es am wirksamsten ist, direkt
am uC-Pin!
Aber das hast du ja alles schon vor langer Zeit in der Le(e)hre gelernt
und immer wieder erfolgreich umgesetzt . . .
Werden Bauernhöfe nicht durch Gewerbeaufsicht/BG überprüft?.
Wenn die den Schaltkasten sehen werden sie die Stilllegung veranlassen.
Bitte mach das neu.
Thomas
Thomas schrieb:> Werden Bauernhöfe nicht durch Gewerbeaufsicht/BG überprüft?.> Wenn die den Schaltkasten sehen werden sie die Stilllegung veranlassen.
Die ordnen eher das komplette Niederbrennen an. Sicher ist sicher.
Falk B. schrieb:> Schließ PE an den Arduino an und test nochmal.
hab ich Heute gemacht - waren deutlich weniger.. es wurde aber trotzdem
noch 20x LOW erkannt
Thomas schrieb:> Falk B. schrieb:>> Schließ PE an den Arduino an und test nochmal.>> hab ich Heute gemacht - waren deutlich weniger.. es wurde aber trotzdem> noch 20x LOW erkannt
Na dann pack an die Eingänge eine Hardwareentprellung wie hier schon
gefordert.
Beitrag "Re: Arduino Mega für Programm nicht richtig aus"
R1 = 4k7
R2 = 22k
C1 = 100nF
Also wenn ich den Drahtverhau sehe möchte ich echt keine Ziege sein!
So etwas kann man auch ordentlich aufbauen.
Gerade bei Projekten wo Leistungselektronik und µC bzw. Logikschaltungen
eingesetzt werden ist Spannungsversorgung und Kabelführung extrem
wichtig. Längere Zuleitungen zu den Sensoren / Aktoren sollten geschirmt
sein. Den Schirm nicht als Masseleitung benutzen, sondern nur einseitig
mit Masse verbinden.
Nächste Sache ist die Stromversorgung. Logikschaltungen - auch der
Arduino - sollten eine eigene Spannungsversorgung erhalten. Ob man da
Hutschienennetzteile oder Steckernetzteile verwendet ist erst mal egal.
Allerdings der Anschluß des Steckernetzteils mit Lüsterklemmen ist ein
Nogo. Wenn man schon Steckernetzteile vorsieht, dann gehört da eine
Hutschienensteckdose hin.
Den Relais würde ich eine eigene Stromversorgung spendieren.
Werden mehrere Sachen über eine Stromversorgung betrieben, dann sollte
am Spannungseingang ein Elko und ein Kerko vorgesehen werden. In
hartnäckigen Fällen kann man auch noch über eine Ferritdrossel in der
Spannungszuführung nachdenken.
Bei großen induktiven Lasten (Motoren 400V/>0,1kW sind große induktive
Lasten) können auch noch Netzfilter vor den Netzteilen für
Logikeinheiten/µC erforderlich werden.
Die Leitungen der Sensoren werden auch nicht so wild wie bei Dir am
Arduino angesteckt/geklemmt. Da sollte man über eine passende
Interfaceplatte mit passenden Steckern oder Printklemmen nachdenken. Auf
diese Interfaceplatte gehören dann auch alle für die Entstörung der
Signale erforderlichen Bauelemente.
Wenn das dann alles klar ist, macht man sich erst mal einen ordentlichen
Plan vom mechanischen Aufbau. Übrigens gibt es auch für den Arduino
passende Hutschienengehäuse.
Zu Deinem Code: Ohne das ich ihn jetz bis ins Detail studiert habe sieh
er schon etwas chaotisch aus und ich möchte dort nicht unbedingt
Fehlersuche betreiben. Dein Code ist quasi unwartbar. Allerdings scheint
das derzeit Dein geringstes Problem zu sein, da er ja nach Abklemmen der
Verbraucher zu funktionieren scheint - Deine Aussage. Also bringe erst
mal den elektrischen/mechanischen Aufbau in Ordnung.