TalTech Iseauto valmib TalTech infotehnoloogia-ja inseneriteaduskonna tudengite ning Silberauto AS koostööna. Projekti ühe partnerina on kaasatud ka ABB.
Eelmisel korral tutvustasime lühidalt TalTechi Iseauto projekti ning selle aluseks olevat Mitsubishi i-Mievit koos juhtloogikaga. Seekord tutvustame Iseautole paigaldatud omatehtud kontrollereid, nende vajadusi ning miks üks või teine kontroller Iseauto juhtimiseks vajalik on. Sealhulgas on esimesed testid tehtud alloleval pildil oleva testautoga, millest on saanud meie platvorm, mille abil me saame kõik endaloodud riistvara ning tarkvara läbi testida.
Mikrokontrollerite kasutamine Iseautol on paratamatu, kuna nad aitavad tekitada samu signaale auto juhtimiseks, mida tekitab inimene kui ta auto rooli keerab, gaasi või pidurit vajutab või käiku vahetab. Ühel mikrokontrolleril võib olla väljund- ja sisendviikusid mõnest kuni paarisajani, mis kõik on ümberprogrammeeritavad vastavalt vajadusele. Iseauto projektis kasutame STMicroelectronics-i poolt toodetud kontrollereid. Peamised põhjused nende kasutamisel on lai valik erinevaid kontrollereid, suur kasutajaskond, mugav arendusliides ja loomulikult ka meie varasem kogemus nende kasutamisel. Kuna esimese arendusetapi raames oli vaja teostada hulganisti teste, siis modifitseerimise testauto juhtpneeli, et vajadusel kasutada nii isesõitvat funktsiooni kui ka manuaalset režiimi.
TalTechi Iseautos on ca 10 erinevat kontrollerit juba praegu. Osa neist on valmistatud auto tootja poolt ning me kasutame neid endiselt edasi, osa oleme aga asendanud enda arendatud kontrolleritega. Antud postituses keskendume kahele peamisele kontrollerile – nimetame neid Drive’ks ja Master’iks. Drive kontrolleri ülesandeks on auto juhtimiseks mõeldud seadmete kontrollimine. Master kontrolleri peamine ülesanne on vahendada infot erinevate kontrollerite ja arvuti vahel. Alloleval joonisel on näha Master kontrolleri versioon 1.2. Vasakul pool on näha toitepistikud ja 3 CAN liidese pistikut ning paremal pool ethernet pistik.
Master controller
Master kontrolleri peamine ülesanne, info edastamine õigele kontrollerile, sõltub sellest, millist tüüpi andmeid mingi kontroller vajab. Osa andmeid võib edastada teatud intervalli tagant, ajakriitilisi andmeid, mida on vaja kiirete otsuste tegemiseks, edastatakse koheselt peale saabumist.
Master peab olema võimeline suhtlema mõlema suunaliselt, nii teiste kontrollerite, i-Mievi elektroonilise kontrollüksusega (ECU) kui ka personaalarvutiga (PC). ECU suhtleb teiste seadmetega CAN-siini abil ja PC-l on kõige kiirem suhelda kontrolleriga etherneti abil. Otsustasime, et kõige mõistlikum on ka kontrollerite vaheline suhtlus teha CAN-siini abil. Seega on meil kohe sobiva Master kontrolleri valikuks olemas nõue, et ta peab toetama ethernet liidest ning kontrollerite ja ECUga suhtlemiseks vaja vähemalt kolme CAN liidese võimekust. Leidsime, et sobivaks kontrolleriks on STM32F767.
Info edastamisel kasutataval CAN-siinil on võimalik sõnumeid sisuliselt vaid ühe konkreetse protokolli abil edastada. Neid sõnumeid iseloomustab üks 11- või 29-bitine identifikaator ning kuni 8 baiti sõnumit. Meie kasutame Iseautol vaid 11-biti pikkuseid identifikaatoreid. Etherneti puhul on võimalik kasutada erinevaid protokolle, kuid meile sobiv on UDP protokoll, mis ei nõua kohalejõudmise kinnitust. Ühelt poolt puudub sõnumi kohalesaatmise kinnituse küsimise vajadus, kuna sõnumeid saadetakse 100 korda sekundis. Kui üks sõnum jääb vastu võtmata, tekib auto juhtimises hilinemine ca 10ms, mis pole kuni 20km/h liikuva sõiduki puhul nii kriitiline. Teisalt on igal sõnumil kaasas oma loendur, mille abil saame automaatselt tuvastada saadetud ja vastuvõetud sõnumite arvude erinevusi ning tuvastada selle abil võimalikke probleeme nii riistvaras kui tarkvaras.
Drive controller
Teine ja oluliselt keerulisem kontroller on Drive kontroller. Nagu eelpool mainitud, siis tema ülesandeks on auto liikumist juhtida – teisisõnu juhtida auto gaasipedaali, pidureid, rooli ja käigukangi. Kui eelmine kord tutvusime Mitsubishi i-Mievi juhtloogikaga, siis seekord vaatame, kuidas saab kontrolleriga seda juhtloogikat imiteerida.
Alustagem gaasipedaalist. Nagu eelmises postituses sai mainitud, siis on meil vaja tekitada kaks muutuva pingega signaali, kus põhi ehk MAIN signaal peab olema varu ehk SUB signaalist kaks korda kõrgem. Selliseid muutuva pingega signaale tekitatakse digitaal-analoogmuunduri (DAC) abil. Drive kontrolleris on kasutusel STM32F407 mikrokontroller ja sellel on selliseid muundureid sisse ehitatud kaks tükki, mida me ka kasutame.
Rooli pööramiseks tuleb meil juhtida roolivõimendi elektrimootorit, kusjuures voolu suund määrab ära, kuhu poole ning voolutugevus, kui kiiresti rattaid pööratakse. Selleks kasutame elektroonikalülitusena H-silda, mis võimaldab elektrimootorit mõlemas suunas juhtida. Iseautole oleme paigaldanud sellise H-silla, mis võimaldab meil voolutugevust pulsilaiusmodulatsiooni abil kontrollida. Kes soovib H-silla toimimise kohta täpsemalt lugeda, siis üks koht on näiteks siin (inglise keeles).
Käigukasti juhtimine on ülimalt lihtne, tuleb lihtsalt õigesse ECU sisendisse kõrge pingenivoo suunata. Kui mikrokontrollerite tavaline tööpinge on kas 3,3V või 5V, siis käigukasti kõrge signaal peab olema i-Mievil 12V. See teeb asja veidi keerulisemaks. Selleks et 3,3V-ga lülitada 12V, kasutame Iseautol abivahenditena optroneid, mille abil seome elektriliselt lahti kontrollerite juhtsignaali auto omast. See aitab kaitsta meie kontrollereid kui auto süsteemis peaksid tekkima häired või mõni komponent riknema, mis võib Drive kontrolleri läbi põletada.
Pidurisüsteemi väljatöötamisel Iseauto testautole pidime arvestama, et meil jääks auto orginaalpidurid kastusse selleks, et saaksime neid vajadusel kasutada. Seetõttu otsustasime, et kasutame piduritena BMW elektroonilist käsipidurit, mille paigutasime autos mehaanilise käsipiduri asemele. Kuna tavaliselt juhtitakse auto käsipidurit CAN liidese kaudu, aga meil antud käsipiduri spetsifikatsiooni ei olnud, siis võtsime vahelt välja käsipiduri juhtelektroonika ning asusime juhtime käsipiduri elektrimootorit otse. Kuna ka antud käsipiduri mootorit tuleb juhtida mõlemas suunas (peale ja maha võtmiseks), siis tuli jälle kasutada H-silla abi. Kuna sisseehitatud käsipiduri lõpulüliteid me kasutada ei saanud (saamaks aru, kui palju käsipidur on kas peale või maha tõmmatud), siis lisasime mootori juhtimise vooluringi voolusensorid. Kui käsipiduri mootori tarbitav vool ületas võrdlusväärtust, siis lõpetasime pidurite peale tõmbamise või vabastamise. Samuti on meil oluline teada, mis asendis käsipidur parasjagu on. Selleks kasutame käsipidurisse ehitatud enkoodrit, mis annab käispiduri mootori iga poolpöörde kohta impulsi. Selle abil on võimalik mootori pöörete arvu lugeda ehk teada saada mootori hetke asend.
Nüüd oli meil kõik vajalik testimiseks olemas – me saime pöörata rooli, hoida sobivat kiirust ning lülitada sisse soovitud käik. Lisasime autole ka releekarbi, mis võimaldab testauto arenduseesmärgil isejuhtivalt režiimilt käsijuhtimisse ümber lülitada.
Blogi valmimist toetavad Haridus- ja Teadusministeerium ning SA Eesti Teadusagentuur.