Dar vienas logger’is

Prireikė man įsirašyti telemetrijos informaciją, kuri gaunama per RS232 iš quadrocopter‘io, kad galėčiau vėliau paanalizuoti. Buvo viena neaiški problema, kurios niekaip kitaip nepavyko išspręsti. Vienas iš būdų būtų perdavinėti šią informaciją radijo ryšiu ir kompiuteryje matyti viską realiu laiku. Bet, šiuo atveju, tai nelabai patogu, reikia radijo ryšio modulių, kompiuterio. Paprasčiau viską įrašyti į logger‘į, o vėliau peržiūrėti visą skrydžio informaciją. Tiesa, informacijos nemažai, todėl šį kartą jau netinka toks logger‘is, apie kurį rašiau praeitą kartą.

Daugiau atminties galima gauti panaudojus atminties kortelę. Tereikia ją pasijungti prie mikrokontrolerio. Kortelės dabar nebrangios ir pajungimas prie mikrokontrolerio nesudėtingas. Pagaliau buvo įdomu ir pabandyti kaip tai veikia.

Pasirinkau SD kortelę. Bendraujama su ja per SPI. Maitinimas 3,3V, todėl reikėjo padaryt lygių suderinimą. Informacija rašoma sektoriais po 512 baitų. Toliau jau galima panaudoti ir failų sistemą (pvz. FAT16), kad įrašymas būtų patogesnis.

Pirmi eksperimentai parodė, kad būtinas ne pats paprasčiausias mikrokontroleris, nes reikia bent jau 1KB RAM. Panaudojau mega168. Failų sistemos nusprendžiau nenaudot. Pasirinkau labai paprastą įrašymo būdą, tiesiog sektorius po sektoriaus. Man nereikėjo nuskaitinėti kortelės kompiuteriu. Man reikėjo, kad mano įrenginys galėtų perdavinėti įrašytą informaciją lygiai taip pat kaip ir įrašė – per RS232. Principas toks: padariau 10 pasirenkamų „bankų“, kiekvienas po 100 MB. Tai daug daugiau nei reikia, bet dabar jau nelabai kur rasi kortelę, mažesnę nei 1GB. Daugiau kaip 10 įrašų man nebuvo reikalo laikyt. Viskas valdoma tik dviem mygtukais. Paspaudus vieną – pradeda įrašinėt, paspaudus kitą – pradeda nuskaitinėt įrašą. Pasirinkimo meniu tai paprasčiausias 7 segmentų indikatorius. Radau savo rusiškų detalių atsargose kažkokią visišką senieną. Kas sekundę keičiasi skaičiai nuo 0 iki 9. Pagal tai, kuriuo metu paspaudžiu mygtuką, pasirenkamas „bankas“ į kurį bus rašoma ar skaitoma. Įrašas nutraukiamas paspaudus bet kurį mygtuką. Tuo pačiu įsimenama informacija kiek baitų buvo įrašyta. Ši informacija gali būti laikoma pvz. nuliniame kortelės sektoriuje, arba mikrokontrolerio EEPROM atmintyje. Gavosi tokia labai primityvi failų sistema, kurioje gali būti ne daugiau kaip 10 failų iki 100 MB. :)

Nemažai teko paeksperimentuot. Gerai, kad Proteus gali simuliuoti SD kortelę. Taip pavyko parašyti programą derinant tik simuliacijoje. Tiesa, simuliacija sukėlė ir kai kurių abejonių, nes buvo pamestų baitų. Bet realiai to nėra, matomai nespėja normaliai simuliuoti…

Padariau kaip visada, ant maketinės plokštės. Trumpikiu galiu invertuoti RS232. Man reikėjo įrašinėti būtent invertuotą variantą.

Quadrocopter‘is savo telemetriją transliuoja 9600 greičiu. Logger‘is veikia puikiai, nepameta nė vieno baito. Įrašinėt greičiau nebandžiau, bet įtariu, kad gali būti problemų, gali tiesiog nespėt įrašyt ir atsiras pamestų baitų…

This entry was posted in Elektronika, Programavimas. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *