Arduino mittels Push/Taktile Button einschalten

Moin zusammen,

kurze erklaerung was ich machen will und was ich habe..

ich will ueber einen "relativ kurzen" druck auf einen taktilen push button einen Arduino/Attiny mit Strom versorgen so das er eine Arbeit verrichten kann und dann sich komplett wieder vom strom trennt.

Spaeter soll diese logik auch in etwas arbeiten was etwas mehr ampere schluckt, die schaltung muesste also bischen was aushalten.

Habe zum beginn mich erstmal an die Logik gesetzt wie ich das mit dem ein und Ausschalten realisieren koennte... Zur einfachheit erstmal mit einem Attiny85 - die led soll 20 mal blinken dann aus:
das n dingens ist ein normaler NPN Transistor :slight_smile:

Spickhilfe Attiny pinout:

int count = 0;

void setup()
{
  pinMode(A3, OUTPUT);
  pinMode(A1, OUTPUT);
  digitalWrite(A1, HIGH);
}

void loop()
{
  if(count == 20){
    digitalWrite(A1, LOW);
  }else{
    count++;
  }
  digitalWrite(A3, HIGH);
  delay(100);
  digitalWrite(A3, LOW);
  delay(100);
}

In der Theorie schalte ich den npn mitt dem push button, der tiny bekommt saft, schaltet einen pin auf high der dann das selbe wie der button machen (npn schalten) und der tiny bekommt weiterhin saft.
Nach 20 ma blinken setzt er den Pin auf LOW und der NPN geht aus, strom weg.

In der Praxis (dem simulator) siehts aber so aus das nur strom fliesst solang ich den button gedrückt halte, sobald ich loslasse is aus.

Und selbst dann ist nicht (ganz) aus, weil selbst dann noch ein gewisser Reststrom angeblich fließt.

Meiner Fragen sind nun gleich drei :wink:

  • warum bleibt der tiny nicht mit strom versorgt?
  • wie bekommt man die restlichen mV weg bei "aus"? Es kann passieren das das geraeti monate nicht genutzt wird und waer doof wenn dann der akku wegen dieser restentladung leer ist wenns gebraucht wird...
  • packt ein npn sowas leistungs/hitze technisch ueberhaupt (sagen wa bei 1-2A verbrauch) Das ding soll spaeter unbeabsichtigt laufen koennen und nicht anfangen zu schmoren oder aehnliches...

Und ja ich weiß real testen waers besser, aber leider sind die tiny noch nicht da und mein "bastel" budget ist sehr begrenzt daher kann ich nicht einfach ein paar bei experimenten schießen :frowning:

Ich weiss auch das es da ganz nette breakouts fuer gibt, soll aber soweit moeglich ohne fertige breakouts auskommen.

Hi,

wenn Du nach Selbsthalteschaltung+Arduino suchst, findest Du so was: Link repariert
Nur musst Du alles niederohmiger gestalten, um dann z.Bsp. einen BDxxx pnp Transistor ansteuern zu können.
Geht natürlich auch mit MOSFET als Schalter.
Den Taster würde ich über den unteren Transistor legen, nicht den oberen.

Gruß André

  1. ein NPN Transistor ist ungeeignet da die Masse nicht unterbrochen werden soll da diese als Bezugspotential für alle Spannungsmessungen diehnt (auch Erkennen von HIGH oder LOW).
    Dafür ist ein P-MOSFET geeignet.

  2. Wenn Du einen nakten Controller (die meisten Arduino-Platinen haben zuviel andere Verbraucher drauf) oder einen Arduino Mini. in sleep schickst verbraucht er auch kaum Strom, muß dann aber nicht erst Starten um etwas zu machen und es braucht keine selbsthaltungsschaltung. Der zusätzliche Verbraucher kann wahrscheinlich mittels eines NPN bzw N-MOSFET geschaltet werden.

Grüße Uwe

(Relativ) kompliziert wird es erst, wenn der gleiche Taster ein- und aus-schalten soll.

Da überlässt man diese Logik am einfachsten dem µC.

electronics.stackexchange.com/questions/30427/using-a-momentary-push-button-as-a-latching-on-off-toggle-switch

@michael_x
Ei!
Das ist doch ein N-Kanal MOSFet, oder?
Der braucht eine erhebliche positive Ugs um durchzulassen.
Ich behaupte: Die Schaltung funktioniert nicht.

Und baut man stattdessen einen P-Kanal ein, tuts die Schaltung auch nicht.
Der Fehler steckt also tiefer.

erstma ne ausschalten soller nicht, das soll ueber einen pin vom tiny/arduino geregelt werden.

Und nein Sleepmode ist keine option, die kiste wird definitiv auch mal lange ungenutzt dastehen und selbst sleep waer dann eine verschwendung. davon abgesehen das dann immernoch strom fließt in den unbeaufsichtigten momenten. Und zudem wird es auch warscheinlich ein ardunio nano/uno werden der das ganze am ende steuert. der tiny ist nur zur "vereinfachung".

Hab die schaltung aus der ersten antwort mal probiert, aber anscheinend hab ich was falsch gemacht/Verstanden...

ginge nicht auch evtl ein relais?

sonst muss ich wohl doch zu so nem fertigen breakout greifen und den button abloeten/austauschen...

Hi,

ich versuche mich mal im Erklären für die Schaltung aus #1:

Arduino Pin13 ist der LED-Pin, der Transistor wird also so gesteuert, wie der LED-Pin angesteuert wird.
Wird D13 HIGH, macht der untere Transistor auf, der obere bekommt LOW, da der PNP ist, macht der auch auf (entweder durch Taster über den Transistor unten, oder ansteuern von D13 mit HIGH.
Sagst Du LED-Pin off, dann sperrt der untere Transistor, der obere folglich auch. Nur musst Du mit niedrigeren Werten bei den Widerständen arbeiten, da mehr Strom bei Dir fließen muß.

Gruß André

Falls du "Erklärvideos" magst, schau mal hier: Kill Power Circuit Tutorial

combie:
@michael_x
Ei!
Das ist doch ein N-Kanal MOSFet, oder?
Der braucht eine erhebliche positive Ugs um durchzulassen.
Ich behaupte: Die Schaltung funktioniert nicht.

Und baut man stattdessen einen P-Kanal ein, tuts die Schaltung auch nicht.

Ich hab sie nicht erfunden, nicht nachgebaut und auf der Suche nach einem P-Mosfet nur gefunden.

Der Link aus der ersten Antwort, mit dem Hinweis

Geht natürlich auch mit MOSFET als Schalter

passt also eigentlich schon. Besonders, wenn man mehr als nur den Arduino selbst schalten will.

Naja, das Bild aus #1 ist folgendes:


Da hängt der NPN-Transistor an D13 des Nano. Ich finde, das ist so ziemlich die schlechtest mögliche Wahl. :slight_smile:
Während der Bootloader läuft blinkt D13. Der Taster muss so lange gehalten werden, bis der Bootloader "fertig" ist, das dauert ein paar Sekunden (das ist aber unabhängig davon ob D13 oder ein anderer Pin verwendet wird). Ich finde es generell eher ungünstig, wenn der Arduino "aktiv am halten" beteiligt ist.
Der TO sucht ja so etwas:

cybeaer:
ich will ueber einen "relativ kurzen" druck auf einen taktilen push button einen Arduino/Attiny mit Strom versorgen ...

Natürlich könnte man den Bootloader entfernen, beziehungsweise ist er bei einem ATtiny ja gar nicht vorhanden.

Ich denke, am günstigsten ist eine Schaltung, die nicht davon abhängig ist, dass der µC "aktiv hält" (also einen Pin auf HIGH oder LOW setzen muss), sondern nur, dass er aktiv am Ausschalten beteiligt ist.

Es gab in der Vergangenheit schon öfter solche Fragen:
http://forum.arduino.cc/index.php?topic=285286.msg2013521#msg2013521
http://forum.arduino.cc/index.php?topic=235605.msg1695440#msg1695440
https://forum.arduino.cc/index.php?topic=425658.msg2960113#msg2960113

Gerade jetzt beschäftige ich mich auch mit diesem Problem. Und es scheint, dass "einfache Lösungen", also mit sehr wenigen Bauteilen, nicht sehr gut funktionieren.
Und viele Schaltungen "aus dem Internet" sind ziemlicher Quatsch :slight_smile:

Obwohl uxomm diesen Link schon gezeigt hat, wiederhole ich ihn gerne noch mal.
https://forum.arduino.cc/index.php?topic=425658.msg2933157#msg2933157

Hier habe ich in Post #10 eine Schaltung gezeigt, die ich selber seit langem einsetze, die funktioniert fehlerfrei und sicher.

HotSystems:
Obwohl uxomm diesen Link schon gezeigt hat, wiederhole ich ihn gerne noch mal.
Automatische Abschaltung - #11 by HotSystems - Deutsch - Arduino Forum
Hier habe ich in Post #10 eine Schaltung gezeigt, die ich selber seit langem einsetze, die funktioniert fehlerfrei und sicher.

Danke! Das ist ja nur sehr oberflächlich betrachtet "derselbe" Link :slight_smile:
Manchmal ist es nicht ganz einfach bei einem Thread mit mehr als 100 Antworten den Überblick nicht zu verlieren. Da haben es vor allem "frühe" Antworten oft schwer - auch wenn sie gute Lösungen präsentieren.

Und mein Eindruck stimmt anscheinend schon: Ganz simple Lösungen (also mit ganz wenigen Bauteilen) funktionieren nicht sonderlich gut.

uxomm:
Danke! Das ist ja nur sehr oberflächlich betrachtet "derselbe" Link :slight_smile:
Manchmal ist es nicht ganz einfach bei einem Thread mit mehr als 100 Antworten den Überblick nicht zu verlieren. Da haben es vor allem "frühe" Antworten oft schwer - auch wenn sie gute Lösungen präsentieren.

Und mein Eindruck stimmt anscheinend schon: Ganz simple Lösungen (also mit ganz wenigen Bauteilen) funktionieren nicht sonderlich gut.

Deswegen habe ich ihn auch nochmal komplett gezeigt. :wink:

Wenn man es einfacher haben möchte, kann man sich ja den Q2 und daran hängende Teile (R1, R3 u. C1) sparen.
Dann muss man den Q1 mit dem Taster überbrücken.
Das hat den kleinen Nachteil, man muss so lange drücken, bis der Arduino komplett gestartet ist.