UNIVERZA V MARIBORU FAKULTETA ZA STROJNIŠTVO FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Miha GABRIJELČIČ RAZVOJ PERIFERNIH VMESNIKOV ZA

Podobni dokumenti
DES

Microsoft Word - CNC obdelava kazalo vsebine.doc

Slide 1

Delavnica Načrtovanje digitalnih vezij

Vostro 430 Informacijski tehnični list o namestitvi in funkcijah

innbox_f60_navodila.indd

Microsoft Word - NAVODILA ZA UPORABO.docx

Področje uporabe

Navodila za uporabo Mini prenosna HD kamera s snemalnikom

Navodila za uporabo Mini snemalnik

Microsoft Word - Navodila_NSB2_SLO.doc

Base NET.cdr

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

Microsoft Word - CNR-BTU3_Bluetooth_vmesnik

Analiza vpliva materiala, maziva in aktuatorja na dinamiko pnevmatičnega ventila

seminarska_naloga_za_ev

Delavnica Načrtovanje digitalnih vezij

DES11_realno

Krmiljenje elektromotorj ev

Microsoft PowerPoint - NDES_8_USB_LIN.ppt

Naloge 1. Dva električna grelnika z ohmskima upornostma 60 Ω in 30 Ω vežemo vzporedno in priključimo na idealni enosmerni tokovni vir s tokom 10 A. Tr

Protokoli v računalniškem komuniciranju TCP, IP, nivojski model, paket informacij.

Poročilo projekta : Učinkovita raba energije Primerjava klasične sončne elektrarne z sončno elektrarno ki sledi soncu. Cilj projekta: Cilj našega proj

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

CelotniPraktikum_2011_verZaTisk.pdf

Microsoft Word - avd_vaje_ars1_1.doc

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Laserliner tester napetosti AC tive Finder Kataloška št.: 12 3

Delavnica Načrtovanje digitalnih vezij

an-01-sl-Temperaturni_zapisovalnik_podatkov_Tempmate.-S1.docx

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Microsoft Word - Avditorne.docx

Univerza v Ljubljani

10. Meritev šumnega števila ojačevalnika Vsako radijsko zvezo načrtujemo za zahtevano razmerje signal/šum. Šum ima vsaj dva izvora: naravni šum T A, k

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

SLO - NAVODILO ZA UPORABO IN MONTAŽO Št

NAVODILA ZA UPORABO K01-WIFI Hvala, ker ste se odločili za nakup našega izdelka. Pred uporabo enote skrbno preberite ta Navodila za uporabo in jih shr

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

VHF1-VHF2

ISOFT , računalniški inženiring

UPS naprave Socomec Netys PL (Plug in) UPS naprava Socomec Netys PL moč: 600VA/360W; tehnologija: off-line delovanje; vhod: 1-fazni šuko 230VAC; izhod

Microsoft Word - ELEKTROTEHNIKA2_11. junij 2104

Microsoft Word - CNR-MPV2 Quick Guide_SI

AME 110 NL / AME 120 NL

Delavnica Načrtovanje digitalnih vezij

VARIMOT® in pribor

KOLESA Z ELEKTRIČNIM MOTORJEM Kolesarjenje je dobro za telo in dušo. Med kolesarjenjem imate bistveno boljši razgled, kot če se odpravite na pot z avt

NETGEAR R6100 WiFi Router Installation Guide

No Slide Title

Procesorski sistemi v telekomunikacijah

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Microsoft Word doc

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Tonski generator IDEAL Electrical PRO Kataloška št.:

BDV-N890W/BDV-N790W

Universal WiFi Range Extender WN3000RP Installation Guide

Equation Chapter 1 Section 24Trifazni sistemi

DKMPT

Poskusi s kondenzatorji

Logični modul LOGO!

ORA 1-3

Microsoft PowerPoint - ads

an-01-Stikalo_za_luc_za_na_stopnisce_Zamel_ASP-01.docx

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO Bluetooth slušalka Plantronics Explorer 10 Kataloška št.: 132

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Šolski center celje

5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD (

KRMILNA OMARICA KO-0

DCS-2330L_A1_QIG_v1.00(EU).indd

Člen 11(1): Frekvenčna območja Frekvenčna območja Časovna perioda obratovanja 47,0 Hz-47,5 Hz Najmanj 60 sekund 47,5 Hz-48,5 Hz Neomejeno 48,5 Hz-49,0

NETGEAR R6250 Smart WiFi Router Installation Guide

Diapozitiv 1

Modem in krajevno omrežje Uporabniški priročnik

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

DES

Uradni list RS - 12(71)/2005, Mednarodne pogodbe

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

an-01-USB_digitalni_zvocniki_Logitech_S-150.docx

Vedno pod nadzorom, kjerkoli že ste

an-01-Vodoodporna_prenosna_polnilna _postaja_Powerbank_Beltrona_Camouflage_5200_mAh.docx

Sistemi Daljinskega Vodenja Vaja 1 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubljani

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

Linksys PLEK500 User Guide

MJK je specializiran proizvajalec merilne in nadzorne opreme za vodovode in čistilne naprave. Z izkušnjami, ki jih jamči 35 letna tradicija in z osred

Microsoft Word - EV-2-projekt.doc

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

Microsoft Word doc

Kratka navodila za uporabo razširjevalnika dosega WiFi AC750 model EX3800

BeoLab 12 BeoLab 12 2 BeoLab 12 3

Diapozitiv 1

SLO NAVODILA ZA UPORABO IN MONTAŽO Kat. št.: NAVODILA ZA UPORABO DVB T, DVB C TV ključek PCTV Systems Quatro Kataloška št.: 67

Diapozitiv 1

Installation manual

Diapozitiv 1

Microsoft Word - Trust-CDsize-12052_12579_14070-al-cp_v5.0.doc

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Navodila za uporabo programske opreme OTRS verzija Administracijska navodila Avtor navodil: Sebastijan Šilec Datum: December 2007 Center odprte

ŠOLA: SŠTS Šiška

REŠITVE Inteligentna ventilska tehnologija na enem mestu SMART IN FLOW CONTROL.

Safety and Regulatory Information

Transkripcija:

UNIVERZA V MARIBORU FAKULTETA ZA STROJNIŠTVO FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Miha GABRIJELČIČ RAZVOJ PERIFERNIH VMESNIKOV ZA MOBILNEGA ROBOTA univerzitetnega študijskega programa 1. stopnje Mehatronika Maribor, september 2016

RAZVOJ PERIFERNIH VMESNIKOV ZA MOBILNEGA ROBOTA Študent: Študijski program: Miha GABRIJELČIČ Univerzitetni študijski program 1. stopnje Mehatronika Mentor FS: Mentor FERI: izr. prof. dr. Karl GOTLIH doc. dr. Darko HERCOG Maribor, september 2016

I Z J A V A Podpisani Miha GABRIJELČIČ, izjavljam, da: je diplomsko delo rezultat lastnega raziskovalnega dela, da je predloženo delo v celoti ali v delih ni bilo predloženo za pridobitev kakršnekoli izobrazbe po študijskem programu druge fakultete ali univerze, da so rezultati korektno navedeni, da nisem kršil-a avtorskih pravic in intelektualne lastnine drugih, da soglašam z javno dostopnostjo diplomskega dela v Knjižnici tehniških fakultet ter Digitalni knjižnici Univerze v Mariboru, v skladu z Izjavo o istovetnosti tiskane in elektronske verzije zaključnega dela. Maribor, Podpis: II

ZAHVALA Zahvaljujem se mentorjema doc. dr. Darku HERCOGU in izr. prof. dr. Karlu GOTLIHU za pomoč in vodenje pri opravljanju diplomskega dela. Zahvaljujem se tudi staršem, ki so mi omogočili študij ter me pri njem spodbujali ter prijateljem, kateri so popestrili dodiplomski študij. III

RAZVOJ PERIFERNIH VMESNIKOV ZA MOBILNEGA ROBOTA Ključne besede: AHRS UM7, brezkrtačni motor, BLDC motor, BMS, gonilnik, orientacijski senzor, UART, RS-232, sbrio-9651 UDK: 004.454:007.52(043.2) POVZETEK V diplomskem delu smo razvijali gonilnike za periferne enote mobilnega robota, kot so: AHRS (Attitude and Heading Reference System), BMS (Battery Management System) in krmilniki motorjev. V uvodnem delu diplomske naloge je na kratko predstavljen problem in opis izdelave. V nadaljevanju je vsako poglavje namenjeno splošnemu opisu uporabljenih komponent in njeni predstavitvi. Zraven teh pa je opisan razvoj posameznega gonilnika v programskem okolju LabVIEW in delovanje gonilnikov. V zaključku pa smo podali kratko razlago dela in vizijo za njegovo nadgradnjo. IV

DEVELOPMENT OF PERIPHERAL INTERFACES FOR MOBILE ROBOT Key words: AHRS UM7, brushless motor, BLDC motor, BMS, driver, orientation sensor, UART, RS-232, sbrio-9651 UDK: 004.454:007.52(043.2) ABSTRACT In this diploma thesis we were developing drivers for mobile robot peripherals such as: AHRS (Attitude and Heading Reference System), BMS (Battery Management System) and motor controllers. In the introduction part of the thesis an overview of diploma work is presented. Each of the following chapter contains a general description of used component (AHRS, BMS, brushless motors and drives). In addition, each chapter contains description of developed LabVIEW driver for selected, commercially available component. In conclusion we give a brief explanation of the work we ve done and the vision for its upgrade. V

KAZALO VSEBINE 1. UVOD... - 1-2. GLAVNI KRMILNIK... - 3-3. POGONSKI DEL... - 10-3.1. Brezkrtačni elektromotorji... - 10 - Splošno o brezkrtačnih elektromotorjih... - 10 - Izbrani brezkrtačni elektromotor... - 12-3.2. Krmilniki motorjev... - 14 - Uporabljen krmilnik... - 17-3.3. Vodenje motorjev... - 19-4. REFERENČNI SISTEM ZA LEGO IN SMER (AHRS)... - 24-4.1. Splošno o AHRS enotah... - 24-4.2. Opis uporabljene AHRS enote... - 25-4.3. Komunikacijski protokol... - 26 - Razvoj gonilnika... - 29-5. SISTEM ZA UPRAVLJANJE BATERIJE (BMS)... - 35-5.1. Splošno o BMS enotah... - 35-5.2. Opis uporabljene BMS enote... - 38-5.3. Komunikacijski protokol... - 38-6. ZAKLJUČEK... - 44 - VIRI - 45 - VI

KAZALO SLIK Slika 1.1: blok shema robotske mobilne platforme... - 1 - Slika 2.1: NI sbrio-9651 SOM (vir: [4])...- 3 - Slika 2.2: temperaturni senzorji na modulu sbrio-9651 (vir: [6], [7])...- 4 - Slika 2.3: vgradnja termočlena (vir: [8])...- 5 - Slika 2.4: sestava UART sporočila za ASCII znak W (vir: [9])...- 7 - Slika 2.5: Razvojna plošča za sbrio-9651 (vir: [10])...- 9 - Slika 3.1: shema brezkrtačnega DC elektromotorja (vir: [11])...- 11 - Slika 3.2: inrunner (levo) ter outrunner (desno) BL elektromotor (vir: [12])...- 12 - Slika 3.3: UU Motor HL10GS (vir: [13])...- 13 - Slika 3.4: karakteristika HL10GS motorja (vir: [13])...- 13 - Slika 3.5: shema implementiranega krmilnika elektromotorja v sistem (vir: [15])...- 14 - Slika 3.6: prikaz glavnih komponent za krmiljenje BLDC motorja (vir: [16])...- 15 - Slika 3.7: sekvence komutacije trifaznega motorja (vir: [16])...- 16 - Slika 3.8: potek signalov v tuljavah (vir: [17])...- 17 - Slika 3.9: Clarinet CLA-P10/100 z označenimi priključki (vir: [18])...- 19 - Slika 3.10: prva verzija delujočega programa...- 20 - Slika 3.11: del programa za onemogočitev motorja...- 21 - Slika 3.12: prikaz način izbiranja ukaza iz seznama...- 22 - Slika 3.13: delo kode za omejitev vrednosti spremenljivke in združitve vrednosti z ukazom- 23 - Slika 3.14: prikaz celotnega programa in čelne plošče...- 23 - Slika 4.1: AHRS UM7 (vir: [23])...- 24 - Slika 4.2: primer podatkov v šestnajstiški obliki...- 29 - Slika 4.3: podatkovna matrika (levo) in funkcijska globalna spremenljivka (desno)...- 30 - VII

Slika 4.4: podatkovna gruča s čelne plošče ter koda za razvrščanje podatkov...- 31 - Slika 4.5: prikaz z grafikoni...- 32 - Slika 4.6: konfiguracijska gruča...- 33 - Slika 4.7: del konfiguracijske kode...- 34 - Slika 4.8: izbira ukaza (levo) in del kode za generiranje ukaznega sporočila (desno)...- 34 - Slika 5.1: BMS implementiran v sistemu (vir: [25])...- 37 - Slika 5.2: tesna programska koda za enoto 9R...- 39 - Slika 5.3: koda za generiranje in vstavljanje CRC zlogov v podatkovni paket...- 40 - Slika 5.4: del programske kode namenjen pošiljanju ukazov na BMS enoto...- 41 - Slika 5.5: del programske kode za prikaz zahtevanega sporočila ter prikazovalnik...- 42 - Slika 5.6: del kalibracijske kode...- 43 - VIII

KAZALO PREGLEDNIC Tabela 2.1: prikaz odnosa med stanjem povezave in GBE0_ACT_LEDg signalom (vir: [8])...- 6 - Tabela 2.2: prikaz odnosa med hitrostjo povezave in GBE0_SPEED_LEDg ter GBE0_SPEED_LEDy signalom (vir: [8])...- 6 - Tabela 3.1: razlaga oznake izdelka...- 18 - Tabela 4.1: zgradba binarnega paketa podatkov...- 27 - Tabela 4.2: bit-i v PT zlogu...- 27 - Tabela 4.3: dolžina podatkovnih bajtov in celotnega paketa podatkov...- 28 - Tabela 5.1: oblika paketa podatkov glede na podatkovni list...- 39 - IX

UPORABLJENI SIMBOLI bps kb/s ali kbps KB Mb/s ali Mbps MB/s ali MBps MHz ppm baud per second kilobit per second KiloByte megabit per second megabyte per second megahertz parts per million X

UPORABLJENE KRATICE AHRS BEMF ali back EMF BLDC BMS CAN CPU referenčni sistem za lego in smer (Attitude and Heading Reference System) Back Electromotive Force Brushless Direct Current sistem za upravljanje baterije (Battery Management System) Controller Area Network Central Processing Unit DDR3 Double Data Type rate 3 DTR /DSR FPGA GB GND IEEE IGBT kb LED Mb MB MOSFET NI PWM RAM RTS/CTS sbrio Data Terminal Ready/Data Set Ready Feild-Programmable Gate Array gigabyte Ground Institute of Electrical and Electronics Engineers Insulated-Gate Bipolar Transistor kilobit Light Emitting Diode megabit megabyte Metal-Oxide-Semiconductor Field-Effect Transistor National Instruments Pulse-Width Modulation Random Access Memory Request To Send/Clear To Send single board Reconfigurable Input/Output XI

SD SDHC SDIO SLC SoC SOM UART USB XON/XOFF Secure Digital Secure Digital High Capacity Secure Digital Input Output Single-Level Cell System on a Chip System On Module Universal Asynchronous Reciver/Transmitter Universal Serial Bus TransmitterON/Transmitter OFF XII

1. UVOD V diplomskem delu smo razvijali gonilnike za periferne enote mobilnega robota, kot so: AHRS (Attitude and Heading Reference System), BMS in krmilniki motorjev. Mobilni roboti so mobilen in manipulativen fizični sestav, ki se avtonomno giblje skozi nestrukturiran prostor ob prisotni interakciji z ljudmi, lahko pa tudi avtonomno opravlja svoje naloge namesto njih [1]. Mobilni roboti se v današnjem času uporabljajo na različnih področjih, kjer opravljajo določene naloge (transport izdelkov, košnja trave, sesanje...). Vsa dodatna vezja, katera so potrebna za pravilno delovanje, napajanje in povezovanje med perifernimi enotami so bila izdelana v drugem diplomskem delu. Pri praktičnem predmetu Projekt 2 in Projekt 3 smo začeli z zasnovo in razvojem večnamenske robotske mobilne platforme (Slika 1.1). Kot glavni krmilnik je uporabljen razvojni sistem sbrio- 9651 podjetja National Instruments. Na njem se bodo izvajali algoritmi vodenja in algoritmi za upravljanje perifernih enot (AHRS, BMS, itd.). Gibanje mobilnega robota bo izvedeno s pomočjo brezkrtačnih (brushless) elektromotorjev, ki bodo krmiljeni z uporabo komercialno dobavljivih krmilnikov. Slika 1.1: blok shema robotske mobilne platforme AHRS enota je pomemben del vsake avtonomne robotske mobilne platforme. Iz nje pridobimo podatke o orientiranosti vozila v prostoru, ki so ključni pri izvedbi vodenja mobilne platforme. AHRS enota bo z glavnim krmilnikom povezana preko serijskega RS-232 vodila. Ker proizvajalec - 1 -

enote ne ponuja komunikacijskih vmesnikov za LabVIEW, so bili le-ti razviti v sklopu diplomskega dela. Mobilna platforma bo baterijsko napajana. Ker je baterija ena izmed dražjih komponent, bo za njeno daljšo življenjsko dobo skrbela BMS enota. Le-ta skrbi, da so vse celice baterije pod enako napetostjo, ter tako zaščiti celice baterije med polnjenjem pred previsoko napetostjo, hkrati pa omogoča tudi spremljanje porabe električne energije. Podobno kot AHRS enota, bo tudi BMS enota povezana z glavnim krmilnikom preko serijskega vodila. Tudi za to enoto ni na voljo komunikacijskih vmesnikov za LabVIEW, zato so le-ti bili razviti v sklopu diplomskega dela. V drugem poglavju je opisan glavni krmilnik, na katerega so priključene periferne enote. Le-ta bo skrbel za izvajanje vseh programov. V tretjem poglavju sta na kratko opisana krmilnik motorja ter motor, katera skrbita za premikanje platforme. V četrtem poglavju je opisana AHRS enota, katera skrbi za orientiranost platforme v samem prostoru. Kasneje bo povezana tudi z GPS enoto, katera bo skrbela za avtonomno vodenje platforme. Peto poglavje pa se navezuje na uporabo BMS enote, ki skrbi za pravilno delovanje baterije. V zaključnem delu pa je podana vizija za nadgradnjo že narejenega dela. - 2 -

2. GLAVNI KRMILNIK Za glavno krmilno enoto je uporabljen krmilnik sbrio-9651 proizvajalca National Instruments [2], skupaj z pripadajočo razvojno ploščo. Krmilnik je tipa SOM (System On Module) kar pomeni, da so vse njegove funkcije (procesor, pomnilnik, itd.) vgrajene v eno tiskano vezje na katerega se lahko priključimo preko J1 priključka s 320 pini. Vse vgrajene enote na tiskanem vezju morajo biti med seboj povezane zaradi hitrejšega delovanja samega sistema [3]. Prednost uporabe takšnega krmilnika je v nižji razvojni ceni aplikacije ter ponovna uporaba krmilnika v drugih aplikacijah. Slika 2.1: NI sbrio-9651 SOM (vir: [4]) Krmilnik vključuje prednaložen operacijski sistem NI Linux Real-Time, programirati pa ga je mogoče z uporabo razvojnega sistema LabVIEW ali programskega jezika C. Vhodni in izhodni priključki modula so rekonfigurabilni, zato jih lahko poljubno povežemo z zunanjimi perifernimi enotami. Pozorni moramo biti le na funkcije, ki jih dopuščajo posamezni priključki (analogni, digitalni (pini) ali druge funkcije priključkov), da ne poškodujemo krmilnika. Takšna tehnologija omogoča optimizacijo razvojnega vezja in prilagoditev strojne opreme za nadzor ter izdelavo same aplikacije [5]. - 3 -

Da krmilnik deluje znotraj varnega območja delovne temperature, skrbijo trije temperaturni senzorji, in sicer: CPU/FPGA senzor ter primarni in sekundarni sistemski senzor. Najpomembnejša je seveda temperatura znotraj polprevodnika (CPU/FPGA), katera ne sme preseči 98 C. Nekoliko manj pomembni, vendar vseeno ključnega pomena za delovanje krmilnika, pa sta temperatura v notranjosti modula (meri jo primarni sistemski senzor) ter lokalna temperatura okolice vezja (meri jo sekundarni sistemski senzor). Ti dve temperaturi ne smeta preseči 85 C. Krmilnik sbrio-9651 deluje tudi pri izjemno nizkih temperaturah. Najnižja lokalna temperatura okolice vezja za delovanja krmilnika je lahko kar -40 C. Navadno se pojavijo problemi s previsokimi temperaturami, zato se ne bomo obremenjevali z najnižjo delovno temperaturo. Slika 2.2: temperaturni senzorji na modulu sbrio-9651 (vir: [6], [7]) V primeru, da je vrednost CPU/FPGA senzorja ali primarnega sistemskega senzorja izven dovoljenega območja, smo na to obveščeni s signalom TEMP_ALERT. Ta signal ne zajema poročila o sekundarnem sistemskem senzorju, zato je priporočena namestitev termočlena, kot prikazuje naslednja slika. Številka 1 označuje mesto vgradnje. - 4 -

Slika 2.3: vgradnja termočlena (vir: [8]) Za komunikacijo med krmilnikom sbrio-9651 in drugo napravo lahko uporabimo naslednje asinhronske serijske komunikacijske protokole: - Gigabit Ethernet - UART (RS-232, RS-485) - USB (host, device) - CAN Ethernet povezava omogoča uporabo 10Base-T, 100Base-TX in 1000Base-T ethernetnih vmesnikov. Glede na izbran vmesnik je skladno s protokolom IEEE 802.3 določena tudi najvišja hitrost prenosa podatkov (10, 100 ali 1000 Mb/s) ter tip uporabljenega kabla. Naprava, ki je priključena na krmilnik lahko pošilja/prejema podatke z višjo/nižjo hitrostjo kot sam krmilnik. Ta problem odpravi samodejna izbira najvišje hitrosti pošiljanja/prejemanj podatkov, katera določi skupne ethernetne parametre obeh naprav in iz teh izbere najvišjo hitrost prenosa. Krmilnik sbrio-9651 ponuja dva ethernet priključka, in sicer: primarnega GBE0 in sekundarnega GBE1 (konfiguracija preko FPGA). Dodatno k ethernet povezavi pa krmilnik pošilja tudi digitalne signale za svetleče diode. Ti signali podajo informacije o povezanosti ter aktivnosti (Tabela 2.1) in hitrosti ( Tabela 2.2) ethernet povezave. Pomeni LED signalov so podani v naslednjih dveh tabelah. - 5 -

Tabela 2.1: prikaz odnosa med stanjem povezave in GBE0_ACT_LEDg signalom (vir: [8]) Stanje povezave Signal GBE0_ACT_LEDg Nepovezano Logična 0 Povezano, vendar brez aktivnosti Logična 1 Povezano in aktivno Preklapljanje med logičnima 0 in 1 Tabela 2.2: prikaz odnosa med hitrostjo povezave in GBE0_SPEED_LEDg ter GBE0_SPEED_LEDy signalom (vir: [8]) Hitrost povezave Signal GBE0_SPEED_LEDg Signal GBE0_SPEED_LEDy Nepovezano Logična 0 Logična 0 10Base-T Logična 0 Logična 0 100Base-TX Logična 1 Logična 0 1000Base-T Logična 0 Logična 1 Na razvojni plošči krmilnika je vgrajen SDIO vmesnik, kateri podpira SD in SDHC kartice preko standardnega priključka za SD ali mikro SD kartice. Podatke zapisane na kartici lahko krmilnik bere z največjo hitrostjo 12 MB/s, medtem ko jih lahko zapisuje z največjo hitrostjo 9 MB/s. Krmilnik podpira SDHC kartice do 32 GB. NI sbrio ima vgrajen tudi UART vmesnik (največja hitrost 230400 bps) in tako podpira serijsko komunikacijo RS-232. Sam UART (Slika 2.4) lahko nastavimo na poljubno število med 5 in 8 podatkovnih bitov, z 1. ali pa 2. stop bit-oma. Poljubno lahko nastavimo tudi paritetni bit na sodo ali liho število podatkovnih bitov. Ta bit pove napravi, kateri je bilo sporočilo poslano, da je med pošiljanjem sporočila prišlo do napake. Takšen podatek je neuporaben, zato pošiljatelj ponovno pošlje sporočilo. V kolikor pa paritetnega bita ne uporabljamo (okolja brez motenj), ga lahko nastavimo, da je njegova vrednost vedno logična 1 ali logična 0. Prenos podatkov lahko nadzorujemo z uporabo dodatnih RTS/CTS ali DTR/DSR signalov ali pa programsko preko - 6 -

XON/XOFF signalov. S temi nadzornimi signali je zagotovljeno, da poslani podatki niso izgubljeni zaradi nezmožnosti obdelave le-teh. Ko naslovljena naprava obdela vse prejete podatke, pošlje signal pošiljatelju, da je pripravljena sprejeti nove podatke. UART lahko nastavimo tudi v konzolni način. V tem primeru je največja dovoljena hitrost podatkov 115200 bps. Sporočilo sestoji iz enega zloga, brez paritetnega bita in z enim stop bitom. Kontrola pretoka podatkov je onemogočena. Slika 2.4: sestava UART sporočila za ASCII znak W (vir: [9]) Glavni krmilnik je možno povezati z drugimi napravami tudi preko dveh USB vmesnikov. En USB vmesnik (USB1) je vedno tipa USB (USB Host), medtem ko je drug vmesnik (USB0) lahko nastavimo kot USB gostitelj (USB Host), ali USB naprava (USB Device). To storimo s signalom USB0_MODE, katerega povežemo na GND linijo, če želimo z napravo priključeno na krmilnik komunicirati kot z USB gostiteljem, ali pa signal USB0_MODE povežemo na linijo VCC_3V3 in tako vmesnik USB konfiguriramo kot USB naprava (USB Device). USB vmesnik na sbrio-9651 je tipa USB 2.0 in lahko doseže hitrosti pošiljanja podatkov do 480 Mb/s. V kolikor želimo imeti na krmilnik povezanih več naprav in ponujene komunikacijske povezave ne zadostujejo, lahko konfiguriramo dodatne povezave preko FPGA čipa. sbrio-9651 omogoča, da tako dodamo: - eno ethernet povezavo (GBE1), - pet UART komunikacij (od tega tri RS-232 in dve RS-485), - dve CAN povezavi (hitrost prenosa od 10 kb/s do 1 Mb/s). - 7 -

Za dodatno ethernet povezavo je potrebno uporabiti točno določene nogice krmilnika, medtem ko lahko ostale povezave poljubno povežemo na FPGA. V krmilniku sbrio-9651 je je nameščen SoC Zynq-7020 proizvajalca Xilinx. Le-ta ima vgrajeno dvojederno centralno procesno enoto (CPU oz. CPE) ARM Cortex-A9, ki je zmožna obdelati podatke s frekvenco 667 MHz. Vgrajena je tudi ura realnega časa s točnostjo 5 ppm, 512 MB delavnega DDR3 pomnilnika in 512 MB trajnega SLC NAND Flash pomnilnika, katerega lahko prepišemo do milijon krat. SOM ima vgrajen tudi konfigurabilni FPGA čip. To je polje programabilnih logičnih blokov (vrat) in rekonfigurabilnih povezav med njimi, na enem samem integriranem vezju (v enem čipu). Z programiranjem FPGA čipa dosežemo enak učinek, kot če bi razvili svoj čip oz. logično vezje za točno določen namen. Na FPGA čipih se lahko logične operacije izvajajo paralelno in zaradi tega je delovanje celotnega sistema precej hitrejše, kot pri uporabi mikrokrmilnika. Zaradi velikega števila logičnih blokov imajo FPGA čipi tudi veliko število vhodov/izhodov. Torej, če želimo zmogljivejši FPGA, bo le-ta imel tudi večje število vhodno/izhodnih pinov. FPGA na SOM sbrio-9651 ima le digitalne vhodno/izhodne linije ter premore 85000 logičnih blokov, 106400 flip-flopov in 53200 vpoglednih tabel (LookUp Tables). FPGA premore tudi 560 KB RAM-a, 32 logičnih prekinitev in 16 DMA kanalov. Za priključitev perifernih vmesnikov smo uporabili kar razvojno ploščo proizvajalca National Instruments. Na njej so nameščeni priključki za komunikacijo, kot je to zapisano v vodiču za razvojno ploščo [6], napajalno vezje ter mnoge druge funkcije, ki jih ponuja sbrio-9651 SOM. Na razvojni plošči je celo prototipni prostor, kjer lahko sestavimo lastno vezje. - 8 -

Slika 2.5: Razvojna plošča za sbrio-9651 (vir: [10]) - 9 -

3. POGONSKI DEL 3.1. Brezkrtačni elektromotorji Splošno o brezkrtačnih elektromotorjih Brezkrtačni (brushless) elektromotorji ali krajše BLDC elektromotorji (brushless DC) so enosmerni električni motorji kateri uporabljajo krmilnik, namesto ščetk in drsnega obroča, za delovanje. Le-ta napaja statorski del (tuljave) in s tem poganja rotorski del, na katerem so pritrjeni permeabilni magneti. Njihova hitrost vrtenja ni odvisna od napajalne napetosti, temveč od hitrosti preklapljanja napajanja navitij v statorju. To funkcijo opravlja krmilnik, zato mora vedeti položaj rotorja (permeabilnih magnetov) glede na elektromagnete v statorskem navitju. Za določanje pozicije rotorja se uporablja hallov efekt, lahko pa se uporablja rotacijski kodirnik. Pozicijo rotorja je mogoče določiti tudi z merjenjem induktivnosti trenutno nenapajanih tuljav. S tem se izognemo uporabi dragih hallovih senzorjev, vendar pa se lahko zgodi, da se bo takšen motor od zagonu vrtel v nasprotno smer, saj v statičnem stanju motorja takšna meritev odpove. V tem primeru mora krmilnik ugotoviti, da se motor vrti v napačno smer in spremeniti smer vrtenja elektromotorja. Krmilnik tudi skrbi, da sta vedno dve navitji napajani z obratno polariteto tako, da en elektromagnet privlači pol trajnega magneta, medtem ko ta isti pol drugi elektromagnet odriva. S tem se motorju poveča navor in zato je razmerje med navorom in težo, brezkrtačnih elektromotorjev veliko boljše v primerjavi s krtačnimi motorji. Naslednja slika prikazuje (Slika 3.1) enostaven primer brezkrtačnega motorja s tremi statorskimi navitji, katera imajo skupno nevtralno točko ter enim trajnim magnetom. Če priključimo napajanje na navitje A in navitje B povežemo z maso, se bo tok preko navitja A prenesel na nevtralno točko in s te na navitje B ter nato na navitje B in maso. Tako dosežemo, da bo tuljava A privlačila južni pol magneta, medtem ko ga bo tuljava B Napaka! Zaznamek ni definiran.odrivala, saj bo ustvarjala južno magnetno polje. Na drugi strani trajnega magneta se dogaja enak pojav, le da tuljava A ustvarjala magnetno polje enako južnemu polu, tuljava B pa ustvarja magnetno polje enako - 10 -

severnemu polu magneta. Z nevtralno točko se tudi razpolovi število priključkov na krmilnik. Dodatno k shemi motorja pa lahko vidimo poteke tokov skozi tuljave, pri različnih legah permeabilnega magneta. Slika 3.1: shema brezkrtačnega DC elektromotorja (vir: [11]) V brezkrtačnih motorjih je trajni magnet vedno pritrjen na rotor, medtem ko so tuljave vedno del statorskega navitja. Navadno je statorski del motorja vezan na njegovo ohišje (inrunner), vendar pa je tudi rotor lahko ohišje elektromotorja in je stator v njegovi sredini (outrunner) (Slika 3.2Slika 3.1). Na ta način lahko motor doseže večji navor, saj je ročica s katero se poganja motor, večja. Primerni pa so tudi za visoke končne hitrosti, saj trajni magneti ostanejo na svojem mestu, ker jih centrifugalna sila tišči na ohišje rotorja. Navadno so manjših dimenzij ter so nekoliko bolj odprti, zato jih ni priporočeno uporabljati v umazanih okoljih. Elektromotorji kateri imajo statorski del pritrjen na ohišje pa so lahko v celoti zaprti in delujejo v umazanih okoljih. Njihovo hlajenje pa se izvaja kar s hlajenjem ohišja, saj je le-to dober toplotni prevodnik. Navadno niso primerni za zelo visoke hitrosti, saj se zaradi centrifugalne sile zmanjša zračna reža v notranjosti motorja kar lahko privede do trenja trajnih magnetov ob tuljave. - 11 -

Slika 3.2: inrunner (levo) ter outrunner (desno) BL elektromotor (vir: [12]) Statorska navitja so lahko povezana v trikotno vezavo (paralelno) ali pa v zvezda (serijsko) vezavo. Motorji s trikotno vezavo imajo manjši navor pri nizkih obratih, kakor motorji s serijsko vezavo tuljav, vendar dosegajo višje končne obrate. Elektromotorji s serijsko vezavo dosegajo večji navor pri manjših obratih in imajo nižjo končno hitrost kot motorji s paralelno vezavo tuljav. Zvezdna vezava pa ima še eno prednost in sicer večji izkoristek, saj so uporovne izgube v takšni vezavi manjše in parazitni tokovi ne morejo teči. Brezkrtačni elektromotorji so skoraj že popolnoma zamenjali navadne elektromotorje, saj je njihova učinkovitost (izkoristek) večja, zaradi manj gibljivih delov (ščetke) so tišji, njihova življenjska doba pa je daljša. Dosegajo veliko večje navore kakor enako veliki krtačni elektromotorji, njihova moč je omejena skoraj izključno le s temperaturo (Curie-va temperatura), njihova poraba pa je manjša. Slabost je seveda kompleksnost, saj potrebujejo krmilnik za delovanje, zaradi tega so tudi dražji in navadno niso tako robustni (razen mogoče inrunner-ji). Prav zaradi cene pa niso še povsem zamenjali krtačnih elektromotorjev. Izbrani brezkrtačni elektromotor Za naš projekt smo izbrali brezkrtačni motor HL10GS proizvajalca UU Motor. Sam motor je v pestu 25 cm kolesa, katerega poganja preko reduktorja, kar pomeni, da so končni obrati kolesa manjši od končnih obratov elektromotorja. Ampak za ceno hitrosti pridobimo na navoru, kar pomeni, da lahko šibkejši elektromotor v kombinaciji z reduktorjem parira z močnejšim elektromotorjem. - 12 -

Slika 3.3: UU Motor HL10GS (vir: [13]) Sam motor, skupaj s kolesom je precej lahek, saj tehta zgolj 4 kg. Motor lahko napajamo z enosmerno napetostjo od 24 do 48 V in proizvede od 180 do 250 W moči. Njegov izkoristek je nekaj čez 80 %, medtem ko je skupni izkoristek okoli 75 %. S tem zagotavlja, da ga lahko obremenimo z največjo težo 75 kg in se bo še vedno vrtel. Kot tudi ostali brezkrtačni elektromotorji je precej tih, kajti največ proizvede le 54 db hrupa. Na Slika 3.4 je prikazana karakteristika motorja, katero podaja proizvajalec. Slika 3.4: karakteristika HL10GS motorja (vir: [13]) - 13 -

3.2. Krmilniki motorjev Krmilnik elektromotorja skrbi za pravilno komutacijo v brezkrtačnem DC motorju, saj le-ta ne vsebuje ščetk in drsnega obroča. Krmilnik motorja je elektronsko vezje, katero se uporablja za določanje smeri in regulacijo hitrosti vrtenja elektromotorja, torej lahko z njim tudi zaviramo elektromotor [14]. Krmilna enota je nameščena med elektromotor, baterijo in glavni krmilnik, kot je to prikazano na Slika 3.5. Na levi strani krmilnika je priključeno napajanje iz baterije (rdeča ter črna žica). Na desni strani so priključena statorska navitja elektromotorja (rdeča, modra in črna žica). Na spodnji strani krmilnika (črna, oranžna in rjava žica) pa je priključen glavni krmilnik, kateri je odgovoren za spreminjanje hitrosti vrtenja elektromotorja. Slika 3.5: shema implementiranega krmilnika elektromotorja v sistem (vir: [15]) BLDC motorji so glede na sestavo precej enostavni, vendar pa potrebujemo dodelano električno vezje za njihov nadzor in regulirano napajanje. Glavne komponente električnega vezja oz. krmilnika motorja so: IGBT (ali MOSFET) gonilniki (driver), IGBT (ali MOSFET) mostič, mikrokrmilnik in vezje za zaznavo pozicije rotorja motorja s pomočjo halovih senzorjev (Slika 3.6). - 14 -

V kolikor BLDC motor uporablja hall senzorje, so le ti nameščeni na statorju motorja in podajajo relativno pozicijo rotorja glede na stator. Njihov izhodni signal je analogen ter pozitiven za en pol trajnega magneta, nameščenega na rotorju ter negativen za drugi pol trajnega magneta. Ti signali so posredovani krmilniku, ki jih obdela in na podlagi regulacijskega algoritma generira PWM signal za tranzistorje z izoliranimi vrati (IGBT ali MOSFET). Načeloma krmilnik ne potrebuje vsebovati IGBT gonilnikov vendar z njim dosežemo še dodatno izolacijo med glavnim krmilnikom in krmilnikom motorja ter lahko na IGBT dovedemo večjo napetost ter tok, kot ju le z PWM signalom iz glavnega krmilnika. Slika 3.6: prikaz glavnih komponent za krmiljenje BLDC motorja (vir: [16]) S PWM signalom določimo povprečno vrednost napetosti in toka, kar posledično določi željeno hitrost ter navor motorja. Z preklapljanjem med IGBT-ji, napajamo ustrezna navitja v motorju, kar povzroči vrtenje rotorja v želeni smeri. Slika 3.7 prikazuje sekvence napajanja tuljav v enem električnem obratu ter signale na hall senzorjih v primeru uporabe trifaznega motorja. Senzorja H1 in H2 določata kdaj in kako je napajana U tuljava. Ko senzor H2 zazna severni pol magneta, je tuljava U napajana pozitivno, vse dokler ga senzor H1 ne zazna tega istega severnega pola. Tedaj mikrokrmilnik izključi napajanje U tuljave in ostane izključena, vse dokler senzor H2 ne zazna južnega pola magneta. Takrat je tuljava U napajana negativno. Ko senzor H1 zaznal ta isti južni pol, mikrokrmilnik ponovno izključil napajanje tuljave. Enako velja za preostali tuljavi ter senzorja. - 15 -

Slika 3.7: sekvence komutacije trifaznega motorja (vir: [16]) Iz zgornje slike je razvidno, da so vse tuljave povezane v skupno točko, zaradi česar je potrebno v enem komutacijskem koraku napajati dve navitji hkrati vendar nasprotno, npr.: ko je tuljava U priključena na pozitivno napetost, je navitje V priključeno na GND, navitje W pa je nepriključeno. Ko pa je navitje U priključeno na GND ter navitje V na pozitivno napetost (navitje W je ponovno nepriključeno), električni tok steče v nasprotni smeri. S takšnim načinom napajanja dosežemo večji navor motorja. Ker je vedno eno navitje ne napajano in se na njem pojavi inducirana napetost (BEMF Back ElectoMotive Force), lahko odstranimo hall senzorje in jih nadomestimo z ustreznim elektronskim vezjem. To je dobra lastnost, saj hall senzorji povečajo ceno motorja in predstavljajo kritično mesto za okvare (priključki). Vendar brez hall senzorjev ne moremo določiti pozicijo rotorja, ko motor miruje. Zaradi tega se uporablja vnaprej določeno sekvenco komutacijskih korakov, s katerimi se motor spravi v pogon, katerega lahko nato brez težav nadziramo. Obstaja več načinov zajemanja in obdelave BEMF signalov, samo krmiljenje motorja pa je celo bolj natančno, kakor ob uporabi hall senzorjev. To je razvidno s Slika 3.8, kjer so s črtkanimi črtami označene napetosti v tuljavah, s pikčasto črto pa je označen tok skozi - 16 -

tuljave, ko motor krmilimo z BEMF signalom. Zaradi faznega zamika 30 med tema dvema signaloma, je potrebno ustaviti zamike, za pravilno delovanje motorja. Slika 3.8: potek signalov v tuljavah (vir: [17]) V BEMF signale, njihovo zajemanje in obdelavo za namene vodenja se ne bomo poglabljali, saj motor HL10GS uporablja za določanje pozicije hall senzorje. Na podlagi tega podatka bodo tudi izbrani krmilniki za motorje. Uporabljen krmilnik Ker nas je čas nekoliko priganjal smo za krmilnik motorja izbrali kar CLA-P10/100 [18] proizvajalca Elmo Motion Control [19]. Clarinet je oznaka serije servo ojačevalnikov za krtačne - 17 -

in brezkrtačne elektromotorje. Razvit je bil za dovršen industrijski trg z visoko zmogljivimi avtomatiziranimi stroji in zato krmilnik omogoča: digitalno kontrolo pomika, omrežno povezavo za krmiljenje od daleč in regulacijsko zanko za hitrost, tok ter pozicijo motorja (rotorja). CLA-P10/100 Oznaka izdelka CLA P Clarinet Različica (verzija) plus 10 Tok [A] 100 Največja vrednost DC napetosti (VDC) Tabela 3.1: razlaga oznake izdelka Vse nastavitve je možno določiti preko komunikacijskih linij z uporabo računalnika. Poleg tega pa Elmov Clarinet ponuja tudi: - dva analogna vhoda z 12-bitno ločljivostjo, - notranji DC/DC pretvornik za en napetostni vir napajanja, - izredno dobro linearnost, - statusni indikator z dvobarvno LED, - samodejno nastavitev offset zank hitrosti, toka in analognega signala, - vmesnik RS-485 - Vmesnik za priključitev resolverja. Da je zagotovljena varnost delovanja ter preostalih elektro komponent, ki bodo vključene v končni sistem za delovanje samega izdelka, pa je krmilnik zavarovan pred kratkimi stiki med vhodnimi in izhodnimi linijami motorja, kot tudi med samimi močnostnimi izhodi motorja. Prav tako je zagotovljena varnost pred napakami notranjega napajalnika, katere lahko povzročijo previsoko ali pa prenizko napetost. Zagotovljena je tudi zaščita pred izgubo komutacijskih signalov, preveliko hitrostjo ter pojavljanje napak ob le-tej in programskim ponovnim - 18 -

zagonom. Omejena je tudi temperatura v hladilniku krmilnika, katera ne sme presegati 80 C. V kolikor je krmilnik izpostavljen temperaturam okolice nad 40 C, je potrebno namestiti dodatno hlajenje. Slika 3.9: Clarinet CLA-P10/100 z označenimi priključki (vir: [18]) V končnem izdelku projekta bodo uporabljeni drugi krmilniki za motorje, vendar si bomo z razvojem gonilnikov za krmiljenje motorjev preko Elmovega krmilnika precej olajšali delo. Ko bodo krmilniki izbrani, jih bomo pravilno povezali z motorji, nato pa nekoliko spremenili samo kodo gonilnikov, kar bi moralo delovati. 3.3. Vodenje motorjev Poleg samega krmilnika je tudi programska oprema, s katero smo najprej nastavili parametre za UU motor. Le tako smo lahko zagotovili krmiljenje UU motorja preko Clarinet krmilnika, poleg tega, pa smo na ta način izvedeli, katere ukaze program posreduje krmilniku za vodenje motorja. Za pravilno nastavitev ukazov smo si pomagali s seznamom nabora ukazov [20]. Najprej smo v programskem okolju Elmo Composer [21], [22] določili kateri motor uporabljamo. Ker ga ni bilo na ponujenem seznamu motorjev, smo ustvarili nov profil s podatki, kot so: - tip motorja (krtačni, brezkrtačni, linijski, ), - 19 -

- maksimalni in trajni tok motorja - največja hitrost motorja (RPM ali pa m/s), - senzor položaja rotorja (hall ali inkremetalni dajalnik) - hitrost zajemanja podatkov o poziciji rotorja, Ko je bil tip motorja določen smo pognali test za zagon motorja. Tako smo določili, katera smer vrtenja bo pozitivna in katera negativna. Sedaj smo lahko hitrost in smer vrtenja motorja spreminjali kot smo sami želeli, zato smo začeli z programiranjem v LabVIEW-ju. Najprej smo napisali del programa, kateri je odgovoren za pošiljanje ukazov na krmilnik (Slika 3.10) in ga testirali. Sam program deluje tako, da najprej odpremo VISA povezavo ter nastavimo hitrost prenosa podatkov (baud rate) Za tem se prične izvajanje programske strukture, katera se zaustavi, v kolikor se pojavi napaka, ali pa ob pritisku gumba STOP, na čelni plošči. Znotraj te strukture se generira sporočilo, katero bo poslano na krmilnik, v kolikor napaka ni prisotna. Pred pošiljanje sporočila se izvede še izbris serijskega FIFO medpomnilnika. V kolikor bo ukaz uspešno poslan na krmilnik, bo ta odgovoril s poslanim ukazom ter znakom ' ; '. Ker nas zanima uspešnost pošiljanja ukaza, bomo to sporočilo prebrali z vodila. Vendar moramo med pošiljanje in branjem sporočila počakati 250 ms. Po branju sporočila se izvede primerjanje med poslanim in prejetim podatkom. V kolikor sta enaka, se izvajanje programske strukture nadaljuje. Če pa sta različna, se izvajanje programa pa se zaustavi. Slika 3.10: prva verzija delujočega programa Ob zagonu programa je potrebno zagotoviti pravilno zaporedje ukazov, drugače motorja ni mogoče krmiliti. Motor omogočimo/onemogočimo z uporabo ukaza MO. MO=0 pomeni, da - 20 -

bo motor onemogočen, v tem stanju pa je krmilniku možno sreminjati parametre (parametre različnih regulatorjev, režima delovanja, zapisovanje na flash pomnilnik, itd.), Slika 3.11: del programa za onemogočitev motorja Ker pa krmilnik ponuja več regulacijskih zank (hitrostna, položajna, tokovna), je bilo potrebno nastaviti režim, v katerem naj deluje. Iz nabora ukazov [20] smo razbrali, da se za nadzor hitrosti motorja uporablja režim 2. Pustili smo odprto možnost za nastavitev preostalih režimov, v kolikor bi uporabnik to želel, vendar je bil naš cilj zgolj nastavljanje hitrosti vrtenja rotorja, zato smo ta režim tudi nastavili kot privzet. Nato je bilo potrebno omogočiti motor, kajti drugače ga ne moremo krmiliti. Za ta korak smo uporabili kar del kode, katero smo že napisali. Spremenili smo le en parameter in tako zagotovili nastavitve krmiljenja motorja. Ker pa je celotna koda sedaj bila zelo nepregledna, smo vse ukaze shranili v podprograme. Tako smo lahko brez problemov večkrat uporabili dele kode v glavnem programu, sama nastavitev ukazov pa je bila precej enostavna, saj smo željen ukaz le izbrali iz seznama, ter ga nastavili kot privzeti ukaz v podprogramu (Slika 3.12). - 21 -

Slika 3.12: prikaz način izbiranja ukaza iz seznama Šele sedaj glavni program preide v programsko strukturo, znotraj katere nastavimo željeno hitrost vrtenja motorja. Vrednost, ki določa hitrost vrtenja smo omejili tako navzdol kot navzgor, da ne bi prišlo do okvare motorja. To smo zelo enostavno dosegli (Slika 3.13) tako, da v kolikor je izbrana vrednost izven dovoljenega območja, jo program prepiše z najvišjo oz. najnižjo dovoljeno vrednostjo. Ta se nato pretvori v znakovni niz in se združi z ukazom za nastavitev hitrosti. Celoten znakovni niz je nato poslan na krmilnik. - 22 -

Slika 3.13: delo kode za omejitev vrednosti spremenljivke in združitve vrednosti z ukazom Vendar se motor ne zavrti, če po poslani nastavljeni vrednosti vrtenja motorja, ne pošljemo še ukaza za pogon motorja. Ta poskrbi za posodobitev vrednosti hitrosti in motor se nato začne vrteti v nastavljeni smeri z željeno hitrostjo. Program lahko sam izstopi iz programske strukture ter se zaustavi, v primeru, da je prišlo do napake. Če pa želimo, da se izvajanje programa prekine, pritisnemo na stop gumb, kateri je na čelni plošči. Po izstopu iz programske strukture je potrebno zagotoviti varnost naprave in uporabnika. V ta namen je dodan del kode, kateri poskrbi, da se vrtenje motorja ustavi. To smo dosegli z že napisanim delom kode, katera spreminja hitrost vrtenja motorja. Na koncu pošljemo še ukaz za posodobitev vrednosti hitrosti in ukaz za onemogočitev motorja. Slika 3.14: prikaz celotnega programa in čelne plošče - 23 -

4. REFERENČNI SISTEM ZA LEGO IN SMER (AHRS) 4.1. Splošno o AHRS enotah Referenčni sistem za lego in smer ali krajše AHRS (Attitude Heading and Reference System) je 3-osni senzorski sistem, ki zagotovi podatke o legi in smeri gibanja platforme na kateri je pritrjen, v realnem času. Sprva so bili ustvarjeni, da zamenjajo tradicionalne mehanske žiroskope v letalski industriji in zagotovijo večjo zanesljivost in točnost meritev. Takšen senzorski sistem sestoji iz: 3-osnih žiroskopov z optičnimi vlakni (FOG fiber optic gyroscope) ali mikroelektromehanski sistem (MEMS microelectromechanical systems) žiroskopov, 3- osnih MEMS pospeškometrov ter 3-osnih magnetometrov in vgrajenega procesorja. Prav ta procesor je glavna razlika med inercialno merilno enoto (IMU inertial measurement unit) in AHRS. Izhod iz IMU moramo priključiti na dodatno napravo, katera preračuna informacije o legi in smeri platforme, medtem ko na izhodu AHRS že dobimo te informacije. Za meritev lege in ocenitev smeri v 3D prostoru se uporabljajo različni algoritmi. Nekateri AHRS uporabljajo Kalmanov filter, kateri z meritvami pospeškov in magnetnega polja oceni časovno spremenljivo odstopanje žiroskopa v realnem času. Obstajajo pa tudi drugi algoritmi (filtri) za ocenitev orientacije v realnem času, kateri lahko celo prekašajo senzorski sistem s tradicionalni Kalmanovim filtrom saj omogočajo optimiziranje spremenljivih magnetnih ali dinamično delujočih okolij v realnem času. Slika 4.1: AHRS UM7 (vir: [23]) - 24 -

Magnetometri se uporabljajo za merjenje moči in smeri magnetnega polja točke v prostoru, kjer se enota trenutno nahaja. Sprva so se za merjenje magnetnega polja uporabljali FG (fluxgate) magnetometri, kateri so zagotovili dobro natančnost in zanesljivost, vendar jih je nadomestila magnetno-induktivna tehnologija zaznavanja (magneto-inductive [MI] sensing technology). MI tehnologija je dimenzijsko manjša, ima manjše zahteve po energiji, kompatibilna je z AHRS-ji na MEMS osnovi in ima zelo visoko ločljivost višjo kot anizotropni magnetno uporni senzorji (anisotropic magneto resistive [AMR] sensors). Pospeškometri se uporabljajo za merjenje statičnih (gravitacijskih) ali pa dinamičnih (gibalnih ali vibracijskih) sil pospeškov oz. stopnjo po kateri se hitrost objekta spreminja. Zagotovili naj bi določeno dolgoročno stabilnost, nizke vibracijske napake in visoko zanesljivost meritev. V AHRS-ju se uporabljajo tudi za odpravljanje pristranskosti lezenja žiroskopov, čemur se ne moremo izogniti. Žiroskopi morajo biti zelo točni, saj imajo njihove meritve velik vpliv na samo delovanje naprave. Zelo dober primer takšnih žiroskopov so FOG, kateri zagotavljajo zelo točne informacije o stopnji zasuka. Ker pa je MEMS tehnologija izdelovanja žiroskopov zelo napredovala, se uporabljajo ravno slednji, saj so manjši in imajo manjšo porabo. AHRS enota se uporablja v različnih aplikacijah, kot so: nadzor in stabilnost, merjenje in korekcije ter navigacija. Za primer aplikacij, kjer se zahtevajo nadzor in stabilnost ali pa merjenje in korekcija, bi lahko podali kamero, katera je pritrjena na letalo. Ker potrebujemo ostro sliko, je potrebno stabilizirati kamero, kar dosežemo z AHRS-jem. V aplikacijah, kjer je potrebna navigacija, pa AHRS poda orientacijo in smer gibanja. 4.2. Opis uporabljene AHRS enote Odločili smo se uporabiti AHRS proizvajalca CH Robotics in sicer orientacijsko enoto UM7, katera je tretja generacija AHRS-jev, ki uporabljajo MEMS tehnologijo. S to tehnologijo - 25 -

dosežemo boljše delovanje in cenejšo izdelavo, zato je nabavna cena takšne enote nižja. Za ocenitev lege in smeri, se uporabijo meritve triosnih pospeškometrov, žiroskopov in magnetometrov ter razširjen Kalmanov filter. UM7 senzor ponuja visoko stabilnost odstopanja žiroskopov neodvisno od temperature, majhne vplive šumov na meritve, fleksibilnost komunikacije (lahko uporabljamo binarne pakete ali NMEA pakete ali pa oboje), usklajenost univerzalnega koordinatnega časa (UTC coordinated universal time), položaja ter hitrosti z zunanjo GPS (globalni sistem pozicioniranja) enoto in podpira temperaturno kompenzacijo tretjega reda na vseh senzorjih. Ker omogoča spreminjanje nastavitev nizko-pasovnega in razširjenega Kalmanovega filtra ter kalibracijo mehkega in trdega železa magnetometra, je primeren za različne aplikacije. 4.3. Komunikacijski protokol Orientacijski senzor UM7 preko serijske komunikacije pošilja podatke v paketih binarne strukture ali pa NMEA (National Marine Electronics Association) pakete, konfiguriramo pa ga lahko le z binarnimi paketi podatkov. Podatke v binarni obliki lahko prejemamo s hitrostjo do 255 Hz, medtem ko NMEA podatke le do hitrosti 100 Hz. Razlika v hitrosti prejemanja podatkov nastane zaradi pretvorbe binarnih podatkov v NMEA, kateri so lažje berljivi ljudem vendar ne strojni opremi. Odločili smo se za uporabo binarne strukture, katera omogoča enostavno posredovanje podatkov za nadaljnjo uporabo, na glavni krmilnik, sam sistem pa bo odzivnejši. Iz specifikacij [24] je razvidno, da poslani in prejeti binarni paketi podatkov AHRS enote sestojijo iz: 1. treh bajtov (znakov) 's','n','p', ki označujejo začetek novega paketa podatkov (start new packet) 2. enega zloga paketnega tipa (PT Packet Type), za opis funkcije in dolžine paketa 3. naslovnega byte-a, ki navaja naslov registra ali ukaza 4. sekvence podatkovnih zlogov, katere dolžina je določena v PT bajtu - 26 -

5. dva bajta kontrolne vsote (checksum) za zaznavanje napak Tabela 4.1: zgradba binarnega paketa podatkov 's' 'p' 'n' Tip paketa (PT) Naslov Podatkovni zlogi (D0...DN-1) Kontrolni zlog vsota 1 Kontrolni zlog vsota 0 PT byte določa operacijo paketa podatkov, katera je lahko zapisovanje na AHRS enoto ali branje z nje. Prav tako določa ali je operacija serija večjega števila operacij in v tem primeru tudi poda njeno dolžino. UM7 uporablja zloge paketnega tipa tudi, da se odzove na ukaze. Tabela 4.2: bit-i v PT zlogu Št. bita 7 6 5 4 3 2 1 0 Pomen Paket vsebuje podatke Je serija BL3 BL2 BL1 BL0 Skrit CF Seveda pa je potrebno vedeti pomene posameznih bit-ov, predno začnemo pošiljati podatke enoti UM7. Pomeni posameznih bit-ov v PT zlogu so: - bit 7: če paket vsebuje podatke, je potrebno ta bit postaviti na vrednost 1, če jih ne vsebuje se ta bit briše (vrednost 0), - bit 6: v kolikor je paket podatkov serija operacij postavimo ta bit na vrednost 1, v nasprotnem primeru se bit briše (vrednost 0), - biti 5-2: povejo dolžino serije operacij (Batch Length BL). Največja dolžina serije je 2 4 =16. V kolikor je bit 7 ali bit 6 postavljen na vrednost 0, se ti bit-i ne uporabljajo (vrednost 0), - bit 1: mora biti vedno postavljen na vrednost 0. V kolikor ga nastavimo na vrednost 1 je naslov paketa določen z naslovnim bajtom skriti naslov, kar omogoči - 27 -

spreminjanje tovarniških nastavitev in nastavitev koeficientov filtrov. Običajno tej registri ne rabijo biti vidni ali spremenjeni s strani uporabnika, - bit 0: CF (Command Failed) je uporabljen s strani avtopilota in sporoča neuspeh posredovanja ukaza. Vedno ga moramo postaviti na vrednost 0, ko pošiljamo podatke enoti UM7. Naslovni byte določa iz katerega register se podatki berejo (v bajtu PT je bit 7 = 0) oz. v kateri register se zapišejo (v zlogu PT je bit 7 = 1). V kolikor se izvede serija operacij, je v naslovnem bitu podan naslov prvega registra (najnižji naslov), ki je vključen v operacijo. Podatki paketa sestojijo iz večjega števila podatkovnih bajtov in vsebujejo en ali več podatkov, kateri bo/bodo zapisan/i v en ali več registrov. Število podatkovnih zlogov določimo v PT bajtu s 6. bit-om in z BLx bit-i. V kolikor je 7. bit PT byte-a postavljen na vrednost 0, potem paket podatkov ne vsebuje in takoj za naslovnim bajtom sledita byte-a kontrolnih vsot. Dolžina podatkov v neserijski operaciji je vedno 4 zloge oz. en register, v seriji pa je lahko od 8 do 64 zlogov oz. od 2 do 16 registrov. Dolžina serije se ne nanaša na število podatkovnih zlogov, temveč na število registrov, ki so uporabljeni v operaciji. Dolžine podatkovnih bajtov in dolžine celotnih paketov podatkov pri različnih nastavitvah PT zloga so prikazane spodaj: Tabela 4.3: dolžina podatkovnih bajtov in celotnega paketa podatkov PT, bit 7 PT, bit 6 Dolžina podatkov [byte] Dolžina paketa [byte] 0 / 0 7 1 0 4 11 1 1 4*(Dolžina serije) 7+4*(Dolžina serije) - 28 -

Vsaki kontrolni vsoti je namenjenih 16 bitov oz. 2 nepredznačena zloga. Kontrolna vsota sestoji iz vseh predhodnih bajtov v paketu, vključno z začetkom paketa ('s','n','p'). Torej Kontrolna vsota 0 sestoji tudi iz Kontrolne vsote 1. Razvoj gonilnika Na podlagi predhodno napisanih specifikacij, je profesor Darko Hercog napisal programsko kodo, v programskem okolju LabVIEW, za shranjevanje prejetih paketov podatkov v beležnico (Slika 4.2). Ko so bili ti shranjeni, smo jih pregledali, da bi ugotovili, koliko različnih paketov podatkov enota avtomatsko pošilja. To smo ugotovili s štetjem različnih naslovnih registrov iz katerih so bili podatki prebrani. Na spodnji sliki lahko vidimo podčrtane prve tri byte novega paketa. V kvadratkih pa so naslovni bajti, ki povedo iz katerih registrov so prebrani podatki. Slika 4.2: primer podatkov v šestnajstiški obliki - 29 -

Ker pa so takšni podatki za nas nepregledni in neuporabni, smo začeli s pisanjem programske kode, katera omogoča enostavnejše branje. Najprej smo ustvarili podatkovno matriko (Slika 4.3), s katero ločimo novo prejete podatke in tako povečamo preglednost nad njimi. Za tem jih je bilo potrebno shraniti v funkcijske globalne spremenljivke, saj bodo le tako uporabni (Slika 4.3). V kolikor tega ne storimo, na čelni plošči ne bodo prikazani podatki iz paketa podatkov, saj bi se prebral le začetek paketa in nadaljnji podatki bi bili izgubljeni. Zraven tega, pa bi ob vsakem prenehanju branja podatkov na vodilu prejeli le del podatkovnega paketa. Če pa jih shranimo v funkcijske globalne spremenljivke, lahko iz le-teh razberemo vse potrebne podatke. Slika 4.3: podatkovna matrika (levo) in funkcijska globalna spremenljivka (desno) Ko je podatkovni paket iz AHRS enote shranjen v podatkovno matriko, ga vnesemo v podatkovno gručo (Slika 4.4), kjer razberemo bite iz byte-a podatkovnega tipa in naslov registra iz katerega beremo podatke. Glede na naslovni byte sledi se izvede programska vejitev v programski strukturi Case. V vsaki veji se izvede razčlenitev podatkov in vnos le-teh v gručo - 30 -

podatkov, ki se nahaja na čelni plošči programa. Ko so enkrat podatki razčlenjeni, so uporabni za nadaljnjo uporabo, saj iz njih že imamo podatke o smeri in orientaciji v prostoru ter o hitrosti premikanja telesa, na katerem je AHRS enota pritrjena. Slika 4.4: podatkovna gruča s čelne plošče ter koda za razvrščanje podatkov Zaradi hitrega osveževanja podatkov je težko razbrati vrednosti žiroskopa, pospeškometra, magnetometra in kotov zasuka, zato so ti podatki prikazani tudi na grafikonih. Na ta način veliko lažje sledimo vrednostim spreminjajočih se podatkov (Slika 4.5). - 31 -

Slika 4.5: prikaz z grafikoni AHRS enota se bo uporabljala v realnih aplikacijah, zato je potrebno omogočiti tudi njeno konfiguracijo s strani uporabnika. Uporabnik v izbirnem meniju izbere kateri register želi konfigurirati, s čimer se samodejno generira njegov naslov. Za tem v ustreznem predvidenem polju spremeni parametre. V primeru, da naslavlja registre na naslovih od 9 do 26, pa je potrebno označiti, katere vrednosti želi poslati. To enostavno stori tako, da odkljuka polja v gruči Data to Send (Slika 4.6). - 32 -

Slika 4.6: konfiguracijska gruča Ko so vsi parametri nastavljeni, uporabnik na čelni plošči pritisne na gumb Send Configuration in nastavljeni podatki se oblikujejo v sporočilo, ki je nato poslano orientacijskemu senzorju UM7. Glede na naslov, katerega določa konfiguracija, se ustavljeni podatki v programski strukturi najprej oblikujejo v podatkovne byte, potem pa se oblikuje še PT byte. Vsi ti podatki so nato znotraj bloka CONFIG (Slika 4.7) združeni v gručo podatkov. Nato se v podatkovni strukturi, ki preverja ali se bo izvedla konfiguracija, izvede oblikovanje celotnega sporočila. Preden se celotno sporočilo pošlje na orientacijski senzor UM7, mu dodamo kontrolni vsoti, za potrjevanje pristnosti poslanih podatkov. - 33 -

Slika 4.7: del konfiguracijske kode Uporabnik pa lahko uporabi tudi ukaze, ki jih je proizvajalec vprogramiral. Iz menija Select Command (Slika 4.8) izberemo ukaz, ki ga želimo izvesti in na čelni plošči pritisnemo na gumb Send Command. Glede na izbrani ukaz se samodejno generira naslov registra v katerem je shranjen ukaz. Nato se v programski strukturi generira PT byte ter izoblikuje sporočilo, katero se pošlje AHRS enoti. Slika 4.8: izbira ukaza (levo) in del kode za generiranje ukaznega sporočila (desno) - 34 -

5. SISTEM ZA UPRAVLJANJE BATERIJE (BMS) 5.1. Splošno o BMS enotah Sistem za upravljanje baterije (Battery Management Syste BMS) je obvezen sestavni del vseh naprav, ki uporabljajo baterije za ponovno polnjenje (el. avtomobili, prenosni računalniki, mobilni telefoni ). Naloge BMS-a so merjenje, izračun in poročanje podatkov ključnega pomena za pravilno in varno delovanje baterije. Torej bi lahko iz predhodno napisanega sklepali, da sta glavni nalogi BMS-a zaščita baterije oz. vezja in upravljanje z energijo. S polnjenjem lahko baterijo prenapolnimo, kar privede do njenega pregretja ter v nekaterih (redkih) primerih celo do eksplozije. Ker pa je baterija sestavljena iz baterijskih celic, BMS ne meri le skupne napetosti, temveč meri napetost na posameznih celicah. V kolikor napetost posamezne celice preseže določeno vrednost, BMS izvede izravnavo napetosti na baterijskih celicah s protokolom, katerega je predpisal proizvajalec enote. Ta se lahko izvede: - pasivno s porabo energije (celice z višjim nivojem napetosti se povežejo z bremenom in odvečna energija se pretvori v toploto), - aktivno s prenosom energije iz celic z višjim potencialom na celice z nižjim potencialom, - z zmanjšanjem toka polnjenja (počasnejše polnjenje, zaščita že napolnjenih celic), - z modularnim polnjenjem. Z izravnavo napetosti celic zagotavlja delovanje baterije v varnem delovnem območju, kar podaljšuje njeno življenjsko dobo. V kolikor ne bi bilo vzpostavljeno ravnovesje med celicami, bi prišlo do predčasne prekinitve polnjenja, kar povzroča krajšo življenjsko dobo. Napetost baterije pa ni omejena le navzgor, temveč tudi navzdol, saj bi prenizka napetost baterije povzročila trajno poškodovanje le-te. Zato se tudi pri praznjenju izvaja izravnava napetostnih nivojev posameznih celic. Ko BMS zazna, da je napetost na bateriji prenizka, - 35 -

izključi tok energije k porabniku, če pa je dosežena maksimalna napetost baterije, izključi njeno napajanje. Potrebno je tudi merjenje toka. Še posebno so pomembni tokovi v baterijo ter iz nje, saj se s temi meritvami določi stanje napolnjenosti baterije (SOC state of charge) oz. stanje izpraznjenosti baterije (DOD depth of discharge). Podatek SOC je vedno podan v procentih, kjer 100% pomeni popolnoma napolnjeno baterijo. Stanje napolnjenosti baterije se uporablja za določanje časa uporabe baterije z enim polnjenjem. Podatek DOD pa je inverzen od SOC in je lahko podaj procentualno ali pa z enoto Ah, kjer 0 Ah pomeni popolnoma polno baterijo. Stanje izpraznjenosti baterije se uporablja za življenjsko dobo baterije po večkratni uporabi le te. Tok v baterijo oz. iz baterije, pa ni le pomemben za izračun SOC in DOD. Potrebno ga je omejiti, ker bi prevelik tok povzročal krajšanje življenjske dobe baterije in njeno zmogljivost. Seveda se maksimalni tok polnjenja in maksimalni tok praznjenja baterije razlikujeta. Manjši tok pomeni daljšo življenjsko dobo, vendar manjši tok polnjenja pomeni, da bo za polnjenje baterije potrebno več časa, kakor če bi isto baterijo polnili z večjim tokom. Manjši tok praznjenja pa pomeni manjšo zmogljivost delovanja napajanega bremena, vendar bomo lahko baterijo uporabljali (praznili) dalj časa. Zato je pomembno nadziranje toka in ga ustrezno nastaviti za optimalno polnjenje ter praznjenje baterije. Sistem upravljanja baterije pa spremlja tudi temperaturo baterije ter okolice. Nekatere BMS enote premorejo celo hlajenje oz. gretje baterije in tako ustvarijo idealne pogoje, s kateri podaljšajo življenjsko dobo in zmanjšajo vpliv samoizpraznjenja baterije, kateri se povečuje z višanjem temperature. BMS spremlja tudi informacijo o ohranjenosti baterij kateri pravimo stanje zdravja baterije (SOH state of health). Ta podatek je zgolj ocena in ne dejanska meritev, kajti potrebna je primerjava s tovarniškimi meritvami baterije, katere je opravil proizvajalec predno je baterijo postavil na trg. Le-ta se tudi odloči, katere meritve bo uporabil za oceno SOH. V praksi se - 36 -

velikokrat uporablja zgolj le meritev impedance celic ali njihove prevodnosti. Za točnejšo oceno SOH pa je potrebno opraviti število meritev parametrov celic, kot so npr.: impedanca, zmogljivost, samopraznjenje baterije, prejet naboj pri polnjenju, število ciklov polnjenja ter praznjenja baterije in zmogljivost praznjenja. S staranjem baterije se seveda ti parametri spreminjajo, saj se kemijska zgradba celic baterije spreminja. Tudi SOH podatek je podan v procentih, kjer 100 % pomeni, da je baterija popolnoma zdrava in baterija bo delovala po specifikacijah, katere je predpisal proizvajalec. Stanje zdravja baterije se lahko samo zmanjšuje, dokler baterija ni več uporabna in jo je potrebno zamenjati za pravilno delovanje aplikacije, v kateri se je uporabljala. Nekatere BMS enote shranjujejo podatke, kot so: skupna dovedena in skupna odvedena energija ter skupni delovni čas od njihove prve uporabe naprej. Slika 5.1: BMS implementiran v sistemu (vir: [25]) - 37 -

5.2. Opis uporabljene BMS enote Ker smo želeli čim več, po kar se le da nizki ceni, smo se odločili za nabavo BMS enote 9R, katero proizvaja REC. Z njo lahko naenkrat spremljamo in nadziramo od 4 od 15 v serijo povezanih baterijskih celic na litijevi osnovi in tako zagotovimo, da ne pride do prenapolnjenja baterije ali pa, da se ta ne izprazni preveč. Ločljivost, s katero lahko spremljamo napetost na celici je 1 mv. Omogoča tudi meritev notranje upornosti celic, toka v ter iz baterije, njeno temperaturo pa merijo digitalni temperaturni senzorji Dallas DS18B20. Temperatura baterije nas še posebej zanima, saj se izravnava napetosti celic izvaja pasivno. Omejena pa je tudi najnižja temperatura, pri kateri smemo polniti baterijo. Na podlagi vseh teh meritev BMS enota preračuna SOC baterije. SOH pa se določi s primerjavo trenutnih parametrov baterije s parametri nove baterije. Preko galvansko zaščitenih priključkov DB9 pa lahko komuniciramo z napravo s CAN ali z RS-458 protokolom. 5.3. Komunikacijski protokol Iz podatkovnega lista [26] smo ugotovili, da sistem za upravljanje z baterijo 9R komunicira preko vodila RS-232 in galvansko zaščitenega priključka DB9 z RS-485 ali CAN protokolom. Ker pa smo potrebovali podatke le za prikaz na računalniku, smo uporabili RS-485 protokol, kateri omogoča pošiljanje podatkov po vodilu s hitrostjo do 56 kbit/s. Iz specifikacij smo tudi razbrali, da BMS enota pošlje podatke le, če pošljemo zahtevo po le teh. Oblika paketa sporočila je (Tabela 5.1): - STX byte začetek sporočila, kateri je vedno 0x55 (šestnajstiški zapis števila 85), - DA byte ciljni naslov, kateri je katerokoli število med 0x01 in 0x10, - SA byte naslov pošiljatelja, kateri je vedno nastavljen na vrednost 0 oz. 0x00), - N byte število poslanih podatkovnih zlogov, - Instruction bytes štirje ASCII znaki, katerim sledi '?' ali vrednost 'xx.xx' (npr.: 'B','v','O','L','?' v primeru, da želimo prejeti trenutno izmerjene parametre. Lahko pa pošljemo 'B','V','O','L','xx.xx' in spremenimo nastavljene parametre BMS enote), - 38 -

- 16-bit CRC preverjanje cikličnosti redundance. Izračunata se dva CRC zloga (brez STX in ETX bajtov) za odkrivanje napak v poslanem paketu podatkov, - ETX byte zaključek sporočila, kateri je vedno 0xAA (šestnajstiški zapis števila 170). Tabela 5.1: oblika paketa podatkov glede na podatkovni list STX start DA SA N Instruction 16-bit ETX end tansmission destination sender number of bytes [4 CRC transmission address address sent bytes bytes] Najprej smo napisali enostaven program za pošiljanje ukazov na BMS, kateri odgovori z zahtevanimi izmerjenimi podatki (Slika 5.2). Ko smo dosegli, da je koda pravilno delovala, smo pričeli z pisanjem programa, kateri ni tako zahteven za uporabo s strani uporabnika. Potrebno je bilo poenostaviti način pošiljanja zahtev po merjenju željenega podatka, zraven tega pa tudi jasnejši prikaz le-teh. Slika 5.2: tesna programska koda za enoto 9R Najprej smo potrebovali podprogram za generiranje CRC kode (Slika 5.3), saj brez nje ne moremo komunicirati s sistemom za upravljanje baterije. Rešitev smo poiskali na internetu saj - 39 -

smo tako prihranili na času. Naredili smo le nekaj popravkov, da je generiran CRC ustrezal tistemu, katerega je izračunal BMS. Pristnost tega smo preverili tako, da smo v napisan program ustavili del sporočila, za katerega smo poznali CRC ter ju na koncu primerjali. Slika 5.3: koda za generiranje in vstavljanje CRC zlogov v podatkovni paket Ker pa je za uporabnika lažje izbrati instrukcijo, kot pa jo napisati, smo ustvarili del programske kode (Slika 5.4), kjer uporabnik enostavno izbere ukaz iz menija. Ta ukaz, ki ga želi uporabnik izvesti, se nato implementira v sporočilo, katero se pošlje BMS enoti. Predno se izvede operacija branja podatkov, je potrebno počakati vsaj 350 ms, v primeru, da je mikroprocesor v prekinitveni rutini. - 40 -

Slika 5.4: del programske kode namenjen pošiljanju ukazov na BMS enoto Ko BMS odgovori, prejmemo niz paketov podatkov, kateri so neuporabni, dokler jih ne razvrstimo in uredimo. Ker sta začetku in koncu podatkovnega paketa namenjena le 2 zloga (STX byte in ETX byte), je težko določiti le en podatkovni paket. Zato smo na konec niza podatkovnih paketov vsilili dvakrat po tri zloge, in sicer: STX, DA in SA byte. Sedaj smo niz paketov podatkov brez problema ločili ter vsak paket shranili v podatkovno matriko, dodane zloge pa smo izbrisali. Vse to je bilo potrebno narediti, zaradi nepotrebnih podatkovnih paketov, katere je BMS poslal poleg zahtevanega sporočila. Za tem preverimo, ali je pri prenosu sporočila prišlo do kakršnihkoli napak v komunikaciji. To se izvede s primerjanjem v bloku CRC CHECK. V kolikor se CRC pripet v poslanem sporočilu ne ujema s CRC-jem katerega izračuna programska koda, se napaka javi na ustreznem mestu na čelni plošči. Nato v bloku GET DATA PKTS, iz podatkovnih paketov izluščimo le podatke, katere smo zahtevali od enote. To je potrebno storiti zaradi priprave podatkov na izpis. Priprava podatkov se izvede v bloku PREP DATA. Vsakemu podatku so namenjeni štirje byte-i, kateri so shranjeni v obratnem vrstnem redu (little endian), kot navadno beremo informacije, zato jim v sporočilu obrnemo vrstni red. Na koncu programska struktura poskrbi za izpis vseh podatkov, na predvidenemu mestu, na čelni plošči (Slika 5.5). - 41 -

Slika 5.5: del programske kode za prikaz zahtevanega sporočila ter prikazovalnik Seveda pa lahko uporabnik spreminja nastavitve BMS enote, glede na baterijski paket, ki ga priključi na enoto. Na čelni plošči izbere ukaz v meniju Command, nato pa nastavi vrednost z drsniki. V prihodnosti bo vključena tudi opcija, da enostavno vnesemo vrednost s številkami. Ko so parametri nastavljeni, pritisnemo na gumb Calibrate in ustvari se inštrukcija, katera se pošlje enoti. Del kode za nastavljanje parametrov je prikazan na naslednji sliki. - 42 -

Slika 5.6: del kalibracijske kode - 43 -