Ensto

Sähkökeskuksen kuormanohjausyksikkö

Sisältö

Johdanto


Sähkökeskuksen kuormanohjausyksikkö on järjestelmä, jota käytetään tyypillisesti omakotitalon sähkökeskuksen kautta syötettävien kuormien mittaamiseen ja hallitsemiseen tiettyjen ehtojen perusteella. Kehittämämme prototyyppi yksiköstä kerää reaaliaikaista kulutusdataa pilveen, sekä mahdollistaa kuormien ohjauksen määrättyjen parametrien mukaisesti tai etänä. Prototyyppi tuotettiin yhteistyössä Enston kanssa. 

Toiminnallisuudet


    • Mittaa ja rajoittaa kuormia, jolloin vältetään epätoivottuja kulutustilanteita.
    • Lähettää reaaliaikaista kulutusdataa pilveen ja kuormia voidaan rajoittaa myös etänä.
    • Sähkönkulutuksen ja rajoitteiden visualisointi verkkosivustolla. 

Käyttöönotto


SiPyn käyttöönotto

SiPy on Pycomin mikrokontrolleri, jota ohjelmoidaan MicroPythonilla ja jossa on sisäänrakennettu Bluetooth, Wifi ja Sigfox.

SiPyä itseään ei pysty yhdistämään tietokoneeseen suoraan. Käytimme projektissamme Pycomin erillisesti ostettavaa Expansion Board 3.0:aa, jolla SiPyn yhdistäminen tietokoneeseen on luultavasti helpointa. Myös muut vaihtoehdot ovat mahdollisia ilman Expansion Board:ia, kuten USB-UART-adapteri ja Wifi, lisää Pycomin sivuilla: https://docs.pycom.io/gettingstarted/connection/sipy.

SiPy kytketään suoraan kiinni Expansion Board:iin, on tärkeää että oikein päin. Tämän varmistaminen on helpointa laittamalla SiPyn reset-pin(RST) Expansion Board:in vastaavaan kohtaan. Tämän jälkeen Expansion Board:in pystyy yhdistämään tietokoneeseen sen mukana tulleella USB-kaapelilla.

Kun SiPy on yhdistetty tietokoneeseen, pystytään sen tiedostoja käsittelemään esimerkiksi FTP:n avulla. Pycomilla on kuitenkin tähänkin helpompi ratkaisu: Pymakr-plugini, joka toimii sekä Atom- ja Visual Studio Code -editoreissa.

Me käytimme projektissamme Atom-editoria, johon asensimme pluginin. Plugin luo config-tiedoston, jossa voi esimerkiksi määrittää mitä tiedostoja SiPylle ladataan ja missä USB-portissa SiPy oletuksena on. Plugin pystyy yhdistämään SiPyyn napin painalluksella, tosin SiPy pitää usein resetoida useita kertoja kun sitä yritetään yhdistää tietokoneeseen ensimmäistä kertaa.

Kun meillä on yhteys SiPyyn, pystymme käyttää pluginia koodin ajamiseen siinä, jolloin koodi ei jää pysyvästi sen muistiin. Tämä mahdollistaa nopeat testaukset, jotka eivät sekoita jo SiPyllä olevaa koodia. Voimme myös ladata koko projektin, tai ainakin muuttuneet tiedostot, SiPylle. Pluginin komentorivillä näkyy ilmoitus kun SiPy resetoidaan, tai sinne ladataan koodia ja siinä näkyy myös koodin kaikki print-komennot, jotka mahdollistavat helpon debuggauksen.

Main.py on varsinainen koodi, joka käynnistetään aina kun SiPy käynnistyy, kuitenkin boot.py:n jälkeen. Lisäksi projektiin voi tuoda/luoda omia tai valmiita moduuleja, jotka voi tuoda näissä oletuskooditiedostoissa.

Käyttöohjeet


Laite ohjaa kuormia automaattisesti annetun maksimituntitehon ja kuormien prioriteettien perusteella. Websovelluksessa voi muuttaa näitä parametreja, ja seurata kuormien kulutusta reaaliajassa. Jälkimmäinen toiminto vaatii kuitenkin tunnukset Grafanaan, jota käytimme mittausdatan analytiikkatyökaluna.

Jos laite käyttäytyy epänormaalisti sen voi resetoida painamalla reset-painikettta mikrokontrollerissa. Mikrokontrolleriin syttyy sininen valo, kun se on käynnistynyt onnistuneesti ja yhdistänyt Wlan verkkoon.

Etäohjauksen käyttöohje

Websovellus on yhteydessä palvelimeen, josta SiPy hakee dataa. Kuormien ja vaiheiden perustiedot ladataan palvelimelta yksikön käynnistyessä. Palvelin lataa ja tallentaa tiedot MongoDB tietokannasta.

Palvelimeen voi olla yhteydessä myös suoraan komentoriviltä Python shellissä requests (tai kontrollerissa urequests) kirjastoa hyödyntäen. Tätä rajapintaa hyödynnetään SiPyn ohjelmistossa.

Websovelluksella voi:

    • muokata prioriteetteja
    • sulkea ja avata releitä
    • muuttaa tuntitehon maksimiarvoa

Komentoriviltä voi:

    • tehdä samat asiat kuin websovelluksella ja lisäksi
    • lisätä kuormia ja vaiheita
    • hakea tietoa kuormista ja vaiheista

Alla esimerkki requests -kirjaston käytöstä tässä projektissa. Request-kirjaston dokumentaatiosta löytyy tarkemmat ohjeet sen käytölle.

>import requests
>
># Kuorman lisääminen
>requests.post('https://salty-mountain-85076.herokuapp.com/api/loads', data={"name":"", "commandBits":"", "maxCurrent":"", "phase":"", "relayPin":"", "priority":"", "contValue":"", "id":""})
>
># Prioriteetin muokkaaminen
>requests.put('https://salty-mountain-85076.herokuapp.com/api/loads/<id>/priority', data={"priority":""})
>
># Releen tilan muuttaminen
>requests.put('https://salty-mountain-85076.herokuapp.com/api/loads/<id>/contValue', data={"contValue":"<0 tai 1>"})
>
># Maksimituntitehon muuttaminen
>requests.put('https://salty-mountain-85076.herokuapp.com/api/phases/<id>', data={"phaseMax":""})

Laitteen osat


Piirilevy (kokoonpano alempana) 
SiPyn kehitysalusta
Mittari 50A
Mittari 20A (x4)
Virtalähde releille/piirilevylle
Virtalähde Sipylle
Releet (4x)
Operaatiovahvistimet (x5)
A/D-muunnin
Vedonpoistajat (x3)
Vastamutterit vedonpoistajille (x3)
Mikrokontrollerin DIN Rail kotelo
Piikkirima mikrokontrollerille

Sähkökeskus laitteen testaamista varten

Kytkennät

Keskuksessa syöttöjohto kytketään pääkytkimen ensimmäiseen vaiheeseen ja tämän johdon ympärille laitetaan virtamittari. Tämän jälkeen vaihejohdin kytkettiin vikavirtasuojakytkimien ensimmäiseen vaiheeseen ja sen toiseen vaiheeseen kytkettiin nollajohdin, jotta kolmivaiheinen vikavirtasuojakytkin saatiin toimimaan yksi vaiheisena. Yhden vikavirtasuojakytkimen ensimmäinen vaihe kytketään kuuteen sulakkeeseen. Näistä sulakkeista kaksi kytketään suoraan pistorasioihin. Loput neljä sulaketta kytketään releisiin ja niiden johtojen ympärille laitetaan virtamittarit. Lopulta releet kytketään pistorasioihin. Tämän lisäksi virtalähteet kytkettiin vikavirtasuojaamattomaan sulakkeeseen.

Sähkökaapin kytkentäkaavio

Piirilevy

Projektia varten tehtiin piirilevy jossa on seuraavat osat:

    • Transistorijoukko ohjamaan releitä (ULN2803)
    • Operaatiovahvistimia jännitteenseuraajina, jotta sensoreille olisi riittävän suuri tuloimpedanssi (LT1013 * 3)
    • 8-kanavainen, 12-bittinen A/D-muunnin mittaamaan sensorien jänniteitä mikrokontrollerille (MCP3808)
    • Vastuksia jännitteenakoon joilla saadaan operaatiovahvistimilta tuleva jännite alennetua sopivaksi A/D-muuntimelle (10Kohm * 10)
    • Kondensaattoreita käyttöjännitteiden suodatukseen (50uF * 2)
    • Kondensaattoreita suodattamaan häiriöitä pois A/D-muuntimen tuloista ja referenssijännittestä (500nF * 6)

Piirilevy tarvitsee käyttöjännitteikseen 5V ja 24V.

Piirilevyn kytkentäkaavio
Valmis piirilevy, johon SiPy on kiinnitettynä.

Ohjelmisto


SiPyyn ladattava ohjelmisto löytyy kokonaisuudessaan projektin repositoriosta Githubista. Projektin repositorio löytyy Githubista ja sen dokumentaatio tältä sivulta.

Alla selostus ohjelman toiminnasta.

Mittaus

Mittaus toteutetaan virtasilmukalla, joka mittaa itsensä läpi kulkevaa virtaa. Virtasilmukka syöttää ulos jännitettä välillä 0-10V, joka riippuu virrasta lineaarisesti. Piirilevyssä vastuksilla toteutetulla jännitteenjaolla skaalattiin jännitettä pienemmäksi A/D-muuntimelle.  

Emme käyttäneet SiPyn sisäänrakennettua A/D muunninta, sillä muunnos oli kohinaista, eivätkä tulokset koskaan saavuttaneet muuntimen raja-arvoja. Tämä selvisi valmistajan vastauksesta käyttäjäyhteisön kysymyksiin koskien muuntimen ongelmia. Tämä epäilys vahvistui myös omissa mittauksissa. Valmistajan mukaan tämä ongelma on kuitenkin korjattu uusimmissa laitteissa.

A/D-muunnoksen toteuttaa siis erillinen A/D-muunnin, MCP3208, joka on piirilevyllä. Mittarit ovat  kytkettynä operaatiovahvistimien kautta A/D-muuntimen sisäänsyöttöpinneihin, jotka jokainen vastaavat yhtä A/D-muuntimen kanavaa. SiPy pystyy SPI-protokollan avulla pyytämään eri kanavien mittausarvoja digitaalisessa muodossa.

Mittauksia tehdään noin puolen sekunnin välein ja tarkka arvo annetaan funktioille ajastimien avulla. Mitattuja virtoja tallennetaan hetkellisesti listoihin myöhempää käyttöä varten, jotta niiden keskiarvo voidaan lähettää pilveen. Lisäksi lasketaan tämänhetkinen tehonkulutus, jonka avulla voidaan laskea myös kulunut energia, kun otetaan huomioon mittausten väliset ajat.

Ohjaus

Ohjelmiston toinen ominaisuus on järjestelmän releiden ohjaus itsenäisesti. Releiden tarkoitus on olla kuormien ja verkon välissä, jossa niiden avulla virta voidaan katkaista tarvittaessa.

Tällaisia tilanteita ovat päävaiheen virran kohoaminen liian lähelle päävaiheen sulakkeen maksimivirtaa tai tuntitehon (eli tunnin aikana kulutetun energian) kohoamista liian lähelle maksimiarvoaan.

Jokaiselle kuormaoliolla on määritelty oma rele-pinni. Tämä rele-pinni toimii ON/OFF-periaatteella. Kun se ei ole päällä, releessä ei kulje virtaa ja silmukka on kiinni. Kun siinä on jännite, releeseen kulkee virtaa, joka aiheuttaa sähkömagneettisesti releen aukeamisen ja kuorman irtoamisen verkosta.

Mittauksien yhteydessä päävaiheiden virtoja verrataan maksimiarvoihin ja nykyistä kulutusta tunnin maksimikulutukseen. Mikäli kuormia pitää pudottaa, ohjelma käy kuormat läpi prioriteettijärjestyksessä, joka on määritelty valmiiksi. Pienimmän prioriteetin kuormat pudotetaan ensimmäisenä.

Samoin mittauksien yhteydessä verrataan nykyisen kulutuksen ja suljetun kuorman edellisen kulutuksen (ennen sulkemista) summaa maksimiarvoihin. Mikäli kuorma voidaan kytkeä takaisin ilman, että maksimiarvot ylittyvät, tehdään niin.

Laitteen automaattista ja manuaalista toimintaa esittävät videot:

Ryhmän tiedot


Ryhmä koostui Aalto-yliopiston Sähkötekniikan korkeakoulun opiskelijoista, elektroniikka ja sähkötekniikan, seka automaatio- ja systeemiteknologian pääaineista.

Kytkennät ja piirilevy

Henri Tuovinen
Henri Tuovinen, projektipäälikkö
Leo Andersson
Leo Andersson

Ohjelmisto

Anton Klami
Riikka Nousiainen
Ilpo Pere

Lisenssit

Ohjelmisto: MIT-license
Muu materiaali: Creative Commons (CC BY)