Energianalysator / 3-fas loggning

Användarvisningsbild
hubben
Inlägg: 1754
Blev medlem: 7 september 2010, 11:46:58
Ort: Örviken

Re: Energianalysator / 3-fas loggning

Inlägg 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..
Bild
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg av Magnus_K »

Det var stiligt hubben. Har inte en aning om vad MQTT är, men det kommer man väl snart bli varse :wink:

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
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg 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:s 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 :D

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 :tumupp:
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
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Xyzzy
Inlägg: 1222
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Re: Energianalysator / 3-fas loggning

Inlägg av Xyzzy »

Fint Magnus, jäkligt fint!
Ska bli spännande att höra/se hur fint det funkar.
Användarvisningsbild
ffredrik
Inlägg: 340
Blev medlem: 20 oktober 2009, 17:52:18
Ort: Göinge

Re: Energianalysator / 3-fas loggning

Inlägg av ffredrik »

Cool! Jag skall gå igenom hela projektet när jag har tid. Verkar klart intressant att kopiera! :)
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg 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.
Användarvisningsbild
tecno
Inlägg: 27022
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Energianalysator / 3-fas loggning

Inlägg 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.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg 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 :tumupp:
Användarvisningsbild
Hedis
Inlägg: 2487
Blev medlem: 8 december 2003, 15:10:44
Ort: Vänersborg
Kontakt:

Re: Energianalysator / 3-fas loggning

Inlägg av Hedis »

Snyggt!
Hur har det gått? Har du någon graf att visa nu efter lite längre loggning?
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg 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... :doh:

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.
Borre
Inlägg: 4565
Blev medlem: 14 juni 2007, 15:43:50
Ort: Hälsingland

Re: Energianalysator / 3-fas loggning

Inlägg av Borre »

Varför inte låta raspberryn spara allt på sd-kortet?
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg 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:s 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()
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
tecno
Inlägg: 27022
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Energianalysator / 3-fas loggning

Inlägg av tecno »

Faslogger1_1 - kopia.dip.txt
Dip filen lite putsad = byglingen borta samt pillat lite med Copper Pour.

Radera .txt i filnamnet
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Energianalysator / 3-fas loggning

Inlägg av Magnus_K »

Snyggt tecno! Vad snabbt det gick :)
Tack för hjälpen.
Användarvisningsbild
tecno
Inlägg: 27022
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Energianalysator / 3-fas loggning

Inlägg av tecno »

Måste du använda RES500 storlek på axiella motstånden? Finns en del att putsa med mindre footprint.
Skriv svar