You are on page 1of 68

Sadržaj

1.Uvod ........................................................................................................................................ 3
2.Primjena plovila ...................................................................................................................... 4
3. Arduino Mikrokontroler ......................................................................................................... 5
2.1. Povijest Arduina .............................................................................................................. 5
3.2. Arduino hardver .............................................................................................................. 6
3.3. Arduino Nano .................................................................................................................. 6
3.4. Arduino Mega 2560 ........................................................................................................ 9
3.5. Serijska komunikacija ................................................................................................... 11
3.6. PWM modulacija........................................................................................................... 12
4.Senzori i komunikacija .......................................................................................................... 13
4.1 Akcelerometar ADXL345 .............................................................................................. 13
4.2Magnetometar HMC5883L ............................................................................................. 14
4.3 Kompezacija magnetometra ........................................................................................... 17
4.4 GPS Modul ..................................................................................................................... 18
4.5 NRF24L01 ...................................................................................................................... 20
5.Pogon ..................................................................................................................................... 23
5.1 Istosmjerni motor bez četkica ........................................................................................ 23
5.2 Elektronički kontroler brzine(ESC) ............................................................................... 26
5.3 Baterija ........................................................................................................................... 29
6.Trup broda ............................................................................................................................. 33
6.1. Oblik i konstrukcija struktura trupa. ............................................................................. 33
6.2. Stvarna forma ................................................................................................................ 34
6.3. Teoretska forma............................................................................................................. 35
6.4. Prikaz forme nacrtom linija ........................................................................................... 35
6.5. Prikaz forme računalom ................................................................................................ 36
7. Realizacija plovila ................................................................................................................ 37
7.1.Izrada trupa broda........................................................................................................... 37
7.2. Postavljanje pogona i kormila ....................................................................................... 40
7.3.Postavljanje senzora ....................................................................................................... 42
8.Programski dio sklopa ........................................................................................................... 49
8.1. Izračun udaljenosti i brzine ........................................................................................... 49
8.2. Regulacija zakreta kormila ........................................................................................... 50
8.3. Shema upravljanja plovilom.......................................................................................... 53
8.4. Testiranje plovila ........................................................................................................... 54
8.5.Prednosti i nedostatci realiziranog riješenja ................................................................... 56
9. Zaključak .............................................................................................................................. 58
Ključne riječi ............................................................................................................................ 58
Literatura .................................................................................................................................. 58
Popis oznaka i kratica ............................................................................................................... 60
Sažetak ..................................................................................................................................... 61
Dodatak .................................................................................................................................... 62

2
1. Uvod
Zadatak diplomskog rada je izraditi funkcionalnu bespilotnu brodicu sa vlastitim
propulzijskim sustavom i upravljanjem. Realizirati bežično upravljanje brodicom, tako da se
brodici šalje niz GPS koordinata koje ona slijedi. Sustav za vođenje brodice, koji je održava
na kursu i dovodi ka cilju bi se sastojao od GPS prijemnika, magnetomera, akcelerometra i
žiroskopa. Povezivanje senzora, komunikacijskih sustava i aktuatora realizirati Arduino
kompatibilnim mikrokontrolerom.
Princip rada sustava zasnovan je na mogućnosti plovila da obavlja zadane funkcije bez
neposredne prisutnosti čovjeka, plovilu se šalju GPS koordinate preko udaljenog mjesta
putem bežičnog modula, te se kreće od zadane koordinate do sljedeće Logika automatskog
moda rada je zasnovana na dvama komponentama GPS uređaju i kompenziranom
magnetometru. Magnetometar očitava trenutni smjer kojim se plovilo kreče dok GPS očitava
trenutnu koordinatu na kojoj se nalazi. Preko bežične komunikacije šaljemo kordinate na koje
plovilo treba dospjeti. Poznavajući ove parametre preko matematičkog modela možemo doći
do informacija o udaljenosti od cilja, kuta odmaka od točke cilja, te tim informacijama
upravljamo brzinom i smjerom kretnje plovila.
Diplomski rad realiziran je u tri faze. Prva faza sadržava izradu trupa broda te njenu zaštitu
od utjecaja mora. U drugoj fazi opisana je instalacija senzora u brodu, zašto je koji senzor
ugrađen na kojem mjestu, te sa kojim smo se problemima susreli tijekom instalacije senzora.
Treća faza diplomskog rada opisuje logiku po kojoj plovilo radi, matematičke modele koji su
korišteni pri izradi, programska rješenja, način upravljanja i na kraju testiranje samog broda.
Projektiranje ovoga uređaja uključuje opis osnovnih elemenata plovila, proračun sklopa,
izradu sklopa, pisanje programskog koda i njegov opis.
U trećem, četvrtom i petom poglavlju opisani su osnovni parametri i karakteristike
korištenih senzora, komunikacije, baterije, pogona i princip rada samih komponenti. Također
su opisane osnovne karakteristike Arduino platforme.
Šesto poglavlje je usko vezano za izradu trupa samog plovila, osnovne informacije o
tipovima i karakteristikama plovila.
U sedmom i osmom poglavlju opisana je izrada samog sklopa te korištena matematička,
logička i programska rješenja korištena pri izradi sklopa.

3
2. Primjena plovila
Plovilo koje je obrađeno u diplomskom radu ima raznovrsne mogućnosti primjene, također
ima mogućnost ugradnje dodatnih senzora što mu može proširit područje djelovanja. Može se
ugraditi kamera te brod služi za nadzor pomorske granice, nadzor obale, nadzor marine,
nadzor ribogojilišta. Ugradnjom ultrazvučnih senzora može vršit raznorazna ispitivanja tla sa
morske površine, nadzor i praćenje ugroženih vrsta iz morskog svijeta.

Plovila dronovi su već danas imaju mnoge načine primjene u daljnjem tekstu analizirano je
par sličnih plovila.

Eclipse Stealth Drone 35 stopa dug brod je osmišljen za neprimjetan lov na pirate, područje
djelovanja mu je cijeli ocean. Eclipse Stealth Drone pripada prvoj svjetskoj floti daljinsko
upravljanih "Robo brodova 'dizajniran za obavljanje opasnih misija bez žrtava.

Slika 2.1 Eclipse Stealth Drone 35

Scout autonomni brod dron sagrađen od strane američkih studenata sa više sveučilišta. Jedan
Arduino Mega mikrokontroler zadužen je za navigaciju, obradu senzora i komunikaciju
putem Iridium satelitskog primopredajnik, brod je u potpunosti unaprijed programiran, rad
broda se oslanja na podatke senzora za prilagodbu uvjetima okoliša. Energiju brod dobiva od
solarnih panela, aluminijski okviri su uklonjeni iz panela i laminirani ravno na palubu,
dopuštajući da se može smjestiti više solarnih polja na vrhu robota. Paluba je nagnuta prema
jugu, što je bolji kut za prikupljanje sunčeve svjetlosti. Scout autonomna jedrilica ima zadatak
preći atlantski ocean, dok putuje preko oceana neprestano šalje GPS koordinate trenutnog
položaja.

4
3. Arduino Mikrokontroler

Arduino je samostalni mikrokontroler, namijenjen za jednostavnu izradu aplikacija ili


interaktivnih objekata ili okruženja. Hardver se sastoji od hardver pločice odnosno pločice
otvorenog koda dizajnirane oko 8-bitnog Atmel AVR mikrokontrolera ili 32-bitnog Atmel
ARM-a. Svojstvo trenutnih modela Arduino pločica jest interakcija s računalima putem USB
priključka.

3.1. Povijest Arduina

Arduino mikrokontroler je izvorno napravljen kao platforma namijenjena u edukativne


svrhe, kao razredni projekt na Interaction Design Institute Ivrea 2005.godine. Predstavlja
nadogradnju rada Wiring mikrokontrolera dizajniranog od strane Hernanda Barragana 2004.
godine.

Izumitelji Arduino platforme su Massimo Banzi, David Cuartielles, Dave Mellis,


Gianluca Martino i Nicholas Zambetti. Trenutačni Arduino tim čine Banzi, Cuartielles,
Martino, Mellis i Tom Igoe. Namjere Arduino tima su bile pojednostavnjenje Wiring
platforme. Zbog jednostavnosti, Arduino mikrokontroler je naišao na veliku primjenu publike
izvan tehnoloških okvira.

Banzi je definirao pet razloga uspješnosti Arduino platforme, po kojima se isti izdvaja
od uobičajenih mikrokontrolera:
 Financijski je dostupan. Moguće je nabaviti Arduino alat za manje od 30 €.
 Dolazi u paketu s besplatnim Arduino razvojnim okruženjem (IDE).
 Jednostavan za korištenje, spaja se s računalom putem USB-a i komunicira pomoću
standardnih serijskih protokola.
 Ima potporu velikog broj izvornih kodova je dostupan već neko vrijeme i spreman za
korištenje.
 Fleksibilan je, ima velik broj digitalnih i analognih ulaza, SPI, I2C, serijsko sučelje i
digitalne i PWM izlaze.

5
3.2. Arduino hardver

Arduino pločica se sastoji od Atmel AVR mikrokontrolera i komplementarnih


komponenti koje olakšavaju programiranje i interakciju s drugim krugovima. Bitna
koncepcija Arduina jest mogućnost povezivanja CPU pločice na niz drugih izmjenjivih
dodatnih modula poznatih kao shields ili štitovi. Neki štitovi komuniciraju s Arduino
pločicom preko pinova, dok se drugi ostvaruju serijskom komunikacijom. Većina Arduino
sistema koriste megaAVR seriju čipova, posebice Atmega8, Atmega168, Atmega328,
Atmega1280 i Atmega2560. Linearni regulator od 5 V i 16 MHz kristalni oscilator (ili
keramički rezonator) su osnovne komponente kod većine Arduino pločica.

Arduino mikrokontroler je unaprijed programiran pomoću bootloadera koji


pojednostavnjuje preuzimanje programa na flash memoriju, po čemu se razlikuje od ostalih
uređaja koji zahtijevaju eksterno programiranje.

Na konceptualnoj razini, sve pločice su isprogramirane preko RS-232 serijske veze,


dok način implementacije varira od modela do modela. Serijske Arduino pločice sadrže
mehanizam za pretvaranje signala između RS-232 i TTL levela. Trenutne izvedbe Arduino
pločica su programirane putem USB priključka, odnosno implementirane povezivanjem USB
na čipove serijskih adaptera kao npr. FTDI FT232.

Razvijeno je mnogo vrsta Arduino modula koji se razlikuju u komponentama, cilju,


veličini, itd. Neki primjeri Arduino pločica su: Arduini Duemilanove/UNO, Arduino Mega,
Arduino Nano, Arduino Mini, Arduino Leonardo, LilyPad Arduino…

3.3. Arduino Nano

U ovom radu je korišten Arduino Nano v3.0 s mikrokontrolerom baziranom na


ATmega328. Ona ima 14 digitalnih ulaza / izlaza (od kojih se 6 može koristiti kao PWM
izlaza), 8 analognih ulaza, jedan 16 MHz kristal oscilator, USB priključak, ICSP zaglavlja i
tipku za resetiranje. Sadrži sve što je potrebno kako bi podržao mikrokontroler. Jednostavno
se spaja na računalo pomoću USB kabela.

6
Tablica 3.1. Specifikacije Arduino Nano v3.0
Mikrokontroler ATmega328
Operativni napon 5V
Ulazni napon (preporučeno) 7 – 12 V
Ulazni napon (ograničenja) 6 – 20 V
Digitalni ulazno/izlazni pinovi 14
PWM kanali 6
Analogni ulazni pinovi 8
DC struja po ulaz/izlaz pinu 40 mA
Flash memorija 32 KB (ATmega 328) od čega 2 KB
koristi za pokretanje sustava (bootloader)
SRAM 2 KB
EEPROM 1 KB
Brzina sata 16 MHz
Veličina 1.85cm x 4.3cm

Arduino Nano se može napajati putem Mini-B USB priključaka, 5 V stabiliziranim vanjskim
napajanjem (pin 27-5 V) ili 6-20 V nestabiliziranim vanjskim napajanjem (pin 30- VIN). Ako
je opskrba naponom manja od 7 V, pin od 5 V može dostaviti manje od 5 V i pločica može
biti nestabilna. Međutim, ako se koristi više od 12 V, regulator napona se može pregrijati i
oštetiti ploču. Preporučeni napon jest od 7 do 12 volti. Izvor napajanja automatski se odabire
na najveći izvor napona. Pinovi za napajanje su:
 VIN. Ulazni napon na Arduino ploči kad se koristi vanjski izvor napajanja (za
razliku od 5 V dobivenih preko USB priključka ili drugog izvora energije).
 5 V. Regulirano napajanje služi za napajanje mikrokontrolera i drugih komponenti
na pločici. Može se ostvariti i od VIN pina, preko regulatora na pločici, ili se može
ostvariti preko USB ili drugog reguliranog 5-voltnog izvora.
 3.3 V. Izvor od 3.3 V generiran na regulatoru na pločici. Maksimalni protok struje
jest 50 mA.
 GND. Uzemljenje.

7
ATmega328 ima 32 KB memorije za pohranjivanje koda (od čega se 2 KB koriste za
bootloader). Također ima 2 KB SRAM memorije i 1 KB EEPROM memorije (koja se može
očitati i zapisati u EEPROM biblioteci).

Svaki od 14 ulazno/izlaznih digitalnih pinova Arduino Nano može biti konfiguriran kao ulaz
(INPUT) ili izlaz (OUTPUT). To se postiže naredbama pinMode(), digitalWrite() i
digitalRead() funkcijama. Koriste se pri naponu od 5 V. Svaki pin može dati ili primiti
maksimalno 40 mA, te ima unutarnji pull-up otpornik 20-50 kOhma. U Arduinu digitalni
signal se može nalaziti u dva stanja: LOW ili HIGH. Kad je pin spojen na 5 V smatra se
HIGH, a kad je spojen na 0 V ili GND, smatra se LOW.

Analogni naponi mogu imati bilo koju vrijednost napona između 0 i 5 V (2 V, 3.4 V, 4.6 V,
itd.). Arduino Nano ima 8 analognih ulaza koji mogu odrediti točnu vrijednost analognog
napona.

Nano ima niz objekata za komunikaciju s računalom, drugom Arduino pločicom ili drugim
mikrokontrolerom. ATmega328 pruža četiri hardverska UART-a za TTL (5 V) serijsku
komunikaciju. FTDI FT232RL na pločici prenosi jedan od njih preko USB-a i FTDI driveri
(uključeni u Arduino softver) ostvaruju virtualni COM priključak na softver na računalu.

Arduino softver uključuje i serijski monitor koji omogućuje slanje i primanje jednostavnih
tekstualnih podataka sa Arduino pločice. RX i TX LED-svjećica će treptati kada je u toku
prijenos podataka putem FTDI čipa i USB priključka na računalu (ali ne i za serijsku
komunikaciju na pinovima 0 i 1).

Slika 3.1. Arduino Nano

8
3.4. Arduino Mega 2560

Arduino Mega2560 je mikrokontrolerska platforma bazirana na Atmel ATMega 2560


mikrokontroleru. Pored mikrokontrolera sadržava potrebno okruženje za njegov rad,
komunikaciju i programiranje sa PC-om putem USB sučelja preko IC ATmega16U2 .
Kompatibilna je sa velikim brojem dodatnih ploča Arduino Duemilanove ili Diecimila
platformi.Arduinio Mega 260 smo izabrali kao mikrokontroler plovila jer ima više Serial i SPI
i ulaza na koje se spajaju senzori u odnosu na druge Arduino uređaje.

Slika 3.2. Arduino Mega

Tehnički podaci tablica 3.2.

Mikrokontroler ATmega2560
Radni napon 5V
Napajanje 7-12 V
Ulazni napon (limiti) 6-20 V
Digitalni I/O pinovi 54 ( 14 sa PWM izlazom)
Analogni ulazi 16
Flash Memorija 256 KB / 8 KB za bootloader
SRAM 8 KB
EEPROM 4 KB
Takt 16 MHz

9
Napajanje
Mega2560 se može napajati preko USB porta ili vanjskog izvora. Odabir je automatski.
Vanjsko napajanje se spaja na 2,1 mm utičnicu ili na pinove. Preporučeno je napajanje od 7-
12 V.Može izdržati od 5 do 20 V ali ako je napajanje manje od 7 V Arduino može postati
nestabilan. Za napajana od 12 do 20 V može doći do pregrijavanja i kvara stabilizatora.
Memorija
Mikrokontroler ATmega2560 ima 256 KB flash memorije za spremanje programskog
koda od čega je 8 KB za bootloader, 8 KB SRAM i 4 KB EEPROM. EEPROM-u se pristupa
preko EEPROM.h biblioteka.
Ulazi i Izlazi
Svaki od 54 digitalna pina može se koristiti kao ulaz i kao izlaz koristeći funkcije
pinMode(), digitalWrite(), i digitalRead(). Oni rade na 5 V i mogu dati/primiti 40 mA. Neki
pinovi imaju specijalne funkcije: Serijska komunikacija: 0 (RX) i 1 (TX); Serial 1: 19 (RX)
i18 (TX); Serial 2: 17 (RX) i 16 (TX); Serial 3: 15 (RX) i 14 (TX). Koriste se za primanje
(RX) i slanje (TX) serijske komunikacije TTL razina. Pin 0 i 1 su isto spojeni na
odgovarajuće pinove ATmega16U2 USB-to-TTL serijskog kola. Vanjski prekidi: 2
(interrupt0), 3 (interrupt 1), 18 (interrupt 5), 19 (interrupt 4), 20 (interrupt 3), i 21 (interrupt2).
Ovi pinovi mogu biti podešeni na okidanje na nisku razinu, rastuću ili padajući rub ili
promjenu napona. Za rad sa prekidima koristi se attachInterrupt() funkcija. PWM: Pulse
Width Modulation Pinovi 0 - 13. Daju 8-bit PWM pomoću analogWrite() funkcije. SPI: 50
(MISO), 51 (MOSI), 52 (SCK), 53 (SS). Ovi pinovi imaju podrški za SPI komunikaciju preko
SPI biblioteka. LED: 13. Mega ima ugrađeni pin za LED diodu na pinu 13. Kada je na HIGH
vrijednosti LED dioda svijetli a na LOW je ugašena. TWI: 20 (SDA) i 21 (SCL). Podrška ta
TWI komunikaciju uz korištenje Wire biblioteke. Analogni ulazi: Mega2560 ima 16
analognih ulaza koji se očitavaju 10 bitnom rezolucijom ( moguće 1024 različite razine).
Zadano je mjerenje od 0 do 5 V ali je moguće promijeniti gornji nivo preko pina AREF i
funkcije analogReference(). Reset. Treba na njega dati LOW razinu za reset. Tipično se
koristi za dodatne ploče.
Komunikacija
Arduino Mega2560 posjeduje brojne resurse za komunikaciju sa vanjskim svijetom. Na
primjer PC, drugi Arduino, neki drugi mikrokontroler. ATmega2560 posjeduje četiri sučelja
za serijsku komunikaciju na TTL razinama. USB kontroler ATmega16U2 daje virtualni
serijski port preko USB komunikacije. Na taj način može se ostvariti jednostavna tekstualna

10
komunikacija. SoftwareSerial biblioteka omogućava serijsku komunikaciju preko bilo kojeg
digitalnog pina. TWI komunikacija se radi preko Wire biblioteka a SPI preko SPI biblioteke.

3.5. Serijska komunikacija


Arduino pločica ostvaruje komunikaciju koristeći protokole za serijsku komunikaciju.
Serijska komunikacija je proces slanja dijelova podataka (bajtova) preko jednog kanala,
poznatog pod nazivom bus. Podaci se u serijskoj komunikaciji šalju uzastopno jedan za
drugim, za razliku od paralelne komunikaciju gdje se više bitova šalju istovremeno preko više
kanala. Prednosti serijske komunikacije u odnosu na paralelnu:

 Manji broj žica omogućuje lakšu obradu vremena propagacije.


 S manjim brojem kanala preslušavanje je otežano u odnosu na veći broj kanala.
 Ušteda prostora i novca, zbog manjeg broja žica, što daje mogućnost i povećanja
sigurnosti tog kanala.

U današnje doba pojas propusnosti serijske komunikacije obuhvaćaju raspon od


nekoliko kilobita u sekundi do nekoliko terabita u sekundi. Serijska komunikacija se ostvaruje
izmjenom binarnih vrijednosti, te se brzina izražava u baud-ima. Jedan baud označava
prijenos 1 simbola po sekundi. Simbol može biti i višebitni.

Arduino, kao što je navedeno u prijašnjim poglavljima, nudi mnoge mogućnosti za


interakciju sa senzorima, pogonima, motorima, itd. Ali mogućnosti samog Arduina su ipak
ograničene. Na sreću, Arduino je pogodan za ostvarivanje komunikacije s nekim složenijim
uređajima poput računala ili druge Arduino pločice. Takva komunikacija se ostvaruje USB
vezom i koristi se kao serijska RS-232 komunikacija. Arduino IDE je koristi da bi učitao
programe na pločici, no serijska veza se može koristiti i za bilo koje druge vrste
komunikacije.

Na Arduino pločici postoje i digitalni pinovi 0 (RX) i 1 (TX). Oni se, također, mogu
koristiti u svrhu ostvarivanja serijske komunikacije. Oni dostavljaju identične signale koji se
šalju i na USB serijsko sučelje. Dok se ostvaruje serijska komunikacija bitno je naglasiti
nemogućnost korištenja digitalnih pinova 0 i 1 u bilo koju drugu svrhu osim ostvarivanja
serijske komunikacije. Oni dostavljaju serijske signale (čak i ako ih ne priključimo, nego
koristimo isključivo USB), tako da ih nije moguće koristiti ni za što drugo.

11
3.6. PWM modulacija
Pulsno širinska modulacija (Pulse Width Modulation ili PWM) je tehnika dobivanja
analognih vrijednosti preko digitalnih oblika. Digitalno upravljanje se iskoristi za dobivanje
pravokutnog signala koji se mijenja između "ima signala" i "nema signala" (signal on/off).
Ovaj način rada može simulirati napon koji se mijenja između stanja kada signal ima najvišu
vrijednost (5 V) i stanja kada signal ima minimalnu vrijednost (0 V) tako da se mijenja dio
vremena u kojem ima signala i vremena u kojem nema signala. Trajanje vremena u kojem je
signal upaljen naziva se širina pulsa. Dobivanje različitih analognih vrijednosti postiže se
modulacijom širine pulsa. Ako se ponavlja ovaj on-off uzorak kroz npr. LED diodu, rezultat
je isti kao da je signal stalni napon između 0 V i 5 V upravlja osvjetljenjem LED diode. Na
Slici 2.3. zelene linije predstavljaju stvarno vrijeme perioda. Ovaj period je inverz PWM
frekvencije. Frekvencija PWM signala je približno 490 Hz.

Slika 2.3. Pulsno-širinska modulacija (PWM)

Nakon poziva analogWrite() proizvesti će se pravokutni signal sa određenim radnim


omjerom (0-uvijek isključeno ili 255-uvijek uključeno) sve do sljedećeg poziva analogWrite()
(ili poziva digitalRead() ili digitalWrite() na isti pin). Ako je pozvana naredba
analogWrite(255) radni omjer će biti 100% (uvijek 5 V), dok će poziv analogWrite(127)
rezultirati radnim omjerom od 50% (5 V će biti 50% vremena). Najviša struja na svakom pinu
je 40 mA.

12
4. Senzori i komunikacija
4.1.Akcelerometar ADXL345

Zadatak akceleratora je mjerenje linearnog ubrzanja tijekom kretanja. Najčešće se koristi


za testiranje pomičnih dijelova opreme i određuje njihova opterećenja. Akcelerometar se
trenutno može naći u uređajima kao što su mobilni telefoni, tableti, fotoaparati i modeli na
daljinsko upravljanje RC.
Jedan od najpopularnijih i najpristupačnijih akceleratora koji se koristi u takvim uređajima je
ADXL345. Ovaj sustav može komunicirati s mikrokontrolerom preko I2C ili SPI protokola,
mjeri ubrzanje za sve tri osi u rasponu do ± 16 g s rezolucijom od 13 bita. Ubrzanje tijela za
vrijednost 1 g je jednaku ubrzanju od 9,81 m/𝑠 2 tj. slovo g u izrazu je vrijednost gravitacijske
konstante a broj ispred je multiplikator.
Tijekom mjerenja, maksimalna potrošnja struje je samo 23 μA a napona napajanja je od 2,0
do 3.6 V. Budući da sustav ne podnosi veću voltažu (5 V), treba obratiti posebnu pozornost na
napon napajanja. Treba napomenuti kako je akcelerometar vrlo osjetljiv na vibracije, tako da
treba obratiti pažnju prilikom njegove ugradnje.
Određivanje prostornog položaja objekta (Pitch, role)

Podsjetimo se kava je konfiguracija X, Y, Z osi akcelerometra ADXL345:

Slika 4.1. Konfiguracija osi


Kao što se može vidjeti na Slici 4.1. gibanje naprijed nazad se odvija oko osi X, lijevo i
desno oko osi Y, a gibanje gore dolje odvija se oko osi Z. Ova gibanja odgovaraju
odgovarajućim kutovima:
Φ - Roll - rotacija oko osi X
θ - Pitch - rotacija oko osi Y
Ψ - Yaw - rotacija oko osi Z

13
Sa senzora se čita izravno ubrzanje za svaku os, na temelju tih vrijednosti možemo izračunati
kut Φ - Roll i θ - Pitch.
Mi ćemo koristiti funkciju atan2 ( ) umjesto tan2 ( ) pri izračunu kako bi ga lakše kontrolirati
nazivnik kojih ne smije biti nula .

−𝐺𝑝𝑥
tan 𝜃𝑥𝑦𝑧 = ( 4.1. )
√𝐺𝑝𝑦 2 + 𝐺𝑝𝑧 2
𝐺𝑝𝑦
tan 𝜃𝑥𝑦𝑧 = (4.2. )
𝑠𝑖𝑔𝑛(𝐺𝑝𝑧)√𝐺𝑝𝑧 2 + 𝜇𝐺𝑝𝑥 2

Gpx - gravitacijska sila u smjeru osi x


Gpy – gravitacijska sila u smjeru osi y
Gpz – gravitacijska sila u smjeru osi z

Formule za proračun Φ – Roll i θ – Pitch


Sila teže je sila kojom Zemlja privlači neko tijelo mase m, označavamo ju najčešće slovom G.
ta sila privlači sva tijela prema središtu Zemlje pa je stoga tu i usmjerena. Kada pustimo tijelo
da slobodno pada s određene visine, ono se giba ubrzanjem g koje iznosi 9,81 m/s2 Senzor
mjeri iznos sile teže na svakoj svojoj osi, odnosno mjeri akceleraciju sile teže.

4.2. Magnetometar HMC5883L

HMC5883L je digitalni, 3-osni magnetometar


koji omogućuje mjerenje širokog raspona zemljinog
magnetskog polja veličine u iznosu od ± 8 Gauss (Slika
4.3.). Njegovom 12-bitnom rezolucijom omogućuje se
mjerenje s točnošću od 2 miligaussa s trenutnom
potrošnjom od samo 100 μA. HMC5883L komunicira s
mikrokontrolerom preko I2C sabirnice s maksimalnom
frekvencijom od 75 Hz.
Slika 4.3 Prikaz magnetometra
HMC5883L omogučava postizanje frekvencije do 160 Hz, ako koristimo single mode način
mjerenje i praćenje DRDY prekida(interrup). Zanimljiva mogučnost u ovom modu rada

14
kompasa je odabir broja uzoraka (1, 2, 4 ili 8), gdje se kao konačna vrijednost uzima
aritmetiča sredina odabranog broja uzoraka.
 Napon napajanja sklopa je od 2.0 do 3.6 V
 Točnost kompasa od 1° do 2°

Kompas HMC5883L ima široki spektar upotrebe; u mobilnim uređajima, tabletima,


potrošačkoj elektronici, auto navigacijski sustavi, navigacijski sustavi dronova, osobni
navigacijski sustavi itd.
Tablica 4.1 Ispitivanje na magnetometru
Mjerno područje Razlučivost Pojačanje
± 0.88 Ga 0.73 mG 1370
± 1.3 Ga 0.92 mG 1090
± 1.9 Ga 1.22 mG 820
± 2.5 Ga 1.52 mG 660
± 4 Ga 2.27 mG 440
± 4.7 Ga 2.56 mG 390
± 5.6 Ga 3.03 mG 330
± 8.1 Ga 4.35 mG 230

HMC5883L kao digitalni kompas


Poznavanjem Zemljinog magnetskog polja (vektor X , Y i Z vektor) Slika 4.5. omogućuje
nam određivanje smjera magnetskog meridijana. Smjer magnetskog meridijana može se
izračunati s jednostavnom formulom:
Smjera digitalnog kompasa (rad) = atan (vektor y, vektor x) (4.1.)
Za odrediti točan smjer potrebno je uzeti u obzir faktor pogreške - magnetske deklinacije.
Magnetska deklinacija je za oba Zemljina magnetska pola na drugom mjestu u odnosu na
geografske magnetske polove i ima različite vrijednosti u ovisnosti o mjestu mjerenja (npr.
prisutnost velike količine željezne rude na određenom mjestu). Važno je napomenuti da je
magnetska varijacija varijabla ovisna o parametau vremena, jer se Zemljin magnetski stup
stalno kreće. Vrijednost trenutne magnetske deklinacije može se naći na posebnim
magnetskim kartama.

15
Slika 4.4 Prikaz iznos magnetske deklinacije za određeno područje

Kao što možemo vidjeti iz slike 4.4. magnetska deklinacija na mjestu testiranja je plus 3
stupnja i 38 minuta (istok). Vrijednost deklinacije moramo pretvoriti u radijane:
Kut deklinacje = (stupnjevi + (min / 60.0)) / (180 / π);) (4.2.)
Konačnu vrijednost smjera digitalnog kompasa dobijemo tako da izmjerenoj vrijednosti
dodamo ili oduzmemo magnetsku deklinaciju(pozitivna ili negativna):
Smjer = imjerena vrijednost ± kut deklinacije (4.3.)
Dalje moramo osigurati da je rezultat izračunatog magnetskog polja u rasponu od 0π - 2π, ako
je smjer manji od 0 onda treba dodati na njega 2π, ako je smjer veči od 2π oduzimamo od
njega 2π. Zatim je potrebno pretvoriti radijane u stupnjeve:
Smjer(stupnjevi) = smjer(radijani)* (180 / π) (4.4.)
Ružna osobina magnetometra HMC5883Lje različito mjerenje magnetsko polja u rasponu od
1 ° do 180 ° i od 180 ° do 360 °. Za prvi odjeljak naš magnetometar će proizvesti pristrane
rezultate od 1 ° do 240 °, a drugi od 240 ° do 360 °. Ova osobina se jednostavno ispravi
kalibracijom magnetometra pomoču primjera koji se nalazi u HMC5883L Arduino biblioteci
tako da dobivene rezultate unesemo u Arduino kod našeg magnetometra.
Nažalost kompas je osjetljiva na bilo koji nagib pri izračunu magnetskog meridijana. Stoga se
mora postaviti na ravnu površinu, tako da su rezultati točni. Negativni učinak nagiba pri
mjerenju smjera magnetskog polja možemo kompezirati akcelerometarom.
16
Slika 4.5. Ispis očitanja magnetometra

4.3. Kompenzacija magnetometra

Jedan od glavnih problema s kojima se susreću magnetometri koji se koriste za


provedbu jednostavnih digitalni kompasa, jest pomicanje ravnine X, Y u odnosu na Z ravninu
(ljuljanje).
Čak i mala odstupanja kuta između ravnina, mogu uvelike utjecati na očitanje magnetometra.
Ovoj problem može biti riješen poznavanjem role i pich kuta uz uporabu ADXL345
akcelerometar. Ova metoda je učinkovita samo kada se promjena kuta kreće u rasponu od -45
° do + 45 °. U većini slučajeva, to je sasvim dovoljno za kompenziranje kompasa.

Izračun pitch i roll kuta


roll = asin(normAccel. YAxis) (4.5.)
pitch = asin(−normAccel. XAxis) (4.6)

Tilt kompenzacija
𝑋ℎ = 𝑚𝑎𝑔. 𝑋𝐴𝑥𝑖𝑠 ∗ 𝑐𝑜𝑠𝑃𝑖𝑡𝑐ℎ + 𝑚𝑎𝑔. 𝑍𝐴𝑥𝑖𝑠 ∗ 𝑠𝑖𝑛𝑃𝑖𝑡𝑐ℎ
𝑌ℎ = 𝑚𝑎𝑔. 𝑋𝐴𝑥𝑖𝑠 ∗ 𝑠𝑖𝑛𝑅𝑜𝑙𝑙 ∗ 𝑠𝑖𝑛𝑃𝑖𝑡𝑐ℎ + 𝑚𝑎𝑔. 𝑌𝐴𝑥𝑖𝑠 ∗ 𝑐𝑜𝑠𝑅𝑜𝑙𝑙 − 𝑚𝑎𝑔. 𝑍𝐴𝑥𝑖𝑠 ∗ 𝑠𝑖𝑛𝑅𝑜𝑙𝑙
mag.Xaxis - očitanje kuta X sa magnetometra
mag.Yaxis - očitanje kuta Y sa magnetometra
mag.Zaxis - očitanje kuta Z sa magnetometra
𝑆𝑚𝑗𝑒𝑟 = 𝑎𝑡𝑎𝑛2(𝑌ℎ, 𝑋ℎ)

17
4.4. GPS Modul
NEO-6 modul je serija iz obitelji samostalnih GPS prijamnika koji omogućava visoke
performanse. Ovaj fleksibilan i jeftin prijemnik nudi brojne mogućnosti pri izradi sklopova.
Dimenzija 16 x 12,2 x 2,4. Njegova kompaktna arhitektura i mala potrošnja struje i memorije
idealna je za sklopove napajane baterijom ,kao što su mobilni telefoni i minijaturni sklopovi
za navođenje koji zahtijevaju malu potrošnju energije i s vrlo strogim ograničenjima prostora i
troškova,50-kanalni U-Blox 6 ima mogućnost pozicioniranja unutar 1 sekunde, što omogućuje
da pronađete satelite odmah. Inovativan dizajn i tehnologija smanjuje ometanje dolaznog
signala i ublažava vanjske utjecaje na sam sklop. Neo-6 GPS prijemnici imaju izvrsne
navigacijske performanse čak u vrlo izazovnim uvjetima. Značajke proizvoda prikazane su na
slijedećoj tablici. Blok dijagram sklopa je prikazan na Slici 4.6.

Tablica4.2. Značajke proizvoda

Slika 4.6.Block dijagram

18
AssistNow autonomija
AssistNow autonomija pruža funkcionalnost, bez potrebe za host ili vanjskim mrežni
priključkom . Na temelju prethodno preuzetih podataka od satelitskih odašiljača, koji su
pohranjeni od strane samog GPS prijemnik, AssistNow Autonomija automatski generira točne
satelitske orbitalne podatke ("AssistNowAutonomna podaci ") koji su korisni za buduće
ispravke GPS položaja. AssistNow autonomni podaci su pouzdani do 3 dana nakon početne
upotrebe.
U-Blox 'AssistNow Autonomne prednosti su:
 Brže ispravak položaja
 Nije potrebno prethodno povezivanja
 Komplementarni s AssistNow online i offline uslugom
 Bez velikog utjecaja na sami mikrokontroler, izračuni se obavljaju u pozadini

Serijsko periferno sučelje (SPI)


SPI sučelje omogućava spajanje vanjskih uređaja s serijskim sučeljem GPS uređaja. Sučelje
može izvršavati operacije u master ili slave načinu rada. U master modu, signal sa procesora
je dostupan svim vanjskim slave uređajima. U slave modu procesor omogućuje komunikaciju
s domaćinom. N Slici 4.7. prikazan je primjer komunikacije preko SPI protokola.

Slika 4.7. Prikaz komunikacije preko SPI protokola


Konfiguracija
NEO-6 moduli pružaju konfiguraciju pinova za boot-time konfiguraciju. Što stupa na snagu
odmah nakon pokretanja. Kada je modul počeo sa radom, postavke se mogu mijenjati pomoću
UBX konfiguracijskih poruka. Modificirani postavke ostaju na snazi do nestanka napajanja
ili resetiranja. Ako su ove postavke pohranjene u bateriju backup RAM, onda će izmijenjena
konfiguracija biti zadržana, dok je opskrba backup baterije osigurana.
NEO-6 moduli uključuju i CFG_COM0 i CFG_COM1 konfiguraciju pinova kao što se vidi
Tablici 4.3.

19
Tablica 4.3. Konfiguracija pinova NEOGPS modula
CFG_COM1 CFG_COM0 Protokol Poruka UART USB
brzina napajanje
1 1 NMEA GSV, RMC, GSA,GGA,GLL,VTG.TXT 9600 BUS
1 0 NMEA GSV, RMC, GSA,GGA,GLL,VTG.TXT 38400 samostalno
0 1 NMEA GSV, RMC, GSA,GGA,,VTG.TXT 4800 BUS
0 0 UBX NAV-SOL,NAV-STATUS,NAV- 57600 BUS
SVINFO,NAV-CLOCK,INF

Spajanje na Ardino Mega


Pinovi GPS-a se spajaju na arduino slijedećim redom:
 GND - GND Arduino
 VCC - 3.3V Arduino
 TX- RX Serial 1 Arduino
 RX- TX Serial 1 Arduino

4.5. NRF24L01

Nordic Semiconducor nRF24L01 je jedinstveni 2.4 Ghz primopredajnik dizajniran za


bežične aplikacije s niskom potrošnjom. nRF24L01 je pronašao svoju primjenu na mnogo
mjesta. Ponajprije valja istaknuti bežične PC periferije(bežični miš, tastatura, joystick), zatim
tu su ultra nisko potrošačke senzorske mreže, VOIP slušalice, alarmni i sigurnosni sustavi,
aktivni RFID (RF IDentification) te mnogi drugi sustavi koji za svoj rad zahtijevaju bežični
prijenos podataka. U ovom projektu njegova uloga je bežično upravljanje plovilom kojemu se
šalju GPS kordinate. Prednost ovog nad ostalim ovakvog tipa je mogućnost istovremenog
slanja i primanja podataka, niska cijena, jednostavnost i potpuna kompatibilnost s Arduino
razvojnom okolinom budući da postoje gotove biblioteke koje olakšavaju programiranje i
korištenje. Primopredajnik sadrži potpuno integrirani frekvencijski alat za sintezu, pojačalo,
kristalni oscilator, demodulator, modulator i Enhanced Shock Burst protokol. nRF24L01 je
projektiran za rad na širokopojasnom ISM frekvencijskom rasponu od 2.400 - 2.4835 GHz.
Izlazna snaga, frekvencijski kanali i protokol lako se unose otvorenim SPI sučeljem. Pomoću
mikrokontrolera, nRF24L01-a i nekoliko dodatnih pasivnih komponenti moguće je realizirati
jednostavan radio prijemnik. Sklop u svom dizajnu ima implementiranu automatsku potvrdu o
primitku poruke, mogućnost spajanja s do 6 različitih uređaja u istom frekvencijskom kanalu,
te još neke druge mogućnosti. Sklop je napajan direktno s Arduino mikrokontrolera koji u

20
sebi sadrži linearni naponski regulator koji generira izlazni napon od 3,3 V za napajanje
nRF24L01.

Slika 4.8.Prikaz nRF24L01 primopredajnika


nRF24L01 je konfiguriran i upravljan preko serijskog komunikacijskog protokola (Serial
Peripheral Interface – SPI). Ovaj protokol omogućava dvosmjernu komunikaciju i preko
njega je moguće ostvariti veće brzine prijenosa nego kod ostalih komunikacijskih standarda.
Brzina prijenosa podataka kod nRF24L01 kreće se do 2 Mbps što ga uz izuzetno nisku
potrošnju energije svrstava u poželjnije uređaje ovog cjenovnog razreda. Na Slici 4.9.
prikazan je blok dijagram uređaja te raspodjela pinova .

Slika 4.9. Blok dijagram nRF24L01

Postoje dvije izvedbe nRf24L01 promopredajnika, prva verzija ima domet do 100m, druga
verzija primopredajnika ima na sebi pojačalo i antenu vidljivo na Slici 4.8. njegov domet je 1

21
km. Pri ugradnji primopredajnika sa pjačalom treba obratiti pažnju na napajanje, zbog toga što
on zahtjeva struju od 150 mA.

Tablica 4.3.Funkcionalni opis.

Pin Ime Funkcija Pina Opis


1 CE Digitalni ulaz Aktivira RX ili TX način rada
2 CSN Digitalni ulaz SPI odabir chipa
3 SCK Digitalni ulaz SPI takt
4 MOSI Digitalni ulaz Pomicanje podataka
5 MISO Digitalni izlaz Pomicanje podataka
6 IRQ Digitalni izlaz Interapt pin
7 VDD Napajanje Napajanje(1.9V-3.6V DC)
8 VSS Napajanje Uzemljenje( 0V )
9 XC2 Analogni izlaz Oscilator pin 2
10 XC1 Analogni ulaz Oscilator pin 1
11 VDD_PA Vanjsko Napajanje(1.8V) za unutarnje pojačalo
napajanje Mora bit povezano na ANT1 i ANT2
12 ANT1 RF Priključak za antenu 1
13 ANT2 RF Priključak za antenu 2
14 VSS Napajanje Uzemljenje( 0V )
15 VDD Napajanje Napajanje(1.9V-3.6V DC)
16 IREF Analogni ulaz Referentna struja; priključiti 22k otpornik
prema uzemljenju
17 VSS Napajanje Uzemljenje( 0V )
18 VDD Napajanje Napajanje(1.9V-3.6V DC)
19 DVDD Vanjsko Interni digitalni izlaz za svrhe prespajana
napajanje
20 VSS Napajanje Uzemljenje( 0V )

22
5. Pogon
5.1. Istosmjerni motor bez četkica

Istosmjerni motor bez četkica (Brushless DC motor) također poznat kao elektronički
komutirani motor je sinkroni motor koji se napaja istosmjernom strujom koja se putem
integriranog pretvarača pretvara u izmjenični električni signal koji upravlja motorom. U tom
kontekstu izmjenična struja ne podrazumijeva sinusoidalni valni oblik, nego dvosmjernu
struju bez ograničenja valnog oblika. Dodatni senzori i elektronike kontroliraju amplitudu,
valni oblik) i frekvenciju (tj. brzina rotora) na izlazu pretvarača. Dva ključna parametra
motora bez četkica su konstante kV i Km.
Karakteristike
Na rotoru su smješteni permanentni magneti, a stator se sastoji od namota, predstavlja oblik
AC motora s električkom komutacijom.Motori ne sadrže četkice ili komutator i mnogo su
efikasniji i imaju manje trenje. Mogu se pogoniti većim brzinama bez rizika oštećenja četkica,
što nije slučaj sa DC motorom s četkicama. Kroz statorske namote se propušta struja koja
dovodi do zakretanja rotoraStrujom koja prolazi kroz statorske namote se upravlja izvana
elektroničkom sklopom, tzv. elektroničkim komutatorom, koji zamjenjuje klasični komutator.
Uloga komutatora je promjena polariteta u vodičima ovisno o njihovom položaju u odnosu na
uzbudno polje.

Slika 5.1.Presjek DC motora bez četkica

Da bi se moglo ispravno odrediti kroz koji namot će elektronički komutator poslati struju, i
struju kojeg smjera, takav motor mora imati senzor položaja rotora na osnovu čega se upravlja

23
radom samog komutatora (zahtijeva se dodatna elektronika i senzori položaja). Ovaj senzor
koristi Hall-ov efekt.
Ukoliko se poluvodič nalazi u električnom polju, ono će uzrokovati protok električne struje
gustoće J. Ako okomito na smjer tog polja djeluje magnetsko polje indukcije B, javlja se,
transverzalno na oba polja, novo električno polje jačine: E = RH J B gdje je RH Hallova
konstanta.
Usporedba s istosmjernim motorom
Električna veza između rotora i izvora istosmjerne struje se ostvaruje tako da se izvor
istosmjerne struje spoji na grafitne četkice koje kližu po komutatoru. Prilikom prelaska
četkice s jedne na drugu lamelu komutatora postoji trenutak kada se izvor nalazi u kratkom
spoju uslijed čega dolazi do iskrenja četkica. Iskrenje četkica dovodi do polaganog
uništavanja grafitnih četkica, ali i do oksidacije i trošenja komutatora, pa je to glavni
nedostatak ove vrste motora. Učinkovitost istosmjernog motora bez četkica je 85-90%, dok je
istosmjernog motora s četkicama 75-80%.Najveća prednost motora bez četkica je vrlo
jednostavna kontrola brzine okretaja koja se izvršava preko elektroničkog kontrolera brzine.
Životni vijek motora bez četkica je višestruko duži od klasičnog motora sa četkicama, i veći je
od 20 000 radnih sati.

Slika 5.2.Prikaz DC motora sa i bez četkica

24
Osnovna struktura elektronički komutiranog motora
Na statoru se nalazi trofazni simetrični namotaj (slično kao kod asinkronog motora) uglavnom
spojen u zvijezdu, a na rotoru su postavljeni permanentni magneti. Konfiguracija magneta
prema Slici 5.2. zahtjeva najkvalitetnije magnetske materijale (SmCo, NdFeB) da bi se
ostvarila zadovoljavajuća magnetska indukcija u zračnom rasporu. Ekvivalentni zračni raspor
u sebi uključuje stvarni zračni raspor uvećan za debljinu permanentnih magneta budući da
permanentni magneti imaju permeabilnost približno jednaku zraku (μr =1). Raspodjela namota
na statoru, te izvedba i položaj magneta na rotoru osiguravaju da se pri konstantnoj brzini
vrtnje u namotu statora induciraju fazne elektromotorne sile trapeznog valnog oblika s
trajanjem ravnog dijela trapeza od 120° električnih. Elektromagnetski moment EKM-a može
se izraziti pomoću snage u zračnom rasporu i kutne brzine rotora:

(5.1.)

gdje su ea, eb, ec fazne EMS inducirane poljem permanentnih magneta, ia, ib, ic fazne struje, a
ω kutna brzina rotora.
Da bi stroj razvijao konstantan moment u zračnom rasporu struje moraju imati oblik
pravokutnih impulsa koji se po širini, fazi i predznaku poklapaju s intervalom u kojem je
EMS te faze konstantna. Postoji šest intervala u električnom periodu za koje je karakteristično
da struja teče kroz dvije faze, a u trećoj je jednaka nuli Slika 5.4. U svakoj šestini periode stroj
se praktički ponaša kao istosmjerni motor, s tim da se uzbuda nalazi na rotoru a armatura na
statoru. Svaku šestinu periode vrši se komutacija struje s faze na fazu, a budući da se ta
komutacija ne vrši pomoću kolektora i četkica kao kod istosmjernih motora, već pomoću
elektroničkog pretvarača ovaj se motor i naziva elektronički komutirani motor.

Slika 5.3.Blok shema upravljačkog kruga

25
Slika 5.4.Oblici faznih struja u ovisnosti od položaja rotora

5.2. Elektronički kontroler brzine(ESC)

Elektronički kontroler brzine ili ECS je


elektronski sklop čija je funkcija da upravlja
brzinama elektromotora, njegovim smjerom, a može
služiti i kao dinamička kočnica (Slika 5.5.). Najčešće
se koristi kod motora bez četkica gdje generira izvor
trofazne struje niskog napona koja služi kao energija
motoru. ESC može biti izveden kao samostalna
jedinica koja se potom priključuje u kontrolni kanal
prijamnika ili može biti integriran u prijemnik što je češći slučaj. Slika 5.5. Prikaz ESC-a

Funkcija
Bez obzira na način korištenja ESC interpretira upravljačke informacije ne kao
mehaničke pokrete što bi bio slučaj kod serva već više na način da mijenja brzinu
prebacivanja mrežnih tranzistora ili FETa. Upravo je brzina prebacivanja tranzistora uzrok
karakterističnom visoko-piskutavom zujanju koje motor emitira a posebno je primjetno pri
nižim brzinama. Moderniji ESC-ovi uključuju eliminacijski krug baterije ili BEC koji služi za
reguliranje napona za prijemnike, a ujedno uklanja potrebu za odvojenim baterijama za
prijemnike. BEC-ovi su obično regulatori napona linearnog moda. DC BEC-ovi su u širem

26
smislu PWM regulatori za elektromotor. ESC generalno prihvaća ulazni PWM servo signal od
50 Hz čije trajanje varira između 1 i 2 ms. Kada se u 1ms isporučuje signal od 50 Hz ESC
odgovara isključivanjem DC motora priključenog na njegov izlaz. 1.5 ms trajanje ulaznog
signala dovodi motor na otprilike pola brzine, a u slučaju 2ms ulaznog signala motor radi u
punoj brzini.
ESC za motore bez četkica:
ESC sustavi za motore sa četkicama jako se razlikuju po dizajnu i nisu kompatabilni za
motore bez četkica. ESC sustav i za motore bez četkica u osnovi upravljaju trofaznim
motorima bez četkica tako da šalju niz signala za rotaciju. Motori bez četkica su postali
veoma popularni među modelarima radio kontroliranih modela zbog svoje učinkovitosti,
snage, dugovječnosti i male težine u odnosu na tradicionalne motore sa četkicama. Međutim
AC kontroleri za motore bez četkica su mnogo složeniji od kontrolera za motore sa četkicama.
Ispravna faza ovisi o rotaciji motora, a pozadinski se EMF iz motora koristi za otkrivanje ove
rotacije. Računalno programirani kontroleri brzine obično imaju korisničko- specificirane
opcije koje dopuštaju postavljanje niskonaponske granice, kočenje i smjer vrtnje. Promjena
smjera motora može se postići prebacivanjem bilo koja dva od tri voda iz ESCa na motor.
Klasifikacija:
Kontroler se obično rangira prema maksimalnoj struji npr. 25 A Mnogi moderni ESCovi
podržavaju nikal-metal hibridne, litij-ion polimere i litij-željezo fosfatne baterije s nizom
ulaznih i cut-off napona. Tip baterije i broj povezanih ćelija važan je prilikom odabira
eliminacijskog kruga baterije (BEC), bilo da je samostalna jedinica ili ugrađen u kontroler.
Veći broj povezanih ćelija rezultirat će smanjenom snagom a stoga i nižim brojem serva koje
podržava integrirani BEC ukoliko se koristi linearni regulator napona. Dobro dizajnirani BEC
koristeći prebacivački regulator ne bi trebali imati slična ograničenja.

27
Slika 5.6. Prikaz spajanja sučelja na kontroler

Daljinsko upravljanje aplikacijama:


Automobili- kontroler dizajniran za sportski upotrebu u automobilima ima reverzibilnu
sposobnost. Noviji sportske kontrole mogu imati tako jaku reverzibilnu sposobnost da se ne
mogu koristiti u utrkama. Dizajniraju se posebne kontrole za utrke pa neke čak imaju i
dodatnu prednost sposobnosti dinamičkog kočenja. Postavljanjem električnih opterećenja
preko armature ESC daje snagu motoru da djeluje kao generator. To čini armaturu težom za
okretanje, usporava ili zaustavlja model. Neki kontroleri dodaju korištenje regenerativnog
kočenja.
Helikopteri-Kontroler dizajnirani za radio-kontrolere helihoptera ne zahtijevaju
karakteristike kočenja, niti zahtijevaju obrnuti smjer. Mnogi high-endhelihopter ESCovi
pružaju „ Governormod “ koji podešava okretaje motor na zadanu brzinu.
Zrakoplovi - Kontroleri dizajnirani za radio kontrolu zrakoplova obično sadrže nekoliko
sigurnosnih značajki. Ukoliko je energija koja dolazi iz baterije nedovoljna da nastavi
pokretati elektromotor ESC će smanjiti ili isključiti napajanje motora i omogućiti daljnje
korištenje krila, kormila i funkcije dizanja. To pilotu omogućuje da zadrži kontrolu nad
zrakoplovom koji će nastaviti klizati ili letjeti na maloj snazi.
Brodovi- kontroleri dizajnirani za brodove obavezno su vodonepropusni. Takva se
struktura značajno razlikuje od ne morskog tipa ESC-a. Javlja se potreba za hlađenjem motora
što se realizira na način da voda cirkulira oko motora ili pomoću negativnog vakuuma u

28
blizini izlaznog pogona osovine. Kao i automobilski tako i brodski ESC-ovi imaju sposobnost
dinamičkog kočenja i reverzibilnu sposobnost.
Dronovi-kontroleri su bitna sastavnica modernih dronova koji nude veliku snagu, visoku
frekvenciju, visoku razlučivost, trofazno AC napajanje za motore u izuzetno malom
kompaktnom paketu. U potpunosti ovise o promjenjivoj brzini kojom motor pokreće
propelere. Ova sloboda promjenjivosti brzine i RPM kontrola čine svu potrebnu kontrolu za
let drona. Visina je određena količinom energije na sva četiri motora. Kretanje naprijed
postiže se bržim kretanjem stražnjeg dijela od prednjeg dijela. Kretanje u stranu ostvaruje se
bržim kretanjem lijeve ili desne strane. Sve se to postiže kombinacijom usporavanja i
ubrzavanja pojedinih motora, s time da se dva rotora rotiraju u smjeru kazaljke na satu, a dva
u smjeru obrnutom od kazaljke. Dronovi se razvijaju velikom brzinom i pružaju vrlo stabilne
radne nosače za video kamere, koje mogu služiti za pokrivanje sportskih događanja,
poljoprivredna istraživanja, pregled električnih stupova, povijesna istraživanja isl.

Programsko sučelje
Većina modernih ESC-ova sadrži mikrokontroler tumač ulaznog signala i na odgovarajući
način kontrolira motor koristeći ugrađeni program ili softver. U nekim je slučajevima moguće
mijenjati tvornički softver alternativnim javno dostupnim, softverom. To se radi kada se želi
ESC prilagoditi za neku određenu primjenu. Neki ESC-ovi imaju tvornički ugrađen softver s
mogućnošću nadogradnje od strane korisnika, dok drugi zahtijevaju nadogradnju od strane
programera

5.3. Baterija
Litij-polimer baterija (Li-Poly, LiPo, LIP) pripada skupini punjivih baterija na bazi litija.
Tehnološki predstavlja generaciju baterija koje su naslijedile litij-ionsku bateriju.

Osobine su joj uglavnom iste kao kod prethodnice. Vrlo je lagana zbog litijevih elektroda,
vrlo velika gustoća energije koja je skoro dvostruko veća od obične NiMH baterije, veći
nazivni napon od napona koji je u baterijama na bazi nikla. Za razliku od niklovih baterija nije
ju nužno održavati, jer nije podložna nikojim štetnim efektima poput memorijskog kad ju se
ne koristi niti kristalizacijskog. Zbog toga nema potrebe za periodičnim pražnjenjem, a može
ju se puniti u bilo kojem vremenu. Tehnološki pomak je elektrolit. Čini ga polimer koji se
dade oblikovati u razne oblike, što sve prethodne generacije baterija nisu imale mogućnost.

29
Budući da ove baterije mogu biti vrlo tanke, primjenjivost se odmah pokazala kod mobilnih
telefonskih uređaja, prijenosnih računala i RC model i drugdje.

Slabosti litij-polimer baterija su dvije. Osjetljivije su na niske temperature, a životni vijek im


je kraći, otprilike koliko i kod baterija koje su dvije generacija unazad, nikal-metal-
hibridnoj bateriji.

Slika 5.7. Prikaz LiPo baterije

Broj ćelija od koje je izrađena pojedina LiPo baterija označava se slovom S. Poznajući taj
podatak lako možemo saznati nazivni napon baterije. Ovdje je nekoliko primjera Lipo
baterija:

• 3,7 V baterija = 1 ćelija x 3,7 V (1S)

• 7,4 V baterija = 2 ćelije x 3,7 V (2S)

• 11.1 V baterija = 3 ćelije x 3,7 V (3)

Kapacitet baterija se izražava u mAh mili-amper-satima. Iako to nije direktan pokazatelj


koliko je energije u bateriji jednostavnije je za svakodnevnu upotrebu jer nam govori koliko
će dugo baterija trajati. Ako baterija ima kapacitet 1000 mAh ona može davati struju od

30
jednog ampera kroz vremenski period od jednog sata. U stvarnosti kapacitet ovisi o struji koju
crpimo iz baterije, ako je potrošnja jako velika kapacitet će biti manji. Baterija od 1000 mAh
može davati 2 A kroz period od pola sata, ali ako iz nje trošimo 5 A neće izdržati 15 minuta
ispraznit će se znatno prije.

Princip rada

Baš kao i kod drugih litij-ionskih ćelija, LiPo rade na principu interkaliranja i de-interkalacije
litija iz pozitivne elektrode litij-iona i negativne elektrode litij-iona, dok tekući elektrolit
pruža vodljivost medija. Da bi se spriječio izravni dodir elektroda, postoji mikroporozni
separator koji se nalazi između elektroda i omogućuje prolazak iona dok čestice materijala
ostaju na elektrodama.

Pražnjenje

Brzina pražnjenja je broj koji nam pokazuje kojom brzinom se ioni kreču od anode ka katodi
odnosno kojom se brzinom baterija prazni. U svijetu RF LiPo baterija brzina pražnjenja se
označava sa slovom „C“. Ako imamo bateriju od 10C to znači da se baterija može isprazniti
10 puta brže od vrijednosti kapaciteta baterije koja naznačena na njoj. Baterija od 1000mAh
sa oznakom pražnjenja 10C nam može dati konstantnu struju od 10A.

Punjenje

Napon Lipo ćelije ovisi o samom kemijskom spoju i varira od 2.7-3.0 V (prazna ćelija) do o
4,20-4,35 V (potpuno napunjena ćelija). Točni naponi punjenja trebaju biti navedeni u
tehničkim karakteristikama baterije, gdje se podrazumijevanjem da ćelija trebali biti zaštićena
od strane punjača koji neće dopustiti da ih se prenapuni, ili nekakvog kontrolera koji neče
dopustiti pretjerano pražnjenje baterije.

Lipo baterije su pogođene istim problemima kao i druge litij-ionskie baterije. To znači da
preopterećenje, pretjerano pražnjenje, prekomjerna temperatura, kratki spoji, mehanička
oštećenja mogu rezultirati napuhivanjem baterije, puknućem kućišta, curenjem elektrolita pa
čak i požarom. Sve vrste Li-ion baterija podložne su napuhivanju zbog visokog napona
punjenja ili pre-naboja, zbog laganog isparavanja elektrolita. To može dovesti do raslojavanja,
a samim time i lošeg kontakta unutarnjih slojeva ćelija, što pak pridonosi smanjenu
pouzdanosti i ukupnog života baterije.

31
Slika 5.8. Oštećena LiPo baterija na mobilnom telefonu

32
6. Trup broda

Glavni parametri koji karakteriziraju oblik trupa broda su: - glavne dimenzije i njihovi
međusobni odnosi, - koeficijenti brodske forme, - istisnina broda i njezino težište, - krivulja
površine rebara (areala rebara), - položaj težišta broda. Forma i geometrija broda Brod u
plovidbi morem pod utjecajem je mnoštva parametara. Neki od njih dolaze iz okoline, drugi
od pomoraca koji brodom upravljaju, dok su treći posljedica osobina koje je brodu odredio
brodograditelj. Brodograditelj utječe na osobine broda izborom veličine, oblika trupa,
konstrukcije, strojeva, opreme itd. Osobine broda su u najvećoj mjeri određene formom trupa
i njenim geometrijskim značajkama. Zbog toga je geometrija broda temelj brodograđevnog
znanja. Forma brodskog trupa redovito nije jednostavnog geometrijskog ili analitičkog oblika,
premda u najširem smislu postoje i takva jednostavna plovila (pontoni, plovni dokovi, plutače
itd.). Formu broda treba odrediti i kasnije reproducirati prilikom gradnje s velikom točnošću.
Prikaz forme može biti trodimenzionalan, putem fizičkog modela, dvodimenzionalan putem
nacrta u više projekcija ili numerički putem tablica koordinata točaka na formi, spremljenih
na papiru ili kao računalni zapis u datoteci. Geometrijske osobine brodske forme utječu na
njegovu plovnost, stabilnost, otpor, propulziju, upravljivost, dakle praktički na sva svojstva
broda. Određivanje geometrijskih osobina brodske forme vezano je za način definiranja
forme.

Princip prikaza brodske forme dijelimo na četiri načina:

1. Stvarna forma,

2. Teoretska forma,

3. Prikaz nacrtom linija,

4. Prikaz računalom.

6.1. Oblik i konstrukcija struktura trupa.

Oblici trupa mogu se podijeliti na više načina. Jedan od njih je prema Froudeovom broju,
tj. omjeru brzine i korijena dužine broda. Dijele se na:

 Deplasmanske - Fn (Froudeov broj) <1


 Poludeplasmanske - 1<Fn<3
 Glisirajuće - Fn>3

33
Trup broda se najčešće sastoji od valjanih limova te valjanih i složenih profila koji su
međusobno spojeni, najčešće zavarivanjem. Po globalnoj podjeli konstrukciju broda dijelimo
na:

 Kostur (konstrukciju strukture)


 Oplatu.

Kostur predstavlja poprečne okvire rebra i uzdužne nosače, izvedene, u pravilu, iz profila
koji služe u svrhu davanja željenog oblika brodu i osiguravaju mu traženu čvrstoću, a ujedno
omogućavaju sigurno postavljanje oplate na svoju strukturu.

Oplata predstavlja vanjsko opločenje koja se postavlja na konstrukciju kostura i izvodi se, u
pravilu, iz limova za kostur i međusobno spojenih, a osigurava brodu nepropusnost i sudjeluju
u osiguranju njegove čvrstoće.

Unutar globalnih grupacija postoje područja koja se nalaze na svakom brodu, bez obzira na
tip, vrstu i namjenu i to:

 dno broda,
 uzvoj,
 bokovi (bočna oplata ili dvobok),
 završni voj (razma),
 paluba.

6.2. Stvarna forma

Stvarna forma broda obuhvaća sve oblike koji se mogu naći na vanjskom dijelu trupa. Ona
uključuje sve neravnine (namjerne ili nenamjerne), spojeve, zavare, preklope, promjene u
debljini oplate, zaštitne trake, anodne protektore, sve privjeske itd.. Red veličine tih detalja je
redovito znatno manji od reda veličine cijelog broda. Za opisivanje forme i provođenje svih
hidrostatičkih proračuna potpuno opisivanje stvarne forme broda bilo bi potpuno nepraktično.
Tome je više razloga. Proračuni se moraju provesti prije potpunog definiranja svakog detalja i
naravno prije gradnje broda. Prema tome veći broj sitnih detalja još nije definiran.
Izglađivanje forme koja bi sadržavala sve detalje bilo bi vrlo teško izvodivo a i proračuni
geometrijskih veličina vrlo komplicirani. Zbog toga se brodska forma rastavlja na idealiziranu
glatku formu (teoretsku formu) i na razne dodatke i privjeske koje realna forma ima.

34
6.3. Teoretska forma

Teoretska forma definira idealizirani osnovni oblik broda. Ovisno o materijalu gradnje
trupa, teoretska forma je definirana na različite načine. Drvenim i kompozitnim brodovima
teoretska forma je definirana na vanjskoj plohi oplate. Kod drvenog broda debljina oplate više
nije zanemariva u odnosu na veličinu broda pa bi opis s unutrašnje strane predstavljao
neprihvatljivo odstupanje od stvarnog stanja. Premda je debljina oplate drvenih brodova
redovito promjenjiva u područjima uz kobilicu, u području uzvoja i završnih vojeva, Slika
6.1., prema, ipak ta odstupanja nisu velika i teoretska forma se opisuje tako da prolazi
vanjskom plohom većeg dijela oplate dna ili boka. Pretpostavlja se da je sva oplata jednolike
debljine, a razlike se kasnije na pojedinim lokacijama mogu uzeti u obzir posebnim
postupkom samo za višak debljine iznad pretpostavljenog.

Slika 6.1. Glavno rebro drvenog broda

6.4. Prikaz forme nacrtom linija

Teoretska forma broda redovito se prikazuje nacrtom brodskih linija. Taj nacrt
predstavlja prikaz niza prosječnih krivulja s teoretskom formom broda. Redovito se nacrt
linija sastoji od 4 ili 5 crteža smještenih na zajednički nacrt. Svaki od tih crteža predstavlja
ortogonalnu projekciju presjeka teoretske forme i niza jednoliko razmaknutih međusobno
paralelnih ravnina, slično izohipsama na zemljopisnoj karti. Redovito se prikazuju crteži
rebara, vodnih linija i uzdužnica. Ovom nacrtu se često dodaje i crtež svih tih krivulja u
izometrijskom prikazu. Dodatni crtež može sadržavati presjeke forme ravninama koso
položenim prema simetralnoj ravnini broda - crtež širnica.

35
Slika 6.2. Forma trupa nacrtana linijom

6.5. Prikaz forme računalom

Prikaz forme računalom osniva se na definiranju krivulja ili ploha brodske forme
analitičkim metodama, najčešće raznim oblicima spajanja. Postoji veliki broj raznih pristupa u
praktičnoj realizaciji kao i veći broj komercijalno dostupnih računalnih paketa za definiranje
forme brodova. U odnosu na ručno crtanje, rad računalom omogućava brži, točniji i detaljniji
prikaz forme uz dodatne prednosti dobivanja crteža, ili prikaza u tri dimenzije i to u raznim
fazama definiranja forme. Razvoj računala i metoda računalne grafike danas je praktički
istisnuo ručno crtanje forme.. Na Slici 6.3. je prikazana odabrana forma koja če biti korištena
u diplomskom radu.

Slika 6.3. Forma broda nacrtana računalom


36
7. Realizacija plovila
U ovom poglavlju detaljno ćemo se upoznati sa izradom praktičnog dijela diplomskog
rada. Praktični rad sadrži izradu trupa broda, instalaciju pogona u brod te instalaciju senzora i
elektronike.

7.1. Izrada trupa broda

Kod izrade trupa broda moramo odabrati oblik trupa i građevni materijal. Za oblik trupa smo
se odlučili za glisersko dno zbog veoma malog hidrodinamičkog otpora koje pruža voda.
Glisersko dno razvija veću brzinu za manju uloženu snagu motora u odnosu na druge oblike
korita. Građevni materijal za izradu trupa je drvo koje ćemo na kraju zaštiti stakloplastikom
kako bi spriječili utjecaj mora na korito i neželjeni ulaz mora u sami brod.
Prvi korak pri izradi trupa je izrada kostura brod, kostur broda smo izradili od
vodonepropusne šperploče koja ima dobru čvrstoću te veoma dobro podnosi opterećenja koja
djeluju na brod.

Slika 7.1. Građevni materija kostura


Iz drvene ploče smo izrezali elemente na kombiniranom stroju za obradu drva te ih učvrstili
vijcima i potom zalijepili dvokomponentnim ljepilom za drvo. Na sljedećoj Slici 7.2. je
prikazan završeni kostur plovila.

37
Slika 7.2. Prikaz kostura broda
Slijedeći korak je izrada ploča dna ,bočnih oplata i palube koje su izrađene od lesonita.
Lesonit smo izabrali zbog njegove veoma male mase i mogućnosti savijanja kako bi bilo lakše
izraditi oplate za dno, bokove i palubu.

Slika 7.3. Građevni materijal za dno ,bokove i palubu.


Kao i kod izrade kostura segmente dna, bokova smo izrezali na kombiniranom stroju te ih
uhvatili stegama i zalijepili.

38
Slika 7.4. Izrada dna i bokova plovila

Slika 7.5.Prikaz korita broda

Na isti način smo izradili palubu i poklopac plovila, nakon izrade modela broda u drvu cijelog
smo premazali u stakloplastiku kako bi mu povećali čvrstoću i zaštitili ga od utjecaja mora.
Nakon jednog dana sušenja brod smo prebrusili te stavili na njega primer premaz kako bih se
boja bolje uhvatila za stakloplastiku, potom je brod obojan premazom koji je otporan na sol i
morsku vodu.

39
Slika 7.6. Završna faza izrade broda

7.2. Postavljanje pogona i kormila

Nakon što je trup plovila gotov slijedi ugradnja pogona u samo plovilo, kod ugradnje
pogona treba obratiti pažnju da ne poremetimo plovnost broda tako da nam brod ne bi bio u
debalastu (pogrešno raspoređena masa unutar broda, te je brod nakrivljen na jednu stranu),
važno je obratiti pažnju i na instalaciju same pogonske osovine te je potrebno centrirati da ne
dođe do neželjenih grešaka u kursu plovila tokom navigacije.

Slika 7.7. Montaža pogona


40
Motor smo smjestili u kremeni dio broda te fizički odvojili krmeni prostor od pramčanog radi
smanjenja utjecaja motora na elektroniku plovila. Motor je postavljen na gumene nosače kako
bi se smanjila vibracija koju motor proizvodi pri svom rad. Sljedeće na redu je izrada
pogonske osovine i košuljice u kojoj se rotira osovina. Osovina je izrađena od inox šipke
promjera 3mm. Inox smo izabrali zbog njegove velike čvrstoće i otpornosti na morsku vodu i
koroziju, na kraju osovine je izrađen navoj od 2.5 mm na koji je postavljen pogonski vijak i
zatim učvršćen sigurnosnom maticom. Košuljica osovine je izrađena od mjedi vanjskog
promjera 5 mm i unutarnjeg promjera 3.2 mm. Važno je napomenuti da se prostor u košuljici
mora uljiti kako bi se smanjilo trenje između košuljice i pogonske osovine. Kako je motor
postavljen vodoravno a košuljica je pod određenim kutom u odnosu na ravninu motora
potrebno je bilo ugraditi homokinetički zglob. Njegova uloga je da omogućuje pogonskoj
osovini da prenosi snagu (okretni moment) preko promjenljivog kuta, pri konstantnoj brzini
obrtanja, bez značajnog porasta u trenju i slobodnom hodu.

Slika 7.8. Ugradnja pogonske osovine i kormila vanjski dio plovila


41
Zbog vibracija koje pogonska osovina prenosi na košuljicu javio se problem klizanja košuljice
kroz krmeno zrcalo prema unutrašnjosti broda, da bi spriječilo daljnje klizanje na košuljicu
smo s vanjske strane krme montirali cijev od inoxa unutrašnjeg promjera 5 mm. a vanjskog
6mm. koja zaustavlja klizanje i osigurava nam normalan rad pogona.

Kormilo smo ugradili po sredini krme broda , dok je servo motor pozicioniran u unutrašnjosti
krmenog djela tako da nesmetano može odvijati svoje zadatke Slika 6.7. Postavljen je u
neposrednoj blizini kormila zbog lakše izrade mehaničke veze sa kormilom, te da bis e
smanjio utjecaj deformacije inox šipke koja povezuje servo motor i kormilo.

7.3. Postavljanje senzora

Senzori Arduino sustava su veoma osjetljivi na vanjski utjecaj, stoga ih je potrebno


smjestiti gdje će smetnje najmanje utjecati na njihov rad,. Provu i krmu plovila smo fizički
odvojili tako da bi što bolje zaštitili elektronski dio od utjecaja pogonskog djela koji je
smješten u krmu broda.

Ugradnja kompasa

Kompas treba ugraditi ako je to moguće na sredinu broda i na najnižu moguću poziciju kako
bi se smanji utjecaj ljuljanja, propinjanja i uranjanja pramca plovila. Kompas smo ugradili u
na sredinu pramčanog dijela plovila tako da je orijentacija osi bila:

 X – os – smjer naprijed nazad


 Y – os – lijevo desno
 Z – os – gore dolje

Magnetometar je jako dobro podnosio zahtjeve koje mu sustav nalaže tako da nije trebalo
vršiti nikakve korekcije vezane za poziciju ugradnje.

42
Slika 7.9. Mjesto i način postavljanja magnetometra

Ugradnja akcelerometra

Akcelerometar ADXL 345 je vrlo osjetljiv na vibracije te ga je potrebno ugraditi na mjesto


gdje će utjecaj vibracija biti što manji. Kako motor plovila stvara vibracije tokom rada
akcelerometar je potrebno ugraditi na što dalju poziciju od motora . U našem slučaju smo
akcelerometar postavili odah iza magnetometra i to na silikonski suspenzor kojemu je uloga
smanjiti vibracije okoline koje utječu nam sam senzor. Orijentacija osi akcelerometra je
jednaka kao i kod magnetometra.
Njegova uloga u plovilu je kompenzacija magnetometra, tako da magnetometar ima uvijek
točno očitanje kursa bez obzira na os ljuljanja broda. ADXL veoma dobro kompenzira
ljuljanje i valjanje pod kutovima od – 45 ° do + 45 ° što je zadovoljavajuće za ovaj sustav.

43
Slika 7.10. Instalacija Akcelerometra ADXL345
Ugradnja GPS-a
Kao i u slučaju sa kompasom GPS moramo ugraditi na sredinu broda i na što nižu poziciju
tako da smanjimo utjecaj vanjskih smetnji ka što je ljuljanje i valjane. GPS treba biti na
mjestu gdje mu fizički ništa neće ometati prijem signala, pa smo ga smjestili odmah do
akcelerometra i magnetometra. Uređaj ima antenu i pojačalo tako da prijem signala na
otvorenom prostoru ne bi trebao imati nikakvih smetnji.

44
Slika 7.11. Ugradnja GPS modula

Ugradnja nRF modula


Za razliku od ugrađenih senzora prijemnik signala mora biti na uzvišenom mjestu kako bi što
bolje primao informacije od odaljenog odašiljača. NRF modul smo smjestili na sredinu
plovila na palubi tako da se protok informacija odvija sa što manje smetnji. Ovaj prijamnik
također u sebi ima pojačalo i antenu od 5dB kako bih mogao primati podatke na većim
udaljenostima od običnog nRF modula.

45
Slika 7.12. nRF modul ugrađen na plovilo

Elektronički kontroler brzine


ESC smo ugradili odmah iza motora da olakšamo njegovo spajanje na motor i na napajanje iz
baterije

Slika 7.13. Postavljanje elektroničkog kontrolera brzine

46
Spajanje komponenti na Arduino Mega

Ugrađene komponente plovila potrebno je zalemiti na mikrokontroler Arduino Mega i


omogućiti im komunikaciju. Lemljenje je bilo potrebno zbog vibracija koje proizvodi plovilo,
dok su obični spojevi uobičajeni u arduino razvojnim projektima te bi bili loši i veze bi
pucale.
Kompas zahtjeva napajanje od 5 V tako da smo napajanje kompasa spojili na pin GND i pin
5 V Arduina dok je komunikacija išla preko I2C protokola te je modul spojen na SDA i SCL
pinove Arduina Mege.
Akcelerometar razmjenjuje podatke sa kontrolerom preko I2C protokola te je spojen na
Arduino na pinove SDA i SCL, senzor zahtjeva napajanje od 3.3 V i spojen je na pinove 3.3
V i GND kontrolera.
Komunikacija GPS uređaja se odvija preko serijskog porta Arduina Mege tako da je pin RX
GPS-a spojen na TX1,pin a TX pin je spojen na RX1 pin kontrolera. Napajanje GPS-a je
spojeno sa 3.3 V i GND pinom Arduino Mege.
NRF modul zahtjeva vanjsko napajanje od 3.3 V zbog ograničenja Arduna koji može dati
struju od 40 mA na svom izlazu dok je potrošnja modula oko 150 mA. NRF je zbog toga
spojen na stabilizator napona od 3.3 V koji mu na svom izlazu daje dovoljnu struja za
normalan rad. Komunikacija prijemnika se odvija preko SPI protokola.

Tablica 7.1. shema spajanja pinova

Signal RF modul Arduino Mega


GND 1 GND Stabilizator napona
VCC 2 3.3 V Stabilizator napona
CE 3 9
CSE 4 53
SCK 5 52
MOSI 6 51
MISO 7 50
IRQ 8 Slobodan pin

Servo motor zahtjeva napajanje od 5 V te je spoje na pinove 5 V i GND kontrolera dok je pin
za komunikaciju spojen na digitalni izlaz 5 Arduina.

47
Napajanje elektroničkog kontrolera brzine je također spojeno na 5 V i GND pinove dok je
komunikacija spojena na digitalni pin 6.

Slika 7.14 Prikaz komponenti spojenih na mikrokontroler

48
8. Programski dio sklopa

Kako bi razumjeli princip rada potrebno je objasniti logiku rada sklopa, te matematiče
modele i programska rješenje koja su korištena u ovom radu. Osnovni elementi za izvedbu
automatskog rada plovila su kompenzirani magnetometar, GPS modul, nRF i Arduino Mega.

8.1. Izračun udaljenosti i brzine

GPS uređaj ima zadatak da u svakom trenutku sprema koordinatu na kojoj se nalazio, bio
u pokretu ili na mjestu, poznajući trenutnu koordinatu na kojoj se nalazimo i odredišnu
koordinatu koja je poslana na Arduino Mega preko nRF modula Sve dobivene vrijednosti
uvrštavano u 'haversine' formulu za izračunavanje udaljenosti između dvije točke - to jest,
najkraća udaljenost iznad Zemljine površine
𝛥𝜑
𝑎 = 𝑠𝑖𝑛2 ( 2 ) 𝑐𝑜𝑠 𝜑1 ∗ 𝑐𝑜𝑠 𝜑2 ∗ 𝑠𝑖𝑛2 (𝑠𝑖𝑛²(𝛥𝜆/2) (8.1.)

𝑐 = 2 ∗ 𝑎𝑡𝑎𝑛2(√𝑎, √(1 − 𝑎) (8.2.)


𝑑 =𝑅∗𝑐 (8.3.)

a,c – pomoćne varijable


Δφ – razlika između latitudalnih kordinata (φ2 - φ1)
Δλ – razlika između longitudinalnih kordinata (λ2 – λ1)
R – radijus Zemlje ( 6371000 metara )
d – udaljenost od krajnje toče
Pomoću haversinove formule smo izračunali udaljenost od trenutno točke do točke cilja,
udaljenost se osvježava svaku sekundu, te u svakom trenutku znamo udaljenost od cilja.
Poznajući ovaj parametar lako možemo regulirati brzinu kretanja broda u ovisnosti o
udaljenosti od cilja. Uvjeti su postavljeni tako što je brod udaljeniji od cilja brzina mu je
veća, a kako se približava smanjiva mu se brzina i kada dođe na 5 metara od odredišta brzinu
pada na nulu.

Logika određivanja brzine:

if(Distance <=5||Distance >500)


Velocity = 0; // ako je udaljenost manja od 5m ili veća od 500m brzina je nula
else if(Distance <500&&Distance>20)
Velocity = 128; // za udaljenost veću od 20 m i manju od 500m brzina je maksimalna

49
else
Velocity= 96; // za ostale vrijednosti brzina je jednaka polovica brzine
Treba napomenuti da je postavljeno ograničenje od 500 m, tj. da je brzina za sve udaljenosti
veće od 500 metara jednaka nula, radi zaštite od mogućnosti izlaska iz radio dometa.

8.2. Regulacija zakreta kormila

Poznajući trenutnu GPS koordinatu i odredišnu koordinatu preko 'haversine' jednadžbe se


izračunava azimut. Azimut je kut u ravnini obzora između vertikalne ravnine koja prolazi
opažanim predmetom i vertikalne ravnine u kojoj se umiruje magnetna igla slobodno obješena
u Zemljinu magnetnom polju, bez utjecaja nekog umjetnog magnetskog polja. Obično se kut
mjeri od magnetnog sjevera u smjeru satne kazaljke. U ovom slučaju azimut je smjer pod
kojim bi plovilo trebalo voziti da bi stiglo do odredišne točke.

θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )


θ - Azimut
Δλ - razlika između longitudinalnih kordinata (λ2 – λ1)
φ2 – latituda točke cilja
φ1 – longituda točke cilja
Kao što je spomenuto ranije magnetometar je potrebno kompenzirati da bi se odstranile
smetnje koje proizvodi ljuljanje i valjanje broda. Zadatak magnetometra je da u svakom
trenutku na mikroprocesor šalje informacije o trenutnom smjeru u kojem se plovilo kreće,
zatim kontroler sprema te podatke i obrađuje i ih.
Sada su poznate sve informacije za izračun i regulaciju kormila, magnetometar daje trenutni
smjer plovidbe ,dok GPS uređaj preko haversine jednadžbe daje vrijednost kuta azimuta.
Oduzme li se od azimuta trenutni smjer plovila točno je poznato koliko plovilo odstupa od
kursa i za koliki kut se treba zakrenuti brod.
Logika upravljanja kormilom

if(Bearing1-heading2 <180||Bearing1-heading2 >-180) // ako je Azimut – trenutni smjer


manje d 180 ili veće od -180
{
Rudder=Bearing1-heading // zakret kormila je Azimut - smjer
}
else if(Bearing1-heading2 >180||Bearing1-heading2 <-180) // ako
je Azimut – smjer veće od 180 ili manje od - 180

50
{
Rudder=360-Bearing1+heading2; // zakret kormila je 360°- Azimut
+smjer
}
else // za ostale vrijednosti
{
Rudder=0+Bearing1- heading2; // zakret je 0 + Azimut - smjer
}

Mehanički zakret kormila je ograničen na 45°i -45° i dobivene vrijednosti zakreta kormila
treba mapirati u zadano područje. Da bio se smanjile oscilacije potrebno je izraditi regulator,
kako zakreti kormila ne bi bili prenagli i remetili navigaciju.

Ispis koda regulatora


if(d >= -180 && d < -150) //ako je zakret kormila između -180 i -
150
return 90; // zakreni kormilo na 90°
else if(d >= -150 && d < -120)
return 85;
.
.
else if(d >= -3 && d < 3) // ako je zakret kormila između -3°i 3°
return 45; // zakret kormila je 45°
else if(d >= 3 && d < 6)
return 40;
.
.
else if(d >= 120 && d < 150)
return 5;
else if(d >= 150 && d < 180) //ako je zakret kormila između 150°i 180°
return 0; // zakret kormila je 0°

Regulator je osmišljen tako kada je izračunati zakret kormila unutar određenih granica npr.
<180° a veći od 150° treba zakrenuti kormilo za kut od 0° odnosno ići maksimalno u desnu
stranu. Također kada je plovilo unutar okvira od +- 3° izračunatog smjera nema nikakvih
događanja sve dok ne izađe iz tog okvira.
Servo motor koji upravlja kormilom ne može raditi sa negativnim vrijednostima kuta, pa je
područje rada kormila od -45°do 45° prebačeno u područje od 0° do 90°

51
200

150

100

50

0
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90
-50

-100

-150

-200

Graf 8.1. Regulacija upravljanja kormilom

Crvenom linijom je označena razlika kuta između Azimuta i smjera plovidbe, dok je plavom
bojom označen kut za koji se kormilo mora zakrenuti. Iz grafa je vidljivo da je zakret kormila
0° za razliku Azimuta i smjera od –180° do -150, 45° za razliku od -3°do 3° i tako sve do
zakreta od 90° za područje od 150°do 180°.
Na sljedećim slikama prikazan je brod u stacionarnom stanju i u navigaciji.

Slika 8.1. Brod u stacionarnom stanju na moru

52
Slika 8.2. Brod u navigaciji

8.3. Shema upravljanja plovilom

Shema upravljanja je zamišljena da plovilo prima koordinate od odašiljača, obrađuje ih i


izračunava putanje po kojim ide do zadanih lokacija. Podatci se na plovilo šalju preko
kontrolera koji je spojen na prijenosno računalo, na serijski monitor Arduino sučelja unosimo
prije definirane brojeve, koje Arduino Nano koji je smješten unutar kontrolera obrađuje i šalje
ih preko nRF odašiljača plovilu. U plovilu je smješten Arduino Mega koji procesuira
primljene podatke i nastavlja sa zadanim radom. Ovakva kontrola plovidbe može se odraditi
na udaljenosti unutar 1 km, ako želimo povećati domet plovila i odašiljača postoji mogućnost
za ugradnju GSM ili satelitskog Arduino modula.

53
Slika 8.3. Princip upravljanja brodom

8.4. Testiranje plovila

Testiranje je izvedeno tako da su unesene fiksne GPS koordinate u plovilo, pa je ono


trebalo odraditi uprogramiranu rutu. Prilikom testa izašlo ja nekoliko nepravilnosti na vidjelo,
kod prvog testa osovina broda nije bila pod pravim kutom u odnosu na krmeno zrcalo, te je
plovilo uvijek skretalo više u desno. Greška sa osovinom je ispravljena i mogao se obaviti
novi test. Prilikom testa kormilo je imalo vrlo loš utjecaj na plovidbu, odnosno imalo je
premale zakrete i brod je vrlo sporo reagirao na komande. Da bi se ispravila greška bilo je
potrebno u regulator postaviti grublju podjelu u odnosu na prethodne postavke (veći zakret
kormila). Nakon ispravaka grešaka plovilo je besprijekorno odradilo zadatke i bilo je spremno
za daljnju upotrebu.
54
Slika 8.4 Završni test
Završni test je obavljen između točaka T1 i T2 prikazanih na Slici 8.4. Crvenom linijom je
označen pravac po kojemu brod treba putovati dok je ljubičastom bojom označena linija
kojem se kretalo plovilo prilikom testa. Zadatak plovilu je bio stići od toče T1 do točke T2 sa
što manjim izobličenjem putanje. Treba napomenuti kako su testovi obavljani na potpuno
mirnom moru i sa smanjenom brzinom da bi se greške što lakše primijetile. Iz slike je vidljivo
kako je vrlo mali prebačaj prilikom navigacije te da je plovilo vrlo brzo došlo na kurs s
obzirom da je udaljenost između točaka svega 60 metara.
Nakon završenog testiranja plovila cilj je odraditi navigaciju između pet točaka koje se nalaze
unutar malog zaljeva a udaljenost između krajnjih točaka je manja od 500m kako bi brod
ostao u dometu nRF primopredajnika. Plovilo je krenulo iz iste početne točke kao i u
testiranju te su mu naknadno poslane odredišne koordinate preko nRF odašiljača.

55
Slika 8.5. Putanja navigacije plovila
Na Slici 8.5. su prikazane točke od T1 do T5 redoslijedom koji je plovilo obrađivalo zadane
lokacije koje su mu bile poslane, crvenom bojom označene su postavljene putanje, dok je
crnom bojom prikazana putanja koju je slijedilo plovilo. Treba napomenuti kako je navigacija
odrađena pri istoj brzini kao i testiranje zbog potrebe za snimanjem navigacije.
Plovilo je postavljeno u točku T1 te mu je preko nFR modula poslana odredišna koordinata
T2, iz slike je vidljivo kako plovilo jako dobro prati putanju i vrlo brzo dolazi do ustaljenog
stanja, kada je plovilo stiglo u doseg od 2 metra od odredišne točke motor se gasi i čeka se
nova točka. Potom su poslane koordinate točke T3 i brod nastavlja navigaciju prema novoj
točki. Nakon dolaska u točku T3 brod je dobiva koordinatu koja zahtjeva okret za 120 °te je iz
slike vidljivo kako je navigacija odrađena sa zadovoljavajućim odstupanjima, prilikom
plovidbe prema posljednjoj točci bio je prisutan veliki utjecaj valova i morske struje a plovilo
je vrlo dobro kompenziralo njihov utjecaj i stiglo do krajnje točke. Plovilo je testirano unutar
dometa nRF modula kako ne bi došlo do zamrzavanja kontrolera i nestanka plovila iz
vidokruga.

8.5. Prednosti i nedostatci realiziranog driješenja

Prednosti sklopa su relativno niska cijena za mogućnosti koje sklop može obavljati,
mogućnost ugradnje dodatnih senzora, poboljšanje komponenata, reprogramiranje plovila te
mogućnost promjene područja primjene. Također prednost sklopa je dostupnost mnogih

56
senzora i njihova mala cijena, otvorenost Arduino sučelja i veoma velika podrška od strane
Arduino razvijača.
Nedostatci izrađenog sklopa su nestabilnost Arduino Mega i Nano kontrolera, dolazi do
zamrzavanja kontrolera te je potrebno ponovno pokretanje za nastavak normalnog rada,
također Arduino sučelje nije projektirano za primjenu u području koje je u kontaktu sa
morskom vodom. Jedan od nedostataka je domet plovila koji je je jednak dometu radio
modula, ugradnjom GSM modula ili satelitskog modul omogućili bi upravljanje sve dok je
brod u mogućnosti primati nove koordinate

Tablica 8.1. Trošak pri izradi projekta


Naziv Količina Trgovina Cijena
Arduino Mega 1 ebay 55.61 Kn
Arduino Nano 1 ebay 23.45 Kn
Neo-6 GPS 1 ebay 81.47 Kn
ADXL 345 1 ebay 13.40 Kn
HMC5883L 1 ebay 6.69 Kn
NRF24L01 2 ebay 58.55 Kn
Hobbypower ESC 30A 1 ebay 56.95 Kn
Turnigy D2836 1 Njuškalo 170.00 Kn
SG90 Servo 1 ebay 14.14Kn
Kormilo 1 ebay 13.40 Kn
Pogonska osovina 1 ebay 103.50 Kn
Homokinetički zglob 1 ebay 23.47 Kn
Stabilizator napona 3.3 V 2 Elmatis 54.00 Kn
Baterija Turnigy 2200 mAh 1 Njuškalo 130 Kn
Drvo 1 Brodomerkur 100.00 Kn
Lijepilo 1 Brodomerkur 27.00 Kn
Boja 1 Brodomerkur 85.00 Kn
UKUPNO / / 1016.63 Kn

57
9. Zaključak

Sustav bespilotnog plovila realiziran je pomoću Arduino platforme. Arduino sa svojim


gotovim hardverom i besplatnim integriranim razvojnim okruženjem, pruža amaterima i
stručnjacima jednostavnu interakciju s okolinom. Arduino je također bio dobar izbor za
spajanje senzora i ostalih uređaja zbog posjedovanja već gotovih biblioteka koje omogućavaju
jednostavno spajanje i upotrebu istih. Prednost korištenja Arduino sučelja je mogućnost
daljnje dorade i poboljšanja. Prednost rada sa Arduino sučeljem je dostupnost i niska cijena
komponenti, te je izrada diplomskog rada stajala oko 1000 kuna.
Sustav svoju primjenu može naći za nadzor pomorske granice, za nadzor marina, nadzor
ribogojilišta, sustav također može poslužiti za praćenje brodova ili ribe.
Iz svega prethodno navedenog može se zaključiti da su predstavljeni kontroler zasnovan na
Arduino platformi i program za navigaciju potpuno funkcionalni te smo ostvarili potpuno
autonomni način rada.
Autonomija plovila je oko jednog sata rada na punoj brzini, maksimalna brzina koju plovilo
može postići je 10 čvorova, pa je udaljenost koja se može prijeći prilikom navigacije otprilike
10 nautičkih milja.

58
Ključne riječi
Arduino, autonomno plovilo, upravljanje bespilotnom brodicom, kompenzacija
magnetometra, nRF24L01

Literatura

[1] Arduino https://www.arduino.cc/


[2] Bonković, M.; Musić J.; Stančić I.; „Mikroregulatori i ugradbeni mrežni sustavi u Arduino
razvojnom okruženju“, Split, FESB, 2013.
[3] Akcelerometar ADXL 345 https://learn.adafruit.com/adxl345-digital-
accelerometer/overview
[4] Magnetometar HMC 5883L http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-
magnetometr-hmc5883l.html
[5] GPS NEO 6Mhttps://www2.u-blox.com/images/downloads/Product_Docs/NEO-
6_DataSheet_(GPS.G6-HW-09005).pdf
[6] nRF 24L01 https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-
HowTo?responseToken=0cc3c7f015bf1353105fe59b6510457a8
[7] Motor Turnigy D2836 https://hr.wikipedia.org/wiki/Elektri%C4%8Dni_strojevi
[8 ] Elektronički kotroler brzine https://en.wikipedia.org/wiki/Electronic_speed_control
[9] ] ESC Hobypower 30A
http://www.hobbyking.com/hobbyking/store/__15205__Hobby_King_30A_ESC_3A_UBEC.
html
[10] Baterija Turnigy 2200 mAh 3S http://dronesarefun.com/BatteriesForUAV.html
https://en.wikipedia.org/wiki/Lithium_polymer_battery
[11] Izrada broda http://www.joskodvornik.com/konstrukcija/konstrukcija-broda.pdf
[12] Proračun udaljenosti i azimuta http://www.movable-type.co.uk/scripts/latlong.html
http://forum.arduino.cc/index.php?topic=48112.0

59
Popis oznaka i kratica

GPS globalni sustav za pozicioniranje


nRF bežični primopredajnik
RX prijamnik serijske komunikacije
SDA serijska podatkovna linija
SCL serijska podatkovna linija
SPI serijsko periferno sučelje
TX predajnik serijske komunikacije
PWM pulsno širinska modulacija
LED svjetleća dioda
RF radio frekvencija
Li-Po litium polimer
Arduino mikrokontroler
DC istosmjerna struja
ESC elektronički kontroler brzine
EMS elektromotorna sila
Fn Froudeov broj
GND uzemljenje
I2C komunikacijski protokol
GSM globalni sistem za mobilnu komunikaciju
UART univerzalni asinkroni prijemnik/odašiljač
CPU procesor
Arduino IDE Arduino razvojno okruženje

60
Sažetak

U diplomskom radu realizirana je funkcionalna bespilotna brodica sa vlastitim propulzijskim


sustavom i upravljanjem. Brodicom se upravlja bežično preko radio frekvencijskih modula,
tako da se brodici šalje niz GPS koordinata koje ona slijedi. Sustav za vođenje brodice, koji je
održava na kursu i dovodi ka cilju se sastoji od GPS prijemnika, magnetomera i
akcelerometra. Povezivanje senzora, komunikacijskih sustava i aktuatora realizirano je
Arduino kompatibilnim mikrokontrolerom. Objašnjena je detaljno izrada plovila, spajanje
komponenti, logika i kod programa koji upravlja brodom, te je analizirana navigacija.

61
Dodatak
include <Wire.h>
#include <HMC5883L.h>
#include <ADXL345.h>
#include <SoftwareSerial.h> // biblioteka koja omogučava serijsku
komunikaciju Arduina i GPS uredjaja
#include <TinyGPS.h> //biblioteka za koja sadrži funkcije GPS uređaja
#include <math.h>
#include <Servo.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

HMC5883L compass;
ADXL345 accelerometer;
RF24 radio(9,53);

unsigned long fix_age;


//softserial definiran na pinovima 2 (Rx) i 4 (Tx)
TinyGPS gps; // TinyGPS objekt
// funkcije
void gpsdump(TinyGPS &gps);
bool feedgps();
void getGPS();
Servo esc;
Servo myservo;
const int role_pin = 2;

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };


typedef enum { role_ping_out = 1, role_pong_back } role_e;
const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};
role_e role;

// globalne varijable
long lat1, lon;
float LAT, LON;
float heading1;
float heading2;
float LAT1,LON1,LAT2,LON2, LAT3,LAT4,LON3,LON4;
float LAT5 =43.473667;
float LON5 =16.565093;
float LAT6 =43.473353;
float LON6 =16.566929;
float LAT7 =43.472919;
float LON7 =16.566897;
float LAT8 =43.473692;
float LON8 =16.565884;
float LAT9 =43.474147;
float LON9 =16.565168;
float Bearing;
int Bearing1;
int Rudder;
int Rudder1 =45;
float Distance;
int Velocity=128;
float R = 6371000;
int poruka[1];
int kormilo(int d);

62
void setup()
{
esc.attach(6);
myservo.attach(5);
Serial1.begin(9600); // start gps komunikcije (preko soft seriala) na
brzini 9600
Serial.begin(9600);
printf_begin();

radio.begin();
radio.setRetries(15,15);
radio.setPayloadSize(8);
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
radio.startListening();
radio.printDetails();

int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT);

// Inicializacija ADXL345

if (!accelerometer.begin())
{
delay(500);
}

accelerometer.setRange(ADXL345_RANGE_2G);

// Inicializacija HMC5883L
while (!compass.begin())
{
delay(500);
}

// Namještanje moda mjeranja


compass.setRange(HMC5883L_RANGE_1_3GA);

// Namještanje moda mjeranja


compass.setMeasurementMode(HMC5883L_CONTINOUS);

// Takt komunikacije
compass.setDataRate(HMC5883L_DATARATE_30HZ);

// Broj uzoraka
compass.setSamples(HMC5883L_SAMPLES_8);

// Kalibracijski
compass.setOffset(2, -109); OO

// Nekompezirana vrijednost
float noTiltCompensate(Vector mag)
{
float heading = atan2(mag.YAxis, mag.XAxis);
return heading;
}

63
// Tilt kompezacija
float tiltCompensate(Vector mag, Vector normAccel)
{
// Pitch & Roll

float roll;
float pitch;

roll = asin(normAccel.YAxis);
pitch = asin(-normAccel.XAxis);

if (roll > 0.78 || roll < -0.78 || pitch > 0.78 || pitch < -0.78)
{
return -1000;
}
float cosRoll = cos(roll);
float sinRoll = sin(roll);
float cosPitch = cos(pitch);
float sinPitch = sin(pitch);

// Tilt compensation
float Xh = mag.XAxis * cosPitch + mag.ZAxis * sinPitch;
float Yh = mag.XAxis * sinRoll * sinPitch + mag.YAxis * cosRoll -
mag.ZAxis * sinRoll * cosPitch;
float heading = atan2(Yh, Xh);
return heading;
}
//Isparvni kut
{
if (heading < 0) { heading += 2 * PI; }
if (heading > 2 * PI) { heading -= 2 * PI; }
return heading;
}
void loop()
{ //Pomoćne varijable
float a;
float c;
if ( radio.available() )
{
unsigned long got_time;
bool done = false;
while (!done)
{
char inChar;
done = radio.read( poruka, sizeof(poruka) );
Serial.println("Primljen paket naredbi!");
delay(20);
}
radio.stopListening();
got_time=millis();

radio.write( &got_time, sizeof(unsigned long) );


printf("Sent response.\n\r");

radio.startListening();
Serial.println(poruka[0]);
}
// odabir GPS kordinate
if (poruka[0]==49)
{
LAT2 = LAT5;

64
LON2 = LON5;
}
if (poruka[0]==50)
{
LAT2 = LAT6;
LON2 = LON6;
}
if (poruka[0]==51)
{
LAT2 = LAT7;
LON2 = LON7;
}
if (poruka[0]==52)
{
LAT2 = LAT8;
LON2 = LON8;
}
if (poruka[0]==53)
{
LAT2 = LAT9;
LON2 = LON9;
}
Serial.println(LAT2,7);
Serial.println(LON2,7);

// Očitavanje vektora
Vector mag = compass.readNormalize();
Vector acc = accelerometer.readScaled();

//Izračun smjera
heading1 = noTiltCompensate(mag);
heading2 = tiltCompensate(mag, acc);

if (heading2 == -1000)
{
heading2 = heading1;
}

//Namještanje magnetske deklinacije


float declinationAngle = (3.0 + (37.0 / 60.0)) / (180 / M_PI);
heading1 += declinationAngle;
heading2 += declinationAngle;
heading1 = correctAngle(heading1);
heading2 = correctAngle(heading2);

// Prebacivanje iz radiana u stupnjeve


heading1 = heading1 * 180/M_PI;
heading2 = heading2 * 180/M_PI;

// Izlaz

Serial.print("Heading:");
Serial.println(heading2);

long lat1, lon;


unsigned long fix_age, time, date, speed, course;
unsigned long chars;
unsigned long year, month, day, hour, minute, second ;
unsigned short sentences, failed_checksum;

65
gps.get_position(&lat1, &lon, &fix_age); // funkcija koja očitava položaj
sa GPS uređaja
gps.get_datetime(&date, &time, &fix_age); // funkcija koja očitava GPS
vrijeme

//preracunavanje datuma i vremena


year = date % 100;
month = (date / 100) % 100;
day = date / 10000;
hour = time / 1000000;
minute = (time / 10000) % 100;
second = (time / 100) % 100;

// ispis vremena
Serial.print("Vrijeme -> ");
Serial.print(hour); Serial.print(":");
Serial.print(minute); Serial.print(":");
Serial.print(second);
Serial.print(" Datum : ");
Serial.print(day);Serial.print(".");
Serial.print(month); Serial.print(".");
Serial.print(year); Serial.println(".");
LAT1=LAT/1000000;
LON1=LON/1000000;

getGPS();
// ispis polozaja
Serial.print("Polozaj -> ");
Serial.print("Sirina : ");
Serial.print(LAT1,6);
Serial.print(" Duzina : ");
Serial.println(LON1,6);
Serial.println(" ");
//Rudder direction kormilo
LON3=LON1*M_PI/180;
LON4=LON2*M_PI/180;
LAT3=LAT1*M_PI/180;
LAT4=LAT2*M_PI/180;
Bearing =atan2(sin(LON2-LON1)*cos(LAT2),cos(LAT1)*sin(LAT2)-
sin(LAT1)*cos(LAT2)*cos(LON2-LON1));
Bearing = Bearing* 180/M_PI;
Bearing1=Bearing;
Bearing1=(Bearing1+360)%360;
Serial.print("Bearing");
Serial.println(Bearing1);
// petlja za određivane zakreta kormila
if(Bearing1-heading2 <180||Bearing1-heading2 >-180)
{
Rudder=Bearing1-heading2;
}
else
{
Rudder=360-Bearing1+heading2;
}
Rudder1=kormilo(Rudder);
myservo.write(Rudder1);
Serial.print("Zakret : ");
Serial.print(Rudder1);

//Udaljenost

66
a=sin((LAT4-LAT3)/2)*sin((LAT4-LAT3)/2)+(cos(LAT3)*cos(LAT4)*sin((LON4-
LON3)/2)*sin((LON4-LON3)/2));
c=2*atan2(sqrt(a),sqrt((1-a)));
Distance=R*c;
Serial.print("Udaljenost : ");
Serial.println(Distance);

// Petlja za proračun brzine

if(Distance <500||Distance>2)
{
Velocity = 128;
}
else
{
Velocity=0;
}
esc.write(Velocity);
Serial.print("Brzina : ");
Serial.println(Velocity);
}

// funkcije za rad sa GPS


void getGPS()
{
bool newdata = false;
unsigned long start = millis();
// ispisivanje novog stanja svkih 1000 ms (1 s)
while (millis() - start < 1000)
{
if (feedgps ()) // provjera ima li novih podataka
{
newdata = true;
}
}
if (newdata) //ako ima novih podataka
{
gpsdump(gps); // pozovi funkciju za ocutavanje
}
}
bool feedgps(){ // funkicja za provjeru ima li novih podataka na GPS
while (Serial1.available())
{
if (gps.encode(Serial1.read()))
return true;
}
return 0;
}
void gpsdump(TinyGPS &gps) // ocitavanje polozaja, i spremanje u globalne
varijable
{
gps.get_position(&lat1, &lon);
LAT = lat1;
LON = lon;
{
feedgps(); // potrebno da se ne gube znakovi i da se ne pojave checksum
pogreške
}
}
// Funkcija zakreta kormila
int kormilo(int d)

67
{
if(d >= -180 && d < -150)
return 90;
else if(d >= -150 && d < -120)
return 85;
else if(d >= -120 && d < -90)
return 80;
else if(d >= -90 && d < -60)
return 75;
else if(d >= -60 && d < -30)
return 70;
else if(d >= -30 && d < -20)
return 65;
else if(d >= -20 && d < -10)
return 60;
else if(d >= -10 && d < -5)
return 55;
else if(d >= -5 && d < -2)
return 50;
else if(d >= -2 && d < 2)
return 45;
else if(d >= 2 && d < 5)
return 40;
else if(d >= 5 && d < 10)
return 35;
else if(d >= 10 && d < 20)
return 30;
else if(d >= 20 && d < 30)
return 25;
else if(d >= 30 && d < 60)
return 20;
else if(d >= 60 && d < 90)
return 15;
else if(d >= 90 && d < 120)
return 10;
else if(d >= 120 && d < 150)
return 5;
else if(d >= 150 && d < 180)
return 0;
return 0;
}

68

You might also like