Sida 3 av 4
Re: Energianalysator / 3-fas loggning
Postat: 14 november 2016, 10:15:14
av hubben
http://www.stilit.se/?p=146
Jag gjorde det lite enklare, en Arduino för att få tillräckligt många analoga ingångar, en ESP8266 för att kommunicera via MQTT med externa tjänster och tre sådana klämtrafos.. Fungerar ypperligt.. Nu är inlägget där rätt gammalt och både mjuk- och hårdvaran har förfinats en del sedan dess, men den stora kostnaden var klämtrafosarna - resten var ett par tior..

(Obs, bilden i inlägget är inte den trefassensor som texten avser)
Har kompletterat med lite egendesignade tempsensorer, MQTT via ESP8266 och en one-wire tempsensor som läser av omgivande temperatur..

Re: Energianalysator / 3-fas loggning
Postat: 10 december 2016, 01:28:44
av Magnus_K
Det var stiligt
hubben. Har inte en aning om vad MQTT är, men det kommer man väl snart bli varse
Nu ska hårdvaran vara klar i alla fall.
Fick korten igår och monterade samt utförde mindre tester under kvällen.
Matar med 3,3V från Rpi:n och ger då 1,1V DC-bias till klämman så teoretiskt så ska 30A svinga mellan 0,1V och 2,1V. Spänningsreffen lämnar så fint 2,5V.
Ja, här tar väl sagan slut. Kvar (som i många projekt nu) är mjukvarubiten. Får se om jag i alla fall kan få Rpi:n och snacka med ADC:n.
Hatten.jpg
Hatten_monterad.jpg
Wifi_probe_finished.jpg
Re: Energianalysator / 3-fas loggning
Postat: 18 december 2016, 20:31:10
av Magnus_K
Det blev ett avslut ändå. Tack vare vänliga EF:are som hjälpte mig en del med programmeringen.
Idag gjorde jag första skarpa testkörningen och det tycks fungera exakt som önskat. Loggningen tuffar på och lätt överskådligt tack vare
lizerdboy
mjukvara.
Grafen nedan är bara efter några minuters loggning. Det är ju knappast i sån här detalj jag tänkt studera senare utan nu måste det gå någon vecka innan kurvorna jämnat ut sig och man verkligen får ett hum om hur faserna ligger belastade.
Sen visst, lite kul är det att se saker som tex luftvärmepumpen (ligger på "röd" fas) när den avfrostar och sen startar upp. Ovanpå detta rider en puls av kökets elradiator
Kostnaden slutade på ungefär 500:-
- - Fraktkostnad för en RPi B+ från Gorgus (tack än en gång!), 50:-?
- SD-kort från Lasp (tack än en gång!), 0:-
- WiFi-dongel enligt tidigare inlägg, 100:-
- 3st strömtrafos enligt tidigare inlägg, 120:-
- Mönsterkort, 160:-
- Komponenter, ~60:-
Otroligt lärorikt och ganska kul att få prova på python-programmering och RPi-meckande. Mins sagt annorlunda jämfört med C och PIC
Tack för hjälpen all inblandade
Först_trefasloggen.JPG
EDIT: Kan lägga in den här bilden också. Hade sån jäkla flyt med måtten så hatten kunde bultas fast i skalets lock, och sedan bara läggas och skruvas fast.
Hatt_monterad_i_lock.jpg
Re: Energianalysator / 3-fas loggning
Postat: 18 december 2016, 21:56:50
av Xyzzy
Fint Magnus, jäkligt fint!
Ska bli spännande att höra/se hur fint det funkar.
Re: Energianalysator / 3-fas loggning
Postat: 18 december 2016, 22:19:55
av ffredrik
Cool! Jag skall gå igenom hela projektet när jag har tid. Verkar klart intressant att kopiera!

Re: Energianalysator / 3-fas loggning
Postat: 19 december 2016, 09:45:09
av Magnus_K
Tack ska ni ha!
Det är bara att köra på ffredrik. Bara att fråga om det är något.
Du får mer än gärna ta del av kod, Diptrace-filer, BoM och annat, bara att hojta till.
Re: Energianalysator / 3-fas loggning
Postat: 19 december 2016, 10:03:38
av tecno
Det vart ju bra det där Magnus. Vill mer än gärna ta del av kod, Diptrace-filer, BoM och annat.
Vill kunna logga vad min verkstad drar och speciellt vid användandet av plasman på hög effekt då den ofta ballar ur på 1 av faserna.
Re: Energianalysator / 3-fas loggning
Postat: 19 december 2016, 10:06:49
av Magnus_K
Vad roligt! (att det finns intresse menar jag)
Tar och lägger upp allt i kväll och kladdar ihop något användbart

Re: Energianalysator / 3-fas loggning
Postat: 7 januari 2017, 07:19:42
av Hedis
Snyggt!
Hur har det gått? Har du någon graf att visa nu efter lite längre loggning?
Re: Energianalysator / 3-fas loggning
Postat: 8 januari 2017, 15:56:07
av Magnus_K
Tyvärr har det bara blivit loggning i kortare stunder. Tänkte lite fel när det kom till "datoranvändandet".
Min laptop måste ju stå igång hela tiden under loggningen och det var inte lätt när övriga familjen nyttjar samma dator. En lite reboot eller batteritorsk, sen är loggningen borta...
Det är nog lika bra att köpa en sån där Synology NAS och spara datan direkt till en databas där.
Ska se om jag hinner göra i ordning och ladda upp alla projektfilerna i kväll.
Re: Energianalysator / 3-fas loggning
Postat: 8 januari 2017, 16:59:42
av Borre
Varför inte låta raspberryn spara allt på sd-kortet?
Re: Energianalysator / 3-fas loggning
Postat: 10 januari 2017, 00:49:57
av Magnus_K
Låter klokt
Borre men vet inte hur jag ska importera en sån lista till loggprogrammet. När du säger det så vet jag faktiskt inte ens hur/om jag importera från en databas till programmet.
Den frågan får ställas i
lizerboy
tråd.
Här kommer i alla fall allt jag har om projektet. Det mesta ser ut som skit, men jag kan inte bättre än så.
Hittar ni några direkta fel så skulle jag uppskatta om ni tar upp det i tråden så vi alla kan ta lärdom.
BoM:en ligger schematic-filen och om jag inte minns fel så handlade jag samtliga komponenter hos electrokit.
Något jag skulle vilja förbättra är att routa om kortet så jag slipper jumpern, samt hitta andra avkopplingskondingar (dom jag köpte är lite för stora och tar i RPi:n).
Det behövs inte heller en 8-kanalig ADC, valde det pga ett par extra bitar och electrokit hade såna hemma i DIP-kapsel.
Säg till om jag missat något!
Ja just det. Bidogat i zippen är också ett footprint till de 3,5mm-jack jag använt.
Trodde aldrig det kunde bli så bra genom att bara sitta och mäta med skjutmått men jacken bokstavligt klickade i kortet (inkl. de två små små styrningarna under). Det är electrokit artnr
41012983.
Fasloggern.zip
Kod: Markera allt
import spidev
from time import sleep
import os
import math
import struct
import socket
import sys
# Open SPI bus
spi = spidev.SpiDev()
spi.open(0,0)
# Init channels
phaseL1 = 0
phaseL2 = 1
phaseL3 = 2
sleepTime = 1
Vref = 2.5
#Open TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('192.168.1.8', 5004)
sock.connect(server_address)
print("Connected with: %s on %s" % server_address)
def getReading(channel):
# Extract raw data from ADC
rawData = spi.xfer([(4 + ((8 + channel) >> 2)), ((8 + channel) << 6) & 192, 0])
# Process the raw data into bits
processedData = ((rawData[1]&15) << 8) + rawData[2]
return processedData
def sendSample(sampL1, sampL2, sampL3):
display_stringL1 = ("%.2f" % sampL1)
display_stringL2 = ("%.2f" % sampL2)
display_stringL3 = ("%.2f" % sampL3)
bytesL1 = display_stringL1.encode('ascii')
bytesL2 = display_stringL2.encode('ascii')
bytesL3 = display_stringL3.encode('ascii')
separator = ":"
bytes = bytesL1
sock.send(bytes)
bytes = str.encode(separator)
sock.send(bytes)
bytes = bytesL2
sock.send(bytes)
bytes = str.encode(separator)
sock.send(bytes)
bytes = bytesL3
sock.send(bytes)
newline_string = "\n"
bytes = str.encode(newline_string)
sock.send(bytes)
print("Sent %s to server" % display_stringL1)
def doSampling(phase):
table_of_samples = []
zeroCrossing = 0
rms_voltage = 0
#Take 1024 adc samples and add these to table. Also summarize the for calc of
#the zero crossing level
for i in range(1023):
data = getReading(phase)
zeroCrossing = (zeroCrossing + data)
table_of_samples.append(data)
sleep(0.0005)
#Calculate the zero crossing level
zeroCrossing = (zeroCrossing/1024)
#Remove zero crossing value from each sample to remove DC-bias in circuit
for i in range(1023):
table_of_samples[i] = (table_of_samples[i]-zeroCrossing)
#Muiltiply each sample to the power of 2.
for i in range(1023):
table_of_samples[i] = (table_of_samples[i] **2)
#Finally, summarize all computed samples and calculate RMS value
for i in range(1023):
rms_voltage += table_of_samples[i]
rms_voltage = (rms_voltage/1024)
rms_voltage = math.sqrt(rms_voltage)
rms_voltage = (rms_voltage * (Vref/4096))
#Convert measured voltage into RMS current based on V/A from clamp
rms_current = (rms_voltage * 30)
return rms_current
while True:
rms_current_L1 = doSampling(phaseL1)
rms_current_L2 = doSampling(phaseL2)
rms_current_L3 = doSampling(phaseL3)
sendSample(rms_current_L1, rms_current_L2, rms_current_L3)
#sleep(sleepTime)
sock.close()
Re: Energianalysator / 3-fas loggning
Postat: 10 januari 2017, 09:32:07
av tecno
Faslogger1_1 - kopia.dip.txt
Dip filen lite putsad = byglingen borta samt pillat lite med Copper Pour.
Radera .txt i filnamnet
Re: Energianalysator / 3-fas loggning
Postat: 10 januari 2017, 15:15:56
av Magnus_K
Snyggt
tecno! Vad snabbt det gick
Tack för hjälpen.
Re: Energianalysator / 3-fas loggning
Postat: 10 januari 2017, 15:29:53
av tecno
Måste du använda RES500 storlek på axiella motstånden? Finns en del att putsa med mindre footprint.