Impulsgeber damit Powerbank nicht abschaltet Apfelhirn.de Hilfe für Code

@Thomas-Lehnert
Wo muss ich deinen Code in deiner Version „TonUINO - Always queue -Maximale Ausstattung“ einfügen?
Ich habe es unten unter MAIN-LOOP eingefügt, aber es kommt immer wieder im Serial-Monitor „Powerpin → On“ und die Led glimmt nur die ganze Zeit. Getest am nackten Arduino mit einem Widerstand und Led.
Am SpkOnPin leuchtet die Led richtig. Wie funktioniert der Code vom Ablauf?

Auf welchen Pin hast du denn für den powerpin gewählt? Viele Pins sind ja im TonUINO-sketch schon belegt.

Den SpkOnPin habe ich auf 8 gelegt und der PowerPin sollte dann die 6 werden.

1 „Gefällt mir“

Nur zum Verständnis. Der Tonuino liegt im Standby bei ca. 60 mA. Da schaltet doch die Powerbank noch nicht ab, oder?

Dachte die Grenze liegt irgendwo unter 30mA.

Erst mit einer HW Abschaltung alias Po… Switch kommt man in den Bereich, das die PB abschaltet. UUnd dann ist der Atmel eh tot und arbeitet deinen Blinkcode sowieso nicht ab.

Oder bin ich da auf dem falschen Dampfer?

Ich habe die Intenso XS10000, welche sogar bei leiser Lautstärke abschaltet.

Wenn man sich die Beiträge ist Stromversorgung so ansieht, schalten viele Powerbanks halt doch ab. Die Grenze ist unter anderem auch Abhängig vom Ladezustand.

Nein, dass Abschalten der Powerbank funktioniert meistens schon, darüber dass die Komponenten in der Stromsparmodus geschaltet werden. Das ist hier beschrieben .
Der Pololu Switch funktioniert ja vor allem für Akkus und Powerbanks ohne Abschaltung, da er ja die Hardware nach digitalWrite(shutdownPin, HIGH); komplett abschaltet.

Die Abschaltlogik war mit bekannt, aber das es PB gibt, die so restriktiv sind, dass Sie bei über 50 mA abschalten war mit nicht klar.

Spannent wäre nun, ob dieser Typ von Powerbank einfach eine höhere statische Abschsltschwelle hat, z.B. 70mA, oder ob er eine gewisse Volatilität im Strom erwartet. Also eine regelmäsige Veränderung.

Ich denke, dass es wohl eine statische schwelle ist, die nur abhängig vom Ladezustand etwas schwanken kann. Das mit der Abschaltung durch unterschreiten der Minimallast ist im Codeteil des standbytimers bei Abschaltung software only realisiert, indem die Module über software weitestgehend in den Stromsparmodus bzw sleep geschaltet werden. Das ist z.B auch der Grund, dass man nach dem Ausschalten und Speisung über USB-Port den USB Stecker kurz vom PC trennen muss. Sonst funktioniert der df-Player nicht, weil er aus dem sleep nicht mehr rauskommt.

Mir ging es um das automatische NICHT ausschalten, was der Code oben ja bewrken soll.
Den hätte ich gern in der Version "TonUINO - Always queue -Maximale Ausstattung“ eingefügt, aber ich weiss nicht an welcher Stelle.

Hallo mex,

das Problem bei der aktuellen Tonuino Software ist, dass es eigentlich keine Stelle gibt, die zuverlässig in jedem Zyklus für das oben beschriebene Timing abgearbeitet wird. Bist du z.B. im Admin Menü, dann verharrt der Tonuino teils in Warteschleifen und wartet auf Nutzereingaben.

Ein Workaround wäre, deine Funktion in den checkStandby rein zu bauen. Die Funktion wird ziemlich regelmäßig abgearbeitet. Hier wird abgefragt, ob die Standby Zeit abgelaufen ist. Wenn ja, löst der Tonuino die Abschaltung aus.

Du könntest jetzt in den anderen Zweig der Abfrage deine LED Toggeln lassen um gelegentlich den Stromverbrauch zu erhöhen. Die blinkt dann zwar nicht regelmäßig, aber das sollter der PB egal sein.

Schau doch mal hier

Eine einfachere Möglichkeit wäre noch, nach dem starten des adminmenüs die Led in den EIN Zustand zu versetzen, als dauerlast. Da man sich ja nur Kurzzeitig im Adminmenü aufhält wäre das Stromverbrauchsmäßig ok. Nach verlassen des Adminmenüs wird die LED dann wieder getaktet. Man hätte dann auch eine zusätzliche optische Info, dass man sich im Adminmenü befindet.

void adminMenu(bool fromCard = false)
{

  digitalWrite(LEDpin,HIGH); // Diese Zeile einfügen und die Pinbezeichnung an deinen scetch anpassen.
  
   disablestandbyTimer();

  mp3.pause();

Dann im folgenden codeteil die gleiche Zeile nochmal einfügen

 //  ***************** admin menu über longPress 3 Tasten aktivieren **************************

    if ((pauseButton.pressedFor(LONG_PRESS)
         || upButton.pressedFor(LONG_PRESS)
         || downButton.pressedFor(LONG_PRESS))
        && pauseButton.isPressed()
        && upButton.isPressed()
        && downButton.isPressed())
    {
      mp3.pause();                             // Wiedergabe stoppen
      do
      {
        readButtons();                         // Tasten auslesen
      }

      while (pauseButton.isPressed()
             || upButton.isPressed()
             || downButton.isPressed());

      readButtons();                           // Tasten auslesen

    digitalWrite(LEDpin,HIGH); // Diese Zeile einfügen und die Pinbezeichnung an deinen scetch anpassen.

      adminMenu();                             // adminmenü starten
      break;
    }

Dami erreichst du dass lie Led sowohl bei start Adminmenü über Tastendruck ais auch mit Karte eingeschaltet wird.

Der zweite Aufruf ist denke ich überflüssig , oder. Schlieslich ist der Befehl direkt darunter gleich das AdminMenü. Und dort hast du den Aufruf ja schon drin.
Oder täusche ich mich?

Bin mir jetzt nicht ganz sicher. Probiere es einfach aus.