Skip to content

WilliamCordero/HyperPan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HyperPan Control Software

William Cordero Photo <william.cordero@gmail.com>

--

Dependencies

Build

$ make

Install & Uninstall

$ sudo make install
$ sudo make uninstall

Usage

Usage: hyperpan [OPTION...]
            virtual|sphere|slave|35|6x45|45x6|6x6|6x7|7x6|6x8|8x6|6x9|9x6|6x17|17x6

 * HyperPan Control Software.
   William Cordero Photo
   http://williamcordero.com
   https://github.com/WilliamCordero/HyperPan

Actions:

   virtual      Custom size virtual sensor
   sphere       Cover the entire area
   slave        Slave mode
   35           Full Frame    24x36mm
   6x6          Medium Format 60x60mm
   6x45 45x6    Medium Format 60x45mm
   6x7   7x6    Medium Format 60x70mm
   6x8   8x6    Medium Format 60x80mm
   6x9   9x6    Medium Format 60x90mm
   6x17 17x6    Medium Format 60x170mm

Options:

  -a, --auto                 Auto Focus On
  -b, --delay=DELAY          Trigger delay
  -c, --fast                 High speed
  -d, --dummy                Dummy mode
  -f, --focal=FOCAL          Focal length(Def:50mm)
  -g, --save=FILE            Save to file
  -h, --height=HEIGHT        Sensor height(Def:23.5mm)
  -l, --load=FILE            Load file
  -m, --motion               No trigger
  -o, --overlap=OVERLAP      Overlap area(Def:0.375)
  -q, --quiet                Quiet output
  -s, --speed=SPEED          Trigger speed(Def:0.5s)
  -v, --verbose=LEVEL        Verbose level
  -w, --width=WIDTH          Sensor width(Def:15.6mm)
  -x, --vwidth=VWIDTH        Virtual sensor width(Def:60mm)
  -y, --vheight=VHEIGHT      Virtual sensor height(Def:60mm)
  -z, --slow                 Low speed
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory
or optional for any corresponding short options.

Actions

virtual

Emulates a virtual sensor using one smaller, -w WIDTH and -h HEIGHT set the size of the native sensor on the camera and -x WIDTH and -y HEIGHT set the virtual sensor size.

Actions 35, 6x45, 45x6, 6x6, 6x7, 7x6, 6x8, 8x6, 6x9, 9x6, 6x17 and 17x6 are aliases to their respective virtual sensor formats.

sphere

Cover the entire area. For virtual tours or 360° photography. More wide the lens, less number of shots.

slave

-g FILE save a sequence path into a file, the dummy mode(-d) could be useful in this cases.

$ hyperpan 35 -d -g path 

slave allows control through the standard input(stdin) or loading a file(-l FILE).

$ cat path | hyperpan slave
$ hyperpan slave -l path 

Control

In order to calculate the correct angles of view set -f FOCAL to the focal length on the camera.

-o OVERLAP set the overlap between shots, 0.375 by default.

hyperpan minimize vibration by limiting speed and acceleration, when you need speed and vibration is not a problem (e.g. flash photography) -c set the maximum speed available.

For a smooth ride use -z, also -b SEC do a pause before every shot.

-s SEC set the trigger speed.

-a activate AutoFocus before every shot, use -b SEC to allow the AutoFocus some time to work.

-m turn off the camera trigger.

Verbose

-v LEVEL

L_INFO 0B00000001 //1  Info
L_STPR 0B00000010 //2  Steppers
L_SPHR 0B00000100 //4  Sphere
L_CAMR 0B00001000 //8  Camera
L_TRGR 0B00010000 //16 Trigger
L_SLVE 0B00100000 //32 Slave
L_OUTP 0B01000000 //64 Output

Example

Using a 50mm lens, emulate a 60mm•60mm image sensor format with an APS-C sensor(23.5mm•15.6mm).

$ hyperpan 6x6 -v13 -f50 -h23.5 -w15.6 

HyperPan

# α:
# ο: ★:
# δ: ★:
# δ:     focal:  50.00 mm
# δ: υ: sensor:  23.50 •  15.60 mm
# δ: υ:      α:  26.45 •  17.73 °
# δ: υ:     α':  21.49 •  14.41 °
# δ: υ:      Ξ:  0.375
# δ: ν: sensor:  60.00 •  60.00 mm
# δ: ν:      α:  61.93 •  61.93 °
# ο: ↝: 0.00:ρ  -21.49:θ  -23.23:φ
# ο: ↝: 0.00:ρ  -21.49:θ   -7.74:φ
# ο: ↝: 0.00:ρ  -21.49:θ    7.74:φ
# ο: ↝: 0.00:ρ  -21.49:θ   23.23:φ
# ο: ↝: 0.00:ρ    0.00:θ   28.82:φ
# ο: ↝: 0.00:ρ    0.00:θ   14.41:φ
# ο: ↝: 0.00:ρ    0.00:θ   -0.00:φ
# ο: ↝: 0.00:ρ    0.00:θ  -14.41:φ
# ο: ↝: 0.00:ρ    0.00:θ  -28.82:φ
# ο: ↝: 0.00:ρ   21.49:θ  -23.23:φ
# ο: ↝: 0.00:ρ   21.49:θ   -7.74:φ
# ο: ↝: 0.00:ρ   21.49:θ    7.74:φ
# ο: ↝: 0.00:ρ   21.49:θ   23.23:φ
# ο: ↝: 0.00:ρ  -90.00:θ  -90.00:φ
# ω:

Hardware Configuration

src/config.h

For each stepper motor there are a set of #define with their respective configuration. Which GPIO pins are connected at which pins on the stepper driver (DRV8834), the microstepping mode 1/32-step and the steps per rotation, which is the product of the motor steps and the gear multiplier, in this case the motor has 200 steps with 8X multiplier (128T/16T gears).

THETA_SLEEP 12    //GPIO 12
THETA_STEP  6     //GPIO 6
THETA_DIR   5     //GPIO 5
THETA_M0    16    //GPIO 16
THETA_M1    13    //GPIO 13
THETA_MODE  32    //MICROSTEP MODE 1/32
THETA_STEPS 200*8 //STEPS PER ROTATION

There are also some #define to control the motor's speed and acceleration, there are three sets; one for default mode(_DEF), another used with the argument -c for Fast Mode(_FAST) and the last one, used with the argument -z for Slow Mode(_SLOW).

  • MIN is the minimum time in microseconds for the faster steps, this can't be lower to the time require by the combination of stepper/driver/raspberry to operate without losing steps.
  • MAX is the maximum time in microseconds for the slower steps.
  • BORDER is the part of each travel used to accelerate and decelerate(total_travel/BORDER).

Increasing the speed also increase vibrations, if you want a faster movement set a low value for MAX, as low as MIN and a high value for BORDER, or, if you want a smooth movement, set a high value for MIN and MAX and a low value for BORDER.

MIN_DEF     40
MAX_DEF     230
BORDER_DEF  14
MIN_FAST    40
MAX_FAST    40
BORDER_FAST 1000
MIN_SLOW    200
MAX_SLOW    400
BORDER_SLOW 2

In src/config.h you can also find some #define for the default arguments, e.g.

D_FOCAL     50.0  //DEFAULT FOCAL LENGH 50mm

Circuit diagram

Schematics

Rasberry Pi 3 PCB Hat

Spherical Coordinates

*Spherical Coordinate System

Bugs


Report bugs to William Cordero <william.cordero@gmail.com>.

Open Source Licensing GPL V2


If you wish to use this software under Open Source Licensing, you must contribute all your source code to the open source community in accordance with the GPL Version 2 when your application is distributed. http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.