Forum: Mikrocontroller und Digitale Elektronik Offenen ADC-Eingang detektieren


von Float (Gast)


Lesenswert?

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

von Klaus D. (kolisson)


Lesenswert?

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

von Anja (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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.

...

von Matthias L. (Gast)


Lesenswert?

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.

von Anja (Gast)


Lesenswert?

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

von Matthias L. (Gast)


Lesenswert?

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..

von Julian B. (julinho)


Lesenswert?

kondensator an den port und dann laden und entladen. zeitkonstante 
sollte mit und ohne poti anders sein.

von Klaus D. (kolisson)


Lesenswert?

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

von Tom B. (botas)


Lesenswert?

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.

von Klaus D. (kolisson)


Lesenswert?

.. und einmal ist das Poti auf Rechtsanschlag und einanderesmal auf 
Links

dann geht das alles schon wieder nicht.
......  ausser Anja´s

Klaus

von Tom B. (botas)


Lesenswert?

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....

von Julian B. (julinho)


Lesenswert?

Pull-ups einschalten, wenn der wert auf 5V geht, dann ist kein poti an.

von Julian B. (julinho)


Lesenswert?

dran

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
Noch kein Account? Hier anmelden.