Hallo,
ich bin Arduino Neuling und gerade an meinem ersten Projekt:
ein intelligentes Gewächshaus mit automatischer Bewässerung...
Ich bin gerade dabei 3 Potentiometer auszulesen mit denen ich dann quasi
manuell für jeden der 3 Blumentöpfe eine Schaltschwelle einstellen kann
bei der dann gegossen wird.
Ich hänge die beiden äußeren Füße des 10k Potis an GND und 5V das
mittlere an einen Analogen Pin am Arduino.
1. Wenn ich am analogen Pin nichts anschließe und ihn dennoch auslese
kommen werte um die 300 raus, was ja eigentlich nicht sein kann...
2. Wenn ich einen Poti wie beschrieben anhänge liefert der Befehl
analogRead(potiPin); auch keine realistischen Werte.
Die Werte springen und fallen nach jeder Messung im Seriellenmonitor
sieht dann das ohne am Poti zu drehen so aus:
65
367
369
370
358
247
218
4
211
256
298
320
334
343
348
351
355
359
360
362
363
363
364
365
365
366
367
373
371
371
Könnt ihr mir irgendwie helfen?
Also mein Ziel ist es verlässliche Werte zu bekommen die ich mit dem
Befehl map() als Schaltschwelle für meine Pumpen nutzen kann.
Ich hoffe ich habe mein Problem verständlich erklärt.
Mfg Jannes
Jannes schrieb:> Wenn ich am analogen Pin nichts anschließe und ihn dennoch auslese> kommen werte um die 300 raus
offner Eingang spielt Radioantenne und will was erkennen was nicht da
ist.
Jannes schrieb:> 2. Wenn ich einen Poti wie beschrieben anhänge
achso, verrate nur nicht wo das beschrieben ist UND wie du es angehängt
hast, man könnte Fehler finden.
Jannes schrieb:> 1. Wenn ich am analogen Pin nichts anschließe und ihn dennoch auslese> kommen werte um die 300 raus, was ja eigentlich nicht sein kann...
da du die Spannung nicht definiert hast, kann alles mögliche rauskommen.
Das ist soweit in Ordnung.
Jannes schrieb:> 2. Wenn ich einen Poti wie beschrieben anhänge liefert der Befehl> analogRead(potiPin); auch keine realistischen Werte.
Also das Poti zwischen 5V und GND und den Schleifer zum ADC? Dann
müssten sinnvolle Werte rauskommen, die auf das Drehen des Potis
reagieren. Da muss wohl ein Fehler in deinem Aufbau oder in deiner
Software sein. Vielleicht hast du die Verbindungen anders gemacht als du
denkst. Oder du liest den falschen ADC-Eingang aus. Oder ...
Joachim B. schrieb:> achso, verrate nur nicht wo das beschrieben ist UND wie du es angehängt> hast, man könnte Fehler finden.
Na ja, wahrscheinlich so wie im Eröffnungsbeitrag beschrieben, oder?
Jannes schrieb:> 1. Wenn ich am analogen Pin nichts anschließe und> ihn dennoch auslese kommen werte um die 300 raus,> was ja eigentlich nicht sein kann...
Warum denn nicht?
Die heute allgemein übliche CMOS-Technik ist so hochohmig,
dass jeder offene Eingang als Antenne wirkt und sich
irgendein "schwimmendes" Potenzial einstellt. Der gemessene
Wert kann vom Exemplar, der Temperatur, der Luftfeuchtigkeit,
dem Sonnenstand, der Mondphase... abhängen.
> 2. Wenn ich einen Poti wie beschrieben anhänge liefert> der Befehl analogRead(potiPin); auch keine realistischen> Werte.
Doch... :)
> Die Werte springen und fallen nach jeder Messung im> Seriellenmonitor sieht dann das ohne am Poti zu drehen> so aus: [...]
Guck' mal auf das Diagramm, das ich aus Deinen Werten
erzeugt habe...
Wert 8 ist natürlich eine Störung (Wackelkontakt?); der
Rest sieht normal aus.
Es ist empfehlenswert,
1. für das Poti eine gut entstörte Versorgungsspannung
zu verwenden,
2. stets mehrere Messpunkte zu nehmen,
3. eventuell Ausreißer zu eliminieren,
4. einen Mittelwert zu berechnen.
Wie viel Ohm hat das Poti?
Wie lang sind die Kabel?
Wie ist der ADC Konfiguriert? Referenzspannung?
Hast du störende Verbraucher (z.B. hohe Lasten, steile Flanken) in der
Nähe?
Vorschläge (die je nach Antworten auf die obigen Fragen sinnvoll sind
oder eben nicht):
- Kabel kürzen, Schirmen etc.
- Filter analog oder digital
- niederohmigeres Poti
Jannes schrieb:> Ich bin gerade dabei 3 Potentiometer auszulesen
Welchen Wert hat dein Poti?
Auch solltest du nicht mit Kondensatoren sparen, einen für die
Potiversorgung und einen für jeden ADC-Eingang, falls dein Signal nicht
niederohmig genug ist.
Die Versorgung von deinem Poti muss außerdem fest an die Referenz
angekoppelt sein (Ratiometrische Messung). Sonst misst du nicht nur die
Stellung des Potis, sondern auch die Schwankungen der Versorgung relativ
zur Referenz.
Wolfgang schrieb:> Jannes schrieb:>> Ich bin gerade dabei 3 Potentiometer auszulesen>> Welchen Wert hat dein Poti?Jannes schrieb:> Ich hänge die beiden äußeren Füße des 10k Potis an> GND und 5V das mittlere an einen Analogen Pin am> Arduino.
Jannes schrieb:> 10kAchim S. schrieb:> Na ja, wahrscheinlich so wie im Eröffnungsbeitrag beschrieben, oder?
übersehen, aber ich bin ja nicht alleine
Wolfgang schrieb:> Welchen Wert hat dein Poti?
:)))
bleibt halt die Frage nach Bilder
Joachim B. schrieb:> UND wie du es angehängt> hast
Also ich habe Potis mit widerständen von 10kOhm und die Kabel sind max.
10 cm lang...
Den Aufbau habe ich mehrfach überprüft und keinen Fehler gefunden...
Mein Script sieht so aus:
int potiPin = 2;
int potiValue = 0;
void setup() {
pinMode (potiPin, INPUT);
Serial.begin (9600);
}
void loop() {
potiValue = analogRead(potiPin);
Serial.println (potiValue);
delay (1000);
}
Also das ist natürlich nur der Script um die Potis zu testen...
Jaski J. schrieb:> Den Aufbau habe ich mehrfach überprüft und keinen Fehler gefunden...
Hat hier der Typ, der die Kabel nur in die Löcher des Footprint, für
eine Stiftleiste getseckt hat, auch behautet.... Bilder statt Prosa, ist
deshalb Motto und keine Schikane.
Jaski J. schrieb:> Also ich habe Potis mit widerständen von 10kOhm und die Kabel sind max.> 10 cm lang...> Den Aufbau habe ich mehrfach überprüft und keinen Fehler gefunden...
miss mit einem Multimeter nach, ob die Spannung am ADC-Eingang dem Poti
folgt.
Jaski J. schrieb:> int potiPin = 2;
bist du sicher, dass diese Nummer stimmt?
Arduino Fanboy D. schrieb:>> int potiPin = 2;> Du sagst 2, meist aber A2>> Das ist egal?> Ok, wenn 2 das gleiche wie 16 ist.....
Hier liegt ein Mißverständnis vor: Ich gucke mir ein funktionsfähiges
Programm an, da habe ich "analogRead (7);" stehen und es wird
tatsächlich A7 gelesen.
Im selben Programm steht auch "digitalRead(7)", da wird mein Taster am
D7 korrekt erkannt.
Die A*-IDE unterscheidet von selbst anhand digitalRead / analogRead, ob
sie auf D oder A zufasst.
Deine 16 ist der Sonderfall, Analogports Digital zu nutzen.
Ich glaube eher, dass Jannes Fehler im Aufbau hat.
Manfred schrieb:> Hier liegt ein Mißverständnis vor
Ja?
Es sagt:
> pinMode (potiPin, INPUT);
Was ist daran missverständlich?
Aufmerksam, der Manfred, sein möchte.
Arduino Fanboy D. schrieb:> Es sagt:>> pinMode (potiPin, INPUT);> Was ist daran missverständlich?
Er sagt: "int potiPin = 2;" und setzt damit eine Variable.
Er sagt "pinMode (potiPin, INPUT);" und setzt damit D2 als Eingang.
Jetzt kommt "analogRead(potiPin);", was nach meinem Verständnis den
ANALOG 2 auslesen wird.
Manfred schrieb:> Jetzt kommt "analogRead(potiPin);", was nach meinem Verständnis den> ANALOG 2 auslesen wird.
Yes!
Warum sollte man D2 auf Input setzen, wenn man doch A2 Analog auslesen
möchte?
Denn A2 ist doch D16 oder?
!Verwirrung!
Jaski J. schrieb:> Bei einem Poti bekomme ich mittlerweile realistische Werte von 0 bis> 1023 aber von den anderen beiden nicht...
Vertrau den (billigen) Dupont-Kabel nicht blind und den Lötstellen auf
keinen Fall.
Potis werden gern mal von Unbedarften gegrillt. Hier einmal falsch
angesteckt und dran rumgekurbelt und schon ist die Kohleschicht am
verdampfen.
Es ist also auch nicht grad unwahrscheinlich, das die beiden Potis
kaputt sind.
PS: Mit Schrumpfschlauch.... Gefällt mir, so soll das sein. :)
Teo D. schrieb:> PS: Mit Schrumpfschlauch.... Gefällt mir, so soll das sein. :)
Nix Schrumpfschlauch, das sind normale Breadboard Verbindungskabel mit
angespritzten Pins.
@Jannes
Hast du die Pins nur um die Potianschlüsse herumgebogen, oder auch
zusätzlich noch gelötet? Auf dem Bild ist das für mich nicht erkennbar.
Jaski J. schrieb:> Hier ein Foto von dem Aufbau.
Wenn man einen Arduino nur an USB betreibt bekommt man an
den 5V-Pins nicht wirklich 5V sondern etwas weniger, und das
kann dann auch noch durch verschiedene äussere Effekte
schwanken.
Das kriegt alles das Poti mit das an +5V angeschlossen ist ....
Jaski J. schrieb:> Bei einem Poti bekomme ich mittlerweile realistische Werte von 0 bis> 1023 aber von den anderen beiden nicht...
dann wäre es freundlich und hilfreich zu sagen, was jetzt bei dem einen
Poti die Verbesserung bewirkt hat. Hast du es einfach nochmal neu
angesteckt? Oder hast du einen Fehler gefunden (z.B. falschen Pin
benutzt)?
Und wie schon oben geschrieben:
Achim S. schrieb:> miss mit einem Multimeter nach, ob die Spannung am ADC-Eingang dem Poti> folgt.
Wenn du mit einem unabhängigen Messgerät (Multimeter) nachgeprüft hast,
ob die erwartete Spannung tatsächlich am Eingang des µC ankommt, dann
lässt sich der Bereich, in dem man weiter nach Fehlern suchen muss,
ungefähr halbieren.
Jaski J. schrieb:> Bei einem Poti bekomme ich mittlerweile realistische Werte von 0 bis> 1023 aber von den anderen beiden nicht...
Dann nimm den Mittenanschluss des funktionierenden Potis und schließe
ihn der Reihe nach an die Eingangspins für die anderen Potis an. Sollte
das realistische Ergebnis mit wandern, dann sind deine beiden anderen
Potis wohl defekt, wenn nicht, dann hast du ein Softwareproblem.
Wilke schrieb:> Teo D. schrieb:>>> PS: Mit Schrumpfschlauch.... Gefällt mir, so soll das sein. :)>> Nix Schrumpfschlauch, das sind normale Breadboard Verbindungskabel mit> angespritzten Pins.>> @Jannes> Hast du die Pins nur um die Potianschlüsse herumgebogen, oder auch> zusätzlich noch gelötet? Auf dem Bild ist das für mich nicht erkennbar.Teo D. schrieb:> Jaski J. schrieb:>> Den Aufbau habe ich mehrfach überprüft und keinen Fehler gefunden...>> Hat hier der Typ, der die Kabel nur in die Löcher des Footprint, für> eine Stiftleiste getseckt hat, auch behautet.... Bilder statt Prosa, ist> deshalb Motto und keine Schikane.
..... :´(´´
Wolfgang schrieb:> Welchen Wert hat dein Poti?Jaski J. schrieb:> Bei einem Poti bekomme ich mittlerweile realistische Werte von 0 bis> 1023 aber von den anderen beiden nicht...>> Hier ein Foto von dem Aufbau.
Kann es sein das Du die Kabel an den Nieten für die Kontaktfahnen
angelötet hast?
Auf dem Foto sieht das so aus. Das sollte man eher nicht tun, weil dabei
meist die Kontaktsicherheit zur Widerstandsschicht leitet. Was meinst Du
wozu die Kontaktfahnen da sind? - man darf (soll) sie benutzen.
Beo Bachta schrieb:> Wenn man einen Arduino nur an USB betreibt bekommt man an> den 5V-Pins nicht wirklich 5V sondern etwas weniger, und das> kann dann auch noch durch verschiedene äussere Effekte> schwanken.
Das ist egal, der ADC ist ratiometrisch.
Beo Bachta schrieb:> Jaski J. schrieb:>> Hier ein Foto von dem Aufbau.>> Wenn man einen Arduino nur an USB betreibt bekommt man an> den 5V-Pins nicht wirklich 5V sondern etwas weniger, und das> kann dann auch noch durch verschiedene äussere Effekte> schwanken.>> Das kriegt alles das Poti mit das an +5V angeschlossen ist ....
Bei einer ratiometrischen Messung völlig irrelevant.
Die 5V können ruhig "wandern".
Die ADC Werte kratzt das nicht.
Ok Danke schonmal für die Tipps...
ich werde jetzt diie Kabel an diese Beinchen löten und nicht an die
Öse... mal schauen was dabei rausspringt.
Wenn das dann noch nicht funktioniert mess ich mal den 5V ausgang am
Arduino aus...
Und ja die Kabel sind verlötet... (halt an dieser Öse...)
Und wenn ich da immer noch keinen Fehler findet sind die wahrscheinlich
kaputt...
Jaski J. schrieb:> ich werde jetzt diie Kabel an diese Beinchen löten und nicht an die> Öse... mal schauen was dabei rausspringt.
Wenn Du Pech hast, wurde durch Deine Löterei der Übergang von Anschluss
zu Schleifer zertstört.
Update:
habe die Potis alle der Reihe nach in ein Breadboard gesteckt und habe
die dann quasie von den Füßen aus verkabelt und habe so gute Messwerte
bekommen...
Vielen Dank Zeno und alle anderen für eure Tipps!
Jaski J. schrieb:> Und wenn ich da immer noch keinen Fehler findet sind die wahrscheinlich> kaputt...
Das kannst du doch mit dem Ohmmeter rausfinden.
Oder, wie es schon geschrieben wurde, die Spannung am Schleifer messen,
wenn die Enden an GND und +5V liegen. Dann mußt du am Schleifer eine
Spannung, die dem Drehwinkel entspricht, messen.
Arduino Fanboy D. schrieb:> Bei einer ratiometrischen Messung völlig irrelevant.> Die 5V können ruhig "wandern".> Die ADC Werte kratzt das nicht.
Wandern ja, aber verseucht dürfen die 5V nicht sein. Wenn als Referenz
AVCC verwendet wird, muss das Poti auch aus AVCC versorgt werden und für
optimale Performance muss die AVCC vernünftig von der (verseuchten) VCC
entkoppelt sein.
Zumindest beim Arduino(TM) UNO Rev3 ist das nicht wirklich der Fall.
https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf
Wolfgang schrieb:> Zumindest beim Arduino(TM) UNO Rev3 ist das nicht wirklich der Fall.Wolfgang schrieb:> und für> optimale Performance muss die AVCC vernünftig von der (verseuchten) VCC> entkoppelt sein.
Is klar...
Vermutlich meinst die die Auswirkungen bei absoluten Messungen mit der
internen 1,1V Referenz.
Ja... da hat das schon Auswirkungen.
Bei einer ratiometrischen Messung von 3 Potis wirst du das nicht
nachweisen können.
Arduino Fanboy D. schrieb:> Warum sollte man D2 auf Input setzen,> wenn man doch A2 Analog auslesen möchte?
Weil man irgendetwas nicht verstanden hat. Der Befehl ist überflüssig,
in dem beschriebenen Aufbau richtet er aber keinerlei Schaden an. Ich
glaube noch immer, dass wir beide aneinander vorbei geredet haben.
Wolfgang schrieb:> Wenn als Referenz AVCC verwendet wird,> muss das Poti auch aus AVCC versorgt werden
Hast Du schon einmal reale Schaltungen aufgebaut oder studierst Du noch?
Du plapperst hier blanke Theorie, die in dem konkret gegebenen Fall
vollkommen uninteressant ist.
Mein erster Testaufbau, um mir mal einen UNO anzugucken (Mikroprozessor
und Controller kannte ich schon Jahre zuvor) sah ziemlich genauso aus,
allerdings ohne Wackelkontakte ordentlich auf Lochraster gelötet und
liefert stabile Werte vom Poti.
Jaski J. schrieb:> ich werde jetzt diie Kabel an diese Beinchen löten> und nicht an die Öse... mal schauen was dabei rausspringt.
Jetzt komme ich nicht an der Frage vorbei, ob Du Dir schon alleine die
Schuhe zubinden kannst?
Mit dem Drehpoti willst Du eine Spannung zwischen 0 und 5 Volt
einstellen. Ist es nicht möglich, ein Multimeter zu nehmen und das zu
messen? Das ist Arduino zweite Stunde, in der ersten fragt man Taster
ab.
Ich habe vor ein paar Wochen im Lidl Digitalvoltmeter für 9,95 Euro
gesehen, die für diesen Zweck mehr als ausreichend wären. Wenn das zu
teuer ist, bei Aliexpress nach DT-832 suchen, die Dinger kommen um 3,50
Euro frei Haus und sind erschreckend genau.
Jaski J. schrieb:> habe die Potis alle der Reihe nach in ein Breadboard gesteckt und habe> die dann quasie von den Füßen aus verkabelt und habe so gute Messwerte> bekommen...
Bei dieser Gelegenheit hast du dann auch gleich die Kontakte deines
Steckbretts so weit auseinander gebogen, dass sie beim nächsten
"normalen" Draht einen Wackelkontakt produzieren (viel Spaß bei der
Fehlersuche ;-)
Deshalb löte ich an die drei Potianschlüsse immer ein kurzes Drahtstück
mit passendem Druchmesser und stecke das dann ins Steckbrett.
Floh schrieb:> die Spannung am Schleifer messen
Das ist generell eine gute Idee.
Teo D. schrieb:> Jaski J. schrieb:>> Bei einem Poti bekomme ich mittlerweile realistische Werte von 0 bis>> 1023 aber von den anderen beiden nicht...>> Vertrau den (billigen) Dupont-Kabel nicht blind und den Lötstellen auf> keinen Fall.> Potis werden gern mal von Unbedarften gegrillt. Hier einmal falsch> angesteckt und dran rumgekurbelt und schon ist die Kohleschicht am> verdampfen.> Es ist also auch nicht grad unwahrscheinlich, das die beiden Potis> kaputt sind.>> PS: Mit Schrumpfschlauch.... Gefällt mir, so soll das sein. :)
Das ist aber so völlig verkehrt, der Schlumpfschlauch muss das Potti
komplett umschließen.