June 18, 2026
Description
Update (3-06-26): The obliquity phasing was mirrored since it is running in the opposite direction (CW) of the eccentricity phase (CCW), & the linkage reverses the obliquity displacement as the gears rotate. Also, the linkages at the coupling were slightly shortened to improve motion. The updated files are: kurt_descovich_eot_mechanism_secondary_gear_v2.stl, kurt_descovich_eot_ mechanism_leverA_v2.stl, kurt_descovich_eot_ mechanism_leverB_v2.stl.
The following describes the equations and build parameters required to integrate the Equation of Time (EoT) into a so-called mechanical computer using gears, based on the work by Kurt Descovich. It is intended to be installed on a practical equatorial sundial platform, thereby eliminating the need for an analemma plate to correct true or apparent solar time to mean solar time. You can watch his explanation (in German) here: Sonne und Zeit—nicht ganz alltägliche Sonnenuhren (skip to 11:44).
The following visually demonstrates how the EoT can be emulated by one gear rotating around another. The animation can be viewed here: https://www-ccv.adobe.io/v1/player/ccv/C83CeCNNWjW/embed?bgcolor=%23191919&lazyLoading=true&api_key=BehancePro2View (courtesy: The Equation of Time - Kevin Karney).
Here is another animation demonstrating the same principle but employing the Kurt Descovich Method to trace out the EoT; i.e. a mechanical solution utilizing two gears & two Scotch yoke linkages moving within a common carrier: https://www-ccv.adobe.io/v1/player/ccv/9Nude6hPAQn/embed?bgcolor=%23191919&lazyLoading=true&api_key=BehancePro2View (courtesy: The Equation of Time - Kevin Karney)
A final implementation plan hasn’t been fully developed yet; however, I intend to integrate this mechanism into a modified Pilkington & Gibbs sundial design, to be released at a later date. Here's a quick look:
In such an arrangement, the right (obliquity) crank & gear connecting arm at B would be attached to the sundial’s Alidade and the left (eccentricity) crank & gear arm would be mounted under the hour plate. Proper scaling would be achieved by adjusting the mechanism's k factor, as described below, i.e., the scale/gain in mm/min.
The EoT is the difference between true or apparent solar time and local mean time over the course of a solar year. The difference between these times is primarily due to (within 1st-order approximation) two effects:
the eccentricity of the Earth’s orbit and
the obliquity, or tilt of the Earth’s rotational axis.
The EoT quantifies these two discrepancies, & its value varies throughout the year, typically ranging between about -14 and +16 minutes.
Here is a graph of the EoT showing the combined contributions from both the eccentricity and obliquity components:
The EoT profile is (within 1st-order approximation) the sum of two sinusoids: i.e.
one from orbital eccentricity (annual term), and
one from the obliquity of the ecliptic (semi-annual term).
These sinusoids can be reproduced mechanically using a pair of gears that rotate at 1×/year and 2×/year. With suitable radii and phase, the motion of each gear, along with a simple adder (lever/yoke/differential), would combine to produce a near EoT facsimile.
Let t be time in years from a chosen reference instant t0 such that θ = 2π(t - t0) (radians). A convenient 2-term representation for the EoT in minutes can be expressed as (in cosine form):
EoT(t) ≈ Ae cos(θ + ϕe) + Ao cos(2θ + ϕo)
where;
Eccentricity term (1×/year): Ae ≈ 7.659 min
Obliquity term (2×/year): Ao ≈ 9.863 min
A convenient choice of phases consistent with standard formulas is:
ϕe = π/2
ϕo ≈ 3.5932 rad - π/2 (≈ 115.9°).
Substituting, it can be re-stated as:
EoT ≈ 7.659 cos(M + π/2) + 9.863 cos(2M + 3.5932 - π/2)
or, in sine form: EoT ≈ -7.659 sin(M) + 9.863 sin(2M + 3.5932)
where M is the mean anomaly that advances 2π per tropical year; i.e.
M = 0 at perihelion, when Earth is closest to the Sun;
M = π at about aphelion, halfway through the anomalistic cycle;
M = 2 π at the next perihelion.
For a day-number version, we could write M approximately as:
M(d) = 2𝜋(d−dp)/365.2422
where d is the day count, and dp is the perihelion day count, typically around Jan. 3–5, depending on the year.
Practical note: 4 minutes of EoT = 1° of hour angle and ±16 min is ±4° on a time ring.
A pin located at a radius r from the center of a crank rotating by angle ψ and measured by the projection along a fixed axis produces a displacement along both x & y axes as a function of the crank angle; i.e.
x(ψ) = r cos(ψ)
y(ψ) = r sin(ψ)
In this example, the crank pin is constrained to slide within a Scotch yoke (slot) along the y-axis, while the slider has a linear displacement along the x-axis. In this design, we only need to consider motion along the x-coordinates of the pin; i.e.
x (ψ) = r cos(ψ + a) where a is the initial phase offset.
A mechanical representation of this is illustrated in the figure below:
If we couple two cranks as gears with pin radii of re & ro & combine their motion into a linear adder (e.g., a common carrier taking the sum of two slider links), the total displacement becomes:
x(ψ) = re cos(ψe + ae) + ro cos(ψo + ao),
which is in the same form as our previously defined 2-term EoT equation described previously.
We need to define two coaxial angle functions θ (1 rev/yr) and 2θ (2 rev/yr) in the following way:
We choose a year shaft that turns 1 rev/year & implement a calendar wheel which is indexed every 5 days;
Branch A (eccentricity): transmit 1:1 from the year shaft to the eccentricity crank (one rev/year);
Branch B (obliquity): double the speed to 2:1 so the obliquity crank turns two revs/year.
Then we choose the annual (eccentricity) term as the larger gear rotating once per year, with a drive crank radius re & phase αe. Additionally, we choose the semi-annual (obliquity) term as the smaller gear rotating twice per year, which drives crank radius ro & phase αo.
For some scale factor k that converts millimeters of a slider travel to minutes of time on a dial, etc. we can redefine the total slider displacement as:
x(t ) = k[re cos(θ+ αe) + ro cos(2θ + αo)]
or it can be re-stated as: x(t ) = k[re cos(θ+ αe) - ro cos(-2θ + 180°-αo)]
The last relation best describes the actual obliquity gear angle since its phase is running in the opposite direction (CW), to the eccentricity phase (CCW). Additionally, the linkage reverses the obliquity displacement as the gears rotate & as the calendar days increase. In other words, the minus sign in front of the obliquity term means that the obliquity Scotch-yoke/lever output is inverted relative to the raw crank projection.
We then choose kre = Ae and kro = Ao, and choose αe, αo to match ϕe, ϕo, which we defined previously as:
Ae = kre = 7.659 min,
Ao = kro = 9.863 min,
αe = ϕe = π/2
αo = ϕo = 3.5932 rad + π/2 (≈ 115.9°).
We pick a comfortable mechanical stroke defined as S.
Example S: ±16 mm full scale for ±16 min display. Then k (minutes/mm) = 1 min/mm.
In this example, therefore:
re = Ae/k ≈ 7.659 mm, ro=Ao/k ≈ 9.863 mm
Note that the value of k is chosen arbitrarily. We just need to keep the follower linkages near-linear over the travel to avoid amplitude distortion.
2.3) Phase Reference
We choose t0 on Jan 1 at 00:00 UT.
A date ring is added to the larger gear so that we index daily or weekly. That ring simply sets θ (year angle).
Speeds: annual shaft 1 rev/yr; obliquity branch 2 rev/yr.
Crank radii: with 1.00 min/mm scale → re = 7.659, ro = 9.863 mm.
Phases: αe = 90°, 180-αo = 180 - 115.9 = 64.1° (measured CCW from +x-axis).
Pointer scaling: 1 min on dial = 1 mm slider (or choose your own).
Backlash: aim for <0.05 mm at the slider to avoid jitter in the last ~0.1–0.2 min.
Linearity: keep follower angles small (±10–15°).
Instead of adopting a 1st-order EoT approximation, we can fit the 2-harmonic mechanical Equation of Time model to one of these three other EoT targets using a Python script:
Ephemeris-like EoT model, as per BSS article (Meeus-like / J2000-era);
NOAA 3-term approximation;
CSV of daily true-ephemeris values (JPL, etc.).
The third option is the most accurate & can include EoT averaging (& leap years) over a given era.
The script tries to achieve: Xmech(θ) = EoT(θ)
by optimizing the Fourier series coefficients to yield the smallest possible RMS error.
Leap Years: Adding a knob/offset to account for leap year cycles, or integrating it into the EoT values;
Fine epoch correction: Earth’s perihelion shifts ~1.7 days/century; if we want sub-minute fidelity over decades, we should arrange a tiny trim on ϕe (eccentricity phase) via something like a vernier clamp;
Amplitude trim screws on the crank throws (eccentric pins in slotted discs) to nudge Ae, Ao by a few percent.
The following describes a gear design with module m = 82/122 ≈ 0.672131, such that the larger gear is Ø82.000 mm OD and the smaller gear is Ø41.672 mm OD.
Gear design (module 0.672131, 20° pressure angle (PA), full-depth)
120T (eccentricity)
Pitch Ø dp,e = mz = 80.6558 mm
Outside Ø da,e = m(z + 2) = 82.0000 mm
60T (obliquity)
Pitch Ø dp,o = 40.3279 mm
Outside Ø da,o = 41.6721 mm
Center distance C = (dp,e + dp,o) /2 = 60.4918 mm
Crank throws (1.00 min/mm):
rₑ = 7.659 mm (ecc), rₒ = 9.863 mm (obl).
Phasing: ecc. crank pin = +90 deg. obl. crank pin = 64.1 deg. (CCW from +x-axis).
Maximum combined stroke: -16.528 mm (~ Feb. 13th) to 14.413 mm (~ Oct. 31st).
Reference Linkage length (AB) for EoT = 0: ~ 173.5 mm on approx. Apr. 16th, Jun. 13th, Aug. 31st, Dec. 25th.
The figure below highlights the prototype implementation as a proof-of-concept.
The left (eccentricity) crank & gear connecting arm at A is fixed (except for when adjusting for daylight saving time). The right (obliquity) crank & gear connecting arm at B is connected to a sundial's rotating equatorial ring. Lever A moves in & out of lever B as the gears rotate. The Date Adjust gear rotates the gears until the correct date is indexed through the window. Each minor tick mark on the date gear is 5 days. The major tick indicates the beginning of each month.
The main gear enclosure with a knob on the date adjust gear measures approximately 140 x 100 x 27 mm (LxWxH).
The mechanical solution is limited to two sinusoidal components (1× and 2× annual frequencies), and since the motion of the real Sun is not purely sinusoidal, the best this system is capable of doing against the true-ephemeris EoT is determined to be:
RMS error ≈ 17 s
Peak error ≈ ±34 s (≈0.57 min)
The above errors are the fundamental accuracy limit of a 2-harmonic system, not including any mechanical or manufacturing tolerances, etc.
PETG; 0.2 mm layer height. Gears: 40% infill; sliders: 20–30%;
Using the top cover/carrier, place both the eccentricity (larger gear with month dial) & the obliquity gear (smaller gear) over the provided shafts;
By slightly lifting one of the gears so that the teeth disengage, line up the two alignment marks located on the eccentricity & obliquity gears, making sure also that the date index is set to the beginning of Jan major tick mark;
Slide the connecting arm A (from the inside) into the left carrier slot;
Slide the connecting arm B (from the inside) into the right carrier slot & also slide the opposite end into the connecting arm A. Make sure the sliding end opening of connecting arm B is facing downwards;
Align the Scotch yoke slot openings over the crank pin holes located on the gears & screw in 2x M3-8 round head hex screws, including the two printed bushings;
Install the date adjust knob gear from inside the carrier & add the knob using an M2-6 cap head hex screw. Check that the gears can rotate freely by rotating the date adjust knob;
Add the bottom cover over the top cover using 12x M2-4 cap head hex screws.
Check the file section for the Python scripts & this link to download the spreadsheets: https://drive.google.com/drive/folders/1tLdtdomoTwiFT9XcuwopQHYKS2mexjj4?usp=sharing
The Equation of Time - Resources Page The British Sundial Society: The Equation of Time - Æquātiō Diērum Kevin Karney
License:
Creative Commons — Attribution — Noncommercial — Share Alike