Skip to Content

Camera Control

Posted in

 Camera Control

 

The time-lapse engine provides the following camera control functions:

 

  • Exposure Time
  • Interval (Cycle Delay)
  • Post-Exposure Delay Time
  • Pre-focus Tap Time
  • Maximum Shot Count

 

Exposure and Interval timers are non-blocking, this means that you may continue to interact with the engine while a timer is engaged (e.g. during an exposure), or even trigger keyframes.  This is especially useful when you want to continue to modify your program based on time during the execution of your program.  Post-exposure and Pre-focus tap timers are blocking, however, and you may not expect time-based keyframes to execute during these actions.

 

Exposure Time

 

Exposure time is set in milli-seconds, from 1 to 4,294,967,296.  Or, 1/1000th of a second to nearly 50 days. (49.7103 days to be more precise!)

  • For bulb-mode exposures, you should set the exact amount of exposure time
  • For camera-set exposure values, set the minimum trigger time required by your camera for reliable shooting

You will need to perform some experimentation to determine what the minimum trigger time for your camera is.  Some cameras will detect a trigger on the remote in 10-20 mS, while others may require 70 or even 100mS to detect the remote accurately.  Make sure you let your camera run for a while with a single trigger time when testing to make sure that it doesn't miss the occasional trigger.  The fastest time that your camera will reliably recognize is the preferred trigger time to use for all camera modes except 'bulb'.

 

The Exposure timer is non-blocking.

 

Interval (Cycle Delay)

 

Interval is set in seconds, from 1 to 65,536 (Around 45.5 days.)

The interval time is the amount of time to wait between shots. 

The Interval timer is non-blocking.

 

Post-Exposure Delay Time

 

Post-exposure delay time is set in milli-seconds, from 1 to 65,536. (65.5 seconds.)

The post-exposure delay timer specifies how long after completing a shot to wait before moving any motor.  This is used when the Exposure Time Setting is less than the actual exposure value set in the camera.  For example, when shooting with the camera in manual mode, if the camera is set to a 1 second exposure, and the Exposure Time Setting is set as 70mS, you would want a post-exposure delay of at least 930mS to prevent the motors from moving while the camera is exposing.

Note: If your combination of exposure time, post-exposure time, and the amount of time it takes to move your motors the required distance exceeds your interval time, the actual interval time between shots will be greater than or equal to the combination of these times.  The engine will not execute another shot until all outstanding activities have been completed for the current cycle.  It will, however, attempt to execute the next shot at the earliest available opportunity.

The post-exposure delay timer is a blocking timer, and therefore no time-based keyframes will occur while this is running, and the engine will not act upon any serial commands while in post-exposure delay.

 

Pre-Focus Tap Time

 

Pre-Focus tap time is set in milli-seconds, from 1 to 65,536. (65.5 seconds.)

The pre-focus tap timer allows you to tap the focus line (for cameras and remote setups that support this capability) immediately before a shot is executed (exposure is triggered).  This is especially useful for longer interval times where the camera may go to sleep between shots, causing shot cycles to get missed.  

The order of operations, when a positive pre-focus tap time is set, is as follows:

  1. Activate the focus line
  2. Delay tap time mS
  3. De-activate the focus line
  4. Delay tap time mS
  5. Trigger exposure (activate exposure line)

Thus, you will have a delay of at least 2x your pre-focus tap time.  The cause for the second delay is to prevent certain cameras from ignoring an exposure trigger that comes too soon after the pre-focus tap.

The pre-focus tap timer is a blocking timer, and therefore no time-based keyframes will occur while this is running, and the engine will not act upon any serial commands while in focus is being executed.

 

Maximum Shot Count

 

Maximum shot count is an integer from 1 to 65,536.

The camera, and camera alone, will be disabled when the maximum shot counter is reached within the current program execution.  You may rather choose to disable the camera after a certain number of shots, and re-enable it after a certain amount of time through the use of actions and camera and time keyframes.

Setting the maximum shot count to zero specifies that there should be no maximum shot count, and the camera will fire until the program is stopped, paused, or an action to disable the camera is taken.

 

 

Max Shot Count

Hi,

I control my diy open moco system with a small windows programm, which works pretty well, except for one thing I:
Whenever I set a max shot count with

($02) // program setting
($04) // data byte count
($01) // camera control
($04) // set max shot count command
($XX) // max shot count data msb
($XX) // max shot count data lsb

the camera does not fire at all, even when I send 0x00 as the shot count data. Same thing is with the max steps of any axis. When set, the axis does not move. If I don't set the max count oder steps, everything works fine, so far.

What am I doing wrong ?

Best, Matt

Max shot count

Hi Matt,

I'm not aware of any issue with the max shot count, or max step settings. I'll re-test again today to make sure. Have you tried doing the same command with Slim, and seeing if it functions properly that way?

Your pseudo-code seems to be correct.

!c

Max Shot Count

Hi,

I have not tried slim, since all the other features work fine with my GUI.
I am not into Perl that much (yet)...
I have browsed through the sourcecode as well, but I could not find anything that helped me along with this problem.
I have not implemented keyframes and actions into my program yet, maybe I can work out some sort of workaround, if necessary....

Best, Matt...

Replicated

Matt,

I was able to replicate the issue with the max camera shots setting on my setup using the 0.81 release of the engine. The fix is to change line 340 in TimeLapse_Engine.pde -- at the last clause of the if statement, there is this clause:

camera_fired < camera_max_shots

It should be changed to:
camera_fired > camera_max_shots

(greater than, not less than). I will fix this in the next release.

I am unable to replicate any issue with max steps for a motor axis, I am able to set them, and the motor stops when the number of steps are reached, and the program operates normally otherwise. However - just a moment ago, the sketch would not allow the later movement of motors, even after power-off. The sketch had to be re-uploaded, and all operations work as normal. I will investigate this issue.

I pointed to slim not so much for help in programming, but as an alternate application, so you can test whether its your code or the engine giving you problems, all basic functions should work as expected. If not, there's an engine issue.

!c

Fixed !

Hi,

thank you so much. It both works now. I guess, I might have tested the maxsteps only together with the maxshot count and obviously it could not work that way.
When I get done with my software, I will let you know. I suppose, there might be people interested in a Window GUI....

Matt

Software

Matt, we'd really enjoy it if you shared your software!

Chris

Open Moco for Windows

Hi Chris,

here you can have a quick peek at how it is going to look like:

http://www.matthias-uhlig.de/?page_id=479&lang=en

It still needs a little work, but generally, it does what it is supposed to...

Matt