UAV juhtelektroonika - isetegemise rõõm - MIDA ?

[J]
Posts: 2776
Joined: Sun Aug 28, 2005 22:42
Location: Tallinn

UAV juhtelektroonika - isetegemise rõõm - MIDA ?

Post by [J] »

Lihtsalt mõned mõtted

Väga suur stabiilsus on saavutatav ilma igasuguse spetselektroonikata.
On olemas klass F1 - vabalend. Seal lendavad kõik lennukid ISE ja stabiilsus pole miski eriline probleem. Ükskõik mis asendist lähevad lennukid , kui ainult kõrgust jätkub, peagi normaallennule tagasi.
Helikopteritel on samuti olemas näiteks Heli-Max Axe EZ (simulaatoris RF3.5) või LAMA tüüpi helikopterid, mida on küllalt võimatu tagurpidi pöörata. Juhtimisesks piisab gaasist ja "pöördetüürist".
Seepärast ei näe küll mingit mõistlikku põhjust vigurlennuriistade elektroonika abil "reisilennukiks" tegemiseks.
Usun, et esimesed põhiprobleemid on mingi etteantud lennumarsruudi lendamine ja siis kõrgusehoidmine.
Näiteks "kollase" kohal autonoomne ringislend võimaldaks kestvusrekordit teha, mis juba oleks miski rakendus.
Mõistlik on ka side kadumise korral stardikohta tagasitulek, mis võimaldaks julgeid fotoretki jne.
AndrusT
Posts: 541
Joined: Mon Mar 05, 2007 19:41
Location: Tallinn

Post by AndrusT »

Esimene asi, mida ette võtaks, kui kunagi sinnamaani välja jõuan on kopteri saba hoidmise täiendamine magnetilise kompassiga. Mistahes kallis güro ei hoia saba õiges asendis kuithase kaua. Kopteri raam, mootor ega akud digitaalse magnetilise kompassi tööd ei sega. Olen testinud. Sellise mooduli istutaks vastuvõtja ja güro vahele. Kui kangi asend on keskel siis hakkab tööle kompassi aga muidu kuulatakse juhtsignaali puldilt.
User avatar
lauri
Administrator
Posts: 3057
Joined: Wed Jul 20, 2005 23:13
Location: Tallinn, Estonia
Contact:

Post by lauri »

Minule tundub kah nende "tavapäraste" kopterite UAV-ideks muutmine üpris küsitav tegevus. Olles veidi uurinud ja näinud mida mujal maailmas tehakse, siis... seda eriti ei tehta! UAV seisukohast juba eos stabiilne lennuriist on kõige A ja O vast ikkagi, kui just eesmärk pole helikiirusel lennata või midagi taolist.

"Tavapärase" kopteri stabiliseerimine ise-enesest on muidugi ka jälle eraldi teema.

Ehk siis on võimalik võtta stabiilne lendav mudel ja tegeleda selle autonoomse juhtimise arendamisega. Või võtta ebastabiilne lendav mudel ja tegeleda selle lennu automaatse stabiliseerimisega. Mõlemat korraga vast teha ei tasu ja polegi mõtet ehk?

Minu mõningad mõtted sel teemal lihtsalt
Lauri Laidna - www.pistik.com
[J]
Posts: 2776
Joined: Sun Aug 28, 2005 22:42
Location: Tallinn

Post by [J] »

Et vigurlennukopter pole eriti töökindel (pudinarohke mehaanika) ja stabiilne "värk", otsitakse pidevalt mõistlikumaid lahendusi. Paistab, et on ka edusamme:

http://www.youtube.com/watch?v=rJ9r2orc ... st%3A40877
User avatar
tola555
Posts: 348
Joined: Thu Mar 15, 2007 13:24

Post by tola555 »

[J] wrote:Et vigurlennukopter pole eriti töökindel (pudinarohke mehaanika) ja stabiilne "värk", otsitakse pidevalt mõistlikumaid lahendusi. Paistab, et on ka edusamme:

http://www.youtube.com/watch?v=rJ9r2orc ... st%3A40877
http://en.wikipedia.org/wiki/V-22_Osprey on kah üks kaval idee.
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

Sattusin hiljuti juhuslikult artiklile, kus võrreldi Harrieri ja Ospreyd. Põhiline erinevus on juhtimises - Harrieril teeb seda inimene, Ospreyl erakordselt keerukate algoritmidega elektroonika. 21. sajandi matemaatika.

Kõige värskemad andmed lennumasinate automaatjuhtimisest, mida mina olen näinud, on 60-datest. Andmete all mõtlen ma reaalselt töötanud seadmete juhtimisalgoritme ja programmilõike. Näiteks on avaldatud Apollo kuumooduli juhtimiskood. Unikaalse protsessori masinkood puudulike selgitustega. Tehnkaajaloo huviliste ringkondades liiguvad mõned 50-60-ndate aastate nõukogude teatmikud. Põhiliselt analoogtehnika. On ka algoritme, aga nende kasutamiseks tavaharidusest ei piisa.

Arvan, et töötava UAV süsteemi loomiseks on möödapääsmatu matemaatiku ja juhtimisteoreetiku abi. Kardan. et automaatjuhtimise teooriat Eestis vastaval tesemel ei õpetatagi. Kindlasti on vaja ka programmisti(reaalset, matemaatikuharidusega).

Näituseks. automaatjuhtimise A ja O on PID regulaator. Neid olen ma teatmike abil ise kokku pannud ja häälestanud. Signaale töödeldakse kõiksugu filtritega. Neid olen samuti kirjanduse abiga arvestanud ja kokku pannud. Digitaalsete filtrite programme pole koostanud, aga olen neid parameetrite abil häälestanud. Nüüd UAV-de juurde. GPSi signaali peab UAV jaoks müra vähendamiseks töötlema nn. Kalman'i filtriga. Tegu on puhta matemaatikaga tõenäosusterooria ja statistika kandist. Vot selle filtri häälestamisega, rääkimata koostamisest, ei saa ma iseseisvalt kuidagi hakkama. Ehk ilma teoreetikute abita on vähe lootust midagi korralikku teha.

See oli ainult üks näide, kitsaskohti on rohkem.
[J]
Posts: 2776
Joined: Sun Aug 28, 2005 22:42
Location: Tallinn

Post by [J] »

töötava UAV süsteemi loomiseks on möödapääsmatu matemaatiku ja juhtimisteoreetiku abi
Usun, et see tõde hakkab kehtima kiirustel üle 200 km/h. Väikestel lennukiirustel, stabiilsete lennuriistadega saab lendu suunata ka ilma kõrgemat järku regulaatoriteta ja kontrollida lihtsate anduritega.
"Uimastel süsteemidel" ikka naljalt juhtsignaal valepidiseks ei osutu.
Lihtsaid autopiloote ehitatakse hoolega ja seejuures edukalt.
http://diydrones.com/profiles/blog/show ... st%3A37739
User avatar
lauri
Administrator
Posts: 3057
Joined: Wed Jul 20, 2005 23:13
Location: Tallinn, Estonia
Contact:

Post by lauri »

UAV-teemast juba läbi käinud ka, aga tuletan siiski meelde ka siin, et vabalennu mudelid lendavad ju täiesti ise. Kui "teeme-ise" UAV ülesandeid väga keerukaks ei aja, siis ise lendavat vabalennu mudelit veidi suunama panna pole ju probleem. Viljandis selline gps-asjapulk juba kuid olemas :wink: Sealt on võimalik siis asja edasi arendada nii palju, kui oskused ja haridus võimaldavad. Aga reaalselt "meil" ju mingit abosluutselt ebastabiilset lendajat ise lendavaks teha polegi vaja a la B2 pommitaja.
Lauri Laidna - www.pistik.com
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

Mul on jäänud mulje, et vabalennu mudelid lendavad ja on häälestatud stabiilseks ühel kindlal kiirusel. UAV võiks suuta osata lennata erinevate kiirustega ja ainult kõrgustüüri staatilisest sättimisest nagu ei piisa.

Ma olen tegelenud üha iseenesest üsna stabiilse lennuki (Elektru-UHU) juhtimisega autopiloodi abil ja see ei ole nii lihtne kui võiks arvata. Kaldega pole probleemi (kuigi ma lisasin talle kaldtüürid:-), aga kiiruse ja suuna hoidmisega küll. Tegeleda tuleb just võnkumiste mahasurumisega ning pakun, et teatavat häälestamist tuleb teha ka siis, kui vabalennu lennukile ainult pöördetüüri juhtimine peale panna.

Mul on jäänud mulje, et kõige edukamad lahendused sisaldavad endas lennuki ja (muutuva) keskkonna matemaatilist mudelit ja enam-vähem teavad ette, kui palju on vaja tüüri liigutada, et mudel muudaks oma asendi soovituks. Regulaator, mis oma tegevuse tulemust ette ei tea, ainult jälgib olukorda ja adapteerub kiirelt, nii edukas ei ole, aga tihtipeale piisab ka sellest.

Ehk siis, ma ütleks nii: garanteeritud ja täpse tulemuse jaoks on vaja matemaatikut/füüsikut/automaatikut, aga toimiva tulemuse on võimalik saada ka hobikorras. Ka GPS mõõtmise häiretest sõltub täpsus - kui selles suhtes piisavalt järele anda, siis probleemi ei tohiks olla...

AndrusK
[J]
Posts: 2776
Joined: Sun Aug 28, 2005 22:42
Location: Tallinn

Post by [J] »

Mul on jäänud mulje, et vabalennu mudelid lendavad ja on häälestatud stabiilseks ühel kindlal kiirusel.
Mis siin ikka arvata? Saab ju võistlustel vaatamas käia.

http://gallery.pistik.com/view_album.ph ... me=album69

Näiteks see lennuk pakib oma tiivad lahti alles peale lubatud 5 sekundilist mootorlennu lõppu (umbes 300 meetrit kõrgust):
Image
Tegu maailma paremiku hulka kuuluva Ukraina võistlejaga.
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

On jäänud mulje, et UAV-de iseehitajad võtavad liiga palju korraga ette. Hakatakse kohe koordinaatide, marsruutide ja muu sellisega tegelema. Esimeseks sammuks peale lennuvahendi stabiliseerimist (elektroonilist või valitud konstruktsiooni kaudu) peaks olema, püsiva kõrguse ja õhu suhtes suuna hoidmine. Järgmine ja otsustav samm oleks maa suhtes kursi hoidmine(suund ja kõrgus). Väja võiks näha umbes nii: mudel starditakse puldiga juhtimisel nagu mudel ikka ja lennutatakse ohutule kõrgusele, ütleme 50m. Edasi lülitatakse sisse kapten-roolimadrus rezhiim. Kapten maa peal annab käsu - "320deg, 55m" ja roolimadrus üleval läheb antud kursile ja hoiab teda kuni tuleb muutev käsk. Just see, maapinna suhtes enamvähem sirge lend etteantud suunas ja kõrgusel on kõige alus. Kuidas asi tehniliselt lahendatakse - variante on mitmeid. Alles nüüd saab tegelda UAV tähtsaima funktsiooniga - etteantud koordinaatidega punkti läbimine kindlal kursil. On ka lihtsustatud võimalus - läbida punkte ainult 0 ja 180deg tuule suhtes.
Teine asi, mis hobiUAV-de puhul silma hakkab - püüd liikuda mingeid "optimaalseid " trajektoore mööda. Umbes nii, et leida lühim tee punktide A, B, C vahel (või joon, mis läbib). Tegelikult lennatakse nagu lahingülesande täitmisel. UAV-d ongi ju piloodita lahinglennukid. Ei hakka pikalt seletama, toon näiteks variandi kolme ette ja vasakule jääva punkti läbimisest. Kõigepealt minnakse kahte esimest punkti läbivale sirgele(kolmas punkt jääb sellest sirgest vasakule) ja lennatakse see läbi. Peale teise punkti läbimist ei keerata vasakule kolmanda punkti suunas, vaid tehakse silmus paremale teist ja kolmandat punkti ühendavale sirgele, lennatakse veelkord läbi teise punkti ja seejärel otse läbi kolmanda jne. Kordan veelkord, see on ainult üks variantidest.
Kolmas asi, et püütakse kõik funktsioonid ühe kontrolleri peal ära teha. Kaasaegsete protsessorite arvutusvõimsus muidugi võimaldaks. Sisendeid ja väljundeid jätkub ka. Aga praktikas muutub sellise süsteemi väljatöötamine väga tülikaks. Loetaks paremaks, kui keskprotsessorisse lähevad juba töödeldud andmed: näiteks GPS-lt suunavektor ja koordinaadid, altimeeteetrilt tõusukiirus ja absoluutväärtus jne. Töötlemise all mõtlen ma mõõtmise teooria järgi, kes on tehnikat õppinud, see peaks mäletama 8). Väikesed protsessorid on kerged, ümberprogrammeeritavad ja odavad. Moodulkonstruktsioon oleks kordades lihtsamini häälestatav.
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

moodulkonstruktsioon on kahtlemata way to go, aga minu arust see ei pea olema realiseeritud raua tasemel, tarkvaras on lihtsam.

Minu arust jaguneb lennuki juhtelektroonika üldjoontes kaheks - seljaaju (stabiliseerib lennukit ja hoiab etteantud kiirust/suunda/kõrgust) ja peaaju (otsustab, et kuhu minna ja mida teha). Need kaks komponenti võivad olla eraldi kivides, aga ei pea, kuna suuremasse kivisse mahub tavaliselt probleemitult ka väiksema kivi funktsionaalsus ära ja interruptidega saab ajakriitilised asjad ära teha mõttetegevust ja pikki arvutusi segamata. Ise näen kahe kivi mõtet (suhtlemas üle järjestikpordi arvatavasti) siis, kui nende op systeemid on erinevad (peaaju on näiteks linuxi peal, mille alla mina näiteks hetkel ei oska draivereid teha servode otsejuhtimiseks). Sellistesse moodulitesse, mis lihtsalt kontrollivad mingit funktsiooni (servot v mootorit) ja omavahel ei suhtle, ma ei usu.

Siin foorumis on kuulda olnud 3 inimest/seltskonda, kes uav'ga suhteliselt aktiivselt tegelevad - AndrusT (+AndresO) on integraator, kes kasutab valmis juppe teatava eesmärgi saavutamiseks, Ilmar paistab tegelevat esmajoones peaajuga ja mina alustasin seljaajust. Ei usu, et midagi valesti on, sest kui endal tulemus käes ja hakatakse tegelema poolega millega teine on tegelenud, siis saab ju kogemusi vahetada.

AndrusK
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

kui on olemas tulemus, millega rahule jään, siis arvatavasti teen oma threadi, aga kirjutaks siia üldised põhimõtted, kuidas mu autopiloodi hakatis on üles ehitatud:
1. 16f870 kivi hetkel 4MHz kvartsiga, sisemine takt 1MHz. Täidab ühe käsu mikrosekundis, timeri tick on üks mikrosekund jne. Et servo signaal on 1ms-2ms, siis on servo juhtsignaali hoidmiseks vaja kahte baiti ning enamus muutujaid ja arvutusi on tegelikult 16-bitised.
2. 16-bitine timer käib pidevalt ringiratast. Vastuvõtja signaale ja kaldeandurit sisestatakse port change interruptidega. Interrupt kirjutab timeri väärtuse ja portb väärtuse ringpuhvrisse, seda töödeldakse interruptist väljas. Üldises programmis kontrollitakse ka timer overflow biti väärtust ning tehakse overflow puhul perioodilisi tegevusi.
Hetkel mul tuleb vastuvõtjast 3 juhet - kanalid 1,3 ja 5 - aga kuna 1 ja 3 kanali vahe on 2. kanal ja 3 lõpu ning 5alguse vahe on 4. kanali signaal, siis ma saan kätte 5 kanalit. R608FS kasutamisel on karta, et servo signaalid tulevad korraga, siis saab kätte 3 kanalit ainult või tuleb kasutada kivi rohkemate interrupt-on-change sisenditega.
3. kiiruse mõõtmiseks on rõhuandur mpxv5004dp, 4kPa max rõhk, see on ühendatud a/d sisendisse 0. Kuna rõhk on kiiruse ruut, siis võtab PIC anduri väärtusest tabeli abil ruutjuure ja edasi tegeletakse kiirusega m/s. Üks saatja pöördnupu signaal teisendatakse kah m/s skaalasse, sealt tuleb speed target. See teema on hetkel arengufaasis.
4. ad kanalisse 1 läheb mpx4115as absoluutse rõhu andur - see on olemas, aga pole külge jootnud, kuna tegelen kiirusega hetkel.
5. servo väljunditeks on hetkel 6 bitti, signaali väljutamine toimub biti nihutamisega interruptide abil (timer1 compare interrupt, igas interruptis nihutatakse bitti ja võetakse puhvrist uus väärtus komparaatori jaoks).
6. 3 bitti ühes pordis on võetud elektroonilise kompassi jaoks - see väljastab x ja y telje suunalise magnetvälja väärtusi. PIC teisendab signaali binary radian (brad) kujule (1 bait, väärtused 0...255 tähistavad siis suundi), jagades x ja y väärtusi (400 mikrosekundit läheb selle peale) ja kasutades tulemusel arctangents funktsiooni tabeli abil. Hetkel nurka arvutatakse ja edukalt, aga suunda ei korrigeerita, see ootab kiiruse juhtimise paikasaamist.
7. On ka 2x16 display - see väljastab hetkel 8 16-bitise muutuja väärtusi.

Programmi südameks on tsükkel, mis vastavalt flag'idele kutsub välja alamprogramme. Alamprogrammid on portB sisendi haldamiseks, kompassi haldamiseks, A/D muunduri haldamiseks, juhtimistehete tegemiseks, perioodiliste tegevuste jaoks ja väljundi seadmiseks. Alamprogrammid seavad üldise state bitte, mis lubavad järgmise alamprogrammi aktiveerimise, neil võib olla ka oma sisemine state. Alamprogramme võib vaadelda moodulitena, ühe modimine ei pruugi nõuda teiste alamprogrammide muutmist.

Üldine loogika on nii, et oodatakse vastuvõtja signaalide saabumist - kui nad on käes, siis tehakse tehted ja seatakse väljundväärtused puhvrisse. Kiirus, kompass, kalle tulevad asünkroonselt ja tehetes kasutatakse viimaseid teadaolevaid väärtusi. Kui vastuvõtjast signaali ei tule, siis iga umbes 25ms ootamise järel seatakse vastuvõtja sisenditele fail-safe ning arvutatakse väljund ikkagi. Väljundite arvutamise ning sisendite saabumise vahel on n.ö. "vaba aeg", kus tegevusi tehakse interruptidega (servo väljundi saatmine ja vastuvõtja/kaldeanduri sisendi lugemine). Sinna ma üritan suunata rõhuandurite ja kompassi signaalidega tegelemist. Arvatavasti mahuks sinna ajaliselt GPS manipulatsioon kah.

Reguleerimiseks olen seni kasutanud PI-tüüpi regulaatorit, kusjuures integraalne komponent on seatud saavutama max väärtust 30 sek jooksul (plaanin seda kasutada trim'ina). See töötab kalde puhul, ei ole aga võimaldanud mul vabaneda lennuki "pumpamisest", seetõttu on hetkel proovimisfaasis I2D tüüpi regulaator - 2 integraalset komponenti, üks neist trim (30 sek max väärtuseni), teine integraalne komponent sõltub diferentsi suurusest ja võiks saavutada maksimumi umbes 0.5 sek jooksul. Samas kontrollitakse ka, mis suunas differents liigub ja kui ta väheneb, siis nullitakse teine integraalne komponent ära, trim tiksub edasi. See võiks toimida nii, et kui lennuk liigub liiga aeglaselt, siis hakatakse tema nina alla suunama kuni hetkeni, millal lennuki kiirus hakkab tõusma. Siis nullitakse korrigeeriv signaal ja vaadatakse, mis saab edasi. Kui kiirus nüüd tõuseb, siis tuksub ainult trim kuniks saavutatakse soovitud kiirus, aga kui kiirus hakkab vähenema või läheb üle soovitud kiiruse, siis hakatakse jälle teise integraalse komponendi abil korrigeerima. See on ilmselt see koht, kus võiks rohkem tutvuda olemasolevate lahendustega. Ise pusimine on samas huvitav ning tekitab arusaama, et milleks midagi vaja on.

Kui kiirusega ok, siis panen külge staatilise rõhuanduri ja siis saab proovida mootoriga kõrgust hoida. Mind huvitab pigem purilennuki tüüpi mootori juhtimine, ehk mootoriga kõrgele ja siis mootor välja, toimiva kiirusregulatsiooniga ei tohiks selle funktsiooni lisamine nõuda erilist pingutust. Ühtlasi on siis võimalik hakata tõusvaid õhuvoole otsima - kaldeanduriga saab aru nõksust tiiva pihta, rõhuanduriga saab aru, kas lennuk tõuseb või vajub. Ja siis peaks mõtlema GPS ühendamise peale, aga see vajab suuremale (arvatavasti 16-bitisele) kivile üleminekut.

Update: programmeerimine assembleris, usart on planeeritud gps sisendiks, hetkel kasutuses tabloo väljundina. Kivi käib pessa ja liigub perioodiliselt autopiloodi ja programmaatori vahet. Keskkond on MPLAB IDE.

AndrusK
Last edited by ak on Fri Jul 11, 2008 20:17, edited 2 times in total.
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

Huvitav, huvitav. Mis keeles - keskkonnas programmeerimine käib? Ülekirjutamine otse trükiplaadil? Kas USART ka rakendust leiab?
[J]
Posts: 2776
Joined: Sun Aug 28, 2005 22:42
Location: Tallinn

Post by [J] »

tola555 wrote:http://en.wikipedia.org/wiki/V-22_Osprey on kah üks kaval idee
Mõned arvavad ka nii ja on tegudes isegi ette jõudnud:
http://api.ning.com/files/wT3mI933bQfWg ... /image.jpg
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

update tegemistest autopiloodi kallal.
Eelmises postituses pakutud algoritm ei toiminud, võnkumised olid ikkagi. Tundub, et on mõttekas ajada asju standartse PID regulaatoriga, lihtsalt ta tuleb õigesti häälestada. PID regulaatoreid PIC baasil teha ei ole probleem, näiteks niimoodi:
http://www.microchip.com/stellent/idcpl ... e=en021807

PID häälestamiseks tundub sobivaim olevat kas Ziegler–Nichols method või siis meetod mille nime ma ei tea, aga põhimõte on selles, et muudetakse astmeliselt sisendit ja väljundi graafikult vaadatakse dead time, maksimum tõus ja lõppväärtus ning arvutatakse koefitsendid vastavalt (näide http://www.omega.com/temperature/z/pdf/z115-117.pdf ).

Kogu see asi võiks olla lihtne, kui oleks aega minna ja eksperimenteerida erinevate seadistustega kuni optimaalne käes, aga mul on keskmiselt aega teha nädalas üks max pool tundi lend. Ühtlasi oleks vajalik, et lennuki sensorite väärtused ja sisemised muutujad saaks kas maapealse arvuti serial porti üle eetri või siis vähemalt salvestatud lennukis logerisse kuniks ta maandub. Oleks veel hea, kui saaks PID regulaatori muutujaid maa pealt lennuki lendamise ajal timmida. Ühesõnaga, loomulik areng kipub liikuma Paparazzi süsteemi suunas, kus ground station'il on oluline osa...

Enda lühiajalised plaanid on üritada eksperimenteerides paika saada PID regulaatori väärtused, millega lennuk lendab rahuldavalt, siis liikuda edasi suuna hoidmise peale ja lõpuks kõrguse piiride hoidmise/tõusvate õhuvoolude jahtimise peale. Lennu ajal regulaatori tuunimise võimalusi piirab kasutatav PIC, kus muutujate mälu on praktiliselt otsas. Ma üritan seal teha loogika, mis suurte võnkumiste korral keerab maha PID ülekandeid, aga see on vast suht kõik. Ma integreerisin autopiloodi ka nüüd R608FS vastuvõtjaga, aga ma ei ole päriselt aru saanud, kuidas ja mis ajalises järjekorras kanalid sealt tulevad - hetkel on PIC logika see, et vastuvõtja kanalid tulevad samuti asünkroonselt nagu ka andurite signaalid, kasutatakse viimast väärtust ning perioodiliselt arvutatakse ja saadetakse väljundit. Ühtlasi kaotas ka mõtte signaali puudumise loogika - vastuvõtja saadab alati midagi.

Kanaleid saan kätte 3, üsna lihtsalt saaks lisada veel ühe, aga siis on ka hetke raua piir. Kasutan hetkel CH2 (throttle) kanalit autopiloodi sisse-väljalülitamiseks - piirasendites on autopiloot väljas ja saba juhtimine tuleb otse puldilt. Keskasendist natuke allpool on piloot aktiivne ja mootor seisab, keskasendist natuke üles on piloot aktiivne ja mootoril täispöörded. Kui piloot on aktiivne, siis elevatori signaali abil määratakse speed target, saba ta otseselt ei juhi. Pöördetüür on endiselt saatja küljes, kompassiga ei arvestata.

Natuke pikemaajalisem perspektiiv on hankida suurem kivi, endiselt PIC praeguste plaanide kohaselt. Ühest küljest oleks kena, kui kivis oleks natuke mälu, mille abil saaks PID lennu ajal tuunida, teisest küljest oleks hea omada piisavalt interrupt-on-change sisendeid, et saaks kõik saatja kanalid PIC'i sisse ja omada suuremat kontrolli toimuva üle. Kolmandast küljest oleks hea omada 2 serial porti, üks tabloo/juhtimise jaoks ja teine gps'ile, neljandast küljest võiks kivi olla piisavalt kiire, et interrupti sisenemine ja selle teenindamine võiks toimuda 1 mikrosekundi jooksul, nii et sisendsignaali mõõtmisel häireid poleks. Olen mõelnud sellise kivi nagu dsPIC30F614A - see töötab veel 5V peal, pakutavate võimaluste poolest on väga tasemel, aga hind on ikkagi ainult 500EEk kandis Eestist ostes - ei midagi erilist võrreldes muu kraamiga. Ainus raskus on tema pakendi tüüp ja väikeste mõõtmete juures suur jalgade arv, tuleb talle ilmselt custom trükkplaat teha. See on ideefaasis hetkel. Kaalun ka DSPIC30F4013 - see on kahjuks vähema mälu ja jalgade arvuga ja on kahtlemata kompromiss, aga saadaval amatöörile paremini manageeritava 40PDIP korpusega ja hind ka ainult 150EEK.

AndrusK
tommy
Posts: 46
Joined: Thu Oct 05, 2006 23:32

Post by tommy »

>> teisest küljest oleks hea omada piisavalt interrupt-on-change sisendeid, et saaks kõik saatja kanalid PIC'i sisse

vastuv6tja kaku lahti ja otsi see koht yles, kus kogu PPM signaal yhes tykis saadaval on .. siis piisab yhest sisendist ..

vt n2iteks siia: http://diydrones.com/profiles/blog/show ... st%3A38393

2.4GHz asjade juures ei pruugi niikergesti k2ia asjad, tuleb tunnistada ... multiplexi vastuv6tjast sain 6ige signaali ca 5 minutiga ..
skype:kaido
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

Kunagi sai kasutatud 18LF2550 planaarset varianti, mis oli müüja poolt DIP jalaaukudega plaadile pandud. Üks dsPIC30F4012 vedeleb siiamaani lauasahtlis, sai lihtsamatega hakkama.

PID regulaatoritest. Reaalsete masinate omad on keerulisemad, kui nendes näidetes. On veel anduri lõtku, hüstereesi või tühikäigu kompensatsioon, anduri viivituse kompensatsioon, kiiruse, venituse, libisemise, vea kompensatsioon, termokompensatsioon või veel midagi. Väljund pole ka sageli lihtsalt lineaarne. Näiteks ventilaatoreid kiirendatakse püsiva momendiga, midagi ruutfunktsiooni sarnast. Seisutakistuse ületamiseks, paigaltsaamiseks antakse lühikesi võimsaid impulsse. Samuti on võimsuse, voolu, kiirenduse piirajad. Veel näiteks: alisvoolu mootoreid juhitakse 2 astmeliselt 2 väljundkanali ja vähemalt 2 tagasiside sisendi kaudu.
On ju ilmne, et tüür 3 ja 30deg nurga all toimib täiesti erinevalt. Sellepärast ma eelmistes postides rääkisingi spetsiifiliste lennukijuhtimise algoritmide vajalikkusest. Lennukil on kõik kiiruste ja nurkadega seotud funktsioonid mittelineaarsed ja mittepidevad. Lineaarseteks võib lugeda ainult väga väikeseid vahemikke.
Tegelikult on vajalikud algoritmid lisaks PID regulaatoritele gürodesse ja lennustabilisaatoritesse sisse ehitatud. Ise neid aretama hakata on mittevajalik ja lootusetu ettevõtmine.

Lihtsustatult võiks välja näha nii :
1."peaajust" väljuvad külgsuuna- ja kõrgusesuuna muutmise signaalid
2. lendu stabiliseerib B.T.A AS-07
3. suunasignaal läheb läbi integreeriva lennukigüro(head-held) rudderile
4. kõrgusesignaal läheb autopiloodile

B.T.A AS-07 -l on ka külgsuuna sisend, aga selle andmeid pole avaldatud.
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

>> vastuv6tja kaku lahti ja otsi see koht yles, kus kogu PPM signaal yhes tykis saadaval on .. siis piisab yhest sisendist ..

tänan, asjalik link. Ma võtsin ühe PPM vastuvõtja lahti ja tõepoolest, sama nihkeregister on seal.
Ma vaatasin R608FS sisse ja natuke uurisin teda ossiga - seal on ka pisikesed kivid, mis võivad olla nihkeregistrid, aga ma sain ühest neist 3 impulssi ainult ja teistele ei pääsenud ligi - vastuvõtja trükkplaat on 2-korruseline. Kui ma võrdlesin omavahel kanaleid ossiga, siis tundub, et kanalid 1-6 väljastatakse korraga, 7 ja 8 järgmises grupis. Saatja manual väidab, et PCM G3 korral saadetakse kanalid 3'ste gruppidena, võib-olla 2.4G puhul saadetakse kuueste gruppidena siis. Võimalik ka, et mingi vahe on, et kas saatja on 14-kanali (multichannel) rezhiimis (R8014FS ja ka R608FS töötavad sellega) või 7-kanali rezhiimis (6 ja 7 kanaliliste vastuvõtjate jaoks), äkki R617FS puhul saaks sarnaselt PPM'iga impulsid kätte. Esialgu pole küll endal plaanis 7-kanaliga vastuvõtjat muretseda, nii et proovida ei saa...

piperclub, kas oled proovinud ise lennukit juhtida regulaatoriga?

AndrusK
tommy
Posts: 46
Joined: Thu Oct 05, 2006 23:32

Post by tommy »

>> tänan, asjalik link. Ma võtsin ühe PPM vastuvõtja lahti ja tõepoolest, sama nihkeregister on seal.

mul l2ks kergemini, ei olnd vaja isegi nihkeregistrit otsida - multiplexi 7-chan IPD vastuv6tja on v2ga ilusasti lahendatud kahel trykkplaadil - yhel raadioosa ja teisel siis digitaalosa .. kahe osa vahel on ainult loetud arv yhendusi - nende hulgas siis ka vajalik ;)
skype:kaido
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

tundub, et PIC upgrade aeg jõudis kätte oodatust kiiremini - kanali lisamine võttis ära viimase jupi PIC mälust ning kanalite korraga saatmine tekitas olulise sõltuvuse interrupt latency'st. Kui kanalite järjestikuse sisestuse puhul interrupt latency pole tähtis, see taandub välja, siis paraleelse kanalite sisestuse puhul hakkab ta ebameeldivalt mõjutama ja seda ei saa vältida, niimoodi rallit ei sõida. Ringpuhver sisendite hoidmiseks jäi vist samuti väikseks, sest kui väga lähestikku tulevad 4 kanali ja kaldeanduri sisendid, siis 5'st tasmest ei pruugi piisata enam.

Ehk siis, tellisin 16-bit kivi ära - kuniks ta tuleb (üsna varsti), on ilmselt mõttekas pilooti arendada PPM vastuvõtjaga. Ühtlasi saab ka tegeleda koodi portimisega. Proovisin teha interrupt koodi 16-bitisena - ta on umbes 3x lühem, koos suurema kivi taktiga on interrupt latency alla mikrosekundi, ehk siis ei mõjuta mõõdetava tulemuse täpsust üldse. Koos muude omadustega - interruptide prioritiseerimine, hardware multiply & divide ning muud põnevad võimalused, nagu "Euclidean distance" arvutamise käsk - on uue kiviga majandamine lihtsam ja ta oleks kiirem ka siis, kui takt samaks jääks. Hetkel ei saagi enam aru, miks ma enne 16-bitist kivi ei võtnud... Üsna põnev on ka vaadata, mida annavad AD muunduri 2 lisabitti.

See on siis 3. põlvkond juba - esimene piloot oli 16F627 peal ja oskas kallet korrigeerida, teine piloot 16f870 sai endale külge ka display, kompassi ja rõhuandurid. Kolmas põlvkond siis areneb dsPIC30F4013 peal. Küll ta kunagi lendama kah hakkab:-)

AndrusK
Last edited by ak on Fri Jul 18, 2008 20:50, edited 1 time in total.
arne
Posts: 467
Joined: Thu Aug 11, 2005 23:07
Location: Tallinn
Contact:

Post by arne »

Kunagi sai tehtud väike PWM-PCM recoder lennuki juhtimise visualiseerimiseks. Viimane sorts on selles threadis:

http://www.rcgroups.com/forums/showthread.php?t=640740

Minu õnneks genereeris minu vastuvõtja impulsse järjest ja väikse vahega. Ma OR-isin kõik kaheksa kanalit kokku ja siis piisas ühest interrupt on change pinist. Pmst sain samasuguse PPM signaali nagu Kaido, ainult et ei pidanud vastuvõtja sees kaevama. Mõnel PIC-l on ka capture võimalus - see oleks väga abiks.

Ma usun, et sellist vastuvõtjat, mis kõik signaalid korraga väljastaks ei ole olemas. See oleks aku suhtes liiga sadistlik. Ehk siis natuke ossiga mässates peaks olema võimalik grupeerida signaale nii, et piisaks ka kahest-kolmest sisendist.

Mina olen mõelnud, et kui peaks tegema universaalse paljukanalilise PWM signaali hookimise, siis kasutaks kaht proset - üks dekodeeriks sisendeid ja saadaks siis dekodeeritud väärtused mingi digitaalse ja mitte-ajakriitilise protokolli abil teisele. Väljundi genereerimisega on vist lihtsam - seda võiks ehk ka põhiprose teha.

Arne
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

Code: Select all

piperclub, kas oled proovinud ise lennukit juhtida regulaatoriga?
Mul on HAL 2100 Autopilot, 1 korralik head-held ja 2 hiina güroskoopi. HAL 2100 on 4 optilise anduriga horisondi järgi stabilisaator. Olen nendega 1m vahukaga veidike mängitud. Skeem, kus HAL 2100 juhib kald- ja kõrgus- ning suunda hoidev güro pöördtüüri, toimib. HAL 2100 on väliste tingimuste poolt mõjutatav. Parem oleks 6 soojusanduriga FMA stabilisaator. Ja veel parem ilma väliste anduriteta B.T.A AS-07. Peaaegu oleks 150$ kätte saanud.
Kui lennu stabiliseerimisega olid esimesed tulemused käes, siis muretsesin suurema lennuki, 1,6 m Multiplex Magisteri. Aga see osutus elektrilennukina liiga jõuetuks ja lennuaeg oli ka ainult 4-5 min. Konverteerisin ta sisepõletajale ja sain suurepärase traineri, kahjuks UAV platvormiks sobimatu. Praegu lennutan SPM lennukeid, mitme asjaga ei jõua korraga tegelda. Kui aega rohkem üle jääb, on plaanis ise teha üks ~1.2 m lennuk miniUAV jaoks.
[J]
Posts: 2776
Joined: Sun Aug 28, 2005 22:42
Location: Tallinn

Post by [J] »

Vabandan otsekohesuse pärast, aga ma ei saa aru, miks te kasutate lennukiks mingeid "märg kana" tüüpi asju. Võtke mingi korralik plaaner (kere võib teha alati vajalikus mahus):
http://www.f5models.com/poly_pulsar2008.php
ja mootorlennu aeg 1 tund pole miski probleem.
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

Üks variant tulevikuks on Multiplex Easy Glider.
User avatar
tola555
Posts: 348
Joined: Thu Mar 15, 2007 13:24

Post by tola555 »

vahust asjadel pole sees ruumi.
pipercub
Posts: 516
Joined: Wed Dec 13, 2006 13:10
Location: Tartu

Post by pipercub »

Multiplexi Easy Glideri puhul püüaks kere kujundada küüliku allaneelanud mao sarnaseks.
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

mõtlesin, et kirjutan oma tegemistest viimase kuu jooksul. Eelmine postitus kuu aega tagasi päädis arusaamaga, et tuleb platformi uuendada ja nüüdseks on see tehtud. Nimelt, ehitasin oma uue piloodi 16-bitise signaaliprotsessori dsPIC30F3014 peale (plaanisin kasutada dspic30F4013, aga tellisin vale kivi ja kuigi mul on nüüdseks ka õige kivi olemas, on 3014 ja 4013 õnneks praktiliselt täiesti ühilduvad ja probleemi pole).

Esimene probleem oli kivi programmeerimisega - Vellemani K8048 seda ei tunnistanud, ma ei saanud ka tööle vabavaralist winpic'i. Sai siis ostetud Pickit2 ning sellega sai mure murtud - sain sellega ka lisaks pic riistvaralise debugimise võimaluse. Praegu on PIC küll autopiloodi pesas, aga programmeeritakse teda skeemist välja võtmata ja Pickit2'ga kulub programmeerimiseks paar sekundit ainult. Kui keegi Pic'idega tegeleda plaanid, siis soovitan soojalt muretseda programmaatoriks Pickit2, väga hea hinna ja omaduste suhe.

Teine raskus oli assembleri uue syntaxi tundmaõppimisega - ühest küljest on käske tunduvalt rohkem, teisest küljest on syntax lihtviisiliselt erinev. Ka kivi ise on keerulisem, aga kuna registrid on 16-bitised, siis on vaja vähem mõtiskleda, et mis registris see bitt nüüd oligi.

16-bitisel kivil on tööregistreid päris palju ja ilmselt oskaks C kompilaator neid optimaalsemalt kasutada kui ma assembleris seda suudan, aga nüüdseks on kogu kood ümber visatud ja nii programsest kui muutujate mälust on kasutusel kuskil 10% ringis, hea puhas ja kuiv tunne on teda edasi arendada nii. Korrutamine on 1 tsükkel, jagamine 18, nii et ei ole mingit muret korrutamise, jagamise või kasvõi ruutjuure võtmisega, see käib nii kähku et ei pea muretsema.

Hetkel on lennukil R608FS vastuvõtja, sellest tuleb pic'i 6 kanalit. Kiirendusanduri pöörasin risti ja mõõdan y-suunalist ja Z-suunalist kiirendust. Lisaks on veel küljes rõhuanduriga kiirusmõõtja ning staatilise rõhuanduriga kõrgusmõõtja ning elektrooniline kompass. Saatjas on 3 esimest kanalit konfitud kangide alla, järgmised 3 kanalit pöördnupud, millest ma keeran PID koeffitsente. Gaasikangi konfiguratsioon on nii nagu ennegi: kõige kõrgemas ja kõige madalamas asend on autopiloot väljas ning täielik manuaaljuhtimine, keskosas on autopiloot sees. Mootor töötab on-off rezhiimis - kui gaasikang on üle poole, siis on mootoril max pöörded, muidu seisab.

Esimese lennu tarbeks implementeerisin ainult P-tüüpi regulaatori kaldele ning kiirusele - esimene nupp seadis ülekannet y-kiirenduse ja aileronide juhtimise vahel. Referentskiiruseks seadsin 10 m/s ning teine nupp seadis ülekannet soovitud ja mõõdetava kiiruse vahe ning elevaatori vahel, kolmas nupp seadis ülekannet z-kiirenduse ja elevaatori vahel. Pöördetüüri juhiti igal hetkel kangist ainult. Tulemus oli hea, selles suhtes et lennukiga sai päris pikalt autopiloodi peal lennata ja ta lendas täitsa ok'lt, kuigi mingi hetk tekkisid ka võnkumised. Igal juhul, salvstasin regulaatorite asendid ja võnkumise sagedused sihiga PID regulaatori jaoks täpsed koefitsendid arvutada.

Teine lend ei läinud enam nii hästi, mul oli softis bugi ning lennuk oli liiga tundlik, kolmas lend on veel olemata. Küll aga on mõned probleemid ja mõned mõtted.

1. Lennuki reageerimine tüüride asendile sõltub lennuki kiirusest. Kuna õhutakistus on võrdeline kiiruse ruuduga, siis sama liigutuse tegemiseks tuleb suuremal kiirusel tüüri liigutada vähem. Selle implementeerimiseks ma jagan PID regulaatori koefitsente mõõdetud kiirusega, aga selle tulemuseks on see, et tüür üles praktiliselt ei liigu. Kui kiirus on suur ja selle vähendamiseks tuleks tüüri üles liigutada, siis kiirusega arvestamine võtab ülekanded maha. Alla aga samas liigutatakse tüüri siis, kui kiirus on liiga väike ja väikese kiirusega tuleb soovitud mõju saamiseks tüüri liigutada rohkem. See kõik on ok ja loogiline, aga seab suured nõuded trim'i täpsusele - kui algne trim on paigast ära ja lennuk pikeerib, siis ta ei pruugi pikeeringust välja tulla, kuna tüür ei liigu piisavalt üles. Trim'i tegemine kiiremaks nõuab integraalse komponendi suuremat ülekannet, mis aga põhjustab võnkumisi. Arvatavasti tuleks regulaatoris integraalsest komponendist loobuda, aga mingi valemiga rakendada soovitava kiiruse juhtsignaali otse väljundile. Mingid mõttet on hoida pic'is kas kiirustele vastava trim'i tabelit või siis kasutada mingit funktsiooni, mis tuleks enne kindlaks teha. Variant on panna ka algne trim teadlikult vale niimoodi, et lennuki kiirus oleks väiksem kui soovitud, ming lasta tal seda aeglaselt täpsustada lendamise käigus.

Eks neid mõtteid ole veelgi ja eks neid saab ka proovitud. Nii et - hetkel on autopiloot jälle arenduskorras ning elu läheb edasi.

AndrusK
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

väike update: autopiloodil kiiruse hoidmine nüüd toimib. Kui lennuk stall'i ajada, siis sealt välja kukkudes ta lihtsalt saavutab vajaliku kiiruse ja lendab siis seda hoides edasi, võnkumisi ei teki. Oluline edasiminek toimus siis, kui sai sämplimisperiood diferentseeriva komponendi jaoks 160ms peale lastud. Enne seda, kui sai PID regulaatori diferentsiaalset komponenti arvutatud iga 20ms tagant, siis arvatavasti servo lihtsalt ei jõudnud reageerida (UHU servod on ka üsna uimased). Proportsionaalne komponent arvutatakse ikka iga 20ms tagant, integraalne kah.

Hetkel tegelen suuna hoimisega kompassi abil. See on keerulisem kui arvasin, kuna kallutamine mõjutab kompassi näitu olulisel määral. Üritan teha midagi sellist, et väikese suunaerinevuse juures seatakse trim'i, suure erinevuse puhul tehakse pöördetüüri väljalöök, oodatakse 0.5s, siis pannakse pöördetüür otseks, oodatakse veel 1s ja siis mõõdetakse kompassi näit ja vajadusel korratakse protseduuri. See veel ei toimi, kuna ma pole aru saanud, kui palju ma peaks kiiruse kasvades servosignaalide ülekannet vähendama, ning kallutamine ei toeta pöördetüüri tööd. Tundub, et mõõdetud rõhu väärtusega jagamine oli liiga karm, aga paistab, et rõhu ruutjuurega jagamine (kiirus) on ikka veel liig. Homme on plaanis proovida nii, et kaldetüüride ülekannet ei vahendatagi kiiruse kasvades.

Kui suunahoidmine toimima saab, siis ongi nagu aeg käes poodi gps järele minna. Tõusvaid öhuvoole saaks piloot otsida ka olemasoleva rauaga, aga oleks siiski kena, kui lennuk ise jälgiks, et ta liiga kaugele ei lähe ja oskaks koju tulla.

AndrusK
User avatar
ak
Posts: 552
Joined: Fri Jul 20, 2007 17:16
Location: Tallinn
Contact:

Post by ak »

Hei,

update: kompassiga suuna hoidmine on tõesti väga problemaatiline: allpool on link artiklile, kus sel teemal juttu on. Artiklis räägitakse merekasutusest, aga lennukiga on see ilmselt veel hullem.

Key points: kompassi kallutamine ühe kraadi võrra võib põhjustada näidu erinevust kuni 10 kraadi. Seda kompenseeritakse integreerimisega, aga see tähendab, et kompassi näit arvutatakse tema keskmise näiduga, ütleme, viimase minuti jooksul, mis ilmselt ei ole piisavalt operatiivne, et hoida turbulentsides tantsivat lennukit kursil - see jõuab selle ajaga mitu tiiru teha. Tundub, et kahju küll, aga skeemi tuleb võtta lisaks güroskoop.

AndrusK

Artikkel: http://www.autonav.com/html/anav4009.htm
Post Reply