Arduino

Power Hold Test Code

Generischer Code für eine Power Hold Schaltung:

Ein Gerät wird durch Tippen auf eine Taste gestartet, die an einer Power Hold Schaltung angeschlossen ist. Der Tastendruck aktiviert einen Spannungsregler mit Enable/Shutdown Funktion. Nach Loslassen der Taste ist ein Mikrocontroller dafür zuständig, diese  Leitung auf dem Power On-Pegel zu halten (in der Regel elektrisch high). Abschalten wird durch diesen Code hier ausgelöst, wenn ein langer Tastendruck erfolgt.

Dieser Code setzt die entsprechende Power Hold Schaltung voraus, z.B. diese (R. Elmiger):

powerhold1

Oder hier meine Implementation, schon vorbereitet für den Einsatz eines Super Cap. 


/*
 Power Hold Schaltung  
 */
#define POWERHOLD     2    // Ausgang zum Shutdown Eingang des LT1121. High = ein
#define SOFTOFF     3    // Eingang, gleichzeitig Taster ON. Hier kein Pullup aktivieren, da active high
#define LED         13
// Variables will change:
#include "WProgram.h"
void setup();
void loop();
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button
void setup() {
  pinMode(SOFTOFF, INPUT);
  pinMode(POWERHOLD, OUTPUT); 
  Serial.begin(9600);
  delay(2000);
  digitalWrite(POWERHOLD, HIGH);
  digitalWrite(LED, HIGH); 
  delay(5000);
}
void loop() {
  buttonState = digitalRead(SOFTOFF);
  if (buttonState == HIGH) {
  // Countdown power off
  Serial.println("Power down in 5 secs");
  delay(1000);
  Serial.println("Power down in 4 secs");  
  delay(1000);  
  Serial.println("Power down in 3 secs");  
  delay(1000);
  Serial.println("Power down in 2 secs");
  delay(1000);   
  Serial.println("Power down in 1 secs");
  digitalWrite(POWERHOLD, LOW); 
  digitalWrite(LED, LOW); 
  }
 }
int main(void)
{
    init();
    setup();
    for (;;)
        loop();
    return 0;
}
 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert