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
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.
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 ?
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
Danke für Eure Antworten, ich muss bis heute Abend warten, bevor ich weitertesten kann. Ich melde mich dann wieder...
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.
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!
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.
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.
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
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.
Danke Michael, das ist ein guter Gedanke. Werde zuerst mal versuchen, den verflixten Spannungsteiler hinzukriegen, dann kann ich weiter in deiner vorgeschlagenen Richtung testen.
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!
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
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
@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 :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.