wenn ich hier an meinem STM32F Analogwerte per ADC lese, so haben diese, wenn die Einangspins einfach nur offen sind, irgendwie zufällige Werte, die zwar jeweils fix aber bei jedem ADC anders sind. Lege ich Sie gezielt auf 0 oder 5V, dann haben alle ADCs identische, den Eingangspannungen entsprechende Werte.
Das lässt mich vermuten, dass die ADC-Eingänge auch irgend eine Art von Pull-up- oder -down benötigen.
Meine Frage: was hänge ich da am besten rein? Einfach nur einen simplen 10K-Widerstand gegen Masse? Oder was wäre eine clevere Lösung?
Wer viel misst, misst viel Mist.
Wieso solltest du die Eingangsspannung von offenen Pins lesen? Das kommt ja ganz auf die Schaltung dahinter an, ob das sinnvoll ist oder nicht.
Zum Einlesen von Schaltern habe ich mal den Schalter als Spannungsteiler beschaltet mit Pull-Up vorm Schalter und dann die beiden Ausgänge (NO, NC) zu anderen Widerstandswerten. So konnte ich per ADC die Schalterstellung auswerten, und wenn der Stecker vom Schalter nicht eingesteckt war, gabs dann V_ref über den Pull-Up. Kann man auch auf unzählige Arten anders beschalten.
Wenn der Eingang offen ist, macht eine Messung doch auch keinen Sinn. Man ignoriert den Eingang also einfach (wenn der ADC den dennoch abtastet)?!
Ein Pull-Up/Down ist also recht überflüssig. Es sei denn, man weiß nicht,
ob er offen ist. Dann könnte man natürlich einen Pull-Down anschließen, und
aus ADC-Wert ca. 0 schließen "Eingang offen", aber wenn bei einem tatsächlich genutztem Eingang der Bereich bis 0V herunter relevant ist, ist's wieder Essig.
Wenn man offenen Eingänge zuverlässing erkennen will, muss man wohl sehr hochohmige schaltbare Pull-Up/Down-Widerstände anschließen und dann mal mit, mal ohne messen.
Und wie groß? Tja, das hängt von der Quellimpedanz ab ... Aber mit 50 bis 100kOhm dürfte man ganz gut hinkommen.
Die Werte sind übrigens sicher nicht "fix", sondern dürften (langsam) schwanken, und stark vom Layout und benachbarten Leiterbahnen abhängen.
Ein Pull-Up/Down ist also recht überflüssig. Es sei denn, man weiß
nicht, ob er offen ist.
Das ist der Punkt, bei der endgültigen Lösung weiß die Firmware nicht, ob der Eingang vom Anwender beschaltet wurde, oder nicht.
Die Werte sind übrigens sicher nicht "fix", sondern dürften (langsam)
schwanken, und stark vom Layout und benachbarten Leiterbahnen abhängen.
Ja, es geht immer ein paar Bytes hin und her, aber der eine Eingang liefert z.B. Werte um die 735 und der andere um die 2100, im Vergleich untereinander sind die also ungefähr fix.
Oder einfach die internen Pull-Widerstände nehmen?
Immerhin sind ja bei den Analogwerten die Signalflanken eher unkritisch. Soweit ich mich erinnere, steht auch in den Datenblättern, dass man den Analogmodus mit den Pull-Widerständen kombinieren kann.
Das ist der Punkt, bei der endgültigen Lösung weiß die Firmware nicht,
ob der Eingang vom Anwender beschaltet wurde, oder nicht.
Ja, dann solltest Du wirklich einen Pullup oder Pulldown einbauen.
Einen Pullup- oder Pulldown-Widerstand, der dann - wenn es drauf ankommt - die zu messende Quelle belastet und das Messergebnis entsprechend verfälscht...