(Arduino) Loss of power detection werkt te kort.

Hallo Allemaal.
Ik heb maar een klein beetje verstand van electronica, maar af en toe wil ik toch een projectje maken. En nu kom ik er natuurlijk weer niet uit.

Het doel:
Als ik mijn TV inschakel met de afstandsbediening komt er spanning op de USB. Dit signaal wil ik gebruiken om mijn pc en versterker in te schakelen.
Als de TV uitschakelt en de spanning van de USB wegvalt, moet pc en versterker ook uitschakelen.

Systeem zoals het er nu uit ziet:
Voor in- en uitschakelen heb ik 2 optocouplers aan de pc en versterker geschakeld voor een gescheiden systeem. Dit werkt gewoon.
De puls om ze aan/uit te schakelen mag niet te kort zijn, anders nemen ze het niet ip. Vooral versterker heeft wat langer nodig. 250ms werkt prima.
Ik heb een Arduino nano geprobeerd. Puls voor inschakelen werkt prima.

Probleem:
Ik heb een loss of power detection geprobeerd te maken op de Arduino. Maar de puls die ik krijg is veel te kort.
Voor test redenen heb ik 2 ledjes op de optocouplers geplaatst. En ik zie ze aanspringen maar dat lijkt eerder op 10ms dan op 250ms.
Voor het LOP detection circuit heb ik een kleine condensator van 10uf, een grote van condensator of 470uf, een weerstand van 1.2K ohm.

Ook heb ik het via een relais met condensator geprobeerd. Hier doe ik eerst de condensator laden via het NO contact, en dan ontladen via het NC contact. Werkt goed als ik de spanning van de spoel haal. Maar als ik de spanning van het geheel haal, krijg ik een overnamecontact door de spanning van de condensator en houd hij het contact vast ipv het ledje te laten branden.

Mogelijke oplossing?
Ik heb ergens iets voorbij zien komen over een super capacitor die de Arduino langere tijd van spanning zou moeten kunnen voorzien. Mijn grootste condensator die ik nu heb is maar 2200uf.
Maar ik kan nergens een schema vinden om zoon super capacitor de Arduino van stroom te blijven voorzien samen met een power loss detection systeem wat ook weer werkt door 2 condensators.


#include <MsTimer2.h>

int pc = 2;
int ver = 3;
int pld = A3;

void setup() {

  MsTimer2::set (2, powerLoss_detection); // check if power is lost every 10 ms
  MsTimer2::start();

  pinMode(pc, OUTPUT);
  pinMode(ver, OUTPUT);

  //press buttons pc en versterker om aan te zetten bij opstart tv
  digitalWrite(pc, HIGH);
  digitalWrite(ver, HIGH);
  delay(500);
  digitalWrite(pc, LOW);
  digitalWrite(ver, LOW);

}

void loop() {

}

void powerLoss_detection()
{
  //float-charge cap up to 90% (.*1023=920.7) in 10ms goes
  if (analogRead(pld) < 920) {
    pinMode(pld, OUTPUT);
    digitalWrite(pld, HIGH);
    return;
  }
  //read cap
  pinMode(pld, INPUT);

  if (analogRead(pld) > 1000) {
    digitalWrite(pc, HIGH);
    digitalWrite(ver, HIGH);
    delay(500);
  }

}