O moji cameri obscuri

Osnova

Kamera je v osnovi lesena škatla z luknjico. Izdelana je iz vezane plošče debeline 9 mm. Stranice so med sabo zlepljene z lepilom za les, da tesni morebitne špranje. Les je prebarvan in prelakiran, saj je kamera stalno namontirana na prostem in mora kljubovati poletnemu soncu in jesensko-zimskim padavinam. Notranjost je posprejana s črno akrilno barvo, da se morebitna neželena vpadna svetloba absorbira in ne kvari posnetka. Ko sem škatlo sestavil se je pokazal problem, da je lepilo delno prosojno in je svetloba znatno svetila v notranjost. Tako sem moral vse notranje robove prelepiti z duck tape-om. Ko izdelujemo tako kamero moramo imeti v mislih, da ne le da moramo zatesniti pred vodo, temveč tudi pred svetlobo.

Na sprednji strani sem v leseno stranico izrezal luknkjo in jo zakril s kovinsko ploščico. Ta ima tudi luknjo, za katero namestim tanko pločevino (od pločevinke, npr. piva), ki ima lukjnico. Pločevina pločevinke je debela pribl. 200 mikrometrov in je najtanjša pločevina (če pozabimo aluminijasto folijo za živila, ki je neustrezna), ki je enostavno dostopna. Prebodel sem jo s šivanko, da sem ustvaril dovolj majhno luknjico za zaslonko. S šivanko ne smemo prebosti pločevina do konca, luknjica bo že prevelika, treba je le delno zariniti, kar pride s prakso. Znatno si olajšamo delo, če pločevino prej pobrusimo z brusnim papirjem, a spet ne preveč. Res je, da ne moremo nadzorovati velikosti nastale luknjice, zato pač večkrat poskusimo in si pripravimo paleto luknjic. Ker so tako majhne, je edini način, ki si ga namislim, da izmerimo njeno velikost, ta, da kos pločevine z luknjico položimo na skener skupaj z ravnilom in skeniramo pri resoluciji 600 dpi. Na računalniku umerimo skalo, da vemo koliko slikovnih točk (pikslov) ustreza enemu centimetru, preštejemo koliko pikslov je velika luknjica ter izračunamo velikost. Jaz sem si pripravil nabor šestih zaslonk, ki so oštevilčene tako:

1 0,0085 mm
2 0,21 mm
3 0,034 mm
4 0,57 mm
5 0,7 mm
6 0,9 mm

V galeriji solarogramov je v podrobnostih slike navedena številka uporabljene zaslonke. Večja kot je luknjica, več svetlobe prepusti in je za enako svetlo sliko potrebna krajša ekspozicija (sorazmerno s kvadratom premera) napram manjši luknjici. A večja pomeni manj ostro sliko povsem zaradi geometrijske optike. A pri zadosti majhnemu premeru pride v igro uklon svetlobe. Zato obstaja optimalna velikost luknjice, ki zavisi od goriščne dolžine, in jo izračunamo po enačbi:

c * (550nm * f)^(1/2)

c je konstanta za katero sem na spletu našel različne vrednsoti, sam računam z 1,92. 550 nm je valovna dolžina svetlobe nekje na sredi optičnega spektra in f je goriščna razdalja kamere. Potenca 1/2 je v bistvu kvadratni koren. Ta enačba naj bo okvirno vodilo, toliko, da imamo občutek o kakih rangih se pogovarjamo, seveda se ni treba striktno držati teh številk.

Še ena pomembna stvar okoli zaslonke. Pločevina ima primerljivo debelino kot je velikost luknjice in moramo paziti na vinjetiranje. Tipično je velikost vidnega polja kakršnekoli kamere opredeljeno z velikostjo detektorja, fotopapirja, filma, a kdor fotografira s teleskopom ali na full frame fotoaparatu uporabi objektiv, ki je namenjen za APS-C format, ve, da je vinjeta tista, ki omejuje velikost polja.

Preden sem se lotil izdelave, sem seveda pametno izbral dimenzije škatle. Želja je bila, da zajamem široko vidno polje, da bo na sliki poleg analeme tudi zemeljska okolica. Na koncu sem pristal na največjem gorišču 15 cm in velikosti fotopapirja 24 x 15 cm. Z goriščem uravnavamo velikost vidnega polja in posledično resolucijo slike, zato sem načrtal sistem, da lahko goriščno razdaljo izbiram. Pri cameri obscuri imamo proste roke, za razliko od navadne fotografije, pri kateri fokus prilagodimo razdalji do objekta. Pri tej preslikavi preko lukjice gredo vsi objekti v isti fokus, kjer pač postavimo zaslon. Jaz uporabljam lepenko, na katero pritrdim ustrezno odrezan fotopapir, in jo vstavim v kamero. Papir je treba pritrditi čvrsto, recimo z risalnimi žebljički. To sem boleče spoznal, po tem ko sem po treh mesecih ekspozicije odprl kamero in našel zvit papir, saj je selotejp popustil. Na desni in levi steni notranjosti sem nemastil vodila iz plastičnih kanalov za kable, ki držijo lepenko pokonci in so označeni z goriščno razdaljo. Na zgornji rob lepenke sem prilepil leseno letvico, ki ima na vrhu gumo. Ko zaprem pokrov kamere, ta stisne gumo in poskrbi, da je lepenka na miru tudi, ko kamero prenašam in ko je namontirana pod kotom.

Stran naše hiše z balkonom je skoraj točno usmerjena proti jugu. Nad balkon sem namestil lesen nosilec, na katerega postavim kamero in jo privijem. Če je kamera postavljena vodoravno, potem v kader dobim večinoma sosedovo hišo in le del neba, kot bi rabil. Pod primernim kotom (zdaj res ne vem koliko) sem odrezal lesene noge, ki usmerijo kamero tako, da bom v kader zajel celotno analemo. Smiselno je načrtovati samo kamero in njeno postavitev tako, da imamo dostop do fotopapirja tudi čez leto. Recimo, da lahko odpremo pokrov ne da bi premikali kamero in si ogledamo kako izgleda do sedaj nastala slika. Tako se prepričamo, če je vse kot mora biti, ne pa da bi zapravili eno leto v pričakovanju dobre slike, na koncu pa bi samo zapraviljali čas. Jaz sem naredil tako, da celo kamero vzamem z nosilca in jo odprem v zatemnjeni sobi. Nato jo postavim nazaj in privijem na točno isto mesto. Pomembno je, da njeno lego ne premaknemo, da lahko nadaljujemo z ekspozicijo, če je vse v redu.

Excel datoteka, s katero sem si pomagal pri dizajniranju kamere je dostopna na: https://drive.google.com/file/d/1n5PQtz0bmMpVbYRVgP-zqbZ32J5wPgAa/view?usp=sharing

Elektronika

Prvotni cilj je posneti Sončevo analemo – osmico, ki jo izrišejo položaji Sonca ob poldnevih. Za to moramo beležiti Sončev položaj (skoraj) vsak dan ob 12. uri in jaz seveda ne bom tega počel na roke. Na sprednjo zunanjo stranico kamere sem namestil zaklop, ki ga premika elektromotorček. To je enostavna roka, ki zakriva zaslonko, in se odpre ob določenih časih. Elektromotor in mehanizem sem dobil iz odsluženega tiskalnika za račune iz trgovine. Obdržal sem ogrodje, ki povezuje zobnik z polžom na gredi motorja. Na zobnik sem namestil roko in dva zatiča, ki prožita stikali (točno rečeno tipki). Gred sem še podaljšal, da lahko tudi ročno odpiram zaklop.

Motorček je povsem navaden DC motor, priklopiš na električno napetost in se vrti. Če zamenjaš polariteto, se vrti v drugo smer. Ker porabi več toka, kot ga zmore Arduino dobavljati, je treba uporabiti tranzistorje ali mosfete, ki to zmorejo. Sam sem izdelal H most po teh navodilih: http://www.learningaboutelectronics.com/Articles/H-bridge-circuit-with-transistors.php Na ta način je možno vrteti motor v obe smeri. Pri polni napetosti se motor mnogo prehitro vrti in v osnovi bi lahko samo znižal napetost. A to pomeni manjši navor motorčka, kar ni bilo ugodno. Ko se roka premika je seveda prisotno trenje, ki ga mora motor premagati. Zagato sem rešil s pwm – pulse width modulation. Motor poganja napetost pribl. 10 V, vendar ne stalno. Določen delež periode, ki se imenuje duty cycle, je priključen na polno napetost, preostali delež pa je izključen, torej se vrti po pulzih, ki so tako kratki, da se roka praktično eakomerno premika. Ko pride roka do končne pozicije, sproži tipki, ki dasta signal, da se motor ugasne. Obe sta zvezani skupaj (torej sta za Arduina eno in isto), ker sem želel opraviti s čimmanj kabli. Kabla motorja in krmilne elektronike sta priklučena z dsb9 konektorjem, drugega nisem dobil.

Poleg H mosta je na Arduino zvezan RTC (real time clock) modul DS3231. Ta ima kristal, ki narekuje tiktakanje, in tudi meri temperaturo, da kompenzira odstopanje frekvence kristala. Modul ima svojo baterijo, tako da ohranja točen čas tudi ko nima napajanja, pomembna lastnost, če želim pustiti sistem na miru eno leto. Za uporabo je sila enostaven, zvežemo zemljo, napajanje in dve žici za komunikacijo, kot nam veleva na stotine tutorialev na spletu. Za Arduino obstaja knjižnica, s katero preprosto preberemo in nastavimo trenuten čas.

Koda za Arduina je na voljo na mojem githubu: https://github.com/kristofskok/solarograph

Naloga krmilnika je enostavna in temu ustrezno je tudi programska koda. Stanje kamere opredeljujeta dve boolovi spremenljivki: gibanje in smer. Ko je gibanje true, zadnji odsek kode premika motor v izbrano smer, ki jo določa smer. Ko je false je roka v zgornji poziciji oz. se premika proti zgornji poziciji (smer A), ko je true, se roka pomika proti spodnji poziciji oz. je zaslonka zaprta (smer B). Vse kar Arduino izvaja je v funkciji loop. Najprej pod t shrani trenuten čas. Če je zaslonka zaprta in je določena ura, se nastavi gibanje na true in smer na false, saj želimo, da se roka odmakne od zaslonke. Nastavi se primeren ekspozicijski čas, o tem malo kasneje.

Nato imamo stikalo.update(). stikalo je objekt Bounce, ki je iz knjižnice za rokovanje s stikali. Zakaj ne enostavno preveriti, ali je stikalo high ali low? Stikala in tipke so mehanski elementi in če bi si ogledali napetost na stikalu z osciloskopom bi videli, da napetost ne preskoči v trenutku, ampak zaniha. Pogooglaj switch debouncing.

Naslednji if stavek preveri, če se je ena od tipk sklenila, tedaj je roka na eni od končnih položajev. Takrat hočemo roko ustaviti z gibanje = false in zabeležimo uro. V naslednji if stavek vstopimo, ko je zaslonka odprta za ekspozicijski čas. Ponovno damo gibanje na true in smer tudi na true, ker hočemo, da se roka pomakne navzdol, proti položaju B. Zadnji if stavek pa je prej opisan pwm. Ste opazili, da sta dity cycla različna za obe smeri? Jano, ko se zaslonka odpira mora motor premagovati še težo roke.

Ekspozicijski časi

Kakor sem že prej eksperimentiral, se je izkazalo, da Sonce zažge fotopapir že po 30 s. Za prvi resen poskus sem nastavil, da se od 12. uri snema 30 s, ob 9., 10., 11., 13. in 14. uri pa 10 s. Tako bom na isto sliko dobil več osmic, ki jih bom od opoldanske ločil po svetlosti slik Sonca. Ker hočem na sliko dobiti še okolico, sem dodal, da je zaslonka odprta tudi zjutraj 7:43-8:00 in popoldan 16:00-16:12. Ta časovna intervala sta izbrana tako, da na katerikoli dan v letu Sonca gotovo ni v vidnem polju kamere, kajti sicer bi pustilo sled na sliki kot črto. Se pravi z začetkom najpoznejšega Sončevega vzida, 7:43, in s koncem ob najzgodnejšem zaidu, 16:12. A zakaj ne bi enostavno pustil odprto 16:00-8:00? Ponoči lahko sveti polna Luna, ki bi tudi pustila neželene sledi na sliki.