Posted on 2026‑03‑26 | By Astro Enthusiast
Introduction
Watching a distant world cross the face of its star is one of the most rewarding experiences an amateur astronomer can have. With a modern DSLR (or mirrorless) camera, a stable mount, and a bit of patience, you can capture a full‑scale light curve and contribute meaningful data to the exoplanet community. This guide walks you through every stage -- from planning the observation to extracting a clean light curve that can be plotted, fitted, and shared.
Essential Gear
| Item | Why It Matters | Typical Specs |
|---|---|---|
| DSLR/Mirrorless Camera | Low‑noise sensor, RAW capture, long exposures | Full‑frame or APS‑C, ISO 100--800, 16‑bit RAW |
| Telephoto Lens / Telescope | Collect enough photons, provide adequate plate scale | 300 mm--800 mm focal length, f/5--f/8; alternatively a small Schmidt‑Cassegrain (f/10) |
| Equatorial Mount with GoTo | Precise tracking to keep the target star on the same pixels | Payload > camera + optics, periodic error < 5″ |
| Auto‑Guiding (optional but recommended) | Compensates for residual tracking errors over long sessions | Small guide scope + guide camera |
| Filters (optional) | Removes atmospheric color effects, improves SNR | Photometric V‑band (or clear for higher SNR) |
| Laptop & Software | Controls the camera, records logs, processes data | Windows, macOS, or Linux |
Tip: If you're on a budget, a sturdy tripod with a motorized alt‑az mount can work for bright targets, but an equatorial mount yields far more reliable results for faint exoplanet transits.
Planning the Observation
-
Check the Weather & Moon
-
Determine Exposure Settings
-
Create a Timing Plan
- Start imaging at least 30 minutes before the predicted ingress and end 30 minutes after egress.
- Capture a continuous sequence with minimal gaps (≤ 5 seconds) to preserve temporal resolution.
Acquiring the Data
3.1 Camera Settings
File format: https://www.amazon.com/s?k=RAW&tag=organizationtip101-20 (14‑https://www.amazon.com/s?k=bit&tag=organizationtip101-20 or 16‑https://www.amazon.com/s?k=bit&tag=organizationtip101-20)
White https://www.amazon.com/s?k=balance&tag=organizationtip101-20: https://www.amazon.com/s?k=auto&tag=organizationtip101-20 or set to https://www.amazon.com/s?k=daylight&tag=organizationtip101-20 (won't affect https://www.amazon.com/s?k=RAW&tag=organizationtip101-20)
Focus: Manual, set to infinity or use live view with a bright star
Exposure mode: https://www.amazon.com/s?k=bulb&tag=organizationtip101-20 (controlled via software) or fixed long exposure
ISO: 200--400 (adjust after test https://www.amazon.com/s?k=frames&tag=organizationtip101-20)
3.2 Automation
Software options: SharpCap , Sequence Generator Pro (SGP) , Nebulosity , or Astro Photography Tool (APT) .
Configure the software to:
- Trigger exposures automatically.
- Write timestamps to the image metadata (UTC).
- Save each frame with a sequential filename (e.g.,
IMG_0001.CR2).
3.3 Guiding (if used)
- Lock onto a bright star near the target field.
- Use a guide camera and software like PHD2 to send corrections to the mount.
- Monitor the guide RMS; aim for < 0.5 pixels RMS.
Calibration Frames
To correct pixel‑to‑pixel variations and sensor bias, collect the following:
| Frame Type | Quantity | How To Acquire |
|---|---|---|
| Bias | 20--30 | Shortest possible exposure, closed shutter, same ISO |
| Dark | 10--20 | Same exposure time, ISO, and temperature as light frames; cover the lens/telescope |
| Flat | 15--20 | Evenly illuminated surface (telescope's flat field panel or white screen) at same focus and aperture as light frames |
Store all calibration frames in separate folders; they will be stacked later.
Reducing the Images
5.1 Build Master Calibration Frames
Use IRAF , AstroImageJ , or the free tool PixInsight:
# Example with AstroImageJ (GUI):
1. Load bias https://www.amazon.com/s?k=frames&tag=organizationtip101-20 → "Create Master Bias"
2. Load dark https://www.amazon.com/s?k=frames&tag=organizationtip101-20 → "Create Master Dark" (subtract Master Bias first)
3. Load https://www.amazon.com/s?k=flat&tag=organizationtip101-20 https://www.amazon.com/s?k=frames&tag=organizationtip101-20 → "Create Master https://www.amazon.com/s?k=flat&tag=organizationtip101-20" (subtract Master Bias, then divide by Master Dark)
5.2 Apply Calibrations
Calibrated = (Light - MasterBias - MasterDark) / MasterFlat
Most software lets you batch‑process an entire folder. Verify that stars remain round and the background looks flat.
5.3 Align the Frames
Because small tracking errors will shift the field, align all calibrated frames on a reference star. The alignment should be sub‑pixel to avoid introducing artificial noise.
- In AstroImageJ : "Register → Align Images"
- In IRAF :
imaligntask
Extracting the Light Curve
6.1 Choose Comparison Stars
- Pick 3--5 non‑variable stars of similar brightness and color to the target, located within the same field of view.
- Avoid stars near the edge of the detector or those that suffer from diffraction spikes.
6.2 Perform Aperture Photometry
Set up an aperture radius of ~1.5--2.0 × the median FWHM of the stars (usually 2--3 pixels for DSLR images).
- Inner sky annulus: 3--5 × FWHM
- Outer sky annulus: 5--7 × FWHM
Software such as AstroImageJ , MuniWin , or Python (photutils) can automate this:
import photutils, astropy.io.fits as fits
from photutils import aperture_photometry, CircularAperture, CircularAnnulus
# Example (simplified):
data = fits.getdata('calibrated_image.fits')
positions = [(x_target, y_target), (x_comp1, y_comp1), ...]
aperture = CircularAperture(positions, r=aperture_radius)
annulus = CircularAnnulus(positions, r_in=inner_radius, r_out=outer_radius)
phot_table = aperture_photometry(data, aperture, annulus=annulus)
6.3 Build the Differential Light Curve
-
Compute the instrumental magnitude for each star:
[ m = -2.5 \log_{10}(F) ]
where F is the background‑subtracted flux.
-
For each frame, calculate the average magnitude of the comparison stars.
-
Subtract this average from the target star's instrumental magnitude to obtain the differential magnitude.
-
Plot differential magnitude versus Barycentric Julian Date (BJD) . Most photometry packages automatically convert UTC timestamps to BJD using the observer's coordinates.
Modeling the Transit
7.1 Detrending
- Remove long‑term trends caused by airmass changes or thin clouds.
- Fit a low‑order polynomial (often 1st--2nd order) to the out‑of‑transit points and subtract.
7.2 Transit Fit
Free tools:
- EXOFASTv2 (web interface)
- PyTransit (Python)
- batman (Python) for generating model light curves
A basic fitting routine using batman:
import https://www.amazon.com/s?k=Batman&tag=organizationtip101-20
import https://www.amazon.com/s?k=NumPy&tag=organizationtip101-20 as np
import lmfit
# Parameters (initial guesses)
params = https://www.amazon.com/s?k=Batman&tag=organizationtip101-20.TransitParams()
params.t0 = 2459000.0 # transit midpoint (BJD)
params.per = 3.52474859 # orbital period (days)
params.rp = 0.1 # planet radius / https://www.amazon.com/s?k=Stellar&tag=organizationtip101-20 radius
params.a = 0.05 # semi-major axis / https://www.amazon.com/s?k=Stellar&tag=organizationtip101-20 radius
params.inc = 87.0 # inclination (degrees)
params.ecc = 0.0
params.w = 90.0
params.u = [0.3, 0.2] # limb darkening coefficients
params.limb_dark = "quadratic"
m = https://www.amazon.com/s?k=Batman&tag=organizationtip101-20.TransitModel(params, time_array) # time_array = BJD values
model_flux = m.light_curve(params)
# Fit https://www.amazon.com/s?k=model&tag=organizationtip101-20 using lmfit (or any optimizer)
def residual(p, https://www.amazon.com/s?k=Flux&tag=organizationtip101-20, flux_err):
params.rp = p['rp']
params.inc = p['inc']
https://www.amazon.com/s?k=model&tag=organizationtip101-20 = https://www.amazon.com/s?k=Batman&tag=organizationtip101-20.TransitModel(params, time_array).light_curve(params)
return (https://www.amazon.com/s?k=Flux&tag=organizationtip101-20 - https://www.amazon.com/s?k=model&tag=organizationtip101-20) / flux_err
# ...run optimizer and retrieve best‑fit rp, inc, etc.
The fitted depth (ΔF) gives the planet‑to‑star radius ratio:
[ \frac{R_*} = \sqrt{\Delta F} ]
Compare your result with published values as a sanity check.
Quality Checks
| Check | What to Look For |
|---|---|
| Scatter (RMS) of Out‑of‑Transit Points | Aim for < 0.01 mag for V ≈ 11 targets; brighter stars can reach < 0.005 mag. |
| Red Noise | Plot residuals binned over 5‑minute intervals; red noise will show a slower decline than √N. |
| Comparison Star Stability | Verify none of the chosen comparison stars show variability during the session. |
| Airmass Trend | Plot magnitude versus airmass; a strong correlation indicates insufficient detrending. |
If any of these issues appear, consider re‑processing with a different aperture size, adding more comparison stars, or discarding frames taken at high airmass (> 2.0).
Submitting Your Data
Many citizen‑science projects accept well‑documented light curves:
- AAVSO Exoplanet Section -- upload calibrated light curves, timestamps, and observation logs.
- Exoplanet Transit Database (ETD) -- submit a
.csv with BJD, differential magnitude, and error.
Make sure to include:
- Target name and ephemeris used.
- Equipment details (camera model, lens/telescope, filter).
- Reduction software and version.
- Raw and calibrated frames (optional but appreciated).
Your contribution helps refine orbital parameters and can even flag timing variations caused by additional planets.
Final Thoughts
Capturing an exoplanet transit with a DSLR is an excellent blend of photography, astronomy, and data analysis. While the hardware is relatively affordable, the real magic lies in meticulous planning, disciplined data handling, and careful modeling. With these steps, you'll produce scientifically useful light curves and, perhaps more importantly, join a global community that is uncovering the secrets of distant worlds---one transit at a time.
Happy hunting, and may your pixels be ever photon‑rich! 🚀✨