PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wenn Taster gedrückt, hoher Stromverbrauch



Pitt1986
06.09.2006, 06:24
hi,

ich hab nen taster an einem pin und wenn ich den drücke verbraucht meine schaltung 60 mA. ich hab des jetzt mit nem spannungsteiler versucht ist, habs aber nicht geschafft.
wie kann ich den stromverbrauch verringern?

mfg
pitt

pongi
06.09.2006, 07:16
Was schaltest du überhaupt mit dem Schalter? Wenn du damit einen digitalen Eingang realisierst, den der µC asuliest, gehört da auch ein Widerstand hin.
Am besten guckst du hier: http://www.mikrocontroller.net/tutorial/io-basics. Die zweite Schaltung sollte genau das sein, was du brauchst.

MfG

pongi

Bernhard667
06.09.2006, 18:41
Hallo,

ist der Pin denn auch auf Input geschaltet?
Wenn er Output ist und 1 treibt, Du ihn mit Schalter aber auf 0 klemmst, dann fliest Strom.
Je nach Kraft des Pins kann das einiges sein. Laut Datenblatt At Mega z. Bsp 40mA.

Bernhard

Pitt1986
07.09.2006, 00:15
hi,

also der pin ist schon auf input gestellt.
der pin liegt immer auf low bis die taste gedrückt wird, dann ist er auf high.

ich hab da eine zeichnung wie des bei mir aussieht. der pin wird duch den taster mit der 5V leitung verbunden. und dann ist da halt noch ein pull-down widerstand. wenn die taste gedrückt wird dann fließen 60mA in den pin und nicht am widerstand, also an der größe des widerstands liegts nicht.

mfg pitt

PsiQ
07.09.2006, 01:05
ja, da hammer den Fehler ja schon!
du mußt den strom der IN den IC fließt begrenzen!
der Pull down ist ja soweit ok, aber wenn du den taster drückst, dann fließt der strom vom +5V direkt in den IC und wird nur durch dessen Widerstand begrenzt..

was du aber eigentlich haben willst ist ja nur HIGH oder LOW, aber da brauchst du eigentlich gar keinen stromfluß für!

du mußt noch nen widerstand an den PIN vom IC setzen und dann ists ok!

oder den pull-down widerstand an den pin, und "hinter" dem widerstand auf high oder low schalten.
sihe attachements

Edit: ups 5V/4 soll der IC-Pin sein..

Reeper
07.09.2006, 01:29
Ja genau.

Nimm einfach einen 10k Pullup.
Also von VCC über einen 10k Widerstand zum Schalter und den an Gnd.
Zw. Widerstand und Schalter zum Pin.

VCC
l
l
ll (10k Pullup)
l
l-------> Pin
l
l
/ (Schalter)
l
l
Gnd

Die Schaltung kannst du für einiges anderes auch benutzen.
ZB. anstatt dem Schalter ein Transistor oder LDR.

Gruß
Stefan

Pitt1986
07.09.2006, 04:33
hi,

also ich glaub des wird so net funktionieren.
also der pin hat doch nen widerstand drin, der müsste nach meinen berechnungen, wenn an dem 5 V abfallen und 60mA durchfließen, 80 Ohm groß sein. lassen wir einfach mal den pull-down weg, damits einfacher zu erklären ist.
wenn ich jetzt den strom mit nem 10k widerstand begrenze, dann ist des problem, dass der 10k widerstand und der 80ohm widerstand im ic einen spannungsteiler ergeben. somit würde ein strom von i=5/10080=0,000496A fließen, also fast 5uA. des wäre eigentlich ganz gut, aber des problem ist dass jetzt am ersten widerstand u=10000*0,000496=4,96 V abfallen. somit bleiben am pin noch 0,04V überig. also auch ein lowpegel.

wenn ich mich da irre, dann korrigiert mich bitte.
ich hab des schon so probiert und da war des nämlich so wie ich des gerade erklärt habe, aber bin mir net sicher ob des jetzt genau so war wie jetzt von euch erklärt.
und weils bei mir net geklappt hat hab ich des jetzt auch nicht in der praxis nochmal getestet.

mfg
pitt

Laeubi
07.09.2006, 07:48
ja, da hammer den Fehler ja schon!
du musst den strom der IN den IC fließt begrenzen!
der Pull down ist ja soweit ok, aber wenn du den taster drückst, dann fließt der strom vom +5V direkt in den IC und wird nur durch dessen Widerstand begrenzt..

Also bitte das ist doch quatsch! Der Innewiderstand des AVR ist um einiges höher als das da 40mA fließen könnten.
Da fließt nix, wäre ja auch echt mal bekloppt wenn man JEDEN Eingang eines ICs noch zusätzlich mit dem Widerstand begrenzen müßte...

Wie groß ist den dein Widerstand gegen GND (wobei man den normalerweise aber gegen +5V schaltet wegen der Störsicherheit)

Pitt1986
07.09.2006, 08:02
hi,

als pull-down widerstand hab ich einen mit 10k genommen.
aber wie gesagt der strom von 60mA fließt zum pin vom ic, am pull-down kommen nur ca. 0,6mA durch.

mfg
pitt

Suggarman
07.09.2006, 09:21
Kann es sein, daß der Port vom Einlöten eine Masseverbindung hat? 60 mA fließen niemals durch den Port. Der Port müsste dann immer auf low sein. Wenn der 10K Pullup in die 5V Leitung anstatt der Masseleitung kommt, müßte der Stromverbrauch sinken - schalten dürfte er bei einem Masseschluß aber nicht.

mfg

Stefan

Pitt1986
07.09.2006, 09:32
ne also eine masseverbindung ist nicht da. ich hab des jetzt auch schon nochmal auf einer lochrasterplatine um des halt alles zu testen. auf der geätzen wie auch auf der rasterplatine fliesen 60mA in den port rein.
ja des stimmt wenn ich nen 10k in die 5V leitung häng dann sinkt der stromverbrauch. nur dass ich dann halt auch nen lowpegel hab. und wenn ich die taste dann drücke dann sollte sich vom highpegel ein lowpegel einstellen, aber weil ja schon der pin aufm lowpegel ist wird sich da nichts ändern.
von euch hat doch sicherlich jeder schon mal taster benutzt. habt ihr des auch alle ohne widerstände gemacht oder warum weiss keiner so richtig weiter?

mfg
pitt

Suggarman
07.09.2006, 09:41
ja des stimmt wenn ich nen 10k in die 5V leitung häng dann sinkt der stromverbrauch. nur dass ich dann halt auch nen lowpegel hab. und wenn ich die taste dann drücke dann sollte sich vom highpegel ein lowpegel einstellen, aber weil ja schon der pin aufm lowpegel ist wird sich da nichts ändern.


Nein, wenn der 10K in der 5V Leitung ist, dann hast Du auch 5V auf dem Port. Wenn Du dann den Taster drückst, wird der Pegel auf 0V runtergezogen.

mfg

Stefan

Babbage
07.09.2006, 09:52
Bist Du sicher das der Pin als Eingang Ausgang geschaltet ist.
Ein funktionierender Eingang ist immer hochomig.
Vielleicht is der µC auch schon defekt 60mA sind nicht wenig.

Babbage

kalledom
07.09.2006, 10:08
Der Pin eines µC ist ein TTL-Eingang, wenn er denn als Eingang initialisiert ist.
Seit wann darf an einen TTL-Eingang High-Pegel, also +5V, nur über einen Widerstand zugeführt werden ? Oder Low-Pegel, also GND ? Mann oh Mann.
Es wäre tatsächlich besser, einen PullUp-Widerstand nach +5V zu legen, evtl. sogar den internen PullUp zu benutzen und den Taster nach GND zu schalten; das ist die 'saubere' Methode.
Wenn bei der jetzigen Verschaltung der interne PullUp mit eingeschaltet ist, gibt es zusammen mit dem externen PullDown einen Spannungsteiler. Was ergibt das für einen TTL-Pegel ?
Mit dem erhöhten Stromfluß gibt es nur 3 Möglichkeiten:
- der PullDown ist zu niederohmig,
- der Pin ist auf Ausgang programmiert,
- der µC ist an diesem Pin hinüber.

Laeubi
07.09.2006, 12:03
Bau es mal bitte GENAU so auf:

http://www.mikrocontroller.net/images/taster.gif

Und geh in deiner Schaltung sicher das der Port als EINGANG geschaltet ist!
Am besten schreib mal dazu welchen COntroller du benuzt und ggf den Code posten!

Reeper
07.09.2006, 12:21
Mach es mit dem 10k Pullup und es wird funktionieren.
Mit dieser Hardware-Lösungen bist du auch bei falscher Software pin-Konfiguration auf der sicherern Seite.

Gruß
Stefan

Laeubi
07.09.2006, 12:27
Mach es mit dem 10k Pullup und es wird funktionieren.
Mit dieser Hardware-Lösungen bist du auch bei falscher Software pin-Konfiguration auf der sicherern Seite.

Gruß
Stefan
Das sit so nicht Richtig ist der Pin auf Ausgang und HIGH und du drückst den taster hats nen niederohmigen Kurzschluß!

shaun
07.09.2006, 12:51
Wie auch immer, ich denke nicht, dass "hier keiner weiter weiss", sondern dass Du (Pitt) einfach erstmal sicherstellen solltest, dass Deine Schaltung ansonsten funktioniert. Ist in dem Controller schon ein Programm? Dh., setzt Du die Ports explizit auf Eingang oder gehst Du bei einem unprogrammierten Controller von diesem Zustand aus? Meine Gegenprobe, bevor ich mich stunden- oder tagelang damit beschäftige wäre, einen anderen Controller zu nehmen, einen anderen Pin zu testen oder ein Programm reinzuklatschen, das den fraglichen Pin als Ausgang schaltet und ständig toggelt. Wenn das passende Bild dazu auf dem Oszi ist, ist der Pin vermutlich auch noch in Ordnung, dass ein Pin Driver nur im Eingangsmodus so einen schwerwiegenden Fehler hat, ist recht unwahrscheinlich. Also bevor Du meinst, dass hier keiner weiter weiss, vielleicht selbst mal systematisch suchen. Vorwiderstand ist Käse, das macht Sinn, wenn das Eingangssignal unbekannt oder bekannt zu hoch ist, bei Eingangsspannung=Vcc ist der prinzipiell erstmal unnötig.

kalledom
07.09.2006, 14:58
@shaun
Bei allen µC, mit denen ich bis heute zu tun hatte, sind nach (und während) Reset alle Portpins auf Eingang als Grundzustand. Ausgänge müssen initialisiert werden.
Bei einem leeren / gelöschten µC können die Portpins nicht wegen fehlender Initialisierung auf Ausgang umgeschaltet sein.

shaun
07.09.2006, 15:31
Stimmt schon. Nur weiss ich, ob Pitt mit dem uC schon mal expermentiert, irgendein evtl nicht so recht laufendes Programm reingeschrieben oder was auch immer getan hat? Da er ja IIRC irgendwo geschrieben hat, dass er in seinem Programm den fraglichen Pin explizit auf Eingang gesetzt hat, stellte sich mir die Frage: läuft das Programm, was das DDRx entsprechend setzen soll, überhaupt? Wenn es schon beim assemblieren/kompilieren/flashen Murks gab, ist ja auch nicht auszuschliessen, dass dann alle entscheidenden Befehle richtig abgearbeitet werden. Da ist es dann nicht angebracht zu sagen, erstmal soll die Hardware laufen, danach troubleshooten wir die Software.

Bernhard667
09.09.2006, 07:58
Hallo,

ob ein
Pulldown + Schalter nach Vcc oder andersherum:
Pullup + Schalter nach GND
verwenden wird ist völlig egal.
Die meisten machen lieber den Pullup + Schalter nach GND, weil:
-AVR Controller gleich einen internen Pullup bieten, man den externen also auch noch sparen kann
-das (glaube ich) seinerzeit bei TTL Vorteile hatte.

Wie dem auch sein.
Bei einem CMOS Eingang ist IOL/IOH (Input Leakage Low und High) quasi 0. Meistens ist 1uA spezifiziert. In der Realität sind sie noch viel besser. Der Leckstrom ist im Bereich nA. Der Eingang ist ja schlieslich hauptsächlich ein Gate eines MOSFETS, und da gibt es keinen Pfad für Glekchströme.
Was CMOS Eingänge sehr wohl haben sind Schutzdioden gegen VCC und GND. Bei Spannungen ausserhalb dieses Bereichs fliest darüber der Strom ab, um den Chip zu schützen vor Latchup.

Deshalb die Frage:
Zieht denn der Schalter nach oben exakt zur Betriebsspannung des Controllers.
Oder zieht er nach 5V und der Controller hat Vcc 3V?
Einfach mal nachmessen. Man kann auch mal vergesen, die Vcc Pins am Controller anzuschliesen. Der kann dann durchaus funktionieren (saugt sich über die Schutzdioden Strom aus Inputs, die gerade auf High sind), aber des Verhalten wird instabil und merkwürdig.


Sollte Dein Controller kein CMOS sein, ist es ne ziemliche Antiquität ;-))

Bernhard

Laeubi
09.09.2006, 11:27
Also das ist von daher nicht egal, als das der AVR (mal als bsp wir wissen ja immer noch nicht welchen Controllertyp er verwendet) alles bis 0.2V als low erkennt, und ab 0.6V als High!
Heißt bei 5V erkennt er alles von 0.6V-5V als high und alles von 0V-0.2V als low.
Also besteht bei einem Pulldown und einer verseuchten Umgebung die gefahr das durch einen Spannungspeak man entweder in den undefinierten bereich kommt (0.2V-0.6V) oder der AVR High erkennt.
Bei einem Pullupist die Sache um einiges störfester da ein viel weiterer Bereich als High noch aktzeptiert wird das heißt selbst wenn die Spannung kurzeitig auf 2/3 einbricht ist man noch im sicheren Highbereich!

Bernhard667
10.09.2006, 08:46
Hallo Lauebi,

Pullup ist ok, mach ich traditionell auch so.
VIL beim AVR ist aber 0.2* Vcc, -> 1V bei Vcc = 5V
VIH ist 0.6 * Vcc = 3V beim AVR.


Bernhard

Laeubi
10.09.2006, 21:52
Ja okay aber bleibt sich ja argumentativ gleich :)
Danke für die Richtigstellung ich vergess immer das die werte mit der Versorgungspannung malgenommen werden muß :)