Šiais mokslo metais buvau labai užimtas, tai nusprendžiau nerašyti blogo. Turiu pripažinti, kad sprendimas buvo nelabai geras, bet ką dabar bepadarysi..
Tai kuo gi buvau užsiėmęs? Ogi mokslais :) Be paskaitų ir laboratorinių, dar dirbau ties magistriniu projektu. Apie tai ir papasakosiu šiame įraše.
Taigi, projekto pavadinimas ir tema: biokuro gamyba nedideliu mastu. Šį projektą oficialiai pradėjome 2010-ųjų spalį ir prie jo dirbome keturiese - du mechanikos ir du elektronikos inžinieriai. Trumpai tariant, projekto tikslas buvo sukurti aparatą, kuris iš maistinių atliekų gamintų biokurą. Šis projektas buvo vystomas jau trečius metus ir dvi prieš mus dirbusios grupės davė neblogus pamatus mūsų darbui. Daugmaž žinojome kaip vyksta cheminiai procesai, ir ko reikia, kad pagamintumėm tą biokurą. Kita vertus, mūsų grupė nusprendė susikaupti ties paties aparato vystymu ir mažiau dėmesio skirti etanolio gamybai. Šis sprendimas buvo priimtas atsižvelgus į faktą, kad po dviejų metų darbo, vis dar nebuvo solidaus aparato, su kuriuo galima būtų dirbti ir vystyti biokuro gamybos procesą.
Aš buvau atsakingas už valdymo sistemos kūrimą, o mano kolegė dirbo su elektros sistema. Praeitų metų grupė turėjio šiokią tokią sistemą, bet vos perskaitęs jų raportą supratau, jog galiu padaryti daug geriau. Kaip pavyzdį, galiu paminėti nekokybišką konstrukciją, per brangius komponentus ir neįskaitomą assembly kodą.
Per daug neišsiplėsdamas pasakysiu, jog visą sistemą sudėjau į vieną spausdintą plokštę, kurią man pagamino PCB Cart. Žemiau pateikiu plokštės savybes.
Valdiklis: PIC18F66K22
Maitinimas: Iki 34V įėjimas, 5V ir 3.3V išėjimas
Temperatūros matavimas: 5 kanalai K tipo termoporoms
Vartotojo sąsaja: tekstinis LCD ekranas ir 4 mygtukai
Sąsaja su elektros sistema
Laikrodis (real time clock)
microSD kortelės lizdas
Ši plokštė jungiasi su elektros sistema per optoporas ir rėlių bei triodų pagalba valdo motorus, solenoidus bei kaitinimo elementus. Galutinis rezultatas atrodo štai taip:
Šiandien pateikiau individualaus projekto techninį raportą (a.k.a disertacija). Paskutines porą dienų teko šiek tiek paplušėt taisant klaidas ir šiaip baiginėjant raportą. Projektą laikau pavykusiu - susipažinau su FPGA ir VHDL, padariau porą žaidimų (1, 2), sukonstravau adapterį, išmokau naudotis git'u ir OOo Writer'iu.
Dėl OpenOffice.org esu labai patenkintas. Tai buvo pirmas kartas, kai su dokumentu dirbau taip, kaip pridera. Išmokau naudotis stiliais, nuorodom (cross-references), šaltinių sąrašu ir t.t. Kaip sakant, užskaitau :D Kaip ten bebūtų, sekantį kartą turbūt bandysiu dirbt su LaTeX. Nežinau kas iš to išeis, tiesiog noriu išbandyti.
Prieš savaitę ar dvi baigiau kurti antrą žaidimą, bet dėl didelio tingėjimo, vis neprisiruošiau jo čia aprašyti. Per tą laiką parašiau dar ir meniu, kuris apjungia du žaidimus. Apie tai galbūt parašysiu vėliau, o dabar pažiūrim klipą:
Žaidimas yra ganėtinai nuobodus. Čia dėl to, kad patingėjau padaryti pralaimėjimo funkciją :D Vienas iš doktorantų tai išgirdęs, pavadino mano žaidimą "kosmoso kimarintojai".. Ką padarysi :)
Techniškai, žaidimas yra "kietesnis" už Pong - naudojamos spalvos, patobulintas garsų generatorius, pridėtas NES valdiklių palaikymas, kodas logiškai išskirstytas po failus ir t.t.
Kaip visada, kodas yra patalpintas github'e: FPGalaxy. Šį kartą užtaginau 1.0 versiją, tad jei ateity ką nors pridirbčiau, tai neturės įtakos kitiems.
Nuo pat pradžių, norėjau, kad projektas būtų ne vien VHDL rašymas. Realiausias variantas atrodė valdymo pulto gaminimas. Paskui bemąstydamas nusprendžiau, kad visai kietas variantas būtų paimti NES valdiklį ir parašyti jam interfeisą su VHDL. Labiau pasidomėjus, išaiškėjo, kad tiesiogiai valdiklių su kūrybine plokšte sujungti nepavyks. Seni Nintendo kontroleriai naudoja 4021 paralel-to-serial konverterius, o šis supranta tik 5V TTL logiką. Kur bėda? Spartan-3E plošktė naudoja 3.3V (LVTTL, LVCMOS). Taip ir gimė hardwarinė projekto dalis.
Būdų TTL ir CMOS logikų suderinimui yra n+1. Aš panaudojau 74 serijos logiką.
3.3V -> 5V: 74HCT4066 (Quad bilateral switches).
5V -> 3.3V: 74LCX125 (Low Voltage Quad Buffer with 5V Tolerant Inputs and Outputs).
Pabaigęs spausdintos plokštės dizainą, nunešiau jį univiero technikams, kad išmaltų. Ganėtinai įspūdingas CNC pas juos, buvo visai įdomu stebėt procesą. Po kokios valandos, mano plokštelės buvo baigtos ir atėjo laikas litavimui. Šiaip galvojau, kad nuo čia man jau reiks tvarkytis pačiam, bet klydau. Grįžus į laboratoriją, man parodė kaip naudotis lydmetalio pastos švirkštu. Reikėjo padengti visus paviršinių komponentų padus, ir galiausiai pabaigti darbą su karšo oro pompa. Toliau galima lituoti ir likusius komponentus.
Žemiau matosi visos stadijos, nuo dizaino iki baigtos plokštės. Dabar reiks prisėsti prie VHDL rašymo.
Štai praėjo pirmas mokslo metų mėnuo, galima pasigirti akademiniais pasiekimais. Kaip jau rašiau, šiemet darau projektą paremtą FPGA technologija. Per vasarą šiek tiek mokiausi VHDL kalbos, Spalio pradžioje pradėjau kurti žaidimą, o šiandien jau galiu parodyti rezultatus.
Viskas sukasi ant Xilinx Spartan 3E kūrybinės plokštės: prie VGA išėjimo jungiamas įprastas monitorius, valdymui naudojami 4 ant plokštės esantys mygtukai (valdymo pulto dar nedarau), garsas išgaunamas su piezo garsiakalbiuku (buzzer).
Kaip atrodo žaidimas matote aukščiau esančiame paveiksliuke, o žemiau galite peržiūrėti žemos kokybės video:
Kadangi iki projektui skirto laiko pabaigos dar liko kažkur 5 mėnesiai, bandysiu kurti antrą žaidimą, šįkart tai turbūt bus kosmoso šaudyklė (žr. Space Invaders, Galaxian, Galaga). Daugiau papasakosiu kai žinosiu kąnors konkrečiai :) Tuo tarpu, jei čia yra besidominčių programuojama logika, prašau peržiūrėti/išbandyti kodą.