SVETELEKTRO

23. mája 2020   Verzia pre tlač Verzia pre tlač

Dvojkolesové balansujúce vozidlo – 3. časť


jogyno183

V tejto časti je spomenutá softvérová časť vozidla.

Telo programu je možné rozdeliť na viacero častí. Obsahuje funkcie, ktoré sa vykonávajú na základe prerušenia, alebo úlohy vykonávané postupne v hlavnom programe.

 

Prerušenia

V softvéri mikrokontroléra sú použité tri základné druhy prerušení. Prvé z nich je prerušenie pri dokončení analógovo-digitálneho prevodníka. Druhým je prerušenie jednotlivých časovačov. Posledným tretím je USART komunikácia slúžiaca na komunikáciu s modulom riadenia motorov Sabertooth. Jednotlivé prerušenia majú svoje priority a preto ak nastane počas určitého prerušenia iné, to predchádzajúce musí čakať na to s vyššou prioritou. Tabuľka nižšie zobrazuje zoznam použitých v tomto projekte:

 

Priorita prerušení mikrokontroléra ATmega644PA

 Priorita

 Zdroj prerušenia

 Definícia

1

 TIMER2_OVF

 Pretečenie časovača 2

2

 TIMER1_CAPT

 Zmena logickej úrovne na ICP pine

3

 TIMER0_COMPA

 Zhoda registrov TCNR0 a OCCR0A

4

 TIMER0_COMPB

 Zhoda registrov TCNR0 a OCCR0B

5

 USART0_RX

 Dokončenie prijímania USART zbernice

6

 USART0_TX

 Dokončenie odosielania USART zbernice

7

 ADC

 Dokončenie prevodu AD prevodníka

 

Analógovo-digitálny prevodník

Má na starosti dve úlohy. Sníma stav nabitia akumulátorov a taktiež slúži pri určovaní náklonu kormidla. Integrovaný desaťbitový AD prevodník obsahuje až osem kanálov, ktoré dokážu merať napätie. Využité sú len dva. V jeden okamih zvládne mikrokontrolér obslúžiť len jeden zo vstupov. Aby mohli byť hodnoty, čo najviac aktuálne a spracované v reálnom čase, je využitý integrovaný multiplexor. Prevodník pracuje v opakovacom móde. To znamená, že na pozadí neustále meria napätie na jednom zo zvolených vstupov. Odpadá tak potreba čakať na dokončenie prevodu. Týmto spôsobom môže mikrokontrolér spracovávať iné úlohy v hlavnom programe. Po dokončení prevodu vykoná prednastavenú úlohu. V tomto prípade sa inkrementuje jednoduché počítadlo, ktoré ja nastavené tak, že odmeria dvadsať hodnôt na jednom z vybraných kanálov a následne multiplexor prepne na druhý kanál, kde sa proces zopakuje. Týmto spôsobom bolo dosiahnutých presnejších hodnôt, keďže napätie na jednotlivých kanáloch sa skokovo menilo a značne ovplyvňovalo meranie jednotlivých kanálov. Následne bolo použité priemerovanie hodnôt. Posledných desať hodnôt sa uloží do poľa prvkov, ktoré sa následne sčítajú a predelia počtom hodnôt a teda číslom desať. Tento spôsob bol aplikovaný nezávisle na každom kanále.

Ako referenčné napätie bolo použité napájacie napätie mikrokontroléra 5V s pripojeným blokovacím kondenzátorom na vstupe AREF. Rozlišovacia schopnosť prevodníka je 1024 úrovní. Najnižšie možné napätie, ktoré je možné odmerať je 4,9mV. Vypočítané bolo podľa vzťahu:

kde  je najnižšie napätie, ktoré je možné odmerať,  je referenčné napätie a rozlišovacia schopnosť určená na základe desaťbitového integrovaného prevodníka.

Aby bolo možné dosiahnuť desaťbitový výsledok z prevodníka, musí byť jeho vstupná frekvencia v rozsahu 50-200KHz. Ak je frekvencia v spodnej hranici rozsahu, je výsledná hodnota najpresnejšia, avšak prevod trvá dlhšie. Ak je bližšia k hornej hranici rozsahu, je prevod rýchlejší ale výsledok menej presný. Frekvencia kryštálu pripojeného k mikrokontroléru je 16MHz. Aby bolo možné, získať nižšiu frekvenciu je potrebné použiť takzvanú predeličku s hodnotou 128, ktorá dokáže znížiť výslednú frekvenciu hodín AD prevodníka na požadovanú hodnotu. Výsledná hodnota 125KHz je vhodným kompromisom medzi rýchlosťou a presnosťou prevodu. Vypočítaná bola podľa vzťahu:

kde  je frekvencia hodín AD prevodníka,  je frekvencia hodín mikrokontroléra.

 

Parametre prevodníka

 Parameter

 Hodnota

 Rozlíšenie

 10 bitov

 Počet vstupných kanálov

 8 prepínaných pomocou multiplexoru

 Čas prevodu

 13 – 260μs

 Referenčné napätie

 0 – Vcc

 Vnútorné referenčné napätie

 2,56V alebo 1,1V

 Absolútna presnosť

 ±2 LSB

 Integrálna nelinearita

 0.5 LSB

 

Časovač 1

Prerušenie prvého časovača sa vykonáva pri detekcií impulzu na ICP pine mikrokontroléra, ktorý vytvorí Hallova sonda v blízkosti kolesa pri každom jeho otočení. Počas tohto prerušenia sa vykonávajú dve úlohy. Prvou z nich je inkrementácia počítadla najazdených kilometrov. Druhou úlohou je nulovanie registra TCNT1. Tento register sa neustále inkrementuje za určenú jednotku času vypočítanú podľa vzťahu:

kde  je perióda inkrementácie počítadla TCNT1,  je frekvencia hodín mikrokontroléra, ktorá má hodnotu 16MHz podľa pripojeného kryštálu a predelička bola nastavená v tomto prípade na hodnotu 1024. Výsledná vypočítaná perióda je rovná hodnote 64μs. Je to najnižšia hodnota času, ktorú dokáže tento časovač namerať. Pri každom otočení kolesa sa obsah registra TCNT1 uloží do registra ICR1 pre neskoršie spracovanie, a register TCNT1 sa vynuluje. Rýchlosť vozidla je následne možné vypočítať podľa vzťahu:

kde  je obvod kolesa s hodnotou 0,9 metra. Pretože boli použité dva magnety pripevnené na kolese oproti sebe je potrebné obvod predeliť hodnotou 2, je uložená hodnota počítadla TCNT1, T  je perióda inkrementácie počítadla TCNT1 a konštanta 3,6  slúži na prevod jednotiek rýchlosti z m/s na km/h. Z dôvodu, že obvod kolesa aj perióda inkrementácie je nemenná, je možné vzorec značne upraviť, pre rýchlejšie spracovanie programu. Výsledný prepočet je preto mierne odlišný a dosadením hodnôt do vzorca a následným zjednodušeným je výsledný vzťah:

Keďže použitý časovač je šestnásťbitový po dosadení hodnoty  je možné určiť minimálnu rýchlosť, ktorú je možné týmto nastavením odmerať a má hodnotu približne 0,4km/h.

 

Časovač 2

Keďže všetky výpočty a merania sú vykonávané v reálnom čase, je potrebné zabezpečiť nejaký druh multitaskingu. Je to dosiahnuté pomocou rozdelenia času na niekoľko časových okien rovnakej dĺžky, kedy beží vždy iná časť hlavného programu. Využíva sa prerušenie druhého časovača, ktoré nastáva pri pretečení počítadla TCNT2, kedy sa vykonajú dve funkcie. Prvou je nastavanie počítadla TCNT2 do prednastavenej hodnoty. Druhou úlohou je umožniť hlavnému cyklu vykonať požadované funkcie. Požadovaná dĺžka časového okna s hodnotou 20ms bola určená na základe požadovanej periódy vzorkovania PID regulátora. V tomto prípade bola použitá predelička s hodnotou 8. Keďže použitý časovač je len osembitový, podľa vzťahu:

nastane pretečenie každých 128μs. Ako je možno vidieť táto hodnota je s požadovanou hodnotou rádovo odlišná. Preto je potrebné urobiť dve úpravy. Prvou je upraviť časovač tak, aby pretečenie nastalo každých 100μs. Docieli sa to tak, že vždy pri pretečení počítadla nezačne počítať od nuly ale vždy sa nastaví na hodnotu 56. Druhou úpravou je pridanie podmienky, ktorá počíta počet pretečení. Ak je tento počet rovný hodnote 200, povolí sa vykonávanie hlavného programu.

 

Hlavný cyklus

Pred vykonávaním hlavného programu je potrebné nastaviť parametre jednotlivých častí miktrokontroléra a jeho pripojených periférií. Mikrokontrolér komunikuje s modulom pre riadenie motorov pomocou zbernice USART. Pri pripojení napájania vozidla dochádzalo k miernym trhnutiam motora, keďže na pinoch tejto zbernice bola krátko po štarte hodnota logickej úrovne 1. Preto je hneď na začiatku cyklu nastavená na hodnotu 0.

 

LCD displej

Pre vyobrazenie aktuálnych údajov na LCD displeji bola použitá knižnica od Petra Fleury, ktorá značne zjednodušuje prácu volaním jednoduchých funkcií. Kontrast bol vopred nastavený pomocou jednoduchého trimra. Pri spustení vozidla sa zobrazí uvítacia fráza a podsvietenie displeja sa následne postupne rozžiari. Na displeji sú vyobrazené aj špeciálne znaky ako napríklad ikona batérie alebo teplomeru. Tieto ikony nie sú v preddefinovanej tabuľke znakov a boli vytvorenie pomocou programu LCD Custom Char Builder. Tieto znaky sa vždy pri štarte nahrajú do pamäte LCD displeja, kde ich následne možno používať pomocou jednoduchého adresovania.

Pre vyobrazenie všetkých hodnôt na displeji je potrebný určitý čas. Takisto ako aj pri ostatných úlohách, musí to mikrokontrolér stihnúť do časového okna 20ms. Riešením je zobrazovať potrebné dáta po častiach. Preto každý segment displeja je prekresľovaný počas jednej sekundy len raz. Zamedzí sa tým aj problémom, kedy by hodnoty pri veľmi častom prekresľovaní boli nečitateľné. Tým, že prekresľovanie je prakticky okamžité, nie je možné si všimnúť postupnosť zobrazovania jednotlivých segmentov.

 

Podsvietenie displeja

Na vstup LED podsvietenia displeja je pripojený tranzistor BC639 spoločne s 390 ohmovým rezistorom. Je to z dôvodu vyššieho odberu prúdu, ktorý by výstup mikrokontroléra nezvládol. Privedením napätia na bázu tranzistora sa podsvietenie displeja rozsvieti, naopak uzemnením sa podsvietenie vypne. Pomocou takzvanej rýchlej pulzno-šírkovej modulácie, ktorá vo vysokej frekvencií mení tieto dve hodnoty napájania je možné meniť jas podsvietenia. Realizovaná je pomocou nultého časovača. V tomto prípade je hodnota predeličky takmer nepodstatná. Samozrejme, čím je frekvencia striedania napätia vyššia, tým je prípadné blikanie spôsobené neustálou zmenou napätia, menšie. Preto bola predelička nastavená na hodnotu 1 a teda frekvencia hodín mikrokontrléra sa zhodovala s frekvenciou inkremetácie časovača 0. Princíp fungovania spočíva v dvoch registroch TCNT0 a OCR0A. Prvý z nich slúži na už spomenuté počítanie. Druhý z nich slúži na určenie, kedy sa má výstup OC0A preklopiť. Keď je v registri TCNT0 nižšia hodnota ako v OCR0A je na výstupe maximálna hodnota napätia. Naopak keď je v registri TCNT0 vyššia hodnota ako v registri OCR0A nie je na výstupe žiadne napätie. Keďže je časovač osembitový, je možný nastaviť 256 hodnôt podsvietenia. Z dôvodu šetrenia akumulátorov bol obmedzený na hodnoty 0 až 100. Taktiež bol znížený aj z toho dôvodu, že pri pohľade na displej, nebol rozdiel medzi maximálnym a menej než polovičným jasom badateľný, ale prúdový odber bol samozrejme nižší, aj keď dosahoval rádovo len pár desiatok miliampérov.

 

LED svetlá

Pre ovládanie jasu používajú spoločný už vyššie spomenutý časovač 0. Princíp je veľmi podobný a takmer všetky funkcie spoločne zdieľajú. Na mikrokontrolér je pripojený ďalší tranzistor s dvomi hodnotami rezistorov. Tie boli vypočítané podľa typu LED diód. Je to z dôvodu, že každá LED dióda potrebuje iné napätie pre svoje fungovanie, ktoré je väčšinou dané jej farbou. Výpočet predradeného odporu pre paralelne zapojenie dvoch LED diód je podľa vzťahu:

Kde  je napätie zdroja,  je zápalné napätie diódy,  je prúd diódy a číslo 2  určuje počet zapojených diód paralelne.

 

Načítanie dát zo senzoru

Výstupom integrovaného obvodu sú dva druhy údajov. Prvý je výstup z akcelerometra. Ako by sa mohlo zdať výstupom nie sú údaje o zrýchlení, ale súradnice polohy v jednotlivých osiach x,y,z. Tie môžu nadobúdať hodnôt -1 až 1 podľa naklonenia každej osi. Aby bolo možné získať informáciu o uhle naklonenia, je potrebné použiť funkciu arkustangens  dvoch súradníc. Vypočítaná hodnota je v radiánoch. Preto pre prepočet je potrebné zmena jednotiek na stupne. Výpočet je daný vzťahom:

kde neznámy uhol je značený   y  a x  sú súradnice a hodnota π  je rovná 3,14. Pri gyroskope je prepočet úplne iný. Výstupom sú hodnoty o uhlovej rýchlosti, v jednotkách stupne za sekundu °/s. Aby bolo možné získať hodnotu aktuálneho uhlu, je potrebné dané hodnoty nejakým spôsobom ovzorkovať. Vzorkovanie prebieha každých 20ms. Pri každom načítaní obsahuje získaný údaj iba hodnotu o zmene uhla. Aby bolo možné zistiť aktuálny uhol, je potrebné vedieť aj hodnotu uhla predchádzajúceho. Výpočet je podľa vzťahu:

kde  je vypočítaný uhol,  je uhlová rýchlosť, a hodnota 0,02 je prepočítaný čas vzorkovania na sekundy. Takto získane uhly z akcelerometru a gyroskopu by za ideálnych okolnosti mali byť totožné. Rôzny šum a vplyv okolitého prostredia spôsobujú nepresnosti tohto integrovaného obvodu. Výsledná hodnota uhla z týchto dvoch zložiek je prepočítaná ako 98% z uhlu gyroskopu  a 2% uhlu z akcelerometra . Výsledný vzťah pre výpočet uhlu je:

 

I2C komunikácia

Pre komunikáciu so senzorom MPU6050 bola použitá voľne dostupná knižnica. Jej aplikovanie je veľmi jednoduché a pozostáva z niekoľko mála funkcií. Prvou je funkcia MPU6050_ReadAccel(n) kde miesto písmena „n“ je možné dosadiť hodnotu osi, z ktorej sa získa požadovaná hodnota z akcelerometra. Funkcia MPU6050_ReadGyro(n) pracuje podobným spôsobom a získa hodnotu danej osi z gyroskopu. Obsahuje aj ďalšie funkcie, ktoré však neboli použité.

 

PID regulátor

Pred začatím regulovania je potrebné obmedziť hodnoty uhlu. Je to najmä z dôvodu  už vyššie spomenutého rušenia a zamedzeniu nežiaducich vplyvov na regulátor, čo by malo za následok veľmi rýchle rozbehnutie motorov, a straty rovnováhy vozidla. Maximálny uhol, s ktorým je možné vozidlo vychýliť bol stanovený na ±15 stupňov. Táto hodnota bola určená ako maximálna, kedy dokáže ešte regulátor bezproblémovo vozidlo udržať a vrátiť do rovnovážnej polohy.

Po načítaní dát je možné postúpiť k riadeniu. Pre toto vozidlo bol použitý PID  regulátor. Ako už samotný názov vypovedá, obsahuje proporcionálnu P , integračnú I  a derivačnú D  zložku, ktoré sú nastavené pomocou konštánt ,  a . Tie slúžia pre nastavenie optimálnej rovnováhy vozidla. Pre výpočet akčných zásahov sú potrebne nasledovné vzťahy:

kde  je aktuálny uhol,  je predchádzajúci uhol. Výsledný akčný zásah je následne súčtom všetkých troch zložiek. Zo vzorca je možno vidieť, že integračná zložka, môže stúpať až do nekonečna, preto jej maximálna hodnota musela byť ohraničená nejakou hodnotou, ktorú keď presiahne už vyššiu mať nebude.

 

Nastavenie regulátora

Popísať reálny model rovnicami, prípadne ho nasimulovať v simulačnom programe, tak aby dokázalo vozidlo bezproblémovo balansovať je v praxi komplikované. Najjednoduchším spôsobom sa ukázalo, že konštanty je možné nastaviť nižšie popísaným postupom.

 

  1. Na začiatku je potrebné nastaviť všetky konštanty na nulu.
  2. Ďalším krokom je navyšovať konštantu  tak, aby sa vozidlo dokázalo udržať v rovnovážnej polohe. Následne túto hodnotu treba zredukovať o 10% aby začalo vozidlo oscilovať v okolí rovnovážnej polohy.
  3. Zložku  treba navyšovať tak, aby dokázalo vozidlo dosiahnuť rovnovážnu polohu čo najrýchlejšie.
  4. Poslednou konštantou  je možné doladiť správanie vozidla, ktoré je ovplyvnené dvomi vyššie spomenutými hodnotami. Táto konštanta rieši problémy s roztrasením vozidla a jeho následnú nestabilitu, ktorá ak nastane, vozidlo sa stane neriaditeľným.

 

Získanie dát z kormidla

Keď už je vyriešené balansovanie, je potrebné pridať možnosť otáčania vozidla do strán. Integrované kormidlo má na sebe pripevnený ďalší akcelerometer, tentokrát bez gyroskopu. Jeho výstupmi je napätie. Je pripojený na už vyššie spomenutý AD prevodník. Hodnoty napätia však nie sú prevádzané na stupne, ale len do digitálnej podoby, s ktorou sa následne pracuje. Je to z dôvodu, že pre ďalšie numerické operácie to nie je potrebné. Uhol vychýlenia kormidla do strán je priamo úmerný výstupnému napätiu. Najskôr sa určila referenčná nula a to tak, že kormidlo bolo vo zvislej úrovni a odčítala sa hodnota z prevodníku. Následne sa kormidlo naklonilo do oboch strán a odčítali sa hodnoty pre minimálne a maximálne vychýlenie. Tie sa nastavili ako strop, ktoré môže kormidlo dosiahnuť. V prípade väčšieho naklonenia sú tieto hodnoty nastavené na maximum. Výstup kormidla nezasahuje do riadenia okamžite, malo by to za následok silné trhanie kolies. Jeho zásah sa aplikuje postupne po častiach až do maximálnej hodnoty vychýlenia. Takisto aj pri návrate z vychýlenej polohy do základnej nulovej pozície je princíp rovnaký.

 

Fúzia dát

Keď už sú všetky potrebné hodnoty známe, je možné pristúpiť k rozpohybovaniu motorov. Na začiatku sa spraví jednoduchý súčet hodnôt z PID  regulátora a kormidla. Následne je získaná hodnota pre jeden z motorov. V prípade druhého motoru je potrebné hodnotu z kormidla naopak odčítať. Je to z dôvodu, že v prípade odbočenia do jednej zo strán, sa jedno z kolies bude otáčať rýchlejšie a druhé pomalšie. Problém nastáva v tom, že aj keď sú motory deklarované ako totožné, ich rýchlosť je mierne odlišná. Preto bolo aplikované mierne upravenie jedného z motorov, tak aby ich rýchlosť bola totožná.

 

USART komunikácia

Medzi DPS a modulom na riadenie motorov Sabertooth sa využíva USART komunikácia. Opäť bola použitá voľne dostupná knižnica. Rýchlosť prenosu bola nastavená na 9600 baudov. Jednoduchým posielaním hodnôt dĺžky jeden bajt je možné určiť rýchlosť, smer a jeden z dvoch motorov s ktorým je potrebné otáčať. V nižšie uvedenej tabuľke sú obsiahnuté presné hodnoty. Tieto hodnoty však nie sú rovnaké ako hodnoty z PID regulátora. Preto je potrebný prepočet hodnôt na iný rozsah podľa vzťahu:

kde hodnota X je nová vypočítaná hodnota a Y je pôvodná hodnota. Jednotlivé indexy označujú maximá a minimá, ktoré môže premenná dosiahnuť.

 

Hodnoty odosielané cez zbernicu USART

 Parameter

 Ľavý motor

 Pravý motor

 vzad

 1-63

 128-190

 stop

 64

 191

 vpred

 65-127

 192-255

 

Ukladanie najazdených kilometrov

Ako úložisko slúži pamäť EEPROM, ktorá je nezávislá od napájania a teda hodnoty ostanú uložené aj po reštarte. Najazdené kilometre sú v pamäti uložené ako počet polotáčok kolesa. Tie sú následne vždy prepočítané pri zapnutí vozidla na jednotky vzdialenosti. Týmto spôsobom je uchovávanie aktuálnych kilometrov presnejšie a zároveň vyžaduje menej pamäte EEPROM. Ukladanie prebieha vždy po stlačení tlačidla počas cyklu vypínania motorov.

 

Delenie hlavného programu

Už viackrát spomenuté okná sa vytvárajú jednoducho pomocou takzvaného prepínača pozostávajúcich z príkazov switch a case. Počet výsledných blokov je päťdesiat. Pre potreby tohto projektu je však využitých len desať z nich. Postupnosť vykonávaných funkcií je nasledovná:

  1. Vymazanie údajov na displeji.
  2. Podmienka kontroly stlačenia tlačidla, pre spustenie regulátora a zápis dát do EEPROM.
  3. Zobrazenie aktuálnej rýchlosti.
  4. Zobrazenie jednotiek rýchlosti „km/h“.
  5. Zobrazenie znaku batérie, na základe veľkosti nabitia akumulátorov.
  6. Zobrazenie aktuálnej hodnoty nabitia akumulátorov v percentách, alebo aktuálnej hodnoty teploty.
  7. Zobrazenie jednotiek nabitia akumulátorov, znak: „%“, alebo zobrazenie znaku meranej teploty „°C“.
  8. Zobrazenie aktuálnej hodnoty nabitia akumulátorov v kilometroch, alebo počet celkovo najazdených kilometrov.
  9. Zobrazenie jednotiek „km“.
  10. Nulovanie počítadla funkcie prepínača.

 

Programovanie mikrokontroléra

Posledným krokom je nahranie výsledného programu do mikroontroléra. Bol na to použitý jednoduchý čínsky USBasp AVR programátor, ktorého základ tvorí mikrokontrolér ATmega8. Keďže tento programátor nie je oficiálne podporovaný softvérom Atmel Studio musel byť ako programovací softvér použitý AVR Burn-O-Mat.

 

USBasp AVR programátor

 

Kompletovanie a testovanie

Keď už je návrh hotový, je možné pristúpiť k spájaniu jednotlivých súčastí. Pri prototypoch sa samozrejme stáva, že nie všetko bude vychádzať na prvý pokus. Preto aj pri tomto vozidle bolo zistených pár nedostatkov, ktoré bolo potrebné vyriešiť.

 

Kompletovanie konštrukcie

Ako prvé bolo spájanie dielov nosnej konštrukcie. Kolesá sú upevnené na nerezovej tyči, ktorú držia dva bočné a dva stredové hliníkové bloky. Aby sa táto tyč neotáčala spolu s kolesami, bol návrh ju ukotviť pomocou skrutiek, prechádzajúcich naskrz na už spomenutých dvoch bočných blokoch. Problém bol v tom, že týmto konštrukčným zásahom by pevnosť tejto tyče značne utrpela a mohlo by to mať za následok jej prelomenie. Preto sa neskôr zmenilo jej ukotvenie a bola prichytená v strede vozidla, kde namáhanie nie je až také silné. Keďže súčiastky už boli vyrobené ostali po nich dve nezaplnené diery.

Druhým problémom boli držiaky akumulátorov. Pri ohyboch plechov vznikajú mierne nepresnosti, keďže treba počítať s určitými úbytkami alebo prebytkami materiálu. Preto bolo potrebné, dodatočne zväčšiť otvory pre skrutky, ktoré ich držia.

Posledným tretím konštrukčným problémom je tyč kormidla pozostávajúca z dvoch návrhových vád. Aby bol pohyb kormidla plynulý, tak boli vytvorené dve milimetrové medzery medzi plastovými puzdrami a hlavným kĺbom. Vo výsledku to však spôsobuje značnú voľnosť a tým kývanie kormidla vpred a vzad. Taktiež k tomuto javu prispieva, nie úplne vhodný spoj medzi tyčou kormidla a jeho hlavným kĺbom. Tento problém nebolo možné vhodne a jednoducho vyriešiť. Na prevádzku výsledného vozidla nemá vplyv žiaden z problémov. Všetky diely boli spojené pomocou nerezových skrutiek, pérových podložiek, samoistiacich a klasických matíc.

 

Kompletovanie elektroniky

Najskôr bolo potrebné pospájkovať súčiastky dosky plošných spojov. Prvá verzia dosky plošných spojov bola len prototypovacia. Druhá verzia už vyriešila niekoľko nedostatkov a pridala pár funkcií, ako je lepšie umiestnenie konektorov a pridanie bluetooth modulu. Kritické bolo hlavne jej pevné pripevnenie k základni a správny uhol umiestnenia.

Po vozidle sú rozmiestnené rôzny druhy elektroniky. Vo vnútornej rúre kormidla sa nachádza zväzok štrnástich vodičov, ktoré sú potrebné pre dve integrované tlačidlá a zobrazenie informácií na displeji. Kritické pre návrh bolo miesto, kde je kĺb kormidla pretože tam môže dochádzať k ohýbaniu vodičov. Taktiež je tu pripojený senzor naklonenia kormidla. Všetky drôty boli dostatočne zafixované, aby nedošlo k žiadnej poruche. Taktiež vodiče vedúce od LED svetiel, snímaču rýchlosti a motorov boli spojené pomocou sťahovacích pások.

 

Testovanie softvéru

Keď je všetko hotové môže sa pristúpiť k testovaniu výsledného vozidla. Postup testovania a odlaďovania je značne komplikovaný. Musí sa riešiť viacero problémov, ktoré na začiatku neboli známe, alebo tie, ktoré vznikali postupným pridávaním funkcií.

Najväčším problémom bolo nastavenie PID regulátora tak, aby vozidlo dokázalo balansovať ako aj nastavenie vhodnej vzorkovacej frekvencie, ktorú dokáže mikrokontrolér spracovať.

Údaje zo senzorov boli značne zašumené. Aby bolo možné vidieť ich výstupné hodnoty v reálnom čase, bol vytvorený softvér v programovacom jazyku C#, ktorý vykresľuje aktuálne údaje do grafu. Komunikácia prebiehala pomocou bluetooth. Na základe týchto charakteristík bolo možné upraviť výsledný program mikrokontroléra. Odosielali sa hlavne údaje z akcelerometra a gyroskopu MPU6050, akcelerometra ADXL335, Hallovej sondy TLE4905L a napätie z batérií pre určenie maximálne a minimálnej hladiny nabitia akumulátorov.

 

Technické parametre

Rozmery vozidla sú 50cm x 80cm x 115cm. Váha je rovná hodnote 30 kilogramov a nosnosť je na hranici 100 kilogramov. Jeho maximálna rýchlosť, ktorú dokáže dosiahnuť je 10km/h. Dojazd na jedno nabitie záleží od štýlu jazdy a pohybuje sa v rozmedzí 10-20km. Výsledná cena vozidla ±600€.

 

 

 

Video

Jogyno SwagWay v1.7

Dnes sú to už presne 3roky, od prvej myšlienky postaviť si segway. (pekne dlho sa s tým babrem 😀 ) Čas rýchlo utiekol a vozidlo na dlhé letné večery na 90% hotové. Menšia skúška pred veľkým outdoorovým, záťažovým testovaním.

Uverejnil používateľ Daniel Janáček Streda 1. júna 2016

Ako sa vám páčil tento článok?
  • Páči sa mi (0)
  • Súhlasím (0)
  • Zábavné (0)
  • Informatívne (0)

Pridaj komentár