Minuut waarde van pulse

Wanneer er een waterlek is, dan is er een constant hoog verbruik van het water.  Om dit te kunnen monitoren heb je een manier nodig om te weten hoeveel pulsen er in de laatste minuut binnen zijn gekomen.  Om dit te kunnen doen, heb ik het voldende bedacht:

Met een BLINK bouwsteen maak ik een pulse om de 59 seconden van 1 seconde hoog.  Met 2 TON's vertraag ik deze pulse met 100ms en 200ms.  Hieraan koppel ik 3 x R_TRIG.  Het resultaat is 3 pulsen om de 59 seconden met elke keer 100ms tussen de pulsen.

Het uitrekenen van de laatste minuut doe ik door de counter met een MOVE opzij te kopieren en dan met een SUB het verschil te maken.  Het probleem is daat zonder de MOVE met nr 24 en 25 er een kleine kans bestaat dat het resultaat nul is omdat je niet kan weten in welke volgorde de blokken worden uitgevoerd.  Daarom gebruik ik de eerste pulse om via MOVE nr 25 het resultaat veilig te stellen, de tweede pulse om via MOVE nr 24 de vorige waarde bij te houden en de laatste MOVE 21 de counter waarde opzij te kopieren.

Het is wel zodat er een kleine vertraging van max 2 minuten zit op het resultaat en de echte waarde van de counter.  Je kan dit oplossen door elke seconde een move te doen en de waarden bevoorbeeld 60 keer bijhouden en dan het verschil te nemen tussen de laatste en de eerste waarde.

Genereren van pulsen:

Rekenen met de counter (WaterCounter is de counter en WaterCounterMinuut is het verbruik van de laatste minuut):