Starke Schwankungen im Poti

Hallo zusammen

lese hier schon einige Zeit mit, und hab auch schon für manches Problemchen eine Lösung gefunden.

Nur hier steht ich etwas ratlos da, da die Schaltung ja nicht kompliziert ist und auch der Code recht übersichtlich ist. Aber nun zum Thema.

Wenn man einen Poti ausließt ist ja ein gewisse Schwankung ja normal. Ich sag mal so + - 10 würde ich ja nichts sagen. Aber bei mir schwanken die Wert gleich um mehrere 100 Punkte. Oder bleiben stehen so auf ca. 500. Also wenn ich auf eine Endlage drehe wird eine Messung der Wert 0 /1023 oder annähernder Wert angezeigt. Und springt dann wieder so auf 500 zurück, oder auch nicht.

So was hab ich schon alles gemacht.
Verwendet habe ich Potis mit den Werten 1K und 10K mehrere verschiedene. Mit dem Ohmmeter wird ein konstanter Wert angezeigt.

Verwendet habe ich einen Nano und einen Uno mit verschieden Analog Pins

Ausgelesen habe ich das ganze mit unterschiedlichen Baudraten am Seriellen Monitor.

Aber schön langsam gehen mir die Ideen aus.

Hab auch Beiträge gefunden wie man das bei leichten Schwankungen glätten kann, aber leicht ist was anderes als bei mir.

Was hab ich nun vor mit den Potis, es sind zwei in meine Projekt. Der eine soll die Lautstärke des DF Players verändern und der zweite soll zur Reichweiten Einstellung mit einem Ultraschallbero (HC-SR04) sein.

Wäre toll wenn mir jemand sagen könnte was das ist. Ich hab den Code aus dem Projekt genommen, damit es einfacher ist zum probieren und schauen. Das Verhalten hat sich aber auch dadurch nicht verändert.

So anbei noch die Codezeilen:

#define Ultraschall  A7
#define DFPlayer  A4
int UltraschallWeite = 0;
int DFPlayerLaut = 0;

void setup() {
  
//Starten der Serial Kommuniktion zum Serial Monitor
  Serial.begin(115200);
}

void loop() {
  UltraschallWeite = analogRead(Ultraschall);
  //UltraschallWeite = map(UltraschallWeite, 15 ,1011, 0, 200);
  DFPlayerLaut = analogRead(DFPlayerLaut);
 // DFPlayerLaut = map(DFPlayerLaut, 0, 1023, 0, 30);
// Serial.print("Ultraschall: ");
// Serial.println(UltraschallWeite);
 Serial.print("Lautstärke: ");
  Serial.println(DFPlayerLaut);
  delay(250);
}

Tobi

(deleted)

Deine Fehlerbeschreibung klingt nach einem Wackelkontakt. Ist da ein Steckbrett mit im Spiel?

Hallo tobi2233,

warum verwendest du kein rotary Encoder ?
Damit ist eine sehr präzise Einstellung möglich.

Hallo Leute

Danke erstmal für die Antwort.

@Peter
Bin momentan unterwegs aber ich beschreibe es Dir so gut es geht linke Seite an Plus 5+v links auf Minus (GND). Und er Schleifer in der Mitte auf den Analogen Pin.
Also Standard na Lehrbuch Google :wink:

@DrDiettrich

Hm dein Verdacht mit Wackler könnte nicht falsch sein. Hatte ich leider vergessen zu erwähnen. Sorry hab auch mit einem zweiten Steckboard gearbeitet. Das gleiche.

@HotSystems
Danke für den Tip werde ich mir heute Abend anschauen.

Werde es mir heute Abend nochmals genau anschauen. Und Rückmeldung geben.

Bis dann
Tobi

Hallo,

es gibt Potis da ist der Schleifer nicht in der Mitte. Sind meist Mehrgang Potis und der Schleifer ist etwas abgesetzt.

ist das Poti noch ganz, oder ist wegen mal falsch angeschossen ein Ende bereits durchgebannt.

Mess mal mit dem Ohmmeter den Widerstand zwischen den beiden äußeren Klemmen, muss 1K oder 10 K sein, je nach Poti. Der Wert darf sich nicht änderen wenn Du am Poti drehst, nur dann kannst Du sicher sein das diese beiden Klemmen auch die richtigen sind. Wenn der Wert sich ändert musst Du mal gegen einen andere Anschluss messen.

Wenn Du die beiden Klemmen gefunden hast bei denen sich der Wert nicht ändert dann sind das die richtigen Klemmen der beiden Enden und der dritte ist der Schleifer. Dann von einem Ende zum Schleifer messen und am Poti drehen. Der gemessene Widerstand muss sich jetzt kontinuierlich ändern von z.B. 0 bis zum Nennwert des Potis. Gegentest vom Schleifer zum anderen Ende und drehen, gemessene Wert muss sich jetzt ebenfall kontinuierlich ändern , allerding umgekehrt vom Nennwert bis 0 Ohm.

Heinz

Ja, es gibt Potis, an denen die beiden äusseren Pins nicht wirklich die beiden äusseren sind. Das merkt man, wenn man an den beiden äusseren Anschlüssen Plus und minus anschließt, dann das Poti mal in die eine Richtung bis Anschlag und dann in die andere Richtung bis Anschlag dreht. Wenn dann auf einer Seite der Rauch aufgeht, oder die Spannung auf Null geht, Sind das nicht wirklich die beiden äusseren Pin´s. aber diese Erkenntnis hilft zumindest für dieses Poti dann nichts mehr, weil das dann KO ist :frowning:

Soll aber jetzt keine Anleitung zum Prüfen sein, sondern eher eine Anleitung zum Zerstören der Technik. Also bitte nicht so Testen!! Das soll nur heißen, dass das passieren kann, dass die Pins eines Potis nicht so angeordnet sind wie man glaubt. Normal ist in der Mitte der Schleifer, die beiden Äusseren sind die festen Punkte. Soviel zur Theorie. Also ersthaft testen solltest du lieber so wie der Heinz beschrieben hat :slight_smile: :slight_smile:

es gibt Potis, an denen die beiden äusseren Pins nicht wirklich die beiden äusseren sind

Hab ich jetzt zwar noch nicht erlebt bei einem Poti oder Trimmpoti mit 3 Anschlüssen, aber das könnte man zerstörungsfrei durch eine Widerstandsmessung klären.

michael_x:
Hab ich jetzt zwar noch nicht erlebt bei einem Poti oder Trimmpoti mit 3 Anschlüssen, aber das könnte man zerstörungsfrei durch eine Widerstandsmessung klären.

Doch die gibt es. Ich hatte schon mal solche Potis und habe in meinem Jugendlichen Leichtsinn angenommen, dass der Anschluss zur Mittelanzapfung in der Mitte ist. War aber nicht so :slight_smile: Ich habe es genau auf dem beschriebenen Weg festgestellt. Und habe es erst nach dem zweiten Poti geschnallt, was das Problem ist. Jaaaa, manchmal dauert es etwas länger, bis der Groschen fällt :slight_smile: Beim ersten dachte ich noch an einen Defekt, also einen Schluss im Poti.

Wenige Potentiometer haben so feine Pins, daß sie gut in das Stekbrett Kontakt machen. Meist sind die Pins zu breit.
Wenn Du löten kannst dann löte einfach 3 starre Kabel an die Pin des Pontentiometer und stecke diese in das Steckbrett.
Ein analoger Eingang der unbeschaltet ist, liest zufällige Werte um 500.

Grüße Uwe

Hallo Leute

danke für die Antworten.

Kurz zur Diskussion ob die Potis ok sind. Ja ich hab diese mit den Ohmmeter durchgemessen alle 4 die ich verwendet habe. Es sind alles dreipolige Rechts / Links die Schleife und in der Mitte der Abnehmer. Also die passen.

Aber jetzt zur guten Nachricht, ich habe die Lösung gefunden!

Es ist die Namenszuweisung des Pins #define :o

Ich habe einen Beitrag gefunden, für leichte Schwankungen bei messen mit dem Potis. Der ist recht interessant. Die Seite dazu verlinke ich euch hier.

https://goetzmd.de/nicht-konstante-poti-werte-am-arduino-ausgleichen-tutorial/

Und die Lösung steht in einem englischen Forumsbeitrag hier bei Arduino. Gleich die erste Antwort:

https://forum.arduino.cc/index.php?topic=570220.0

Das #define scheint das über einen anderen Prozess umzuwandeln als wenn man ein int Zuweisung macht oder den Pin direkt angibt.

Denn nachdem ich nämliche den Pin direkt "DFPlayerLaut = analogRead(A4);" im Sketche eingeben habe, zeigte mir der Poti klare und ruhige Werte ohne irgendein Zittern an.

Also nochmals Danke für die Unterstützung und Hilfe.

Machts gut und bleibt gesund
Tobi

Das #define scheint das über einen anderen Prozess umzuwandeln als wenn man ein int Zuweisung macht oder den Pin direkt angibt.

#define A b macht im Preprozessor nur eine einfaches Textersetzung. Nichts anderes. Aus A wird b

Du doktorst nur an den Konsequenzen herum indem Du einen Mittelwert berechnest, nicht aber am Grund der Falschmessungen. Ein Mittelwert eliminiert gelegentliche Falschwerte aber nicht viele hintereinander.

Du solltest Dich mal schauen ob die Potentimeter im Breadboard richtig Kontakt machen.

Grüße Uwe

tobi2233:

...

int DFPlayerLaut = 0;
...
  DFPlayerLaut = analogRead(DFPlayerLaut);
...

Könnte der Fehler nicht bereits hier entstanden sein? :wink:

tobi2233:
Denn nachdem ich nämliche den Pin direkt "DFPlayerLaut = analogRead(A4);" im Sketche eingeben habe, zeigte mir der Poti klare und ruhige Werte ohne irgendein Zittern an.

Das hat den Grund nicht beseitigt. Das war einfach nur Glück dass du jetzt wieder besseren Kontakt hast.

Der Grund ist der schlechte Kontakt am Breadboard.

Hallo

Das mit dem Steckboard hab ich ausgeschlossen. Da ich hier inzwischen das ganze mit Krokoklemmen angeschossen habe.

Mir ist halt gestern aufgefallen wie das Sketch aus dem Link auf den Arduino gespielt habe, bekam ich in der ersten Spalte saubere Werte zurück. Darauf habe ich mir das ganz nochmals mit meinem Sketch verglichen, und gesehen was unterschiedlich war.

Und wie geschrieben habe, nachdem ich den Pin entweder direkt angeben habe, oder über int deklariert hatte, funktionierte es. Ich bekam saubere Werte zurück.

Auch die bei der Änderung der Zuweisung mit 0 und ohne 0 in der Variable blieb alles ruhig.

tobi2233:
Das mit dem Steckboard hab ich ausgeschlossen. Da ich hier inzwischen das ganze mit Krokoklemmen angeschossen habe.

Das ist jetzt nicht dein Ernst ?

Schon mal was von einem Lötkolben gehört ?

Was ich mit dem Programmschnipsel sagen wollte: der entstandene Fehler ist ein Tippfehler im ersten Sketch.

Du liest nicht von Pin "DFPlayer A4" sondern von Pin "DFPlayerlaut" und der ist 0..
..und schlimmer noch: der gelesene Wert DFPlayerlaut wird nun der Pin, von dem im nächsten Durchlauf der Wert DFPlayerlaut gelesen wird. Chaos vorprogrammiert :wink:

Beim Umschreiben hast du den korrekten Pin A4 dann benutzt und voila... die Werte passen :slight_smile:

Aber jetzt zur guten Nachricht, ich habe die Lösung gefunden!

Es ist die Namenszuweisung des Pins #define :o

Was ein irrsinn.

int DFPlayerLaut = 0;

Soll wohl der Pin A0 sein....

  DFPlayerLaut = analogRead(DFPlayerLaut);

Hier wird dann die Pinnummer mit dem analogen wert überschrieben.
Und einen A300 Pin gibt es nicht.

Das ist der Fehler.
Mit Define hat das nichts zu tun!
Ein Define ist an der Stelle weder nötig, noch sinnvoll

--

Auch das Steckbrett ist an der Stelle völlig unschuldig.
Vielleicht problematisch, aber hier dran unschuldig.