da sucht man Stunden einen logischen Fehler, und dann ist der LEDpin D13 an der Messwertverfälschung schuld
Erst mal die Frage: Sind die DigitalPins beim Arduino Nano intern hardwaremäßig alle gleichwertig verschaltet, oder sind die evtl. gruppiert. Aus dem Datenblatt werde ich nicht schlau, evtl. hat jemand einen Hinweis auf die richtige Sektion.
Hintergrund: Schalte ich den LEDpin D13 ein, verfälscht es mir das Messergebnis leicht durch die Last die die LED darstellt. Ich schalte mehrere Messwiderstände über Digitalports, und beim hochohmigsten hat es gut sichtbaren Einfluss (1% oder so).
Wenn Du uns den Sketch zeigst, könnten wir evtl. verstehen, was uns Dein Text sagen soll. Welche Messwerte an welchen Pins werden wie verfälscht, wenn Du was mit Pin 13 machst?
SpaghettiCode:
Erst mal die Frage: Sind die DigitalPins beim Arduino Nano intern hardwaremäßig alle gleichwertig verschaltet, oder sind die evtl. gruppiert. Aus dem Datenblatt werde ich nicht schlau, evtl. hat jemand einen Hinweis auf die richtige Sektion.
Ich schaue in den Schaltplan, wo D13/SCK mit PB5/SCK des ATmega328 verbunden ist. PB5 = Port B Bit 5 wobei ein Port eine Gruppierung darstellt. Außerdem sehe ich noch Port C und D.
Diese Gruppierung dürfte aber mit Deinem Problem nichts zu tun haben.
Dafür sehe ich von D13/SCK einen 330R-Widerstand über eine LED an GND. Hier findest Du den Grund für die Abweichung. Lösung: anderen Pin nutzen oder LED auslöten.
Eine klassische Widerstandsmessung, aber die Messwiderstände (Autoranging) hängen nicht an der Versorgungsspannung = Vref, sondern an Digitalports D4 bis D9, sind also umschaltbar. LEDpin D13 ist nicht beschaltet, sondern soll nur als Signal dienen, es hängt nichts weiteres an D13 dran. Schalte ich die LED an, habe also eine Last von geschätzt 5mA, dann bekomme ich vom ADC, in diesem Fall A1 einen differenten Wert im hochohmigsten Bereich (D9) gegenüber LED aus zurück.
Meine Frage zielt darauf ab, ob es sinnvoll ist, einen anderen Pin für diesen Messwiderstand zu benutzen, also anstelle D9 irgend einen anderen, ansonsten muss ich die LED einfach aus lassen, sobald ich diesen Messbereich verwende. Den Gegentest habe ich nach einigem Suchen durchgeführt, einfach auskommentiert //digitalWrite(ledPin, HIGH); die LED bleibt aus, das Messergebnis wird nicht verfälscht.
Auch wenn ich die Ursache eher woanders vermuten würde, so könntest Du anstelle D9 mal D2 oder D3 verwenden oder alle sechs Ausgänge an D2 bis D7 hängen, wäre dann einheitlich Port D.
Danke! [ + ] Ich habe im Datenblatt gesucht, aber wohl überlesen oder übersehen auf den 441 Seiten.
Im Pinout des Nano sind die aber aufgeführt, konnte es nur nicht deuten, jetzt bin ich wieder etwas schlauer.
PB0 = D8 und PB1 = D9 bestätigen beide das Verhalten, daß die LED an D13 eine Last darstellt, was die "Gruppe B" gegenüber Vref belastet.
Nur an D8 ist der Einfuss geringer, auf Gruppe D gibt es faktisch keinen Einfluss. Also muss ich Pins tauschen, meinen Prototypen umlöten, und dabei hatte ich die 2 Taster extra auf die Interrupts gelegt. Aber vermutlich reicht schon ein Tausch innerhalb der verwendeten Pins, von hochohmig nach niederohmig, da weniger Einfluß auf das Ergebnis. Wenn es fertig ist, ist es für mich ein kleines Helferlein auf 4x6cm Lochraster + 1602 Display welches Widerstände, Kondensatoren und noch das eine oder andere mehr messen soll. Bis dahin versuche ich meinen SpaghettiCode im Zaume zu halten.
SpaghettiCode:
Ich habe im Datenblatt gesucht, aber wohl überlesen oder übersehen auf den 441 Seiten.
Nee, da kann ich Dich beruhigen.
Das Datenblatt beschreibt den µC ATmega328, der nur PB1 kennt. Die Arduino-IDE möchte es uns einfacher machen und verwendet stattdessen D9. Daher muß man bei Deiner Fragestellung entweder den Schaltplan oder ein Pinout zu Rate ziehen, um näher an den µC zu gelangen. Ich bevorzuge den Schaltplan, weil ich dort auch den 330R-Widerstand mit LED an GND sehe.
SpaghettiCode:
... jetzt bin ich wieder etwas schlauer.
etwas dazu lernen ist nie verkehrt. Elektronik ist bei mir ein ziemlich lange ruhendes Hobby, vor einem Jahr durch Zufall wieder damit angefangen, und irgendwann vor knapp 4 Monaten lief mir der erste Arduino über den Weg.
Anbei ein schnelles Bild von dem Teil an dem ich mich gerade versuche (6x4cm), aber der Sketch steht noch nicht.