interne PullUp und trotzdem wenig Verbrauch?!

Gast #4105049
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.
#4105057
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)
Gast #4105068
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
Gast #4105096
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...
Gast #4107063
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?!
Gast #4107073
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
Gast #4107280
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.