Akkujen aktiivinen balansointi

Samankaltaiset tiedostot
Akkujen aktiivinen balansointi

Akkujen aktiivinen balansointi

A13-03 Kaksisuuntainen akkujen tasauskortti. Projektisuunnitelma. Automaatio- ja systeemitekniikan projektityöt AS-0.

Akkujen aktiivinen balansointi

A13-03 Kaksisuuntainen akkujen tasauskortti. Väliaikaraportti. Automaatio- ja systeemitekniikan projektityöt AS Syksy 2013

A13-03 Kaksisuuntainen akkujen tasauskortti. Loppuraportti. Automaatio- ja systeemitekniikan projektityöt AS Syksy 2013

AS Automaatio- ja systeemitekniikan projektityöt

AS Automaatio- ja systeemitekniikan projektityöt

AS Automaatio- ja systeemitekniikan projektityöt - Projektisuunnitelma

Electric power steering

Elektroniikkalajin semifinaalitehtävien kuvaukset

OMNIA OPINNÄYTETYÖ AMMATTIOPISTO. Diginoppa ICTP09SLG OMNIAN AMMATTIOPISTO

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

Electric power steering

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

BL40A1810 Mikroprosessorit, harjoitus 1

AS Automaatio- ja systeemitekniikan projektityöt

S Portaalinosturi AS Projektisuunnitelma Oleg Kovalev

Projektisuunnitelma: Vesipistekohtainen veden kulutuksen seuranta, syksy Mikko Kyllönen Matti Marttinen Vili Tuomisaari

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

Ohjelmistojen mallintaminen. Luento 11, 7.12.

S09 04 Kohteiden tunnistaminen 3D datasta

Automaattinen yksikkötestaus

Lataussäädin 12/24V 10A. Käyttöohje

Ohjelmiston testaus ja laatu. Testaustasot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

9.6 Kannettava testilaite

Valppaan asennus- ja käyttöohje

DEE Sähkötekniikan perusteet

Ulkoasu. 1.Objektiivi 2.Tallennuspainike 3.Kuvien ottopainike _ FIN 01

S11-09 Control System for an. Autonomous Household Robot Platform

WintEVE Sähköauton talvitestit

KÄYTTÖOPAS DIGIOHM 40

MASSER Loader V2.00. käyttö- ja asennusohje

Projektisuunnitelma Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Ohjelmoinnin peruskurssi Y1

Comet laskutusasiakas -sivusto

Puhelinnumeroiden lataaminen laitteesta tietokoneelle

Tehtävä 5. ECIO dataloggeri lämpötila-anturilla

A14-11 Potilaan mittaustiedon siirtäminen matkapuhelimeen

Power Steering for ATV

Ohjelmointi 1. Kumppanit

MixW ja Dx-vihjeet (ohje) oh3htu

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Peltorobotin akselimoduulin kontrolleri

AS Automaatio ja systeemitekniikan projektityöt A13 10 Radio ohjattavan pienoismallin ohjausjärjestelmän ja käyttöliittymän kehittäminen

Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle.

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

Air Sync Käyttöopas. Air Syncin lataaminen. Virran kytkentä ja katkaisu On/Off Air Sync

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

LHV325 Ohjelmoinnin perusteet. WorkBook. Jussi Tapio Kuosa

A11-02 Infrapunasuodinautomatiikka kameralle

Hybridivalvomon tilatiedon hallinnan kehittäminen

Simulaattorin asennus- ja käyttöohje

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

Arduino ohjelmistokehitys

Joni Heikkilä WINTEVE SÄHKÖAUTON TALVITESTIT

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Väliraportti

Semifinaalin aikataulu ja paikka. Semifinaalikoordinaattori. Kilpailijamäärä. Elektroniikkalajin semifinaalitehtävien kuvaukset

AS Automaatio- ja systeemitekniikan projektityöt

erasmartcardkortinlukijaohjelmiston

Online karttapäivitys

Mikrokontrollerikitit - väliraportti

Ylläpitodokumentti Mooan

A15 - Inertial Measurement Unit

Ohjelmoinnin perusteet Y Python

DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys

padvisor - pikaohje - työkalu SATRON Smart/Hart dp- ja painelähettimiä varten

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

Operatiiviset päivät Ohjeita luennoitsijoille AV-tekniikasta

PC-LAITTEEN TESTAAMINEN

CASE Varma Testauksen haasteet moniuloitteisessa testiympäristössä Tuukka Vähäpassi

Testidatan generointi

Pika-asennusohjeet Suomeksi

MOBIILIVARMENTEEN KÄYTTÖÖNOTTO

LoCCaM Riistakamerasovellus. Dimag Ky dimag.fi

Johdatus ohjelmointiin

Harjoitustyö - Mikroprosessorit Liikennevalot

SOVELLUSPROJEKTIN ARVIOINTILOMAKE

I T. SurePath. Järjestelmä on täysin yhteensopiva kaikkien DALI hyväksyttyjen turva- ja poistumistievalojen kanssa.

DEE Uusiutuvien energiamuotojen työkurssi. 5 op

MINITV POCKET43 MINI DV VIDEOKAMERA

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

5. HelloWorld-ohjelma 5.1

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Visma Software Oy

Ohjelmistopäivitykset

Yhteenvetodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Usein kysyttyä Eee Pad TF201:stä FI6915

VOIMALASÄÄTIMET Sivu 1/ FinnPropOy Puhelin: Y-tunnus:

Käyttöoppaasi. HP COMPAQ PRESARIO F760EM

Robottialustan instrumentointi ja käyttöönotto

TKT224 KOODIN KOON OPTIMOINTI

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Väylään liitettävä laite: Pheonix Contact ILB PB DI8 DIO8

Transkriptio:

Loppuraportti 1(20) Akkujen aktiivinen balansointi Loppuraportti AS-0.3200 Automaatio- ja systeemitekniikan projektityöt syksy 2014 Valvoja: Jorma Selkäinaho Työryhmä: Lauri Sorsa Joonas Sainio

Loppuraportti 2(20) 1 Johdanto 2 Työnkulku 2.1 Aiheeseen tutustuminen 2.2 Systeemitason suunnitelma 2.3 Systeemin rakentaminen 2.4 Systeemin testaus 3 Työn tulokset 3.1 Laitteisto 3.2 Ohjelmakoodi 3.2.1 Ohjelmakoodin kirjoittaminen 3.2.2 Ohjelmakoodin kääntäminen 3.2.3 Käännetyn ohjelmakoodin lataaminen DC2100A c demokortille 3.3 Systeemin käyttö 3.4.1 Jänniteperusteinen balansointi 4 Ajankäyttö 5 Projektin jatko Viitteet

Loppuraportti 3(20) 1 Johdanto Tämä projekti jatkoi Aalto yliopistossa vuonna 2013 aloitettua Akkujen Aktiivisen Balansoinnin projektia. Projektin tavoitteena oli toteuttaa itsenäisesti toimiva järjestelmä, joka tasaisi aktiivisesti sarjaankytkettyjen kennojen varaustasoja epäbalanssin ilmetessä. Akuston ollessa balansoituna, voidaan akusto ladata jokaista kennoa myöten täyteen ja vastaavasti purkutilanteessa kaikki energia pystytään hyödyntämään (vrt. passiivinen balansointi). Käytännössä tämä tarkoittaa esimerkiksi sähköajoneuvolle pidentynyttä toimintasädettä. Projektin edistämiseksi rautasuunnittelu näytti turhan riskialttiilta, sillä viime vuonna projektia edistäneet kaksi työryhmää olivat kärsineet jo elektroniikkasuunnittelun haasteista. Tämän vuoksi oli siis löydettävä uusi lähestymistapa aktiivisen balansoinnin toteuttamiseksi. Projektin budjetti oli erittäin pieni, mutta se onnistui siihen nähden loistavasti. Kaksi aikaisempaa työryhmää (2013 syksy & 2014 kevät) keskittyivät Linear Technologyn LTC tuoteperheen hyödyntämiseen rakentamalla itse piirikortit tuoteperheen jäsenille. Näitä piirikortteja yhdistelemällä ja sovelluskoodia kirjoittamalla nämä työryhmät yrittivät saada toimivan järjestelmän aikaiseksi, mutta valitettavasti yksittäisten komponenttien ympärille suunnitellut piirilevyt toivat yllätyksiä tullessaan ja täten akkuja ei koskaan päästy balansoimaan. Nämä työryhmät kärsivät rautasuunnittelun ongelmista sekä käytettyjen mikrokontrollerien muistiongelmista. Tämän syksyn aikana Aalto yliopiston ja Linear Technologyn välille kehittynyt yhteistyö tuotti haluttuja tuloksia. Yhteistyön ansiosta Aalto yliopisto sai ensimmäisen aktiivisen akkujen balansointisovelluksen toteutetuksi. Linear Technology tuki projektia antamalla käyttöömme kahdentoista kennon balansoimiseen tarkoitetun demokortin ja korttiin liittyvää liitännäiselektroniikkaa. Tämän lisäksi he tarjosivat runsaasti tuotetukea sisältävää materiaalia. Hyödyntämällä Linear Technologyn tarjoamaa asiakkaiden referenssiksi tarkoitettua ohjelmakoodia, oli balansointialgoritmi mahdollista toteuttaa korkean tason ohjauksena, jolloin aikaa voitiin käyttää erityisesti systeemitason suunnitteluun ja toteutukseen. Demokortin toimitus viivästyi projektin aikana, sillä kaikki kortit oli myyty loppuun USA:ssa ja uuden demokortin kokoaminen, testaus ja toimitus Suomeen vei odotettua enemmän aikaa. Tästä huolimatta projekti pääsi tavoitteeseensa, mutta testaukselle jäi suunniteltua vähemmän aikaa. Projektimme haluaa kiittää Linear Technologyn antamaa tuotetukea, joka säästi paljon aikaa systeemin rakentamisessa ja teki projektin täten mahdolliseksi.

Loppuraportti 4(20) 2 Työnkulku 2.1 Aiheeseen tutustuminen Projektin alussa käytimme aikaa runsaasti aktiivisen balansoinnin toteuttamismenetelmiin tutustumiseen. Perehdyimme yli kymmeneen erilaiseen tutkimukseen ja toteutukseen aiheen tiimoilta. Hyödyllisimmät artikkelit olivat liitteet [1] ja [2]. Läpikäydyt artikkelit ja aktiiviseen balansointiin liittyvät tietolähteet löytyvät kurssin Wiki sivustolta kansiosta Active balancing articles.zip. Kyseiset artikkelit olivat sidottuja vahvasti tutkimuksissa käytettyihin laitteistotopologioihin, joten pystyimme käyttämään niitä vain yleisohjeina omalle sovelluksellemme. Linear Technologyn kanssa sovitun yhteistyön jälkeen aloimme keskittyä enemmän heidän tarjoamansa laitteiston toimintaan, sillä sen käyttäminen vaati tarkkaa tutustumista manuaaleihin ja asiakkaille tarjottuun referenssinä toimivaan ohjelmakoodiin. Laitteistoon tutustuminen täytyi tehdä ainoastaan aluksi manuaalien avulla, sillä laitteiston toimitus viivästyi melko paljon projektin aikana. Suunnittelua toteutettiin täten aluksi pitkälti pelkän kirjallisuuden, tutkimusartikkelien ja laitteistomanuaalien avulla. 2.2 Systeemitason suunnitelma Saatuamme varmuuden, että systeemi tultaisiin rakentamaan Linear Technologyn tuotteilla, teimme systeemitason suunnitelman järjestelmän hahmottamiseksi. Tämä suunnitelma [3] on esitetty projektin Wiki sivustoilla tiedostossa Project_architecture_v1.0.pdf. Systeemi koostuu siis akustosta, DC2100A c demokortista, mitta/balansointijohtimista sekä mikrokontrollerista. Systeemin tilaa voidaan valvoa rajatusti graafisen käyttöliittymän avulla. Edellämainittu suunnitelmatiedosto sisältää projektin systeemintason kuvauksen, rautatason kuvauksen sekä ohjelmakoodin rakennekuvauksen. 2.3 Systeemin rakentaminen Systeemin suunnitelman mukaisesti rakensimme balansoitavan akuston kytkemällä 12 LiFePO4 kennoa sarjaan. Tämän lisäksi liitimme mittajohtimet akuston napoihin ja valmistimme johtosarjat niin, että demokortti olisi helppo kytkeä akustoon balansointialgoritmien testauksen aikana. Kun akusto oli saatu kytkettyä demokorttiin, oli aika testata demokortin toimintaa PC:n avulla. PC liitettiin demokorttiin USB kaapelin välityksellä ja Linear Technologyn tarjoaman graafisen käyttöliittymän (GUI) avulla oli helppo kokeilla demokortin toimintaa. Kytkennät todettiin onnistuneiksi, sillä käyttöliittymä ilmoitti kennojännitteiden olevan samat kuin mitä itse olimme yleismittarilla mitanneet. Tämän lisäksi

Loppuraportti 5(20) laitteistojen ajurit olivat oikein asennettu, sillä PC oli kykeneväinen kommunikoimaan demokortin kanssa. Linear Technologyn kotisivuilta oli mahdollista ladata asiakkaille tarkoitettu referenssikoodi, jota voitiin hyödyntää DC2100A c demokortin kanssa. Koodi oli valmiiksi rakennettu niin, että se toimi jo edellä mainitun graafisen käyttöliittymän kanssa. Koodi itsessään ei vielä balansoinut autonomisesti mitään, mutta graafisen käyttöliittymän avulla demokorttia pystyi kumminkin testaamaan manuaalisesti. Tällä tavoin pystyimme varmistamaan demokortin toimivuuden ennen oman balansointialgoritmin toteutusta. Mainittakoon, että tämä referenssikoodi pyöri DC2100A c demokortin PIC18 mikrokontrollerilla, sillä referenssikoodi oli alunperin kirjoitettu kyseiselle mikrokontrollerille. Ensitestit tuottivat hyviä tuloksia, sillä DC2100A c demokortti toimi odotetusti ja sitä pystyttiin käskyttämään graafisen käyttöliittymän kautta. Käyttöliittymä myös osoitti, että kennojännitteet pienenivät tai suurenivat sen mukaan, mikäli varausta siirrettiin / poistettiin kennoista. Toimivan systeemin johdosta aloitimme suunnittelemaan omia balansointialgorimejamme, joita suoritettaisiin mahdollisesti demokorttiin liitettävässä mikrokontrollerissa (esim. Linduino). Teimme käytännössä kolme erilaista algoritmia, jotka hyödynsivät Linear Technologyn referenssikoodia. Hyvin pian huomasimme, että referenssikoodia oli erittäin vaikea saada siirrettyä ulkoiselle mikrokontrollerille, sillä se oli rakennettu suoraan PIC18 mikrokontrollerille, joka sisältyi DC2100A c demokorttiin. Olimme tästä yhteyksissä Linear Technologyyn ja heidän tuotekehittäjänsä oli sitä mieltä, että Linduinon sijaan meidän kannattaisi ehdottomasti käyttää demokorttiin valmiiksi integroitua PIC18 mikrokontrolleria. Tällöin meidän ei tarvitsisi käyttää liikaa aikaa matalantason suunnitteluun (lähinnä ajurit jne.. ). Tästä syystä päätimme käyttää PIC18 mikrokontrolleria algoritmin ja referenssikoodin pyörittämiseen. Tällä tavoin ainakin säästyisimme aikaa vieviltä matalantason ohjelmointiongelmilta. Systeemin suunnitelma [3] siis muuttui käytännössä vain siten, että järjestelmän ulkoisen mikrokontrollerin tilalle otimme käyttöön demokortin sisältämän PIC18 mikrokontollerin. 2.4 Systeemin testaus Systeemin testausaika jäi hieman lyhyeksi, sillä laitteiston toimitus Suomeen vei odotettua enemmän aikaa. Täten projektin loppuvaiheessa aikaa jouduttiin vielä käyttämään itse algoritmien rakentamiseen. Ehdimme kumminkin testata algoritmien toimintaa silmämääräisesti. Koska käytössämme ei ollut debuggeria (maksullinen), emme voineet tehdä tarkkoja päätelmiä lukuarvoperusteisesti. Debuggerin puuttuminen toi myös luonnollisesti hankaluuksia koodin kirjoittamiseen. Järjestelmän itsenäinen toiminta vaikutti kumminkin oikealta, koska graafisen käyttöliittymän avulla näimme, että järjestelmä latasi heikompia kennoja ja vastaavasti purki täydempiä kennoja. Tämän nojalla päättelimme algoritmien toiminnallisuuden olevan halutulla tasolla ja täten pääsimme projektin tavoitteeseen. Järjestelmä tosiaan balansoi kennoja autonomisesti algoritimien ohjeistamana.

Loppuraportti 6(20) 3 Työn tulokset 3.1 Laitteisto Kuva 1: Demokortti DC2100A c [6] Linear Technologyn valmiin DC2100A c demokortin ansiosta meidän ei tarvinnut tehdä omaa balanssointikorttia. Kyseinen demokortti on esitetty kuvassa 1. Kortissa on ns. turretteja (kuva 1, alareuna), joihin juotimme akustolta tulevat mitta/balansointijohtimet. Akuston rakensimme liittämällä 12 epäbalanssissa olevaa LiFePO4 kennoa (260 Ah) sarjaan. Kuvassa 2 on akustomme, jonka avulla pystyimme testaamaan balanssointialgoritmien toimintaa. Yhdistimme mittajohdot banaaniliittimillä, jolloin saimme nopean ja turvallisen tavan liittää akuston demokorttiin. Koska akkujen oikosulkuvirta oli vaarallisen suuri, liitimme akkujen navoilta tuleviin johtimiin naarasliittimet, jotta niiden oikosulkeminen vahingossa olisi käytännössä mahdotonta. Kennot on kytkettävä korttiin akuston matalimmasta potentiaalista lähtien, eli turretista V akuston miinusnapaan ( ), seuraavaksi turretista C1 ensimmäisen kennon +napaan ja viimeiseksi turretti C12 kennon 12 +napaan. Turretit BOTS_TS ja TOPS_TS kytketään molemmat koko akuston +napaan, mikäli akustossa on 12 kennoa. Kuvassa 3 on esitetty kytkentäkaavio, mikäli akkuja on enemmän kuin 12 ja balanssointikortteja enemmän kuin yksi. Mikäli käytetään korttiin integroitua PIC18 kontrolleria on JP7 C rivin (ylin) pinnit kytkettävä B rivin (keskimmäinen) pinneihin, jotta PIC18 kontrollerin SPI väylä on kytkettynä piireille menevään SPI väylään. Mikäli käytetään ulkoista mikrokontrolleria on tämä puolestaan kytkettävä JP7 portin C pinneihin. JP7:n SPI väylän kaavio on esitetty kuvassa 11, projektin jatko osiossa.

Loppuraportti 7(20) Kuva 2: Testi akusto Tärkeintä demokortin kytkennässä akustoon on kennojen kytkentäjärjestys kuten aikaisemmin mainittiin. Vastaavasti kennoja irroitettaessa demokortista, aloitetaan suurimmasta kennopotentiaalista ja edetään järjestyksessä kohti pienintä kennopotentiaalia kunnes kaikki kennot on lopulta irroitettu demokortista. Kuva 3: Akkujen kytkentä [6]

Loppuraportti 8(20) 3.2 Ohjelmakoodi Demokortin ohjelmakoodi perustui Linear Technologyn tarjoamaan lähdekoodiin, joka on tarkoitettu asiakkaiden muokattavaksi omiin tarpeisiin. Tämä lähdekoodi jakautuu luokkiin kuvan 4 mukaisesti. Kuva 4. Referenssiksi tarkoitettu ohjelmakoodi [7] Kuvaan 4 on merkitty mustavalkoisella katkoviivalla sellaiset tiedostot, joiden avulla asiakas voi kommunikoida DC2100A c korttiin integroitujen piirien kanssa. Tällaisia piirejä ovat esim. LTC3300 (balansointipiiri) sekä LTC6804 2 (kennojännitteiden monitorointipiiri). Katkoviivan sisällä esitetyt tiedostot käytännössä toimivat rajapintoina asiakkaan tekemän algoritmin ja DC2100A c korttiin integroitujen piirien välillä. Kyseiset tiedostot sisältävät ohjeistuksen piirien käyttöön ja täten asiakkaan ei tarvitse käydä kaikkia detaljitietoja läpi piirien manuaaleista. Piirien käyttöön liittyvät funktiot on koottu valmiiksi asiakkaalle näihin tiedostoihin.

Loppuraportti 9(20) Projektimme hyödynsi Linear Technologyn tarjoamaa sovelluskehystä niin, että lisäsimme kyseiseen kehykseen oman balansointialgoritmin, joka hyödyntää Linear Technologyn tarjoamia rajapintoja DC2100A c kortin sisältämien piirien käyttämiseksi. Tämä oli projektin kannalta kaikista järkevintä, sillä omien rajapintojen luominen olisi ollut erittäin työlästä. 3.2.1 Ohjelmakoodin kirjoittaminen Ohjelmakoodin kirjoittaminen tapahtuu Microchip MPLAB IDE v.8.92 ympäristössä. Lähdekoodiin pääsee käsiksi avaamalla DC2100A_Aalto.mcw projektitiedoston kyseisellä sovelluskehittimellä. Kirjoitettava ohjelma perustuu ns. taskeihin, joita PIC18 mikrokontrolleri suorittaa annetuin väliajoin. Tällöin esimerkiksi kennojen jännitteitä voidaan lukea tasaisin väliajoin (esim. 1s tai 100 ms). Nämä task määrittelyt on tehty tiedostossa DC2100A.c. Kun taski suoritetaan, käytännössä kutsutaan vain jotain tiettyä funktiota ohjelmakoodissa, joka suorittaa halutun tehtävän. Balansointialgoritmiamme varten kirjoitimme oman taskin nimeltä Task_SOC, jota kutsutaan viiden sekunnin välein. Tämä taski kutsuu funktiota nimellä SOC_task() (tiedostossa SOC.c), johon olemme kirjoittaneet balansointialgoritmimme. Kun algoritmi on kirjoitettu SOC_task() funktioon, pitää koodi kääntää, jotta se voidaan ladata lopulta DC2100A c demokortille testattavaksi. Asiakkaalle tarkoitettu referenssikoodi on hyvin kommentoitua ja siitä on olemassa Doxygen spesifikaatio. Tämän spesifikaation avulla on helppo päästä aluilleen koodin kirjoittamisessa. Lisäksi Linear Technologyn tarjoama Software and User s Guide [7] on oiva opas demokortin ohjelmoinnin aloittamiseksi. Koodin kirjoittamisen aikana jouduimme olemaan kumminkin useaan otteeseen yhteydessä Linear Technologyn tuotekehittäjien kanssa koodiin liittyvien ongelmien kanssa. Tämä lähinnä siksi, että meillä ei ollut debuggeria käytössä, koska se on valitettavasti maksullinen. Kirjoittamamme ohjelmakoodi on myös kommentoitu hyvin, joten sitä on helppo lukea. 3.2.2 Ohjelmakoodin kääntäminen Kun ohjelmakoodi on muokattu halutunlaiseksi MPLAB IDE sovelluskehittimessä, käynnistetään kääntäjä F10 pikanäppäimellä. Tämä avaa erillisen kääntäjäohjelman, sillä Linear Technologyn tuotekehittelijä suositteli käyttämään ilmaista CCS C Compiler ohjelmistoa. Kyseinen ohjelmisto on esitetty kuvassa 5. DC2100A_Aalto.mcw projektissa kuvan 5 kääntäjä on asetettu projektin kääntäjäksi ja täten käyttäjällä pitää olla vain kyseinen CCS C Compiler ohjelmisto asennettunaomalle työasemalle. Kun koodi on kääntynyt oikein, näyttää kääntäjä kuvan 6 mukaiselta. Koodin kääntämisen jälkeen projektista luotu DC2100A.hex tiedosto voidaan ladata DC2100A c demokortille USB johdon välityksellä.

Loppuraportti 10(20) Kuva 5: CCS C Compiler kääntää lähdekoodia Kuva 6: Koodin kääntäminen on onnistunut. RAM käyttöaste: 62 %, ROM käyttöaste: 34 %.

Loppuraportti 11(20) 3.2.3 Käännetyn ohjelmakoodin lataaminen DC2100A-c demokortille Käännetyn projektin lataamiseksi demokortille, pitää demokortti saattaa ns. Boot loader moodiin. Tämä tapahtuu niin, että demokortin JP7 piikkiriman piikit 2A ja 3A oikosuljetaan kuvan 7 osoittamalla tavalla. Oikosulkemisen jälkeen kortille syötetään jännite PC:stä USB kaapelin avulla, jolloin demokortti käynnistyy Boot loader moodiin ja koodi voidaan ladata komentorivin avulla. Kuva 7: Kytkentä boot loader moodissa Kun demokortti on käynnistetty Boot loader moodissa, käynnistetään komentorivi ja navigoidaan komentorivin avulla kansioon, jonne on asennettu Linear Technologyn koodin lataukseen tarkoitettu fw_update.exe ohjelma. Kääntäjän tuottama 2100A.hex tiedosto kopioidaan myös tähän samaiseen kansioon. Tämän jälkeen voidaan kutsua kyseistä latausohjelmaa seuraavalla komennolla: fw_update.exe e w vid 0x1272 pid 45067 ix DC2100A.hex Koodin latauksen jälkeen komentorivi näyttää kuvan 8 mukaiselta. Kuva 8: Onnistunut ohjelmakoodin lataus DC2100A c kortille

Loppuraportti 12(20) Koodin latauksen jälkeen USB kaapeli kytketään irti ja JP7 piikkiriman rivit C ja B kytketään yhteen liitoskappaleella kuvan 9 mukaisesti. Kuva 9: Liitoskappaleen paikka koodin latauksen jälkeen Kun liitoskappale oikosulkee JP7 riman pinnit kuvan 9 osoittamalla tavalla, voidaan USB kaapeli kytkeä demokorttiin uudestaan PC:stä. Nyt demokortti herää ja alkaa suorittamaan sille ladattua ohjelmakoodia. 3.3 Systeemin käyttö Systeemiä käytettäessä on ensin kytkettävä akusto demokorttiin. Kytkentä suoritetaan matalimmasta potentiaalista korkeampiin. Käytännössä ensin kytketään V akuston miinusnapaan ( ), seuraavaksi C1 ensimmäisen kennon (kenno, jonka miinusnapa on akuston miinusnapa) +napaan, seuraavaksi C2 toisen kennon +napaan jne. BOTS_TS ja TOPS_TS kytketään kuten kuvassa 3 on esitetty. Esimerkiksi jos akustossa on 12 kennoa, kytketään molemmat 12. kennon +napaan, jos taas akustossa on >12 kennoa, kytketään BOTS_TS 12. kennon + napaan ja TOPS_TS 18 kennon +napaan (tai akuston +napaan, mikäli akkuja <18). Seuraavaksi on kytkettävä mikrokontrolleri demokortille integroituihin piireihin, mikäli käytössä on kortille integroitu PIC18 kontrolleri riittää kytkeä JP7 portin C ja B rivit, mikäli käytössä on ulkoinen mikrokontrolleri, se pitää kytkeä JP7 portin C riviin, kuvan 11 mukaan. Kun kytkennät

Loppuraportti 13(20) on tehty, pitäisi balanssoinnin lähteä käyntiin mikäli kontrollerilla on toimiva ohjelma. Korttia irroittaessa akustosta on vastaavasti aloitettava korkeimmasta potentiaalista ja edettävä matalampiin potentiaaleihin. Kuva 10: QuickEval GUI [7] Mikäli käytössä on kontrolleri, jonka ohjelmistossa on mahdollisuus GUI:n käyttöön, voidaan Linear Technologyn QuickEval GUI ohjelmaa käyttää akuston tilanteen manuaaliseen monitorointiin. Mikäli kontrollerin ohjelmistossa ei ole GUI:n mahdollistavaa koodia ei akkujen visuaaliseen monitoroimiseen ole juuri mahdollisuutta, ellei omaa monitorointia toteuteta. Tietenkin on mahdollista mitata akkujen jännitteet niiden navoista ja näin varmistaa balanssoinnin toimivuus. Kuva 10 on otettu QuickEvalin GUIsta. Kurssin wiki sivuilla on myös noin minuutin video systeemistä balanssoimassa.

Loppuraportti 14(20) 3.4 Balansointialgoritmit Projekti kehitteli kolme erilaista balansointialgoritmia, joista käytännössä yksi ehdittiin verifioida. Algoritmien debuggaaminen oli vaikeaa sillä debuggeria ei ollut sen maksullisuuden vuoksi. Idealtaan algoritmit ovat kumminkin täysin toimivia. Algoritmien ideat ovat esitetty seuraavaksi ja niiden tarkempi toteutus on esitelty lähdekoodissa runsain kommentein. 3.4.1 Jänniteperusteinen balansointi Ensimmäinen balansointialgoritmi toteutettiin jänniteperusteisena. Aluksi demokortti mittaa jokaisen kennon jännitteen. Sitten se laskee jännitteistä keskiarvon. Tämän jälkeen verrataan jokaista kennoa keskiarvoon ja päätellään, pitäisikö yksittäistä kennoa purkaa vai ladata, jotta sen jännite saataisiin samaksi kuin kennoston keskiarvo on. Näistä tehdään taulukko, jonka perusteella jokaista kennoa puretaan tai ladataan muutaman sekunnin ajan. Tämän jälkeen demokortti mittaa jälleen kaikkien kennojen jännitteet ja laskee keskiarvon jne. Tämän algoritmin toimintaa pystyttiin seuraamaan graafisen käyttöliittymän avulla ja totesimme sen toimivan haluamallamme tavalla. Kyseinen algoritmi ei missään nimessä ole tarkka eikä se lisota järjestelmän topologiasta johtuvia kompleksisuuksia huomioon. Jatkokehityksen kannalta sillä voidaan kumminkin verifioida hyvin omatekoisen demokortin toimintaa. 3.4.2 SOC -perusteinen balansointi Tämä balansointialgoritmi on hieman kehittyneempi kuin jänniteperusteinen algoritmi. Se pyrkii päättelemään avoimen piirin jännitteen perusteella yksittäisen kennon prosentuaalisen varauksen (SOC %) ja tasoittamaan näitä varauseroja. Toiminnaltaan tämä on kumminkin identtinen jänniteperusteisen balansoinnin kanssa. Ainoa ero on se, että mitatut jännitteet muunnetaan arvioiduiksi SOC arvoiksi, joiden perusteella balansointikomennot määritellään. Tätä algoritmia kokeiltiin myös ja silmämääräisesti se näytti toimivan täysin oikein. Algorimit pitäisi kumminkin käydä rauhassa ajonaikaisen debuggerin kanssa läpi. Tämäkään algoritmi ei ota järjestelmätopologian aiheuttamia ongelmia kovinkaan hyvin huomioon. 3.4.3 ΔQ -perusteinen balansointi Tämä balansointialgoritmi hyödynsi Linear Technologyn referenssiksi antamaa, järjestelmätopologian kompleksisuuden huomioon ottavaa varauksensiirtofunktiota. Algoritmi laskee mitattujen jännitteiden perusteella akuston keskimääräisen SOC arvon. Sitten se laskee jokaiselle kennolle erikseen purettavan / ladattavan Ah määrän, mikä pitäisi kohdistaa yksittäiselle kennolle, jotta lopulta kennot olisivat balansissa SOC % suhteen. Tämä siis tarkoittaa sitä, että balansoinnin päätyttyä kaikki kennot olisivat saavuttaneet aikaisemmin

Loppuraportti 15(20) lasketun keskiarvon. Kennojen varauksista tehdään taulukko (kuinka paljon yksittäistä kennoa ladataan / puretaan) ja tämä taulukko annetaan Linear Technologyn tekemälle deltaq funktiolle parametriksi. Tämä funktio balansoi akuston annettujen parametrien perusteella ja vieläpä siten, että se ottaa demokortin topologiasta johtuvat kompleksisuudet huomioon. Lyhyesti sanottuna yllämainitut aktiivisen balansoinnin kompleksisuudet syntyvät siitä, että DC2100A c kortin balansointipiirit 1 6 voivat siirtää varausta kennoille 1 12, mutta balansointipiirit 7 12 voivat siirtää varausta vain kennoille 1 6. Täten varauksen siirtämiseksi paikasta A paikkaan B tarvitsee aina tietyt balansointipiirit. Algoritmien lähdekoodi on saatavissa Wiki sivustolla kansiossa DC2100A_Software_and_Users_Guide_Aalto.zip.

Loppuraportti 16(20) 4 Ajankäyttö Taulukossa 1 on esitetty alkuperäinen aikataulu. Tämä muuttui jonkin verran, lähinnä kortin toimituksen myöhästymisestä johtuen. Alunperin ajattelimme saavamme demokortin viikolla 39, mutta todellisuudessa saimmekin sen vasta viikolla 43. Kortin viivästyksestä johtuen emme voineet ennen viikoa 43 tehdä juuri muuta kuin perehtyä korttiin ja sen ympärille rakennettavaan systeemiin manuaalien ja tutkimus artikkeleiden kautta. Viivästyksen takia myös oman kortin suunnittelusta ja toteuttamisesta luovuttiin. Lopulta saimme kuitenkin kaiken muun projektista tehtyä, mutta ajankäytöllisesti suurin osa itse työstä kasaantui viikon 43 jälkeiseen aikaan. Tämän lisäksi algoritmia ja kortin ohjelmistoa tehtiin vielä aivan projektin loppuun asti, jotta saisimme tehtyä mahdollisimman tarkan ja itsenäisen balanssointisysteemin. Tästä johtuen myös ohjelmiston testaus jäi melko vähäiselle huomiolle, mutta toisaalta testausta tehtiin koko ajan ohjelmiston kehityksen aikana, vaikka varsinaista lopputestausta ei oikeastaan tehty. Taulukko 1: Alkuperäinen aikataulu. Aloitusluento (9.9.) Aiheeseen tutustuminen x x Suunnitelma ja esitys (23.9.) x x Demokorttiin tutustuminen x x Algoritmeihin tutustuminen x x Algoritmin toteuttaminen x x 37 38 39 40 41 42 43 44 45 46 47 48 49 50 x Väliraportti ja esitys (21.10.) x x (Oman kortin suunnittelu) (Oman kortin toteutus) (x) (x) (x) (x) (x) (x) Integraatio x x x x x Testaus x x x x x Loppuraportti ja esitys (9.12.) x x

Loppuraportti 17(20) Taulukossa 2 on esitetty projektin ajankäyttö. Tämä on vain arvio todellisesta, sillä ajankäyttömme laskeminen projektin ainaka oli varsin heikkoa. Todellisuudessa käytimme projektiin todennäkösesti hieman enmmän aikaa kuin taulukossa on esitetty, mutta koska oma ajanlaskentamme oli heikkoa ohjeistuksesta huolimatta arvioimme ajankäyttömme mielummin hieman alakanttiin kuin yläkanttiin. Kuitenkin pyrimme siihen että molemmat käyttäisivät projekttin yhtä paljon aikaa ja mielestämme onnistuimme tässä varsin hyvin. Taulukko 2: Ajankäyttö Projektin osa Ajan käyttö Lauri (h) Ajan käyttö Joonas (h) Aiheeseen tutustuminen 20 20 Demokorttiin tutustuminen 20 20 Algoritmeihin tutustuminen 20 20 Testilaitteiston rakentaminen 10 10 Algoritmin implementointi 25 25 Systeemin integrointi 15 15 Systeemin testaus 5 5 Dokumentointi & luennot 25 25 Yhteensä 140 140

Loppuraportti 18(20) 5 Projektin jatko Valitettavasti Linear Technologyn tarjoama demokortti on projektin jälkeen luovutettava takaisin muille projekteille. Tämä johtuu siitä että käyttämämme demokortti on ainoa laatuaan Suomessa ja muutki projektit ovat pyytäneet sitä käyttöönsä Linear Technologyltä. Onneksi DC2100A C:n demo manuaalissa [6] on saatavilla kortin kaaviot ja osalistat, joten oman vastaavan kortin tekeminen tai tilaaminen on mahdollista. Kortin kaaviot ja osalistat on saatavilla projektin wiki sivuilta. Mikäli tarkoitus on käyttää muuta kuin PIC18 mikrokontrolleria, voidaan tähän liittyvät osat jättää kortista pois ja liittää valittu mikrokontrolleri SPI porttiin JP7:n C riviin, joka on korostettuna kuvassa 11. Kuvassa 11 on myös JP7 portin pinnien IO esitettynä. Pinni 1C vastaa kuvassa vasemman puoleista ja 6C oikean puolista pinniä. Mikäli valitaan integroida korttiin mikrokontrolleri voidaan joko ohittaa JP7 kokonaan ja kytkeä mikrokontrollerilta tuleva SPI väylä suoraan kortilla piireille menevään SPI väylään tai vastaavasti kytkeä JP7:n C ja B rivit yhteen. Linear Technologyn demokortissa tämä on toteutettu kuvassa 11 näkyvällä DC2100A ASSY piirillä, joka vain kytkee kuusi rinnakkain olevaa pinniä yhteen. Kuva 11: JP7 [7] Mikäli halutaan balanssointia suorittaa jollain muulla kuin PIC18 mikrokontrollerilla, on käytetty balanssointikoodi kirjoitettava uudelle kontrollerille sopivaksi. Yksi vaihtoehto on ajaa valitulla mikrokontrollerilla RTOS:ää, jolle voisi antaa nykyisen koodin tavoin taskit. Toinen vaihtoehto on luopua hieman reaaliaika vaatimuksesta ja hallita itse mikrokontrollerin koodissa taskien aikataulutus. Molemmat vaihtoehdot vaativat jonkin verran työtä, mutta niiden pitäisi olla ihan mahdollisia. Lisäksi balanssoinnin tarkkuuden parantamiseksi voisi systeemiin lisätä akuston virran mittauksen, jotta SOC:in laskeminen tarkentuisi. Virranmittauksen pitäisi antaa tieto virran suuruudesta mikrokontrollerille, joka voisi ylläpitää tarkempaa tietoa akkujen SOC:ista.

Loppuraportti 19(20) Tällä hetkellä systeemi on suunniteltu vain 12 akun balanssointiin, mutta Linear Technologylla on toinen balanssoinnin demokortti DC2100A D, jotka ovat muuten identtiset käyttämämme DC2100A C kortin kanssa, mutta joista puuttuu kontrolleri ja siihen liittyvät osat. Näitä DC2100A D kortteja on tarkoitus ohjata yhdellä DC2100A C kortilla. Linear Technologyn mukaan PIC18 kontrolleri pystyy ohjaamaan 10:ntä korttia (mukaan lukien kortti jossa kontrolleri on integroituna), joten yhdellä kontrollerilla pitäisi pystyä balanssoimaan 120 akun akustoa. Tällöin kuitenkin tarvitaan yhteensä 10 balanssointi korttia. DC2100A D kortit on tarkoitus yhdistää DC2100A C korttiin isospi väylän kautta, DC2100A C/D korttien isospi out on portissa J1 ja isospi in on portissa J18.

Loppuraportti 20(20) Viitteet Tutkimusartikkelit: [1] A Cost Optimized Battery Management System with Active Cell Balancing for Lithium Ion Battery Stacks. Carl Bonfiglio & Werner Rossler. Infineon Technologies AG. Saatavilla: http://ieeexplore.ieee.org.libproxy.aalto.fi/stamp/stamp.jsp?tp=&arnumber=5289837 [2] The application of flyback DC/DC converter in Li ion batteries active balancing. XueZhe, Wei, Xiaopeng.Zhao & Dai Haifeng. Tongji University. Saatavilla: http://ieeexplore.ieee.org.libproxy.aalto.fi/stamp/stamp.jsp?tp=&arnumber=5289663 Systeemikaaviot: [3]. Aktiivinen balansointijärjestelmä. Joonas Sainio & Lauri Sorsa. Aalto yliopisto.. Saatavilla: http://autsys.aalto.fi/intranet/as 0.3200/attach/A14 18/Project_architecture_v1.0.pdf Manuaalit: [4]. LTC3300 1 datasheet http://cds.linear.com/docs/en/datasheet/33001fb.pdf [5]. LTC6804 1 datasheet http://cds.linear.com/docs/en/datasheet/680412fb.pdf [6]. DC2100A demo manual http://cds.linear.com/docs/en/demo board manual/dc2100afb.pdf [7]. DC2100A Software and Users Guide. Saatavilla: http://www.linear.com/docs/45563