Forum: Mikrocontroller und Digitale Elektronik interne PullUp und trotzdem wenig Verbrauch?!


von Micha (Gast)


Lesenswert?

Hi,
ich habe schon ne weile gesucht und einiges ausprobiert.. leider ohne 
erfolgt...

ich habe einen tiny84 welcher im Powerdown schläft.

über einen PCINT wird dieser geweckt.
für diesen PCINT habe ich einen internen Pullup gesetzt. wenn ich nun 
den Kontakt schalte wacht der auf macht was und geht wieder schlafen.
Beim loslassen des Taster's wacht der wieder auf macht was und geht 
schlafen.
usw.

der Taster bleibt ne weile gedrückt (das Verhältnis zwischen gedrückt 
und nicht gedrückt ist ca gleich), und das ganze verbraucht dann statt 
6uA nun satte 100uA durch den Pull up....

wie bekomme ich es hin egal wie der zustand des Taters ist einen 
niedrigen verbrauch hinzubekommen?

ich habe bereits probiert den taster über einen OUT zu schalten welcher 
beim Drücken dann HIGH wird.. das klappt soweit... allerdings erkennt 
der dann kein interrupt mehr dh. den ersten Interrupt erkennt der zwar, 
aber das loslassen des tasters nicht mehr.

von Jens G. (jensig)


Lesenswert?

>wie bekomme ich es hin egal wie der zustand des Taters ist einen
>niedrigen verbrauch hinzubekommen?

Indem Du einen externen, deutlich höherohmigen Pullup nutzt, und den 
internen abschaltest.
Das ganze wird dann aber auch deutlich störempfindlicher (vielleicht 
kleinen C parallel zum Eingang)

von Georg (Gast)


Lesenswert?

Micha schrieb:
> das ganze verbraucht dann statt
> 6uA nun satte 100uA durch den Pull up....

Ein Taster hat ja eine sehr niedrige Datenrate - du könntest das Ganze 
umstrukturieren und z.B. den Prozessor zeitgesteuert aufwecken, lässt 
den Taster prüfen, tust was wenn nötig und legst ihn wieder schlafen, 
wobei du den Pullup deaktivierst.

Wenn du auf die Art nur 10% der Zeit einschaltest, was bestimmt reicht, 
hast du effektiv nur etwas über 10 µA Verbrauch.

Georg

von Micha (Gast)


Lesenswert?

mit dem Zeitgesteurt gehts leider nicht
das ist eine art alarm anlage... der muss dann nur aufwachen wenn der 
alarm kommt....

ABER ich habe es hinbekommen...
ist zwar nicht sehr schön aber es funktioniert!
über 2 Interrupt welche sich gegenseitig abschalten
1
 sleep_now();                                  //gehe schlafen
2
  val = digitalRead(reed);
3
  if(val == 0){
4
    Serial.println("TRUE");
5
    PCMSK1 &= ~(1<<PCINT9);
6
    PCMSK0 |= (1<<PCINT1);
7
    sei();
8
    //digitalWrite(test,HIGH);
9
    digitalWrite(reed,LOW);
10
    //digitalWrite(9,LOW);
11
  }
12
  if(val == 1){
13
    Serial.println("FALSE");
14
    PCMSK0 &= ~(1<<PCINT1);
15
    PCMSK1 |= (1<<PCINT9);
16
    sei();
17
    digitalWrite(reed,HIGH);
18
    //digitalWrite(9,HIGH);
19
  //  digitalWrite(test,LOW);
20
 //   digitalWrite(test,LOW);
21
  }


dann spuckt der folgendes aus

// taste drücken
INT1
Aufwachen
0
0
TRUE
schlafen
//Taste loslassen
INT2

AufwINT2
acINT2
henINT2
INT2

INT2
INT2
INT2
INT2
INT2
INT2
INT2
INT2
INT2
INT2
INT2
INT2
1
INT2
1INT2

FINT2
AINT2
INT2

INT2
INT1
schlafen

beim drücken ist es ziemlich sauber, bei loslassen hingegen kommt der 
INT2 einige male.. aber es funktioniert!:) in beiden Stellungen 10uA


Jetzt kann ich beruhigt schlafen gehen...

von Tom (Gast)


Lesenswert?

Micha schrieb:
> wie bekomme ich es hin egal wie der zustand des Taters ist einen
> niedrigen verbrauch hinzubekommen?

Indem du einen Taster 1xUm verwendest und dazu einen Kondensator zum 
Halten während des Umschaltens.

von Micha (Gast)


Lesenswert?

ist leider nur ein Reedschalter... der hat kein um.. entweder ZU oder 
OFFEN

von Tom (Gast)


Lesenswert?

Micha schrieb:
> ist leider nur ein Reedschalter... der hat kein um.. entweder ZU oder
> OFFEN

Dann schalte den Pull-Up aus, wenn du ihn nicht brauchst.

von Micha (Gast)


Lesenswert?

dann hängt der doch in der luft!
dann hab einen undef. zustand und der kommt aus dem Sleep raus obwohl er 
das nicht soll

von X4U (Gast)


Lesenswert?

Einen Kondensator laden und dann den Pullup abschalten geht nicht?

von X4U (Gast)


Lesenswert?

Micha schrieb:
> ist leider nur ein Reedschalter

und den durch einen Hallsensor ersetzen?

von m.n. (Gast)


Lesenswert?

X4U schrieb:
> Micha schrieb:
>> ist leider nur ein Reedschalter
>
> und den durch einen Hallsensor ersetzen?

Und der braucht keinen Strom?

Mein hochohmiger Vorschlag: 
Beitrag "Re: EIN-AUS mit Taster per Interrupt, ATtiny25 o.ä."

von Micha (Gast)


Lesenswert?

X4U schrieb:
> Einen Kondensator laden und dann den Pullup abschalten geht nicht?

wie meinst du das?

Ich habe grade 200k als Pullup genommen... verbraucht nun bei ca 15uA

es macht glaub ich kein unterschied ob pulldown oder pullup oder? beim 
drücken wird der ja so oder so fliesen?!

von S. Landolt (Gast)


Lesenswert?

Ich dachte, es sei eine Lösung gefunden (mit 10 uA):

> aber es funktioniert!:) in beiden Stellungen 10uA
> Jetzt kann ich beruhigt schlafen gehen...

Wozu jetzt diese Diskussion (mit 15 uA):

> Ich habe grade 200k als Pullup genommen... verbraucht nun bei ca 15uA

von Micha (Gast)


Lesenswert?

ja lösung habe ich gefunden... softwaremäßig.. allerdings ist diese 
nicht sehr schön.. und ich denke nicht dass es sehr stabil ist.

von S. Landolt (Gast)


Lesenswert?

Hm - Reedkontakt. Um welche Zeiten geht es, ein - aus, jeweils minimal 
und maximal?
Wie sieht es mit Prellen aus?

von X4U (Gast)


Lesenswert?

Micha schrieb:
>> Einen Kondensator laden und dann den Pullup abschalten geht nicht?
>
> wie meinst du das?

Du lädst einen C über die Pullups, schaltest die dann ab und wartest bis 
der auslöst. Wenn das passiert versuchst du ihn nachzuladen, geht das 
nicht ist der Taster gedrückt.

von m.n. (Gast)


Lesenswert?

Micha schrieb:
> Ich habe grade 200k als Pullup genommen... verbraucht nun bei ca 15uA

Hat Dir mein Vorschlag mit < 1 µA nicht gefallen, oder hast Du die 
Schaltung/Programm nicht verstanden?

von Micha (Gast)


Lesenswert?

m.n. schrieb:
> Hat Dir mein Vorschlag mit < 1 µA nicht gefallen, oder hast Du die
> Schaltung/Programm nicht verstanden?

Sorry, habe ich überlesen... schau ich mir noch 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
Noch kein Account? Hier anmelden.