TimeLapse Bėgiai (angl. Dolly) – Programinė įranga V1

3 07 2012

Kadangi geležis buvo kurta naudojant Atmega328 mikrokontrolerį jį pritaikant Arduino platformai, tai ir programinės įrangos kurimas buvo paremtas tomis pačiomis technologijomis. Kas nežino tai čia trumpai aprašiau kas tas Arduino ir su kuo jis valgomas. Šiame aprašyme aptarsiu tai kaip programinė įranga veikia, kokios funcijos buvo įgyvendintos ir kaip šią programinę įrangą įsirašyti į kontrolerį.

Kontrolerio programinės įrangos funkcijos

Varikliai:

  • Keli du variklio elgesio rėžimai: 1. Proceso metu visada sukasi; 2. Proceso metu sukasi nurodytą laiko kiekį, sustoja tam tikram momentui, tesią sukimąsi. Sukimosi ir pauzės laikai gali būti iki 999,9 sekundžių trukmės.
  • Dviejų variklių valdymas nustatant atskirai kiekvieno variklio greitį bei kryptį. Variklių elgesys (sustojimo momentai) nuotraukų darymo metu šiuo atveju vienodi.
  • Variklių greičių nustatymas įmanomas dviem būdais: 1. Procentais nuo 0 iki 100; 2. Metriniu parametru centimetrais per minutę (cm/min).

Fotoaparato valdymas:

  • Fotoaparato signalai gali būti išviečiami keliais rėžimais: 1. Visai nenaudojama fotoaparato funkcija kuomet jo paleidimas yra fotoaparato ar kito įrenginio darbas; 2. Fotoaparato paleidimas varikliams tebesisukant; 3. Fotoaparato paleidimas varikliams esant sustojus.
  • Į fotoaparatą gali būti siunčimi kelis signalai priklausomai nuo fotoaparato ir jo nustatymų: 1. Tik Focus signalas; 2. Tik Shoot signalas; 3. Focus ir Shoot signalai kartu.
  • Parametruose galima nurodyto kokios trukmės Focus signalą reikia pasiųsti prieš darant nuotrauką. Šis parametras aktualus kuomet reikia pabudinti fotoaparatą prieš kiekvieną nuotraukos darymą. Ilgiausia fokusavimo trukmė yra 9999 milisekundės.
  • Parametruose galima nurodyti kokios trukmės ekspozicija bus atliekama. Šis parametras aktualus fotografuojant Bulb rėžimu. Tuo atveju jei ekspozicijos trukmė parenkama fotoaparate, šis parametras nėra esminis, bet negali būti nulis. Ilgiausia ekspozicija yra 999 sekundės.
  • Parametruose galima nurodyti kiek laiko reikia daryti pauzė po variklio sustojimo prieš darant nuotrauką. Aktualu jei variklis sukelia vibraciją bėgiu konstrutrukcijoje. Didžiasia pauzė 9999 milisekundės.
  • Galimybė riboti daromų kadrų skaičių įvedant norimą kiekį (iki 9999).

Įrenginio valdymas:

  • Galimybė reguliuoti Led ekrano ryškumą
  • Galimybė keisti interfeiso lempučių naudojimą kontrolerio naudojimo metu.

Valdymo elementai

Kontrolerio programos pristatymą pradėsiu nuo valdymo elementų aptarimo. Valdymas vyksta per TM1638 moduli, kuris atrodo taip:

display

Įrenginiui valdyti skirti šie elementai:

  • Meniu – Skirtas pereiti tarp parametrų skyrių
  • Select – Skirtas pereiti tarp parametrų
  • + – Skirtas padidinti reikšmę. Spaudžiant ilgiau reikšmės didinimo žingsnis didinamas priklausomai nuo laikymo trukmės.
  • – – Skirtas sumažinti reikšmę. Spaudžiant ilgiau reikšmės mažinimo žingsnis didinamas priklausomai nuo laikymo trukmės.
  • Save – Skirtas patvirtinti redaguojamą parametrą
  • Start – Skirtas suaktyvinti kontrolerio veikimą
  • Stop – Skirtas sustabdyti kontrolerio vykdomą procesą.

Pagrindinis meniu

Meniu struktūra yra suskirstyta į 4 skyrius ir kiekvienas jų turi atitinkama skaičių su jais susijusius parametrus. Kadangi ekranėlyje parametrų pavadinimams reikia taupyti vietą tai įrenginyje trumpinau pavadinimus ir juos įvardinau angliškai. Išvardinsiu menių ir aptarsiu šių punktų funkcijas:

1. Motor 1

Tai pagrindinis, vedandysis variklis, kuris turi kiek daugiau nustatymų nei antrasis.

Pasirinkimai:

  • SP – greitis. Greitis nustatomas priklausomai nuo pasirinkto rėžimo: procentais indikuojančiais variklio galią (0-100%) arba centimetrais per minutę (0-N cm/min) išraiškomis. Greičio išraiška parenkama Device->SPM1 parametre. Didžiausia cm/min reikšmė (N) priklauso nuo kalibracijos kuri atliekama Device->CAL1.
  • DIR – variklio sukimosi kryptis. Reikšmės 0 ir 1 indikuoją dešinę ir kairę kryptis.
  • MOD – Variklio (kartu su fotoaparatu) elgesio rėžimas. Reikšmės sekančios: 0 – variklis visada sukasi ir fotoaparatui signalas nepaduodamas (fotoaparatas pats turi rūpintis tuo); 1 – Stop/Shoot/Start rėžimas kuomet variklis sustabdomas nustatytai pauzei, kad fotoaparatas galėtu padaryti ilgesnio užlaikymo kadrą (naudojami parametrai T1 ir T2); 2 – variklis sukasi pastoviai nurodytu greičiau iš paleidžia fotoaparatą nurodytu laiku (T1) nestabdydamas savo darbo.
  • T1 – Parametras nurodo laiką kiek turi suktis variklis prieš sustodamas (MOD=1) arba darydamas kadrą (MOD=2). Reikšmė gali siekti nuo 0 iki 999.9 sekundžių.
  • T2 – Parametras nurodo laiką, kurį variklis turi būti sustabdomas jei nustatytas MOD=1. Reikšmė gali siekti nuo 0 iki 999.9 sekundžių, tačiau jei fotoaparatui naudojamas Bulb rėžimas ir ekspozicija (Camera->EXTI) su visais užlaikymais (Camera->EXDE ir Camera->PREF) yra didesnės trukmė, tai pastarojo reikšmė yra ignoruotina ir praleidžiama.

2. Motor 2

Antrasis variklis yra valdomas lygiaglečiai su pirmuoju, tad jam priskyriami tie patys parametrai MOD, T1 ir T2 nustatyti ties pirmuoju varikliu.

Pasirinkimai:

  • SP – greitis. Greitis nustatomas priklausomai nuo pasirinkto rėžimo: procentais indikuojančiais variklio galią (0-100%) arba centimetrais per minutę (0-N cm/min) išraiškomis. Greičio išraiška parenkama Device->SPM2 parametre. Didžiausia cm/min reikšmė (N) priklauso nuo kalibravimo, kuri atliekama Device->CAL2.
  • DIR – variklio sukimosi kryptis. Reikšmės 0 ir 1 indikuoją dešinę ir kairę kryptis.

3. Camera

Fotoaparatui valdyti naudojama 3 laidų fizinė sąsaja, tačiau prie to prisideda parametrai, kaip fotoaparatą sužadinsime. Šiame menių apibrėžiami nustatymai kaip elgtis su fotoapratu tuomet, kai ateina momentas daryti kadrą.

Pasirinkimai:

  • COU – galima sustatyti norimą nuotraukų kiekį, po kurio varikliai ir valdiklis baigs savo darbą. Šis kiekis gali būti nuo 0 iki 9999. Reikšmė 0 iterpretuojama kaip begalybė.
  • EXTI – jei fotoaparatas nustatytas į Bulb rėžimą, kontroleris gali regiliuoti užlaikymo trukmę tokios trukmės, koks šis parametras. Trukmė gali būti nuo 1 ms iki 999.9 sekundžių. Parametras įvedamas milisekunėmis, tačiau kai viršijamas 4 skaitmenų limitas atsiranda kablelis atskyriantis sekundes nuo milisekundžių.
  • EXDE – uždelsimas prieš siunčiant signalą į fotoaparatą. Šis laikas reikalingas tuomet, kai reikia palaukti kol varikliai sustos. Reikšmė gali būti nuo 0 iki 9999 milisekundėmis. Reiktu atsiminti, kad šis uždelsimas vyks po fokusavimo (Camera->PREF) trukmės, tad baigus suktis varikliui tokiu atveju uždelsimas bus dvigubas.
  • MOD – nusakomas signalo tipas į fotoaparatą. Fiziškai yra dvi linijos: Focus ir Shoot. Priklausomai nuo jungiamos įrangos galimi šie variantai: 0 – sužadinamas tik Fokus signalas ir jo trukmė attitinka nustatytai ekspozicijai (Camera->EXTI); 1 – sužadinamas Focus signalas, kuris uždelsiamas numatytu laiku (Camera->PREF), vėliau jo neišjungiant paleidžiamas Shoot signalas ir jo trukmė attitinka nustatytai ekspozicijai (Camera->EXTI); 2 – užadinamas tik Shoot signalas ir jo trukmė attitinka nustatytai ekspozicijai (Camera->EXTI).
  • PERF – nurodoma fokusavimo trukmė. Ji reikalinga jei naudojami didelis tarpai tarp kadrų ir fokuso signalu siekiame pažadinti fotoaparatą iš miego būsenos. Reikšmė gali būti nuo 0 iki 9999 milisekundėmis.

4. Device

Šiame skyriuje galima reguliuoti pačio įrenginio parametrus įtakojančius jo elgesį bei kitus parametrus.

Pasirinkimai:

  • BRI – skaitmenų ir idikacinių lempučių ryškumo nustatymas. Reikšmė nuo 0 iki 7 nurodo apšvietimo intensyvumą.
  • LED – nusako indikacinių lempučių elgesį. Parametrai: 0 – išjungti bet kokia indikacija; 1 – indikuojami tik mygtukų paspaudimai; 2 – indikuojami tiek mygtuku paspaudimai, tiek progresas iki sekančio variklių žingsnio.
  • SPM1 – nurodo kaip bus įvedamas pirmojo variklio greitis. Parametrai: 0 – procentais; 1 – centimetrai per minutę (cm/min); Pakeitus šį parametrą pakeičiamas ir parametras Motor1->SP (greitis), kurio reikšmė nesikeičia, tačiau yra pritaikoma naujam pavidalui.
  • SPM2 – nurodo kaip bus įvedamas antrojo variklio greitis. Parametrai: 0 – procentais; 1 – centimetrai per minutę (cm/min); Pakeitus šį parametrą pakeičiamas ir parametras Motor2->SP (greitis), kurio reikšmė nesikeičia, tačiau yra pritaikoma naujam pavidalui.
  • CAL1 – pirmojo variklio kalibravo sužadinimas. Kalibravimas reikalingas norint variklio greitį nustatyti ne tik procentais, bet centimetrai per minutę (cm/min). Procedūra pradedama paspaudus Save mygtuką.
  • CAL2 – pirmojo variklio kalibravo sužadinimas. Kalibravimas reikalingas norint variklio greitį nustatyti ne tik procentais, bet centimetrai per minutę (cm/min). Procedūra pradedama paspaudus Save mygtuką.
  • DEF – gamyklinių parametrų atstatymas. Šios procedūros metu visi nustatymai ištrinami.

Variklių kalibravimas

Naudojant centimetrų per minutę (cm/min) variklio greičio nustatymo rėžimą, prieš tai reikia tą variklį sukalibruoti. Kadangi variklio galios parametrai keičiasi atitinkamai nuo bėgių pakrypimo kampo, todėl kalibravimo procedūrą reikia atlikti kiekviena kartą atsiradus kitokiam pokrypiui. Kiekvienas variklių kalibruojamas atskirai. Šiai procedūrai reikalinga liniuotę.

Kalibravimo žingsniai po komandos Device-> CAL1 ar Device-> CAL2 iškvietimo:

  1. Variklis sukasi į dešinę pusę 10 sekundžių maksimaliu greičių. Jūsų užduotis išmatuoti salelės nukeliautą kelią centimetrais.
  2. Varikliui baigus darbą ekrane parodoma paskutinio kalibravimo reikšmė. Ją reikia sumažinti ar padidinti priklausomai nuo to, kokį atstumą salelė pasislinko dabar. Tai atlikę išsaugokite pakeitimus.
  3. Po pakeitimų išsaugojimo variklis sukasi į dešinę pusę 10 sekundžių 25% greičių. Jūsų užduotis išmatuoti salelės nukeliautą kelią centimetrais.
  4. Varikliui baigus darbą ekrane parodoma paskutinio kalibravimo reikšmė. Ją reikia sumažinti ar padidinti priklausomai nuo to, kokį atstumą salelė pasislinko dabar. Tai atlikę išsaugokite pakeitimus.
  5. Kartoame 1, 2, 3 ir 4 žingsnius varikliui slenkant salelę į kairę pusę.

Proceduros pabaigoje kontroleris susidaro reikiamus parametrus, kuriuo vėliau naudoja greičio įvertinimui centimetrais per sekundę.

Video pristatymas

Su valdymų galite susipažinti pažiurėję šiuos filmukus.

Matoma kontrolerio valdymas esant šiek tiek senesnei programinei įrangai. Ši versija dar neturi tam tikrų funkcijų ir meniu nėra suskirstytas į 4 skyrius.

Dabar pristatytos programinės įrangos meniu bei veikimas:

Programinės įrangos įrašymas/atnaujinimas

Norint įrašyti programinę įrangą į mikrokontrolerį pirma kartą, pirmiausiai reikia į mikrokontrolerį įrašyti Arduino Uno bootloaderi ir tai atlikus nustatyti reikiamus Fuse bitus. Taigi nuo to ir pradėkime.

Pats lengviausias būdas yrašyti Arduino bootloaderį yra pasinaudojant šiuo metodų: http://arduino.cc/en/Tutorial/ArduinoISP. Jo metu deja reikalingas Arduino prototipų prokštė. Jei ją turite tai pirmyn, o jei ne tuomet tuščia arduino galite užpildyti kad ir su elementariausiu ISP programatoriumi pvz. tokiu https://mindogas.wordpress.com/2012/06/22/avr-programavimas/. Šiuo atveju mums reikalingas tokios žinios:

  • low_fuses=0xff
  • high_fuses=0xde
  • extended_fuses=0×05
  • uno.bootloader.file=optiboot_atmega328.hex (failą rasite Arduino IDE kataloguose)
  • unlock_bits=0x3F
  • lock_bits=0x0F

Reikia nepamirsti to, kad šiuos parametrus reikia rašyti iš eilės, o ypač svarbu pirma įrašyti Hex duomenis ir tik po to unlock ir lock bitus. Taip yra todėl, kad lock bits reikšmė nurodo ISP programatoriui kiek bitų negaliam liesti pradžioje mikrokontrolerio atminties. Būtent šioje pradžioje sėdi bootloader, kuris negali būti peraųytas vėliau. Atlikus tai galite mikroschemą dėti į bėgių kontrolerio plokštę, prijungti ją prie PC per FTDA arba kokio kito gamintojo TTL į USB konverterį. Tuomet atsidarius Arduino IDE programinė įrangą reikia atsidaryti bėgių kontrolerio failą ir jį kompiliuojame bei siunčiame į mikrokontrolerį.

Programos failą parisiųsti galite čia.

Kadangi kodas atnujinamas atnaujinimus galite stebėti projekto puslapyje: https://bitbucket.org/mindogas/dollycontroller/

Kad ši programa veiktu reikia dat šiek tiek modifikuotos TM1638 bibliotekos kuria parsisiusite iš čia.

Nepatyrusiam AVR programuotojui ši procedūra gali būti labai sudėtinga o ir reikalauja papildomos kitos įrangos, tačiau galiausiai turėsite patogią sąsaja programinei įrangai atnaujinti ir žinoma galimybę ja perdaryti. Atnaujinat programinę įrangą pakanka įrašyti naujausią versiją su Arduino IDE programa.

Apibendrinimas

Tiek tam kartui. Rodosi mano timelapse bėgiai jau baigti gaminti, liko tik viska abibendrinti. Laukite sekančio įrašo kuriame aprodysiu galutini produktą.


Veiksmai

Information

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti / Keisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti / Keisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti / Keisti )

Google+ photo

Jūs komentuojate naudodamiesi savo Google+ paskyra. Atsijungti / Keisti )

Connecting to %s




%d bloggers like this: