Störungen bei Anschluss von Servos und Tastern

Hallo zusammen!

Die letzten 7 Tage waren geprägt von purer Verwirrung meinerseits bei meinem neuen Arduino-Projekt. Jetzt bin ich so verwirrt, dass ich nicht mehr weiter komme.

Ich möchte 7 Servos (hier erstmal testweise nur 2 Servos) jeweils mit 1 Kippschalter (also insg. 7 Schalter) ansteuern. Ich nutze den Arduino Uno. Diese 7 Servos sollen jeweils eine Weiche meiner Modelleisenbahn umschalten.

Unten füge ich auch noch meinen aktuellen Code sowie den Schaltplan an. Das Problem ist folgendes:
Mit einem Servo und 1 Kippschalter funktioniert alles super. Sobald ich den 2. Kippschalter anstecke, fängt Servo 1 an zu zittern und lässt sich nicht mehr schalten. Servo 2 ist zu diesem Zeitpunkt noch gar nicht am Arduino. Bei der genaueren Untersuchung fiel auf, dass dies nur passiert wenn der 2. Kippschalter = HIGH ist. Wenn der 2. Schalter = LOW ist, funktioniert Servo 1 wieder ganz normal ohne zittern. Es ändert sich auch nichts, wenn der 2. Servo ebenfalls angesteckt ist, im Gegenteil es verschlimmert sich nur. Dann lässt sich weder Servo 1 noch 2 steuern.

Kann mir irgendjemand helfen?

#include<MobaTools.h> // Eine Library speziell für Modellbauer; Struktur gleich ähnlich wie bei <Servo.h>

MoToServo weiche1; // Definition Servo 1
MoToServo weiche2; // Definition Servo 2

void setup() {
weiche1.attach(1); // Servo 1 ist an Arduino-Pin 1
weiche2.attach(2); // Servo 2 ist an Arduino-Pin 2

pinMode(8, INPUT_PULLUP); // Kippschalter 1
pinMode(9, INPUT_PULLUP); // Kippschalter 2
}

void loop() {

if(digitalRead(8)==HIGH) {
 weiche1.write(0);
 delay(100);
  }
if(digitalRead(8)==LOW) {
  weiche1.write(100);
  delay(100);  
}
  
if(digitalRead(9)==HIGH) {
  weiche2.write(0);
  delay(100);
}
if(digitalRead(9)==LOW){
  weiche2.write(100);
  delay(100);
}
delay(20);
}

Schaltplan: (ich habe das Beste gegeben in Fritzing, hoffentlich ist es erkennbar. Die Servos hängen selbstverständlich an einer externen Stromversorgung)

Mit einem Pullup musst du die Eingänge auf LOW abfragen und den zweiten Pin des Schalters auch auf GND legen.
Und du darfst nicht den Pin D1 vom Uno nutzen, der wird vom USB Adapter schon verwendet.

Beides habe ich entsprechend geändert:

#include<MobaTools.h> // Eine Library speziell für Modellbauer; Struktur gleich ähnlich wie bei <Servo.h>

MoToServo weiche1; // Definition Servo 1
MoToServo weiche2; // Definition Servo 2

void setup() {
weiche1.attach(2); // Servo 1 ist an Arduino-Pin 1
weiche2.attach(3); // Servo 2 ist an Arduino-Pin 2

pinMode(8, INPUT_PULLUP); // Kippschalter 1
pinMode(9, INPUT_PULLUP); // Kippschalter 2
}

void loop() {

if(digitalRead(8)==LOW) {
 weiche1.write(0);
 delay(100);
  }
else {
  weiche1.write(100);
  delay(100);
}
  
if(digitalRead(9)==LOW) {
  weiche2.write(0);
  delay(100);
}
else {
  weiche2.write(100);
}
delay(20);
}

Jedoch leider keine Wirkung für das angesprochene Problem. Die Servos zucken weiter wenn Kippschalter 2 in der jeweiligen Stellung ist. Wenn Kippschalter 2 in der anderen Stellung ist, funktioniert alles prima!

Mach mal ein schönes Foto von Deinem Aufbau (Scharf und wo man sieht wohin die jeweiligen Kabel gehen).
Laut Deiner Beschreibung und des gezeigten Sketches ist alles richtig.
Ich habe verstanden daß Du den 2. Servo noch nicht angeschlossen hast.

Grüße Uwe

Doch der 2. Servo ist angeschlossen. Vielleicht ging das aus dem oberen Post nicht so ganz hervor. Foto ist etwas kompliziert, da die Servos bereits unter Modellbauplatte hängen, aber ich werde es mal versuchen.

Hier ein Foto, etwas unübersichtlich, Rückfragen gerne an mich!

Ich vermute, das sind Störungen vorhanden, die dir Probleme bereiten.

Welche Art von Störungen? Wackelkontakt? Den habe ich nämlich eigentlich schon ausgeschlossen.

Wie soll ich das Wissen ?
Du sitzt doch am Projekt.
Störungen durch irgendwas auf deiner Bahn oder im Raum oder......oder.
Schlechte Spannungsversorgung, was für ein Netzteil verwendest du.
Hast du die Spannung mal gemessen.?
Mit einem Oszi ?

An der Spannungsversorgung liegt es nicht. Die kommt mithilfe eines Brückengleichrichters und Spannungswandlers direkt vom Trafo. Du hast aber wahrscheinlich Recht mit den Störungen. Ich werde in den nächsten Tagen mal eine ordentliche Apparatur bauen, bei der man auch an den Arduino löten kann. Ich hoffe, dann wird es besser. Jetzt weiß ich wenigstens, es liegt nicht am Code. Danke für eure schnelle und kompetente Hilfe!

Ich tippe immernoch auf ein Spannungsversorgungsproblem.
Hast Du am Eingang des Spannungswandlers einen Glättungskondensator (ca 1000µF pro A)?
Auf dem Spannungswandler sind nur 100µF verbaut. Der glättet vieleicht halbwegs bei 200-300mA Stromverbrauch
Außerdem ist "Trafo" keine definition für Spannung oder Leistung . Ein Trafo kann schon auch mal unterdimensioniert sein.
Grüße Uwe

Wie Uwe schon anmerkte, das reicht nicht aus und kann auch dein Problem sein.
Du wirst es mit einem Oszi feststellen.
Ein größerer Elko muss sein.

Nur warum verwendest du nicht ein fertiges Netzteil ?

Nur so geraten bzw Frage an die Experten:
Könnte eine Verbindung von Netzteil-Masse zur Klemmenleiste helfen? - die Verbindung habe ich im Bild nicht entdecken können.
Oder reicht es, wenn die über die Arduino-Platine geschleift wird?

Das "Netzteil" ist kein Netzteil sondern ein Trafo der 50Hz Wechselspannung ausgibt. Da gibt es keine Masse. Einen Ausgang des Trafos mit dem Masseanschluß des Gelichrichters verbinden produzierst Du einen Kurzschluß einer Halbwelle.
Grüße Uwe

Ja, okay.
Rauch erzeugen mag ich zwar, aber nicht auf diese Art :slight_smile:

Ich meinte den Minus-Ausgang dieses "Gleichrichter-/Spannungswandler"-Teils. Der wird doch momentan nur mit dem Arduino-GND verbunden und nicht mit der Lüsterklemmenleiste, die so eine Art Masseschiene zu sein scheint.

Ich kann auf dem Foto nichts genaues bezüglich des Kabelverlaufs erkennen. Darum enthalte ich mich diesbezüglich einer Antwort.

Grüße Uwe

Man, hier ist ja was los. Also eins, nach dem anderen:

Nur warum verwendest du nicht ein fertiges Netzteil ?

Das ist einfach. Unter der Modellbahnplatte ist wenig Platz, deshalb auch kein Platz für ein weiteres 12V DC Netzteil. Wenn man schon einen Trafo hat, kann man ihn auch benutzen.

Nur so geraten bzw Frage an die Experten:
Könnte eine Verbindung von Netzteil-Masse zur Klemmenleiste helfen? - die Verbindung habe ich im Bild nicht entdecken können.
Oder reicht es, wenn die über die Arduino-Platine geschleift wird?

Du meinst, das Kabel, das vom Spannungswandler und Brückengleichrichter kommt direkt an die oben links zusehende Lüsterklemme anschließen und diese Masse-Schiene, wie du sie nennst (die ist eigentlich für das Verbinden aller GND-Pins der Kippschalter mit dem GND-Pin des Arduinos gedacht), an den GND-Pin des Arduinos?
Ja, das sollte gehen. Dem Arduino ist ja egal, woher der Strom kommt.

Ich tippe immernoch auf ein Spannungsversorgungsproblem.
Hast Du am Eingang des Spannungswandlers einen Glättungskondensator (ca 1000µF pro A)?
Auf dem Spannungswandler sind nur 100µF verbaut. Der glättet vieleicht halbwegs bei 200-300mA Stromverbrauch
Außerdem ist "Trafo" keine definition für Spannung oder Leistung . Ein Trafo kann schon auch mal unterdimensioniert sein.
Grüße Uwe

Der Trafo liefert als Sekundärspannung 16V bei 3,125 A. Ich habe nun einen 4700µF Kondensator als Glättungskondensator verbaut. Einen passenden (also ca. 3000µF) hatte ich leider nicht mehr vorrätig, sollte aber auch egal sein. Und was soll ich sagen: Es funktioniert!!!

Ich habe beide Servos angeschlossen und sie fahren ohne zu zucken in ihre vorgesehenen Stellungen. Ich hoffe, dass nun auch die anderen 5 Servos, die ebenfalls für das Projekt eingeplant sind, funktionieren werden. Dies werde ich in den nächsten Tagen probieren und dann hoffentlich das Projekt zuende stellen können.

Auf so ein Problem wäre ich im Leben nicht gekommen. Vielen, vielen Dank für eure kompetente und schnelle Hilfe, besonders natürlich an uwefed und HotSystems. Schön, dass es solche Foren gibt.

Prima, dass es jetzt funktioniert und danke für deine Rückmeldung.
Das wird bestimmt auch mit den restlichen Servos funktionieren.

Ist egal ob ein 4700 drin ist. Schön, daß das Problem gelöst ist.

Das kann ich Dir nicht garantieren. 7 Servos können schon mal mehr Strom als 3A verbrauchen ( nehme mal an daß der DC/DC Wandler ein 3A Typ ist; Ich rede jetzt nicht von den 3,15A des Trafos).
Du kannst aber einen 2. oder 3. Verwenden und die Servos aufteilen. Alle Massen sind zusammenzuschalten.
Das siehst Du aber wenn Du Servos dazufügst. wenns mit 5 geht aber mit 6 nicht dann ist es wieder die Stromversorgung.
Grüße Uwe

PS ReEDIT: einige Rechtschreibfehler ausgebessert.

Das stimm natürlich und ist sehr von den Servos abhängig.
Da sollte der Modellbahner einfach mal Links der Servos posten.

Entschuldigt die späte Antwort, der normale Wahnsinn hat mich wieder.

Ich nutze diese Servos. Sie verbrauchen laut Datenblatt 0,19 A (aufgerundet 0,2A). Der Arduino verbraucht max. 0,3-0,5 A. Das heißt alle zusammen verbrauchen, meiner Rechnung zufolge, maximal 1,5-1,9A. Sollte also locker reichen, oder nicht?

Ich habe alle Servos angeschlossen, es funktioniert auch viel besser. Leider funktionieren einige immer noch nicht, liegt aber meiner Meinung eher daran, dass sie einfach kaputt sind. Ich werde dies in den nächsten Tagen auch noch mit heilen (bei denen weiß ich, dass sie heil sind) probieren, jetzt habe ich aber erstmal andere Sachen zu tun. Danke für eure Hilfe.