Hallo, ich habe eine Schaltung mit einem ATmega32u4, bei der ich auch den ADC benutze. An 6 ADC-Eingängen kann jeweils ein Poti ( 20k ) angeschlossen werden. Das Umstecken erfolgt nur im ausgeschalteten Zustand, daher will ich während der Initialisierung herausfinden, welche Potis nun angeschlossen sind und welche nicht. Gibt es dafür einen zuverlässigen Weg ? Erste Ideen waren: -auf jedem ADC Kanal mehrere ( 100 ? ) Messungen durchzuführen und zu schauen, ob starke Sprünge vorhanden sind ( kein Mensch kann so schnell ein Poti drehen ) -bei allen Kanälen den internen Pull-Up einschalten und es ignorieren ( das dürfte aber Auswirkungen auf die angeschlossenen Potis haben ) aber sie scheinen so nicht praktikabel zu sein. Gibt es Wege, sicher zu erkennen, ob ein Poti angeschlossen ist oder nicht ? Gruß, Fabian
Hi Fabian, das offenlassen der Eingänge und das Messen der Einstreuung könnte funktionieren ist aber nicht sicher. In störfreier Umgebung wird wohl trotzdem Ruhe sein. Dann geht die Detection daneben. Ich stelle mir gerade vor einen weiteren uC Port und einen kleinen Mosfet zu verwenden um beim Einschalten darüber eine definierte an die ADC Eingänge zu legen. Wenn dann ein Poti angeschlossen ist , ist die Spannung dann anders als ohne das Poti. Ich hoffe du verstehst meinen grob gezeichneten Weg. Klaus
Float schrieb: > Gibt es Wege, sicher zu erkennen, ob ein Poti angeschlossen ist oder > nicht ? Nicht wenn Du den gesamten Meßbereich von 0..VRef als gültige Werte zuläßt. In sicherheitsrelevanten Funktionen wird z.B. nur 10-90% des Meßbereiches als gültiger Bereich Definiert. Bei einem Kabelbruch bewirkt ein hochohmiger Pull-up oder Pull-Down daß eine Spannung von z.B. 5% (Pull-down einschließlich aller möglichen Leckströme) nicht überschritten wird. Gruß Anja
Nicht probiert, aber vermutlich machbar: - Port kurz auf Ausgang mit H-Pegel legen, - Port auf Eingang schalten und nach kurzer Pause ADC messen, - Port kurz auf Ausgang mit L-Pegel legen, - Port auf Eingang schalten und nach kurzer Pause ADC messen. Entsprechen die ADC-Werte etwa den zuvor angelegenen Pegeln, dann ist kein Poti dran, sind die ADC-Werte identisch und stabil, so ist ein Poti dran. Kondensatoren von wenigen nF zwischen ADC-Eingängen und GND könnten den Effekt verbessern. ...
Alternativ könntest du die Potis mit ihrem Anfang und Ende an je einen µC-Pin legen. Einen legst du auf LOW, den anderen auf HIGH. Bei korrektem Poti misst du jetzt den Wert x. Wenn du die Pins jetzt umpolst, so solltest du etwa MAX-x messen. Falls das Poti fehlt, so sollte immer derselbe Wert gemessen werden.
Matthias Lipinsky schrieb: > Falls das Poti fehlt, so sollte immer derselbe Wert gemessen werden. Hmm. Bei langer Leitung ergibt sich ggf. kapazitives Übersprechen. Gruß Anja
Hm.. Das könnte man mit nem großen Pulldown (1MOhm oder so) wohl ablindern. Und bei Potis mit einigen kOhm sollte das keine Rolle spielen..
kondensator an den port und dann laden und entladen. zeitkonstante sollte mit und ohne poti anders sein.
Anja schrieb: > Nicht wenn Du den gesamten Meßbereich von 0..VRef als gültige Werte > zuläßt. In sicherheitsrelevanten Funktionen wird z.B. nur 10-90% des > Meßbereiches als gültiger Bereich Definiert. Bei einem Kabelbruch > bewirkt ein hochohmiger Pull-up oder Pull-Down daß eine Spannung von > z.B. 5% (Pull-down einschließlich aller möglichen Leckströme) nicht > überschritten wird. > > Gruß Anja Obwohl ich ja auch schon eine andere Idee gepostet hatte finde ich diese Idee von Anja hervorragend und unschlagbar. Klaus
Matthias Lipinsky schrieb: > Alternativ könntest du die Potis mit ihrem Anfang und Ende an je einen > µC-Pin legen. > > Einen legst du auf LOW, den anderen auf HIGH. Bei korrektem Poti misst > du jetzt den Wert x. > Wenn du die Pins jetzt umpolst, so solltest du etwa MAX-x messen. > > Falls das Poti fehlt, so sollte immer derselbe Wert gemessen werden. So ähnlich würde ich es machen. Wenn man beim Init beide Pinns gleichzeitig einmal auf 0 und 1 setzt hat man zwei definierte Zustände falls ein Poti angeschlossen ist: Max und Min. Wenn kein Poti da ist bekommt man zwei ähnliche Werte. Vorteil: sichere Erkennung + gesamten Wertebereich genutzt Nachteil: zwei Pinns mehr verbraucht. Den ADC - Pin kurz auf high oder low zu stellen halte ich für riskannt. Wenn ein Poti am Anschlag steht hat man dann einen Kurzschluss. Es könnte was kaputt gehen / abstürzen. Ein Widerstand zwischen Poti und ADC würde dagegen helfen und sollte die Messung nicht beeinflussen. Vorteil: gesammter Wertebereich, durch Vorwiderstand und Kondensator hat man einen Tiefpass gegen eventuelles Kratzen vom Poti. Nachteil: Timing / Wartezeiten beim Init, Bauchgefühl Alternativ einen großen Widerstand nach Masse an den ADC und ein relativ niederohmiges Poti verwenden. Beim Init einmal ohne und mit Pullup messen. Wenn nicht Min und max herauskommt ist ein Poti da. Vorteil: nur ein Widerstand, gesamter Wertebereich Nachteil: mehr Strom der durch das Poti fließt oder ein Fehler durch den Widerstand wenn der zu klein ist. Den Fehler kann man vielleicht herausrechnen auf kosten der Auflösung / Linearität? Je nachdem wie die Potis angeschlossen werden sollte man noch über einen ESD / EMV Schutz nachdenken.
.. und einmal ist das Poti auf Rechtsanschlag und einanderesmal auf Links dann geht das alles schon wieder nicht. ...... ausser Anja´s Klaus
Klaus De lisson schrieb: > .. und einmal ist das Poti auf Rechtsanschlag und einanderesmal auf > Links > > dann geht das alles schon wieder nicht. > ...... ausser Anja´s > > Klaus Es ist doch ganz egal wie das Poti steht. Stell es dir als Spannungsteiler vor: A ---[R1]--- B --- [R2] --- C Wenn man A und C das gleiche anlegt wird man bei B auch das gleiche messen. Egal ob R1 oder R2 zufällig 0Ohm hat. Vorausgesetzt der ADC ist hochohmig....
Pull-ups einschalten, wenn der wert auf 5V geht, dann ist kein poti an.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.