projekt timpris diagram
Postat: 9 september 2022, 13:48:52
Jag gör en ny tråd här, eftersom det blivit ett projekt, en fortsättning på:
viewtopic.php?t=105630&hilit=persika
Har byggt en apparat som räknar impulserna från lysdioden på elmätaren.
Fördelen med denna är att man kan se förbrukningen för varje minut, då kan man lättare se vilka
förbrukare som varit igång, annars kan man se i Eon's app varje timme.
Har använt fotocell från en Eon-100koll, som jag köpt på loppmarknad.
En Arduino ProMini räknar impulserna.
Visar: Aktuell effekt, Antal Wh totalt, idag, igår, i förrgår, denna månad, förra månaden.
Det finns även "tripp-mätare", som likt i bilen man kan nollställa och avläsa nåt man speciellt man är
intresserad av.
För varje minut sparas antal impulser i en text-fil på SD-minneskort.
För varja rad i text-filen sparas datum och tid och antal impulser.
Man kan lägga till en kommentar som då sparas sist på raden.
Textfilen kan sen tas in i excel och man kan göra diagram av.
Några kuriosa:
*Det går att skriva hela alfatbetet med de 16 tangenterna, ungefär som man gjord på "stenåldern" när
man skrev sms. Fast här håller man nere tangenten till lcd-displayens markör har hoppat till önskad
bokstav, se bild, och då släpper man tangenten.
*Programmet i Arduinon består i huvudsak av en slinga, som det händer olika saker längs.
Tidsintervallet 0,1sek till slingan fås med hjälp av funktionen millis().
Det funkar bra, men efter c:a 50 dagar slår millis om till noll, 32 bits integer.
Det problemet löste jag med att efter c:a 45 dagar resettar jag Arduinon genom att anropa:
void(*resetFunc) (void) = 0;//declare reset function at address 0
*Två strängar skrives i displayen, en fast med ex. talet "1234Wh", och en sträng som rullar från höger
till vänster i resterande utrymme, ex "Aktuell effekt", det gör att man inte behöver tänka på att
strängen ska få plats, den förklarande texten går lika bra att läsa rullande.
Gick i fällan att använda classen String i Arduinon.
Det ska man vara försiktig med, bättre att använda strängar enligt C, ex. char s[10]
Då får man tänka mer och använda funktioner som strcpy strcat m.m. ist.
Det är enkelt och bekvämt med String, man kan bara skriva ex. a = a + b , när man vill lägga ihop två
strängar.
Det gick att få programmet stabilt med hjälp av string.reserve(antal byte), och att undvika långa
summeringar av strängar, istället skriva ut delsträngar efterhand.
Ska bygga in mojängen i en låda också, så den är lite skyddad.
viewtopic.php?t=105630&hilit=persika
Har byggt en apparat som räknar impulserna från lysdioden på elmätaren.
Fördelen med denna är att man kan se förbrukningen för varje minut, då kan man lättare se vilka
förbrukare som varit igång, annars kan man se i Eon's app varje timme.
Har använt fotocell från en Eon-100koll, som jag köpt på loppmarknad.
En Arduino ProMini räknar impulserna.
Visar: Aktuell effekt, Antal Wh totalt, idag, igår, i förrgår, denna månad, förra månaden.
Det finns även "tripp-mätare", som likt i bilen man kan nollställa och avläsa nåt man speciellt man är
intresserad av.
För varje minut sparas antal impulser i en text-fil på SD-minneskort.
För varja rad i text-filen sparas datum och tid och antal impulser.
Man kan lägga till en kommentar som då sparas sist på raden.
Textfilen kan sen tas in i excel och man kan göra diagram av.
Några kuriosa:
*Det går att skriva hela alfatbetet med de 16 tangenterna, ungefär som man gjord på "stenåldern" när
man skrev sms. Fast här håller man nere tangenten till lcd-displayens markör har hoppat till önskad
bokstav, se bild, och då släpper man tangenten.
*Programmet i Arduinon består i huvudsak av en slinga, som det händer olika saker längs.
Tidsintervallet 0,1sek till slingan fås med hjälp av funktionen millis().
Det funkar bra, men efter c:a 50 dagar slår millis om till noll, 32 bits integer.
Det problemet löste jag med att efter c:a 45 dagar resettar jag Arduinon genom att anropa:
void(*resetFunc) (void) = 0;//declare reset function at address 0
*Två strängar skrives i displayen, en fast med ex. talet "1234Wh", och en sträng som rullar från höger
till vänster i resterande utrymme, ex "Aktuell effekt", det gör att man inte behöver tänka på att
strängen ska få plats, den förklarande texten går lika bra att läsa rullande.
Gick i fällan att använda classen String i Arduinon.
Det ska man vara försiktig med, bättre att använda strängar enligt C, ex. char s[10]
Då får man tänka mer och använda funktioner som strcpy strcat m.m. ist.
Det är enkelt och bekvämt med String, man kan bara skriva ex. a = a + b , när man vill lägga ihop två
strängar.
Det gick att få programmet stabilt med hjälp av string.reserve(antal byte), och att undvika långa
summeringar av strängar, istället skriva ut delsträngar efterhand.
Ska bygga in mojängen i en låda också, så den är lite skyddad.