Forum: Mikrocontroller und Digitale Elektronik Wasser-Schalter


von Martin B. (Firma: Privat) (mabad)


Angehängte Dateien:

Lesenswert?

Hallo

Habe ein kleines Problem mit einem einfachen Spannungsteiler, doch 
irgendwas läuft bisher falsch.

Ich benutze die Schaltung wie im beigefügten Bild. Pin 5 des ATTiny ist 
sowohl Ein- als auch Ausgang. Mit dem Ausgang schalte ich einen 
Verstärker ein- und aus.

Im Normalfall ist Pin 5 als Eingang geschaltet:
PCMSK |= (1<<PCINT5);

mit Interrupt auf fallende Flanke:
MCUCR = (1<<ISC01) | (1<<ISC00);

Wird ein Interrupt ausgelöst, so wird der Eingang zu einem Ausgang:
PORTB &= (0<<PB5);

Nun haben wir den Spannungsteiler R1 / R2, wobei R1 ein Pull-Up 
Widerstand ist und R2 aus zwei Drähten, welche in Wasser getaucht 
werden, besteht.

Den internen Pull-Up habe ich deaktiviert:
MCUCR = 1<<PUD;

Im Ruhezustand haben wir R2 unendlich gross (nicht ins Wasser getaucht), 
deshalb ist die Spannung an Pin 5 dann 3V. Sobald R2 ins Wasser getaucht 
wird, soll die Spannung dann so weit sinken, dass der Interrupt 
ausgelöst wird.

R1 habe ich 6.8MOhm gewählt, doch auch wenn die zwei Drähte von R2 nur 
ein paar Millimeter voneinander entfernt sind, dann sind die Spannung an 
Pin 5 nicht unter 2.2 V. R2 ist etwa 500 kOhm. Also müsste doch die 
Spannung auf ca. 0.2 V sinken, wenn alles wie ein normaler 
Spannungsteiler funktioniert.

Wie liegt der Fehler? Den internen Pull-Up des ATTIny habe ich ja 
deaktiviert (sonst würde der ja parallel zu R1 liegen).

Danke für Eure Hilfe.
Martin

von Cyblord -. (cyblord)


Lesenswert?

Fehlt da nicht irgendwo ne Junction in dem Schaltplan?

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Hm, vielleicht ist das Schema nicht gut genug.

Pin 5 des ATTiny ist mit dem Amp verbunden. Mikrokontroller und Amp 
werden mit 3V gespiesen. R1 liegt an 3V und am Pin 5 des ATTiny. R2 
liegt auch am Pin 5 und an GND. R2 ist entweder unendlich gross oder 
etwa 500kOhm, falls im Wasser eingetaucht.

von Tom (Gast)


Lesenswert?

Martin B. schrieb:
> Wie liegt der Fehler? Den internen Pull-Up des ATTIny habe ich ja
>
> deaktiviert (sonst würde der ja parallel zu R1 liegen).

..und wie siehts es intern im Amp aus ?

von STK500-Besitzer (Gast)


Lesenswert?

1
PORTB &= (0<<PB5);

sinnfrei.
Richtig muss es
1
PORTB &= ~(1<<PB5);

heissen.

cyblord ---- schrieb:
> Fehlt da nicht irgendwo ne Junction in dem Schaltplan?

Zwischen R1 und Wassereimer R2...
Besser wäre es meiner Meinung nach, R2 noch einen konstanten Widerstand 
parallel zu schalten. Dann fängt man sich bei einem hochohmigen R1 
keine/weniger Störungen ein.

Martin B. schrieb:
> R1 habe ich 6.8MOhm gewählt

Nimm man bitte was kleineres

von STK500-Besitzer (Gast)


Lesenswert?

Martin B. schrieb:
> R1 habe ich 6.8MOhm gewählt
Nimm mal bitte was kleineres

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Danke für Eure Antworten, ich muss bis heute Abend warten, bevor ich 
weitertesten kann. Ich melde mich dann wieder...

von Georg G. (df2au)


Lesenswert?

Falls die Schaltung länger als 1 Stunde funktionieren soll, überleg dir 
das mit dem Draht im Wasser noch mal.

Du hast zwei Möglichkeiten:
- Du macht den Prüfstrom klein (so wie im Moment), dann ist der 
Widerstand R2 hoch und ändert sich laufend. Es bilden sich auf dem Draht 
Oxidschichten. In Kürze ist er so hochohmig geworden, dass nichts mehr 
geht.
- Du machst den Prüfstrom größer (im Bereich 10mA). Dann hast du 
Elektrolyse Erscheinungen und der Draht löst sich auf.

Noch weitere Punkte:
- Mit Wechselspannung geht es besser, die Ergebnisse sind stabiler.
- Du kannst lange forschen, welches Drahtmaterial am besten ist. Vorweg: 
Edelstahl bildet schnell passive Schichten an der Oberfläche und wird 
bei 3V zum Isolator. Gold und Platin sind prima, aber auch hier bilden 
sich innerhalb von Tagen Dreckschichten.
- Die zuverlässigste Methode ist ein kapazitiver Fühler.

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Sorry für meine späte Antwort, bin leider erst heute wieder 
dazugekommen.
Danke an alle für die Tipps.

@Tom: Der Eingangswiderstand des AMP ist sehr gross, spielt keine Rolle 
in diesem Fall. Habe ihn zur sicherheit mal abgehängt, der Effekt ist 
derselbe.

@STK500-Besitzer: Habe den Befehl geändert und einen kleineren R1 
genommen (2.2MOhm), funktioniert aber immer noch nicht.

@Georg: Danke für die ausführliche Beschreibung. Werde das später mal 
testen, will aber vorerst mal die befintliche Schaltung zum laufen 
bringen (wenigstens für eine Stunde)

Die aktuelle Situation. Habe mal getestet, welchen R2 es braucht, um den 
Interrupt auszulösen: 700 Ohm!

Da scheint mir etwas faul zu sein.

Im Datenblatt steht ja einiges im Zusammenhang mit DDRx, PortBx und PUD.

PORTB5 habe ich immer auf 0, DDR5 wechsle ich von 0 nach 1 und wieder 
zurück. PUD ist immer auf 1. Bei DDR5 = 0 und PORTB5 = 0 sollte der 
Eingang ja hochohmig sein.

Habt Ihr eine Idee? Vielen Dank!

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Die Spannung fiel auf etwa 0.8V bei R2 = 700 Ohm. Das würde ja einen R1 
von ca. 2kOhm bedeuten. Das ist ja meilenweit von den gewünschten 
Megaohm entfernt.

von Dietrich L. (dietrichl)


Lesenswert?

Martin B. schrieb:
> Die Spannung fiel auf etwa 0.8V bei R2 = 700 Ohm. Das würde ja einen R1
> von ca. 2kOhm bedeuten. Das ist ja meilenweit von den gewünschten
> Megaohm entfernt.

Ich schätze mal, da ist wirklich noch was anderes faul. Bau mal Stück 
für Stück alles zurück und teste.
Du kannst ja auch mal einen "Ersatz"-Widerstand für R2 einbauen statt 
dem Wasserschalter (falls Du das nicht schon gemacht hast), bis 
schließlich ein einfacher Spannungsteiler übrig bleibt.
Wenn der dann nicht richtig teilt, stimmt was nicht am Aufbau (Schaltung 
falsch, Schmutz, falscher Wert...) oder an den Messungen.

Gruß Dietrich

Was mir noch einfällt: hast Du den Widerstand des "Wasserschalters" mit 
beiden Polaritäten mit dem Ohm-Meter gemessen? Vielleicht hat die 
Oberfläche ja schon diodenähnliche Eigenschaften.

von Harald W. (wilhelms)


Lesenswert?

Dietrich L. schrieb:

> Vielleicht hat die Oberfläche ja schon diodenähnliche Eigenschaften.

Ja, früher gabs mal Flüssiggleichrichter. Später wurde dann der
Trockengleichrichter erfunden. Dieser Name geisterte noch lange
durch die Elektronikwelt als kein Mensch mehr wusste, woher er kommt.
:-)
Gruss
Harald

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Dank Dir Dietrich, so versuch ich's weiter.

@Harald, interessant :-)

von Michael A. (Gast)


Lesenswert?

Georg G. schrieb:
> Du hast zwei Möglichkeiten:
> - Du macht den Prüfstrom klein (so wie im Moment), dann ist der
> Widerstand R2 hoch und ändert sich laufend. Es bilden sich auf dem Draht
> Oxidschichten. In Kürze ist er so hochohmig geworden, dass nichts mehr
> geht.
>
> - Du machst den Prüfstrom größer (im Bereich 10mA). Dann hast du
> Elektrolyse Erscheinungen und der Draht löst sich auf.

Na, da fällt mir doch locker noch eine dritte Möglichkeit ein:
Wie wäre es, wenn man Pin 5 normalerweise als Ausgang schaltet und auf 
Low setzt. Dann ist R2 überbrückt und Elektrolyse oder sonstige Dinge 
können nicht stattfinden. Nur ab und zu, wenn es einen wirklich 
interessiert, wird Pin 5 kurzzeitig (ms) als Eingang geschaltet, der 
Spannungsteiler aktiviert und ausgewertet. Bei so einem Betriebsmodus 
wird der Draht ewig und drei Tage halten.

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Danke Michael, das ist ein guter Gedanke. Werde zuerst mal versuchen, 
den verflixten Spannungsteiler hinzukriegen, dann kann ich weiter in 
deiner vorgeschlagenen Richtung testen.

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Bin immer noch nicht auf den Fehler gestossen. Nur mal eine kleine 
Verständnisfrage:

Habe Pin5 zum Test von den anderen Bauteilen getrennt, der Pin 5 hängt 
also in der Luft. Wenn ich den Pin5 auf Eingang schalte (DDR5 = 0), den 
Pegel auf high setze (PORTB5 = 1) und den internen Pull-Up deaktiviere 
(PUD = 1), dann sollte doch am Pin 5 trotzdem keine Spannung messbar 
sein, oder? Tri-State

PORTB |= (1<<PB5);

DDRB &= ~(1<<PB5);

MCUCR |= (1<<PUD);

Wenn ich mit dem Multimeter die Spannung an Pin 5 gegen Ground messe, 
dann schalte ich ja ca. 1 Megaohm von Pin5 auf GND (Innenwiderstand).

Ich messe aber 3V.

Kann mir das jemand erklären? Besten Dank!

von Dietrich L. (dietrichl)


Lesenswert?

Martin B. schrieb:
> Wenn ich mit dem Multimeter die Spannung an Pin 5 gegen Ground messe,
> dann schalte ich ja ca. 1 Megaohm von Pin5 auf GND (Innenwiderstand).
>
> Ich messe aber 3V.
>
> Kann mir das jemand erklären? Besten Dank!

Wenn Dein Messgerät wirklich 1MOhm hat, ist das deutlich zuviel. Der 
"Input Leakage Current I/O Pin" ist mit max. 1µA spezifiziert, und das 
im vollen Temperaturbereich.

Da fällt mir jetzt nur noch ein:
- Pin doch nicht vollständig "in der Luft" (Verschmutzung auf der 
Leiterplatte, übersehene haarfeine Verbindung, ...)
- µC hat bereits Schaden erlitten: ESD oder anderer Stress hat zuerst 
negative Wirkung auf den Input Leakage Current. Funktionieren kann das 
Port noch lange. Daher sollte man CMOS-Bauteile immer ESD-gerecht lagern 
und handhaben.

Gruß Dietrich

von Ingoo (Gast)


Lesenswert?

Beste Lösung!
funktioniert quasi ohne Ruhestrom!
http://www.zabex.de/site/wassermelder.html

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Danke Dietrich für Deine Antwort. Werde zur Sicherheit einen neuen 
ATTiny ausprobieren, hab mit dem jetzigen schon ziemlich lange 
gearbeitet und es kann durchaus sein, dass etwas kaputt ist.

Gruß Martin

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

@Ingoo
Ja, in der Tat eine kreative Lösung. Danke für den Link, auch wenn ich 
selbst wohl eine andere Lösung realisieren werde :-)

von Ioni (Gast)


Lesenswert?

Vielleicht hilft ja auch eine Prise Salz in das Wasser zu geben ?

von Martin B. (Firma: Privat) (mabad)


Lesenswert?

Das mit dem Salz klappt leider nicht für meinen Anwendungzweck. Trotzdem 
danke für den Tipp.

Habe weitere Tests gemacht, habe alles minimiert und das einzige, was 
ich im Code noch mach ist den Pin 5 auf Eingang und 0 zu setzen, 
gleichzeitig PUD auf 1, aber der Ausgang ist immer noch auf 
Betriebsspannung.

Werde mir morgen einen neuen Mikrokontroller holen und dann wieder 
berichten.

Gruß Martin

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.