A computer controlled shutter for the classic 100-series Packfilm cameras
Many Photographers would like to have control over shutter speeds and aperture settings of their camera.
The popular folding packfilm cameras of the 1960s are fully automatic. The three manual models (180,190,195) are scarce and very expensive.
The exposure in the automatic cameras is controlled by an analog computer that integrates the current through a light sensitive resistor.
Once the integral reaches a certain value the shutter snaps shut.
Some people have successfully modified the exposure circuit with a potentiometer in place of the photoresistor to set the shutter speeds.
I tried this but the results were not so good.
So I threw the analogue electronics out altogether and replaced them with a microcontroller that does the shutter timing.
This works well with shutter times 1, 1/2, 1/4, 1/8, 1/16 1/32, 1/64, 1/128, 1/256, 1/512 seconds and Bulb
Apertures are set by the film speed and Sunny/Dull settings to f/8.8 , 12.5 , 17.5 , 25 , 35 , 50
The modified Automatic 100 works when set with a Light meter.
Hardware
Circuit diagram
Microcontroller
The PIC12F629 from Microchip is very small and cheap.
Six of its eight pins are freely configurable inputs and outputs with interrupts on change.
A 4 Mhz oscillator is on chip.
The 8 Pin DIL package is convenient for hand soldering. There is also a very small SMD package available.
It runs from a 3V> to 5V supply. I chose 4,5V like the original shutter so it can run on 3 AAA cells.
The PICKIT2, a complete development platform for many PIC controllers, is inexpensive and includes all the necessary hard- and software.
Switch
Shutter speeds are set through a BCD (direct, "1" = closed)coding switch.
External 56K pull-up resistors are used because the internal weak pull-ups did not work.
The resulting bit pattern is inverted - 0=1111 1=1110 2=1101 etc.
A complementatry encoder would result in a BCD pattern but those switches are more scarce and more expensive.
Magnet Driver
The shutter magnet is driven through a "open collector" NPN darlington transistor.
I used a MJD122 but any high gain (>1000) type would do.
Shutter contacts
We need the shutter contact that closes on shutter cocking and opens when the first blade has snapped open,
the button coontact for "B" mode and the X-sync for the flash connector.
All three contacts share a common "ground" wire.
Mechanical q
The circuit goes where the analog circuitry was before. The encoder switch could either be in the front of the shutter or on top of it.
Program
The Assembler program , (assembled HEX file) initializes the PIC first.
When the main loop starts the PIC goes into sleep mode and waits until the shutter is cocked (shutter switch goes low).
On cocking shutter(switch goes low) the PIC turns the holding magnet on and reads the dial switch, then continuously tests for shutter open (shutter switch high).
When the shutter has opened the program calls the exposure table where it finds the value to start the timer with,starts the timer and cuts off the magnet ->shutter closes.
If the dial switch is "9" the program jumps into the "BULB" routine , which holds the shutter open as long as the button contact is pressed.
The button switch uses an input of the dial switchg that is open at "9".
Then the program jumps back into the main loop and the PIC goes to sleeop until the shutter is cocked again.
include
__config (_CP_OFF & _MCLRE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF & _CPD_OFF &_PWRTE_OFF)
cblock 0x20
Delay1 ; Adjustable exposure delay
endc
org 0
Init:
bsf INTCON,GIE ; Enable global interrupt
bsf INTCON,T0IE ; Enable timer0 interrupt
bsf INTCON,GPIE ; Enable interrupt-on-change
clrf GPIO ; Initialization GP0-GP5
movlw 0x07 ; TURN-OFF analog comparator
movwf CMCON
bsf STATUS,RP0 ; Select bank 1
call 3FFH ; Load callibration value for the internal oscillator
movwf OSCCAL
bsf IOC,4 ; Enable interrupt-on-change, GP4
bcf TRISIO,5 ; Make GP5 an output
movlw b'00000011' ; Set timer0 prescaler to 16
movwf OPTION_REG
bcf STATUS,RP0 ; Back to bank0
MainLoop:
bcf INTCON,T0IF ; Clear timer0 interrupt flag
bcf INTCON,GPIF ; Clear switch interrupt flag
sleep ; Wait for switch being pressed
btfss INTCON,T0IF ; Debouncing (4096us delay)
goto $-1
bsf GPIO,5 ; Set GP5 output high. (turns ON the electromagnet, holds shutter open)
movf GPIO,w ; Read coded switch (shutter dial)
andlw b'00001111' ; Clear the upper nibble
xorlw b'00001111' ; Invert for straight BCD switch
btfss GPIO,4 ; Wait for shutter to be opened. (switch being released)
goto $-1
clrf TMR0 ; Start timer0
call LookUpTable ; Get exposure time
call Delay ; Exposure
Close:
bcf GPIO,5 ; Set GP5 output low. (turns OFF the electromagnet, closes shutter)
goto MainLoop
Delay: ; Exposure: (adjustable time delay)
movwf Delay1
bcf INTCON,T0IF ; Clear timer0 interrupt flag
btfss INTCON,T0IF ; Wait for timer0 overflow interrupt flag (4096us)
goto $-1
decfsz Delay1,f ; 4096us x delay1 (value is taken from LookUpTable)
goto $-4
return
LookUpTable: ; LookUpTable returns delay1 value
addwf PCL,f
retlw b'00000000' ; Coded switch:0 4096us x 256
retlw b'10000001' ; Coded switch:1 4096us x 128
retlw b'01000001' ; Coded switch:2 4096us x 64
retlw b'00100001' ; Coded switch:3 4096us x 32
retlw b'00010001' ; Coded switch:4 4096us x 16
retlw b'00001001' ; Coded switch:5 4096us x 8
retlw b'00000101' ; Coded switch:6 4096us x 4
retlw b'00000011' ; Coded switch:7 4096us x 2
retlw b'00000001' ; Coded switch:8 4096us x 1
call BULB ; Coded switch:9 regime B
BULB:
btfss GPIO,1 ; Wait for button switch being released
goto $-1
goto Close
end
Test
Testing the shutter speeds with an oscilloscope shows that they are accurate.
Test shots with FP-100C, light measured with a Gossen Digiflash meter are exposed correctly.
Cocking the shutter powers the magnet.
To release the magnet without taking a picture the bellows is pushed back the bellows switch in the battery compartment cuts off power to the pic.
The shutter can now be tripped without opening.
Test photos:
This PIC project could be easily modified for driving solenoid shutters like the Ilex, Melles-Griot etc.
Photos
Prototype, PIC side view
Prototype, switch /driver side view
Prototype, side view
Shutter, front view. black=ground, red=+4,5v, rec/brown=magnet, white=button-sw, violet=shutter-sw
Electronics in place, pc socket wired, before closing.
Many thanks to Anatoly Johnson for helping me with the programming.
Written by Georg Holderied 2011.You are welcome to copy, distribute, modify this project.
I would appreciate a link back to my flickr page http://www.flickr.com/photos/polapix/