projekt timpris diagram
projekt timpris diagram
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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- JimmyAndersson
- Inlägg: 26308
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
Re: projekt timpris diagram
Snacka om att jag missförstod rubriken…
Trodde du ville ha hjälp att rita ett schema och undrade över lämpligt timpris för det.
Kul projekt.
Trippmätar-funktionen var smart!
Edit: Och nu ser jag att du knappast behöver hjälp med schemat. Riktigt snyggt ritat!
Trodde du ville ha hjälp att rita ett schema och undrade över lämpligt timpris för det.
Kul projekt.
Trippmätar-funktionen var smart!
Edit: Och nu ser jag att du knappast behöver hjälp med schemat. Riktigt snyggt ritat!
Re: projekt timpris diagram
Tack för ni uppskattar det.
Fortsättning följer, kommer att bygga in den i en låda också.
Syftet med den är att se elförbrukningen, hur den är fördelad på dygnet och om det ev. skulle vara nån idé med timpris-el.
Fortsättning följer, kommer att bygga in den i en låda också.
Syftet med den är att se elförbrukningen, hur den är fördelad på dygnet och om det ev. skulle vara nån idé med timpris-el.
Re: projekt timpris diagram
Snyggt schema, kommer koden som ska ligga i Arduinon att publiceras?
Re: projekt timpris diagram
Skulle behöva städa o kommentera koden. Skulle också vilja skriva om den med strängar i C-stil.
Jag kan pm’a den till dig, så som den är just nu.
Jag kan pm’a den till dig, så som den är just nu.
- Klas-Kenny
- Inlägg: 11375
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: projekt timpris diagram
Trevligt projekt, och det kan ju vara motivation nog ibland.
Men genuint intresserad; fanns det inget färdigt för småpengar som gör i princip samma sak? Känns som en sån där sak som det borde finnas massor av på marknanden, läsa elmätare och rapportera över internet till någonstans.
Lite konstruktivt;
Används det för att kolla om en tid har passerat är det bara till att kontrollera tiden med typ:
Funktionen ovan fungerar även när räknaren slår om.
Men genuint intresserad; fanns det inget färdigt för småpengar som gör i princip samma sak? Känns som en sån där sak som det borde finnas massor av på marknanden, läsa elmätare och rapportera över internet till någonstans.
Lite konstruktivt;
Nu framgår det förvisso inte exakt vad du använder det till, men för det mesta går det utmärkt att hantera "rollover" hos en timer utan att det påverkar någonting.persika skrev: ↑9 september 2022, 13:48:52 *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
Används det för att kolla om en tid har passerat är det bara till att kontrollera tiden med typ:
Kod: Markera allt
bool timeHasPassed(uint32_t time, uint32_t since) {
if((millis()-since) > time)
return true;
return false;
}
- Klickmans
- EF Sponsor
- Inlägg: 5148
- Blev medlem: 1 november 2019, 18:45:08
- Ort: Mellan T & Y i Skåne
- Kontakt:
Re: projekt timpris diagram
@Klas-kenny
Det finns, och kostar 9 kr/månad om man har avtal hos Storuman.
Smart apparat, men TS är värd en fin medalj för sin egen lösning.
Länkar till Storuman, kanske kan ge TS lite tips på låda och sånt.
https://www.storumanenergi.se/blog/2013 ... mmer-eliq/
Det finns, och kostar 9 kr/månad om man har avtal hos Storuman.
Smart apparat, men TS är värd en fin medalj för sin egen lösning.
Länkar till Storuman, kanske kan ge TS lite tips på låda och sånt.
https://www.storumanenergi.se/blog/2013 ... mmer-eliq/
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: projekt timpris diagram
Det funkar säkert det du säger, men bara att jag behöver greppa det själv.Klas-Kenny skrev: ↑10 september 2022, 14:48:52 Trevligt projekt, och det kan ju vara motivation nog ibland.
Men genuint intresserad; fanns det inget färdigt för småpengar som gör i princip samma sak? Känns som en sån där sak som det borde finnas massor av på marknanden, läsa elmätare och rapportera över internet till någonstans.
Lite konstruktivt;Nu framgår det förvisso inte exakt vad du använder det till, men för det mesta går det utmärkt att hantera "rollover" hos en timer utan att det påverkar någonting.persika skrev: ↑9 september 2022, 13:48:52 *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
Används det för att kolla om en tid har passerat är det bara till att kontrollera tiden med typ:Funktionen ovan fungerar även när räknaren slår om.Kod: Markera allt
bool timeHasPassed(uint32_t time, uint32_t since) { if((millis()-since) > time) return true; return false; }
Vad ska man göra om:
Kod: Markera allt
if (timeHasPassed(...))
{
???
}
Re: projekt timpris diagram
Så här ser inledning till slingan i programmet ut:
Kod: Markera allt
void loop()
{
// vänta så ett slingvarv tar 100ms
while (millis() < NaestaMillisSlinga)
;
NaestaMillisSlinga += 100;
// Räkna upp slingräknare,
SlingRaeknare300ms++;
if (SlingRaeknare300ms==3)
SlingRaeknare300ms = 0;
// 100ms slingvarv används för att avläsa tgb,
// för att inte få märkbara fördröjningar.
Här utförs kod med 100ms intervall.
if (!SlingRaeknare300ms) // SlingRaeknare300ms==0
{
// Var 0,3s för uppdatering av lcd med rulltext
Här utförs kod med 300ms intervall.
}
}
- Klas-Kenny
- Inlägg: 11375
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: projekt timpris diagram
Du skulle kunna byta ut
Till tex.
Eller om man inte vill använda en separat funktion som den jag postade;
"Tricket" ligger alltså i att man alltid subtraherar föregående tid ifrån nuvarande och kollar differensen.
När man gör på det viset så blir det rätt även när räknaren slår runt.
Till exempel kan man kontrollräkna i kalkylatorn att
0x05 - 0xFFFFFFFB = 0x0A = 10, när man begränsar sig till 32 bitar.
Där 0x05 alltså är vad räknaren befinner sig 10 ms efter att den befann sig på 0xFFFFFFFB.
Kod: Markera allt
while (millis() < NaestaMillisSlinga)
;
NaestaMillisSlinga += 100;
Kod: Markera allt
while(!timeHasPassed(100, ForraMillisSlinga))
;
ForraMillisSlinga = millis();
Kod: Markera allt
while((millis()-ForraMillisSlinga) <= 100)
;
ForraMillisSlinga = millis();
"Tricket" ligger alltså i att man alltid subtraherar föregående tid ifrån nuvarande och kollar differensen.
När man gör på det viset så blir det rätt även när räknaren slår runt.
Till exempel kan man kontrollräkna i kalkylatorn att
0x05 - 0xFFFFFFFB = 0x0A = 10, när man begränsar sig till 32 bitar.
Där 0x05 alltså är vad räknaren befinner sig 10 ms efter att den befann sig på 0xFFFFFFFB.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: projekt timpris diagram
Klas-Kenny, Tack för en bra förklaring.
Ibland kan det vara bra att göra tvärtom, som i detta fall.
Lätt att snöa in på sin egen lösning.
Ibland kan det vara bra att göra tvärtom, som i detta fall.
Lätt att snöa in på sin egen lösning.