Large Format Camera

Building a digital large format camera

Similar projects worth following
After finding the TSL1412 sensor on Mouser I knew immediately I wanted to build my own large format digital camera.

Photography have always been a passion of mine, ever since I got a Nikon 5700 camera in exchange for doing some coding about 10 years ago. 

The heart of this camera is the TAOS TSL1412S sensor. This is a linear array sensor with 1x1536 pixels, each 63.5um square. By scanning the sensor in the focus plane I get a monochrome 4190x1536 image. The physical image size is 138x97mm. These numbers give non-square pixels, but that is easily adjusted in Photoshop.

I use an Arduino Due to A/D convert the image and an EasyDriver drives a stepper motor from ITeadStudio. A 2.2" TFT from Adafruit displays the light meter , settings and the image in progress. It also holds the SD-card.

I take full advantage of the 12 bit A/D in the Due. Using oversampling I can get 15 bits/pixel images.

The focuser is taken from an old film enlarger i found at second hand. I made the bellows myself.

It takes a while to scan the image. In daylight/sunlight I get an image in about two minutes (2ms shutter), but in twilight it takes about 45 minutes (200ms shutter).

I also added an adjusteable delay between each column. This way I can take an image over several hours, for example during sunset/sunrise.

Since a 10x100mm IR filter would probably be quite expensive I opted to skip it, giving near-IR images.

Connected: A Wifi module will hopefully allow me to store the pictures directly to an Android phone, avoiding SD-card latency and making it easier to use. By storing the pictures directly in the DCIM directory on the phone I can take advantage of the phone's connectivity and immediately upload them to the service of my choice.

Open: The source code for this project is released without any licence whatsoever. You are free to use it in any way you like. All drawings I made are published as well. But since most of the hardware is hand-built I don't have many of those. See the links on the left side of the page for source code and drawings.

This project uses the Adafruit_CC3000 library [ Copyright 2013-2014 Limor Fried, Kevin Townsend for Adafruit Industries & Tony DiCola. ]

And the Adafruit_ILI9340 library, slightly modified [ MIT licence, Written by Limor Fried/Ladyada for Adafruit Industries.]

Also the Adafruit_GFX library is used. [ BSD licence, Copyright (c) 2012 Adafruit Industries. ]

First light! It took about two months to get to this point.

A macro image of some flowers during sunset. Image is scanned from right-to-left.

An image from a mountaintop near where I live.

  • Blowing up the apple

    jimmy.c.alzen08/20/2014 at 10:37 0 comments

    Here is a higher resolution version of the apple picture from the video:

  • New focus screen is ready

    jimmy.c.alzen08/18/2014 at 08:00 0 comments

    The new focus screen is hinged in the bottom and a lot more solid than my earlier attempt. 

    Also it is adjustable, something I found out is necessary. The tolerance needed to get a good focus is a lot less than 1mm.

  • WiFi module

    jimmy.c.alzen07/20/2014 at 13:58 0 comments

    Success! WiFi module is working and connects to AP!

    Running all three external devices on the same SPI bus caused some trouble. After a lot of debugging I found out that the CC3000 and the ILI9340 TFT uses different SPI modes, plus the CC3000 library uses an SPI interrupt. The quick-and-dirty fix was to add this to each driver function in Adafruit_ILI9340.cpp:



      // function code



    The elegant fix would be to take advantage of the SAM3X's enhanced SPI capabilities to select the correct mode and speed automatically when accessing different devices on the same bus, but then I would have to rewrite all three libraries.

  • Further developments

    jimmy.c.alzen07/08/2014 at 18:26 0 comments

    Two main things are in the pipeline right now: 

    1) Replace focus screen. The old one is way too flimsy. The new one will be made of glass. I have sanded a suitable glass plate, now it's just a matter of mounting it.

    2) It would be nice with a larger display. That way I can see immediately if the picture is going to be any good and save time by cancelling it if it is not. I think WiFi+Android is the way to go here. I have ordered a CC3000 breakout board. Also I get to learn writing Android apps, something I wanted to try for a long time now. Maybe I can also get rid of the awful maximum latency on sd cards by storing the pictures on the phone (and letting Android buffer the data in RAM). Most writes takes milliseconds but once in a while it takes .5 seconds. That really is not acceptable when photographing something moving.

  • Apertures

    jimmy.c.alzen07/04/2014 at 16:09 0 comments

    So the camera is more or less finished. After using for a week or two I find I really miss a manual aperture stop. When using a 140mm F/3.2 from an old dia projector I can't set the shutter fast enough to avoid overexposing the images in daylight. This is because the Due can't A/D convert faster than about 300k samples/second without really complicating the code. 

    So this is what I came up with:

    Why limit yourself to round holes when you can have some fancy shapes instead? Now I just have to find a way to make it quick and easy to change aperture stops.

View all 5 project logs

Enjoy this project?



ralph wrote 06/07/2016 at 18:51 point

Interesting Camera - i built a 1x2048 version using a ilx551  * and a Due  in 2013  -- though rather than scan the sensor i have been keeping the sensor still / or rotation -- to create slitscan images    -- currently building a colour version 3x2700  with plans for a 5000x1  after ..   see (slightly out of date) or  

  Are you sure? yes | no

jim wrote 04/11/2016 at 15:37 point

Very Cool.

Back in 1974, with another engineer we made a document scanner using a linear array.

Back then it was a "state-of-the-art" 1x1024 element .   I was in research at Xerox and it went into the first laser fax machine code named "Redeye".  This project brings back memories for sure.

I have an assortment of large format lenses from my 4x5 days and this will be a fun project.

I did this from Yosemite Falls Trail ~ a mile up.  The air was a cold 20 some degrees so there was no atmospheric haze in the way.


Looking forward to following your project sharing findings.


  Are you sure? yes | no

tomikapc wrote 12/10/2015 at 07:10 point

Hey! Awesome project!

I only have one question about the sensor.

In the code you only do 1536 clock cycles instead of 1536+18. 

(But you have 1536+18 in comment.)

Can you tell me why did you make this decision? The datasheet of the sensor is a bit confusing for me. Thanks!

  Are you sure? yes | no

josephchrzempiec wrote 05/30/2015 at 18:23 point

I Must Say i love Old things Cameras, Phones, Tv's, radios and so forth and what you done taking a old camera and making something new and better is way to awesome thanks :)

  Are you sure? yes | no

oeylinux wrote 02/05/2015 at 11:41 point

Really nice project! What is the F-stop on the lens?

  Are you sure? yes | no

jimmy.c.alzen wrote 02/05/2015 at 21:22 point

Thank you :) The lens is 140mm f/3.2.

  Are you sure? yes | no

Matt wrote 08/18/2014 at 01:04 point
Hey Jimmy, maybe this UV/IR filter would work for you? Don't know your filter thread but maybe you can find the right one for that lens.

  Are you sure? yes | no

jimmy.c.alzen wrote 08/18/2014 at 07:52 point
Yeah that would work. Well there is no filter thread on my old dia projector lens..

  Are you sure? yes | no

Jasmine Brackett wrote 08/15/2014 at 23:23 point
Hello Jimmy, now is the time to add a few more details to your project to give it the best chance of going through to the next round of The Hackaday Prize.

By August 20th you must have the following info on your project page:
- A video. It should be less than 2 minutes long describing your project. Put it on YouTube (or Youku), and add a link to it on your project page. This is done by editing your project (edit link is at the top of your project page) and adding it as an "External Link"
- At least 4 Project Logs
- A system design document. Please highlight it in the project details so we can find it easily.
- Links to code repositories, and remember to mention any licenses or permissions needed for your project. For example, if you are using software libraries you need to document that information in the details.

You should also try to highlight how your project is 'Connected' and 'Open' in the details and video.

There are a couple of tutorial video's with more info here:

Good luck!

  Are you sure? yes | no

Mattimus wrote 07/23/2014 at 22:50 point
for the exposure, what if you put a spring loaded screen such that the due would only have to fire once and the mechanics of the spring would control the shutter speed? you could rig it up to a mechanism that would tighten/loosen the spring to control shutter speed.

just a thought, not sure how feasible that is.

  Are you sure? yes | no

rifo wrote 07/09/2014 at 17:06 point
Hello, I have checked the datasheet of TSL1412. It says 1536 x 1 Linear Sensor Array with hold. In a similar project I saw a TCD132D 1024x1 Linear Image Sensor being used.
What is the difference between a linear sensor array and a linear image sensor
they seem to have different inputs
thanks for your help

  Are you sure? yes | no

jimmy.c.alzen wrote 07/09/2014 at 20:41 point
As far as I can tell the sensors are very similar electronically. The TCD132 is harder to use since it needs two clocks, and it is a lot smaller with 14mm active area.

  Are you sure? yes | no

rijrunner wrote 07/08/2014 at 22:45 point
Looks interesting. Have been thinking about doing something like this since I heard about Adam Magyar.. He shoots a very similar system from cars or subways..

  Are you sure? yes | no

S Kilian wrote 07/08/2014 at 21:04 point
For replaceable apertures, I've liked the LensBaby method of replacing aperture cutouts: a ring magnet around the lens opening and a mildly magnetic paper that likes to just fit itself in the circular front opening.

no idea if it's a patented paper or if it is something that is easy to get in other sizes.

  Are you sure? yes | no

jimmy.c.alzen wrote 07/09/2014 at 08:22 point
Yeah magnets would work great, I just thought it would be better to have the aptertures behind the lens instead of infront. My thinking is that you get less vignetting this way. Well it doesnt matter if it is patented to me since it is only for personal use and I live in Sweden, where lawsuits are a lot less common.

  Are you sure? yes | no

Felix L. Esser wrote 07/08/2014 at 14:19 point
Hi Jimmy, I came across your project on DIY photography on would like to report on it for a major US photography website (I'm a freelance tech journalist.) How can I best get in touch with you? Thanks!

  Are you sure? yes | no

jimmy.c.alzen wrote 07/08/2014 at 14:25 point
Contact me on my hackaday name at gmail dot com :)

  Are you sure? yes | no

LeoM wrote 07/08/2014 at 12:46 point
Hi !
Great project, I'm developping myself an SLR camera and this could be a great feature to adapt to it and make an DSLR ! ^^
You can have a look to my project here :
Fell free to contact me.

  Are you sure? yes | no

Comedicles wrote 07/07/2014 at 23:17 point
There was a group some years ago that started a World wide network of small units with a linear array and a camera lens - about like a 200mm lens on a 35mmm camera. The idea was to get a full sky image every 24 hours that was continuously updated. The project kind of decayed as good DSLR for astronomy came along and the members were on to better things.

Have you thought about centering the array and not moving it as you scan a slow moving train? I think that would be pretty cool.

  Are you sure? yes | no

dcgill wrote 07/07/2014 at 21:14 point
I see your point however whether or not the device is tracked will depend on the maximum exposure time the CCD can accept which may be MORE than that achieved just by allowing the sky to pass across it!

  Are you sure? yes | no

jimmy.c.alzen wrote 07/08/2014 at 12:42 point
You are right about that. I did some calculations and using the 140mm lens, field-of-view is 38 degrees giving 2.5 hours vertical. Going horizontal we have 2.9 hours. Four times oversample at 5kHz (4*310ms) = 2.8 hours. I think 1.2 seconds total exposure is a bit on the low side. It's doubtful I will see much at that exposure, escpecially considering I have no gain circuit on the CCD output.

  Are you sure? yes | no

DusteD wrote 07/07/2014 at 21:02 point
That is beautiful! Very interesting idea! :)

  Are you sure? yes | no

jimmy.c.alzen wrote 07/09/2014 at 08:23 point
Thanks! Much appreciated!

  Are you sure? yes | no

OiD wrote 07/07/2014 at 20:59 point
It's a very elegant project. Congrats on getting it working smoothly!
I recently bought a Due and a 5" display and one of the thing I have wanted to build for a while is a scanning camera.
Why not use an external faster ADC? Or use sample and hold with multiple adcs?

  Are you sure? yes | no

jimmy.c.alzen wrote 07/07/2014 at 21:08 point
That would certainly be possible, but I like to keep things simple wherever I can. It took only a few days to code up the arduino code using the built-in A/D.

  Are you sure? yes | no

Jasmine Brackett wrote 07/07/2014 at 20:02 point
Hello Jimmy, your project has been featured over on

I know you have just created the project, but it would be great if you could explain the 'connected' aspect of your project in more detail. It will really help the judges when they come to review it.

Your images are beautiful. Keep up the great work.

  Are you sure? yes | no

jimmy.c.alzen wrote 07/08/2014 at 11:55 point
Well it isn't very connected, right now. Except maybe in a more abstract sense. This is the first project I have put up on the Internet, and the response has been fantastic! I feel a lot more connected now :) Thank you everyone for the feedback!

  Are you sure? yes | no

dcgill wrote 07/07/2014 at 19:54 point
Have you any details on the cameras performance in starlight conditions? It may be a great place to start on a long exposure, wide field, star capture device if coupled to a tracking telescope mount.

  Are you sure? yes | no

jimmy.c.alzen wrote 07/07/2014 at 21:09 point
Well it is a thing I have planned to try. The thing is, you dont need a tracking mount. You don't even have to move the sensor. I can just store image columns and let the sky rotate past the sensor.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates