Din varukorg är för närvarande tom!
Tekniker som hjälper dig skapa ett smartare och tryggare hem.
Arduino – Bygg en elmätare
Arduino-projekt för att logga strömförbrukning hemma.
Genom att räkna och spara blinkningar på elmätaren så går det att räkna strömförbrukning mellan olika tidpunkter i efterhand.
Detta görs med hjälp av en Arduino och en PC.
Lösningen är inte helt helt klar men fungerar.
Material
- 1st – LDR
- 1st – Resistor (10K Ohm)
- 1st – Arduino UNO R3
- 1st – labbplatta
- 1st – PC (dator med Windows om du vill nyttja mitt Powershell script)
Övergripande information
På elmätaren klistras en labbplatta med ett motstånd samt en LDR, dvs ett ljuskänsligt motstånd. LDR:en ska placeras framför den blinkade dioden på elmätaren.
För att slippa ha en dator i närheten av elskåpet så valde jag att ha en uppklippt nätverkskabel mellan Arduinon och kopplingsplattan. Det går att enbart montera LDR:en på elmätaren och ha motståndet kopplat direkt på Arduinon.
Varje blinkning skickas från Arduinon till PC:n via com porten. När datorn tar emot detta så skrivs tidpunkten ner i en fil. Varje timme skapas en ny fil.
Genom att registrera elmätarens blinkningar så går det att se hur mycket man förbrukar (ett blink = 1W)
Arduinon kopplas direkt i PC:n via USB och skickar data via Com porten. Ingen extra strömförsörjning behövs.
Kopplingsschema:
Koppla ett 10K ohms motstånd parallellt med A0 (analog) och GND (jord)
Koppla LRD direkt till +5V och andra benet till A0 (analog)
Arduinokoden:
Jag har gjort en loop som kontrollerar om A0 har ett värde över 600, har den det så skickas värdet via serieporten till datorn en gång. Sedan avvaktar Arduinon på att porten ska gå låg igen.
Om ljuset runt LDR:en varierar så går det att ändra vädret ”600” till ett högre eller lägre för att undvika brus och felaktiga avläsningar.
Kod:
const int analogInPin = A0; // Analog pinne dit LDR:en kopplas
const int analogOutPin = 13; // port 13 Arduinon (inbyggd led för att visa att allt är ok)
int AnalogState = 0; // sätter senast lästa värde.
int AnalogLastState = 0; // sätter näst senaste värdet
int AnalogCounter = 0; // Räknar pulser
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup()
{
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(analogInPin);
outputValue = map(sensorValue, 200, 800, 0, 255); // räknar värde 200 som 0, och 800 som 255)
if (sensorValue > 600 && AnalogState == 0){
AnalogState = 1;
//Serial.print(”HIGH”);
Serial.println(sensorValue);
}
else if (sensorValue < 600 && AnalogState == 1)
{
AnalogState = 0; // Sensorn gick nu under 600, dvs nolla och börja räkna igen.
}
else
{
// om man inte har ett värde över 600 och att Analogstate inte va 1
}
analogWrite(analogOutPin, outputValue);
AnalogLastState = AnalogState;
}
PowerShell script
För att spara data på PC:n så har jag gjort ett PowerShell script som lyssnar på Com port, skrivs något på Com porten så sparas tidpunkten ner till en fil. En ny fil skapas varje timme.
Genom att starta scriptet så loggas varje blinkning på din elmätare till en fil. Ändra sökvägen $loggmapp dit du vill ha loggarna sparad. Ändra $comport till porten som Arduinon har presenterat sig på.
### Start script
$loggmappen = ”D:\PowerLoggen” # Sökvägen dit alla loggar skapas
$comport = ”COM3” # Ange den aktuella porten som Arduinon hamnar på!
if (!(Test-Path $loggmappen)){New-Item $loggmappen -ItemType directory -Force -Confirm | Out-Null; Write-Verbose ”Skapade en mapp”}
$loggmappen = Join-Path -Path $loggmappen -ChildPath ”Ström-”
[System.IO.Ports.SerialPort]::getportnames()
$port= new-Object System.IO.Ports.SerialPort $($comport),9600,None,8,one
$port.open()
while ($true){
$tillf = ””
$tillf = $port.ReadLine()
if ($tillf -ne ””){
Write-Verbose $tillf
Out-File -FilePath ”$($loggmappen)$(Get-Date -UFormat %y-%m-%d_%H_00).log” -InputObject ”$((get-date).ToString(”HH:mm:ss:fff”))” -Append
}
}
$port.Close() # detta måste köras för att stänga porten när man är klar!
### slut på scriptet.
På följande sätt ser loggen ut för 10W.
- 22:58:44:350
- 22:58:46:475
- 22:58:48:585
- 22:58:50:710
- 22:58:52:850
- 22:58:54:929
- 22:58:57:069
- 22:58:59:147
- 22:59:01:304
- 22:59:03:413
Schemalägg scriptet så det alltid körs
1: Öppna schemaläggaren på datorn
2: Högerklicka och välj skapa ny standardaktivitet, hitta sedan på ett bra namn
3: Välj att aktiviteten ska köras varje gång datorn startas.
4: Välj ”starta ett program”
5: Ange nu följande:
Program eller script:
- C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
argument: (Ändra till sökväg och namn på ditt sparade script)
- ”D:\dittScript.ps1”
9: Välj nu slutför
10: Öppna aktiviteten du just skapade och ändra till ”kör oavsett om användaren är inloggad eller inte”
Nu loggas förbrukningen extremt noggrant, det går att se direkt vilken millisekund en watt drogs. Jag kommer att lägga upp ett script för att summera detta till snygga grafer så fort jag hinner.
// Markus
I mer än 10 år har Markus Jakobsson delat med sig av erfarenhet inom smarta hem på bloggen. Markus har testa det mesta och lärt sig massor på vägen, kunskaper och erfarenheter han delat med dig här på bloggen.
Favoriter inom smarta hem just nu:
Xiaomi Mi Flora
Raspberry Pi 5
Homey
Home Assistant
Displayen LYWSD03MMC
Hoppas du uppskattade innehållet och fick nytta kunskapen vi delat med oss på Automatiserar.se.
Stort tack för att du tog dig tid att läsa vårt inlägg.
Med vänliga hälsningar Markus Jakobsson
Allt går att automatisera!
Har du precis börjat med smarta hem eller redan kommit en bit på resan? Läs mina dedikerade guider om smarta hem. Dom ger dig kunskaper och insikter som hjälper dig fatta rätt beslut i din resa.
Kommentarer
8 svar till ”Arduino – Bygg en elmätare”
Detta är en pulsmätare, inte en elmätare.
Stor skillnad.Hej, stämmer att benämning kanske inte tekniskt är helt korrekt nu, tänkte bara på själva funktionen. Ber om ursäkt för det.
Men till mitt försvar så kan man hjälp av pulserna den läser beräkna hur mycket energi huset gör av med. dvs resultatet när det behandlats i datorn är en elmätare.
Nästa version av min Esp8266 kommer att nyttja en 219 INA219 I2C, vilket är en mer korrekt ”elmätare” som klarar att mäta åt båda håll. 🙂
// Ispep
Kul!
Jag har kollat på lite alternativ för att göra billiga mätare, och har ett gäng INA219 och några av dens syskonprodukter hemma. Tyvärr blev det projektet liggande…
TI har också en serie av kraftmätande msp430-baserade MCUer som även klarar trefas.Hur omvandlar du växelströmmen till likström?
(Mina tänkta projekt baserade sig på likströmsmätning)
Det är alltid lite knöligt och farligt med isolering när man jobbar med sånt här. Vad jag märkt är det vanligt att en MCU isoleras helt så slipper man böka med isolering av A/D.
[…] strömförbrukning med en arduino och få in i din […]
Hej!
Blev du klar med skriptet som kan summera det till snygga grafer? Skulle uppskattas otroligt mycket.
Tjena
Länge sedan jag gjorde den där nu 🙂 använder Powershell modulen ( https://www.powershellgallery.com/packages/AutomatiserarSE/2.0.2 ) och skickar informationen till en influx db, detta grafas sedan i Grafana, så modulen finns, du behöver bara göra något liknande get-content loggfilen.log | Send-MJInfluxData
Hur du får igång Grafana och Influx DB kan du läsa om i den här guiden: https://www.automatiserar.se/guide-raspberry-pi/
Rekommenderar starkt grafana om du vill göra snygga grafer enkelt// Ispep
[…] riktig genomtänkt, mycket snyggare än det gamla projektet jag gjorde för några år sedan med en Arduino på usb porten för elavläsning. Projektet använder sig även av MySensors som vi tidigare byggde en RFID […]
Hur får du ut strömförbrukningen för individuella komponenter så som vardagsrum och poolvärmare, från en blinkande lampa på elmätaren? Är det något jag missat här? Riktigt ballt projekt!
Intressanta sensorer på bloggen
Jag har testat många sensorer på bloggen, här ser du några av dom. Är du intresserad av att veta vad vi tycker om respektive sensor så klicka på bilden för att få veta mer.
Vill du lära dig mer om smarta hem
och inte riskera missa några nyheter?
prenumerera då på bloggen via mail.
Taggar:
Gör ditt hem Smartare med några av dessa tillbehör
Jag har testat många enheter som gör min vardag lite enklare och smartare, vissa bra och vissa mindre bra. Många är helt vanliga enheter som fått smarta funktioner eller tekniker installerad. Något som jag sedan försöker använda för att göra familjens vardag enklare och vårt hem smartare. Är du intresserad av att se vad du kan göra med dessa enheter så klicka på bilden för att läsa mer om hur vi upplever den.
Gateway / Kontrollers & mjukvaror
Det finns idag en uppsjö tekniker och enheter på marknaden, tyvärr så finns det inte någon perfekt lösning ännu, utan varje lösning har sina styrkor och svagheter. För att du lättare ska kunna välja vilket spår som passar dig så har jag samlat alla tekniker jag testat och en bra sammanfattning om dom. Utifrån det kan du själv avgöra vad du anser mest lämpat. Är du osäker på vart du ska börja så kolla in min nybörjarguide om smarta hem, där får du tips på vad du ska leta efter och fundera över innan du kör igång.
Lämna ett svar