Watermeter excessen!

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Watermeter excessen!

Berichtdoor muffin » 30 Jan 2013, 21:59

Dag allemaal!
Ik heb weer een probleemke gehad en (deels) kunnen oplossen met onze bekende Arduino Uno.
Wij zijn aangesloten op het openbaar drinkwaternet en verbruiken ongeveer 40 liter per dag. Door een fout in een overdrukklep van de keukenboiler is er ergens 70m³ water in het riool "verdwenen" ...
Dit impliceert niet alleen het water te betalen maar ook nog de milieuheffing daarop. Een Arduino is goedkoper. Zeker weten.
Daarom bedacht ik deze oplossing: Ik bouw een watermeter om met een fotocel die de 'liters' water registreert in een Arduino Uno, en wanneer de hoeveelheid water per 24u (in mijn geval) de vijftig liter overschrijdt, er een alarm afgaat.
Ik wil wel duidelijk stellen dat we ook nog regenwater hebben die gebruikt wordt voor bad, wc, wasmachine ... Drinkwater alleen in de keuken dus.
Om het zo simpel mogelijk te houden dacht ik gewoon aan een teller die tot 50 liter telt, en bij overschrijding een uitgang activeert die een piezo alarmzoemer laat afgaan. Tot daar geen probleem.
De teller moet ook om de 24u ge reset worden. Daar dacht ik om de Arduino Uno volledig te resetten middels een programma te implementeren die ik ook op het net gevonden had.
Dit werkt ... maar niet voor 24 uur ... zie lijn int interval waar ik een waarde van 24 uur of 86400000 mS wil invoeren. Waar zit nu de fout? Zal waarschijnlijk weer een kleinigheid geweest zijn die ik over het hoofd gezien heb.
Kan iemand me helpen aub? Alvast heel erg bedankt.

Hieronder de code:


/*Watermeter met alarm
* ——————
deze telt het waterverbruik per 24u en na overschrijding van de dagelijkse limiet van 50 Liter gaat het alarm over.
Resetten gaat met DE RESET drukknop of automatisch omde 24u.
*/
int ledPin = 13; // choose the pin for the LED
int tellerpuls = 2; // choose the input pin for the watermeter
int val = 0; // variable for reading the pin status
int counter = 0;
int currentState = 0;
int previousState = 0;
int alarm = 3;
int interval = 10000; // reset na x mS of 24 uur: HIER LOOPT HET FOUT denk ik!
long int time = 0; // reset time


void setup() {
digitalWrite(7, HIGH); //We need to set it HIGH immediately on boot
pinMode(7,OUTPUT); //We can declare it an output ONLY AFTER it's HIGH
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(tellerpuls, INPUT); // declare photocell as input
pinMode(alarm, OUTPUT); // declare alarm output for sounder


Serial.begin(9600);
}

void loop(){
val = digitalRead(tellerpuls); // read input value
if (val == HIGH) { // check if the input is HIGH (button released)
digitalWrite(ledPin, HIGH); // turn LED on
currentState = 1;
}
else {
digitalWrite(ledPin, LOW); // turn LED off
currentState = 0;
}
if(currentState != previousState){
if(currentState == 1){
counter = counter + 1;
Serial.println(counter);
}
}
previousState = currentState;
delay(25); // anti bouncing
if (counter==50)
{digitalWrite(alarm, HIGH); //als waterverbruik 50L is, gaat alarm aan
}
else{}

//Reset systeem na 24 uur:
time = millis();

Serial.println(time);

if(time > interval){
Serial.println("RESET!");
digitalWrite(7, LOW); //Pulling the RESET pin LOW triggers the reset.
}
}

Advertisement

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: Watermeter excessen!

Berichtdoor Karel » 30 Jan 2013, 22:17

Maak van de int interval ook een long int. 65536 of daaromtrent is het maximum voor een int. Daar gaan dus niet genoeg milliseconden voor een hele dag in.
Oh, en dan moet je denk ik interval ook initialiseren op 86400000. Dus:

Code: Alles selecteren

long int interval = 86400000;



Succes, Karel
If you think education is expensive, try ignorance! (Derek Bok)

Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Re: Watermeter excessen!

Berichtdoor muffin » 30 Jan 2013, 22:28

Bedankt karel, zal dat subiet eens proberen, orgen hoor je ervan ... MAAR ik vertrouw uw raad zeker!!!

Berichten: 33
Geregistreerd: 22 Dec 2012, 19:07

Re: Watermeter excessen!

Berichtdoor muffin » 30 Jan 2013, 22:35

Ja,,, die telt effectief verder. Gij kent het ten gronde!

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Watermeter excessen!

Berichtdoor shooter » 17 Okt 2013, 11:54

datzelfde voor de counter want er komen veel meer pulsjes uit de watermeter per liter.
en je hoeft niet de hele arduino te resetten, alleen een variabele en die moet je niet resetten maar er 86400000 van af trekken.
eigenlijk moet je dus bij die tijd telkens het aantal mills bijtellen totdat je over de 24 uur gaat.
paul deelen
shooter@home.nl

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten