Table of Contents
- CHAPTER 1 — GENERAL INFORMATION
- CHAPTER 2 — THEORY OF OPERATION
- CHAPTER 3 — MATERIALS AND CONSTRUCTION
- CHAPTER 4 — ASSEMBLY PROCEDURES
- CHAPTER 5 — CALIBRATION PROCEDURE
- CHAPTER 6 — TUNING AND ADJUSTMENT
- CHAPTER 7 — VERIFICATION
- APPENDIX A — CALCULATIONS AND FORMULAS
- APPENDIX B — EXAMPLE RESULTS
- APPENDIX C — OSCILLOSCOPE CALIBRATION OVERVIEW
- APPENDIX D — OSCILLOSCOPE TIMEBASE CAL
- APPENDIX E — OSCILLOSCOPE VOLTAGE CAL
CHAPTER 1 — GENERAL INFORMATION
Gear Profile
- Example models: Generic bench or handheld units
- Frequency range: Varies by model; verify datasheet
- Connector type: BNC, SMA, or binding posts
- Typical use: General measurement and calibration checks
Purpose
This guide describes a homebrew, no-calibration-needed method to calibrate a oscilloscope using public reference signals and first-principles checks. It borrows techniques from:
../gps_calibration.md../fm_broadcast_calibration.md../radio_standard_calibration.md../verification_procedures.md
What You Will Build
- A simple reference load (homebrew 50 ohm)
- A quarter-wave coax stub test fixture
- Optional GPS 1PPS counter (if you want tighter frequency checks)
Expected Accuracy
- Frequency axis: 0.1 to 1 ppm (with GPS or time standards)
- SWR/impedance: limited by resistor tolerance (typically 1-2%)
CHAPTER 2 — THEORY OF OPERATION
Calibration Philosophy
We use absolute references (GPS 1PPS, WWV/CHU, FM stations) and known physics (speed of light, coax velocity factor, resonance) to validate the analyzer without relying on any pre-calibrated lab equipment.
Key Principles
- Frequency accuracy: Check displayed frequency against GPS/WWV/CHU/FM carriers.
- Impedance accuracy: Validate using a known load and known reactance from a stub or LC.
- Repeatability: Measurements should be stable over time and temperature.
Reference Sources
- GPS 1PPS: Atomic time tick (best accuracy).
- WWV/CHU: HF time standards (good accuracy).
- FM broadcast: Convenient local reference (moderate accuracy).
CHAPTER 3 — MATERIALS AND CONSTRUCTION
Build a 50 ohm Load
- Use four 200 ohm, 1% resistors in parallel.
- Solder directly inside a BNC/SMA connector shell if possible.
- Keep leads short to reduce inductance.
Build a Quarter-Wave Stub
- Choose coax with known velocity factor.
- Cut to calculated length (see Calculations).
- Short the far end (center to shield).
- Label the stub with its target frequency and VF.
Optional GPS 1PPS Interface
- GPS module with 1PPS output.
- LED + resistor for lock indication.
- Optional ESP32/CYD counter (see optional code example).
CHAPTER 4 — ASSEMBLY PROCEDURES
Assembly Steps
- Build or verify the 50 ohm load.
- Build one or more quarter-wave stubs (pick key bands).
- Prepare short, known-good test leads.
- Warm up the analyzer (10-15 minutes) before calibration checks.
CHAPTER 5 — CALIBRATION PROCEDURE
Step-by-Step
- Warm up the analyzer for 10-15 minutes.
- Frequency check using WWV/CHU or FM station:
- Measure known carrier.
- Calculate ppm error.
- Apply correction if supported.
- Impedance check using the 50 ohm load:
- Confirm 45-55 ohm range.
- Record SWR.
- Reactive check using the shorted stub:
- Find resonance dip.
- Compare with calculated frequency.
- Document the offsets and repeatability.
CHAPTER 6 — TUNING AND ADJUSTMENT
Frequency Axis Check
- Measure WWV/CHU or FM carrier frequency.
- Compare to published frequency.
- If your analyzer supports frequency offset adjustment, apply correction.
Impedance/SWR Check
- Connect the 50 ohm load.
- The analyzer should read close to 50 ohm and low SWR.
- Connect the shorted stub and locate the resonance dip; compare to expected.
Trim and Iterate
- If stub resonance is off, trim length in small increments.
- Re-check until resonance aligns within expected tolerance.
CHAPTER 7 — VERIFICATION
Verification Checklist
- Re-measure the reference carrier after calibration.
- Measure a second independent reference (FM vs WWV/CHU).
- Confirm measurements are stable across 3-5 repetitions.
Acceptance Targets
- Frequency accuracy: within 0.1-1 ppm of reference.
- Load accuracy: within 1-2% of 50 ohm.
APPENDIX A — CALCULATIONS AND FORMULAS
Quarter-Wave Coax Stub
Use a shorted coax stub to create a known resonance:
L = (c / (4 * f)) * VF
Where:
- L = stub length (meters)
- c = 299,792,458 m/s
- f = frequency (Hz)
- VF = velocity factor of coax (e.g., 0.66 solid PE, 0.78 foam)
Example
Target frequency: 14.200 MHz
L = (299,792,458 / (4 * 14,200,000)) * 0.66
L = 3.49 m
Cut slightly long, then trim while watching the analyzer until resonance hits target.
50 ohm Load (Homebrew)
Parallel resistor network:
R_total = 1 / (1/R1 + 1/R2 + ... + 1/Rn)
Example
Four 200 ohm resistors in parallel:
R_total = 1 / (4/200) = 50 ohms
Use 1% or 0.1% resistors if possible.
APPENDIX B — EXAMPLE RESULTS
Example Log
Date: 2026-01-15
Gear: Example Analyzer
Reference: WWV 15 MHz
Measured: 15,000,012 Hz
Error: +0.8 ppm
Load Test: 50 ohm load
Measured: 50.9 ohm
SWR: 1.02
Stub Test (14.200 MHz target)
Measured dip: 14.198 MHz
Error: -0.14%
APPENDIX C — OSCILLOSCOPE CALIBRATION OVERVIEW
Overview
The DSO1013D Plus (Hantek/Owon) oscilloscope requires calibration for accurate measurements. This guide provides cheap, homebrew methods using no calibrated test equipment.
What Needs Calibration
Oscilloscopes have three main calibration aspects:
- Timebase (Horizontal) - Time/frequency accuracy
- Voltage (Vertical) - Amplitude accuracy
- Probe Compensation - Probe frequency response
Calibration Requirements
1. Timebase Calibration
What it affects: - Time measurements (period, pulse width) - Frequency measurements - Phase measurements - Bode plot accuracy
Typical uncalibrated error: ±50-100 ppm (±0.005-0.01%)
Goal: Calibrate to ±1 ppm or better
Method: GPS 1PPS (same as TinySA/NanoVNA)
2. Voltage Calibration
What it affects: - Amplitude measurements - DC level measurements - Peak-to-peak voltage - RMS calculations
Typical uncalibrated error: ±3-5%
Goal: Calibrate to ±1% or better
Method: Precision voltage references
3. Probe Compensation
What it affects: - Square wave shape - Rise time measurements - High-frequency response
Typical state: Needs adjustment every time probe is connected
Goal: Flat frequency response, no overshoot/undershoot
Method: Built-in cal signal (if available) or external square wave
Quick Summary
| Calibration | Accuracy Goal | Cost | Time | Difficulty |
|---|---|---|---|---|
| Timebase | ±1 ppm | $15-25 | 2-4 hours | Easy |
| Voltage | ±1% | $5-15 | 1-2 hours | Easy |
| Probe Comp | Flat response | $0 | 5 min | Very Easy |
Total: $20-40, one weekend
Understanding the DSO1013D Plus
Specifications
Typical specs: - Bandwidth: 100 MHz - Sample Rate: 1 GSa/s max - Channels: 2 - Vertical: 2 mV/div to 5 V/div - Horizontal: 2 ns/div to 50 s/div - Timebase crystal: Usually 25 MHz or 100 MHz - Input impedance: 1 MΩ || 15-20 pF
Internal Architecture
Timebase:
Crystal Oscillator (25 MHz typical)
↓
PLL (multiplies to higher frequencies)
↓
Sample clock (up to 1 GHz)
↓
ADC sampling
Vertical:
Input → Attenuator → Amplifier → ADC → DSP → Display
(Voltage divider calibrated in firmware)
Calibration Access
Internal Calibration (Firmware)
Most DSO1013D scopes have internal calibration menus:
Accessing calibration mode: 1. Power off scope 2. Hold down specific button while powering on 3. Or navigate to hidden UTILITY → CAL menu
Warning: Different firmware versions have different access methods. Check manual or online forums for your specific model.
What can be calibrated: - DC offset (each channel, each V/div setting) - AC gain (each channel, each V/div setting) - Timebase frequency - Trigger levels
Our Approach
We'll use external reference methods: - Don't need to access internal cal menus - Verify scope's existing calibration - If scope is off, we'll know by how much - Can document errors and apply mental corrections - Or: Note corrections in label on scope
Calibration Strategy
Phase 1: Timebase (Frequency)
Method: GPS 1PPS (reuse from TinySA project)
Procedure: 1. Generate GPS-locked 1 Hz signal (1 PPS) 2. Measure pulse width or period on scope 3. Should read exactly 1.000000 seconds 4. Calculate error 5. Apply correction (if possible) or document
Accuracy: ±0.01 ppm
Phase 2: Voltage References
Method: Precision voltage references
Build 4 reference voltages: 1. 1.25V - LM4040-1.25 (±0.1%) 2. 2.50V - LM4040-2.5 (±0.1%) 3. 5.00V - LM4040-5.0 (±0.1%) 4. 10.0V - Precision divider from 5V
Procedure: 1. Build reference circuit 2. Measure on scope at various V/div settings 3. Compare to known reference values 4. Calculate errors 5. Document or apply corrections
Accuracy: ±0.5-1%
Phase 3: Probe Compensation
Method: Built-in cal output or external square wave
Procedure: 1. Connect probe to cal signal (usually 1 kHz square wave) 2. Adjust probe compensation trimmer 3. Square wave should have flat top, no overshoot 4. Repeat for each probe
Time: 2 minutes per probe
Cost Breakdown
Minimum Budget: $5
If reusing GPS from TinySA calibration: - Voltage references: LM4040 ICs × 3 ($3) - Resistors for divider ($1) - Breadboard (have) - Total: $5
Recommended Budget: $25
New build: - GPS module + Arduino ($20 - reuse from TinySA) - Voltage references ($5) - Components, breadboard ($5) - Total: $30
Deluxe Budget: $50
For best accuracy: - GPS module ($15) - Arduino ($10) - Precision voltage references × 4 ($10) - REF02 +10V reference ($5) - 0.1% resistors for dividers ($5) - Enclosure, connectors ($10) - Total: $55
What You'll Achieve
Before Calibration
Timebase: - Unknown error (could be ±100 ppm) - Example: 1 ms measures as 1.0001 ms - At 1 MHz: Could be off by 100 Hz
Voltage: - Unknown error (could be ±5%) - Example: 5.00V measures as 5.25V - Can't trust amplitude measurements
Probes: - Frequency-dependent errors - Overshoot on square waves - Poor rise time
After Calibration
Timebase: - Error known to ±0.01 ppm - Example: 1 ms measures 1.000000 ms ±10 ns - Frequency measurements accurate to ±1 Hz
Voltage: - Error known to ±1% - Example: 5.00V measures 5.00V ±0.05V - Can trust amplitude within ±1%
Probes: - Flat frequency response - Clean square waves - Accurate rise time measurements
Tools Needed
Essential
- DSO1013D oscilloscope (obviously!)
- Computer
- Soldering iron
- Multimeter (any quality, for assembly)
- Breadboard
- Wire, components
From Previous Projects
- GPS module + Arduino (TinySA calibration)
- Frequency counter (if built)
Optional
- Good quality DMM (for voltage verification)
- Second oscilloscope (cross-checking)
- Signal generator (verification)
Project Files Structure
Documentation
- oscilloscope_calibration_overview.md (this file)
- oscilloscope_timebase_cal.md - Timebase calibration
- oscilloscope_voltage_cal.md - Voltage reference building
- oscilloscope_probe_comp.md - Probe compensation
- oscilloscope_verification.md - Testing and verification
Examples
- examples/dso1013d_complete_calibration.md - Full worked example
Typical Errors Found
Common Issues
Timebase errors: - ±20-50 ppm typical for uncalibrated scope - ±100 ppm for very cheap scopes - Temperature-dependent drift
Voltage errors: - DC offset: ±50-100 mV - Gain error: ±2-5% per channel - Different error for each V/div setting - Nonlinearity at low voltages
Probe issues: - Under-compensated: rounded edges, slow rise time - Over-compensated: overshoot, ringing - Damaged probes: total distortion
Calibration Frequency
How Often to Calibrate
Timebase: - Initial: Full GPS calibration - Check: Monthly with FM broadcast (5 min) - Re-calibrate: Annually or if suspected drift
Voltage: - Initial: Full calibration with references - Check: Before critical measurements - Re-calibrate: Every 6 months
Probe Compensation: - Every time you connect a probe! - After moving probe - After temperature change - Takes 30 seconds - no excuse not to do it
Limitations
What We Can't Calibrate
Without opening scope: - Internal ADC linearity - Sample rate accuracy (beyond timebase) - Bandwidth (3dB point) - Input protection circuits
What requires factory calibration: - Non-linearity correction - Temperature compensation tables - Trigger level DAC - Attenuator switching
Good news: Our external calibration catches most errors!
Safety Notes
Working with Oscilloscopes
Safe: - External calibration circuits (5-10V max) - Probe compensation - Timebase measurement
Caution: - Opening scope case (capacitors retain charge) - High voltage probes (>50V) - Mains-powered circuits
Never: - Connect scope to mains voltage directly - Short scope inputs - Apply >300V (typical input limit)
For this project: Everything is low voltage (≤10V), very safe.
Success Criteria
Well-Calibrated Oscilloscope
Timebase: - ✓ 1 second GPS pulse measures 1.000 s ±1 ms - ✓ 1 kHz signal measures 1.000 kHz ±1 Hz - ✓ Frequency measurements match counter
Voltage: - ✓ 5.00V reference measures 5.00V ±0.05V - ✓ 1.25V reference measures 1.25V ±0.01V - ✓ All channels agree ±1%
Probes: - ✓ Square wave has flat top - ✓ No overshoot or ringing - ✓ Fast, clean edges
Applications After Calibration
What You Can Now Measure Accurately
Time domain: - Pulse widths (±1%) - Period/frequency (±0.01%) - Rise/fall times - Phase shifts - Timing diagrams
Voltage: - DC levels (±1%) - AC amplitudes (±1-2%) - Peak-to-peak voltages - RMS values (if scope calculates)
Waveforms: - PWM duty cycle - Signal integrity - Noise measurements - Transient response
Digital: - Logic levels - Setup/hold times - Clock jitter (if low enough)
Comparison to Professional Calibration
Commercial Calibration Service
Cost: $100-300 Time: 2-4 weeks turnaround Accuracy: ±0.5% voltage, ±1 ppm timebase Includes: Certificate, traceable to NIST
Our DIY Calibration
Cost: $20-40 Time: 1 weekend Accuracy: ±1% voltage, ±0.01 ppm timebase Includes: Documentation, understanding
Conclusion: DIY is 10× cheaper, comparable accuracy, you keep your scope!
Learning Outcomes
Technical Knowledge
- How oscilloscopes work internally
- Voltage reference circuits
- GPS timing applications
- Probe loading effects
- Calibration methodology
Practical Skills
- Building precision circuits
- Voltage reference design
- Oscilloscope operation
- Measurement uncertainty
- Troubleshooting techniques
Confidence
- Trust your measurements
- Understand error sources
- Design reliable circuits
- Debug effectively
Next Steps
- Read: oscilloscope_timebase_cal.md
- Build: GPS timebase reference (or reuse from TinySA)
- Read: oscilloscope_voltage_cal.md
- Build: Voltage reference circuit
- Calibrate: Follow procedures
- Verify: Test with known signals
- Document: Record calibration data
Quick Start Options
Option A: Timebase Only (2 hours)
If you already have GPS setup: 1. Connect GPS 1PPS to scope 2. Measure pulse period 3. Calculate error 4. Done - know timebase accuracy
Cost: $0 (reuse GPS) Result: Know frequency errors
Option B: Voltage Only (2 hours)
Build simple reference: 1. Buy LM4040-5.0 ($2) 2. Build basic circuit 3. Measure on scope 4. Calculate errors
Cost: $5 Result: Know voltage errors
Option C: Complete Calibration (1 weekend)
Full system: 1. Timebase with GPS (4 hours) 2. Voltage references (2 hours) 3. Probe compensation (30 min) 4. Verification (2 hours)
Cost: $20-40 Result: Fully calibrated scope!
Summary
The Challenge
DSO1013D needs calibration for accurate measurements, but factory calibration costs $100-300 and takes weeks.
The Solution
- Timebase: GPS provides atomic clock accuracy ($15-25)
- Voltage: Precision references are cheap ($5-15)
- Probes: Built-in cal signal (free)
- Total: $20-40, one weekend
The Result
- Timebase accurate to ±0.01 ppm
- Voltage accurate to ±1%
- Probes properly compensated
- Confidence in measurements
- Deep understanding of oscilloscope operation
Ready to calibrate? Continue to oscilloscope_timebase_cal.md!
APPENDIX D — OSCILLOSCOPE TIMEBASE CAL
Overview
The oscilloscope's timebase determines how accurately it measures time and frequency. This guide shows how to calibrate using GPS atomic clock accuracy.
Key Insight: Same GPS methods used for TinySA/NanoVNA work perfectly for oscilloscopes!
Quick Method: GPS 1PPS
If You Already Built GPS Setup
From TinySA/NanoVNA calibration: - GPS module with 1PPS output: Ready ✓ - Arduino (optional): Not needed for scope!
New procedure: 1. Connect GPS 1PPS to oscilloscope input 2. Measure pulse characteristics 3. Calculate timebase error 4. Document or apply correction
Time: 15-30 minutes Cost: $0 (reuse existing GPS)
Step-by-Step Procedure
Step 1: GPS Setup (if not already built)
See: gps_calibration.md for detailed GPS module setup
Quick version: 1. GPS module (NEO-6M/7M/8M): $10-20 2. Power: 3.3V or 5V 3. Antenna: Included ceramic patch 4. Wait for lock: 30-120 seconds 5. 1PPS output: Blinks once per second
1PPS signal characteristics: - Frequency: 1 Hz (period = 1.000000 seconds) - Pulse width: Typically 100-200 ms - Voltage: 3.3V or 5V TTL - Accuracy: ±50 nanoseconds (±0.00005 ppm!)
Step 2: Connect to Oscilloscope
Connection:
GPS Module Oscilloscope
──────────────────────────────────
1PPS output → CH1 input
GND → GND (scope ground clip)
VCC (5V) → USB power or bench supply
Scope settings: 1. Channel 1: - Coupling: DC - V/div: 1V or 2V (to see ~3-5V signal clearly) - Position: Center
- Timebase:
- Time/div: 200 ms/div (to see ~1 second period)
- Trigger: CH1, rising edge
-
Trigger level: ~1.5V (mid-level)
-
Acquisition:
- Mode: Normal or Auto
- Average: 16 or 32 (reduces jitter)
Step 3: Measure Period
Method A: Cursor Measurement
- Enable cursors:
- Press CURSOR button
-
Select TIME cursors
-
Place cursors on rising edges:
Cursor 1 → First rising edge Cursor 2 → Second rising edge (one pulse later) -
Read delta time (ΔT):
Display shows: ΔT = 1.0023 s (example - your scope will differ) Expected: 1.000000 s Error: +2.3 ms = +2300 ppm!
Method B: Frequency Measurement
- Enable frequency counter (if scope has one):
- Press MEASURE
- Select Frequency
-
Source: CH1
-
Read frequency:
Display shows: Freq = 0.9977 Hz (example) Expected: 1.0000 Hz Error: -0.0023 Hz = -2300 ppm
Method C: Pulse Width
- Measure pulse width:
- MEASURE → Width+ (positive pulse width)
-
Should be stable value
-
Calculate period:
If pulse width = 100.0 ms And duty cycle is known (typically 10% for GPS 1PPS) Period = width / duty_cycle
Note: Period measurement is better than width.
Step 4: Calculate Timebase Error
From period measurement:
Measured period: T_measured (from scope)
Actual period: T_actual = 1.000000 s (GPS is atomic clock)
Error (seconds) = T_measured - T_actual
Error (ppm) = (Error / T_actual) × 10^6
Example:
T_measured = 1.000025 s
T_actual = 1.000000 s
Error = +0.000025 s = +25 μs
Error (ppm) = 0.000025 / 1.0 × 10^6 = +25 ppm
Interpretation: Scope timebase is 25 ppm FAST
From frequency measurement:
Measured frequency: F_measured
Actual frequency: F_actual = 1.000000 Hz
Error (ppm) = (F_actual - F_measured) / F_actual × 10^6
Example:
F_measured = 0.999975 Hz
F_actual = 1.000000 Hz
Error = (1.0 - 0.999975) / 1.0 × 10^6 = +25 ppm
Same result: Scope is 25 ppm fast
Alternative: Mains Frequency
If no GPS available:
Using 50/60 Hz Mains
Warning: This is less accurate but free!
Mains frequency accuracy: - Short term (seconds): ±0.1 Hz - Long term (hours): ±0.01 Hz - Utility companies maintain accurate frequency - Not as good as GPS, but usable
Procedure:
- Build isolation circuit (IMPORTANT - SAFETY!): ``` NEVER connect scope directly to mains!
Instead: Use transformer Mains → Small transformer (12V or 9V output) → Scope input
Or: Use phone charger Mains → USB charger → Monitor 5V ripple (120Hz in US) ```
- Measure frequency:
- Expected: 60.000 Hz (US) or 50.000 Hz (EU)
-
Scope reading: Compare
-
Calculate error (same as GPS method)
Accuracy: ±100 ppm (okay for rough check)
Applying Corrections
Method 1: Document the Error
Simplest approach:
- Measure timebase error: (e.g., +25 ppm)
- Create correction table: ``` Timebase Error: +25 ppm Scope displays 1.000 s → Actual is 0.999975 s Scope displays 1.000 ms → Actual is 0.999975 ms Scope displays 1.000 μs → Actual is 0.999975 μs
Correction factor: 0.999975 ```
- Label scope:
Stick label on scope: "TIMEBASE: +25 ppm Multiply displayed time by 0.999975 for actual time"
Method 2: Internal Calibration (if accessible)
Some DSO1013D models have calibration menu:
- Enter cal mode:
- Power off
- Hold RUN/STOP while powering on
-
Or: UTILITY → CAL (hidden menu)
-
Find timebase cal:
-
Look for "TIMEBASE CAL" or "FREQUENCY CAL"
-
Adjust:
- Usually a numerical entry
- Enter PPM correction
- Save
Consult your specific firmware documentation!
Method 3: Mental Math
For quick measurements:
Error is +25 ppm
If scope shows 1.000 ms:
Actual = 1.000 × (1 - 25/10^6) = 0.999975 ms
Usually ignore for rough work
Apply correction for precision measurements
Verification Methods
Cross-Check 1: Known Frequency
Use calibrated signal generator (if available): - Set to 1.000 MHz - Measure on scope - Should read 1.000 MHz ± your ppm error
Or use calibrated TinySA: - Set TinySA to CW mode, 1 MHz - Feed to scope - Measure frequency
Cross-Check 2: Crystal Oscillator
Build simple crystal oscillator:
Materials:
- 32.768 kHz watch crystal ($0.50)
- CD4060 divider IC ($0.50)
- Resistor, capacitors
Output: Exact 1 Hz from watch crystal
Accuracy: ±20 ppm (watch crystal)
Measure on scope, should match GPS within ±50 ppm
Cross-Check 3: Multiple GPS Modules
If you have two GPS modules: - Both produce 1 Hz - Should agree to within ±0.1 ppm - If scope shows difference → scope error
Temperature Effects
Characterizing Temperature Coefficient
Same procedure as TinySA:
- Cold soak: Refrigerator, 30 min, ~5°C
- Measure period at cold temperature
- Warm up naturally to room temp (~22°C)
- Measure periodically
- Heat gently to ~40°C
- Plot error vs. temperature
Typical results:
Temp (°C) Period (s) Error (ppm)
5 1.000035 +35
15 1.000028 +28
25 1.000025 +25
35 1.000030 +30
45 1.000038 +38
Conclusion: Scope timebase drifts with temperature. Calibrate after warmup!
Advanced: 10 MHz Reference Input
Some scopes have external reference input:
If your scope has 10 MHz REF IN: 1. Build GPS-locked 10 MHz reference 2. Connect to REF IN 3. Scope locks to GPS 4. Continuous GPS accuracy!
Building GPS-locked 10 MHz: - PLL locks 10 MHz VCXO to GPS 1PPS - See advanced projects in gps_calibration.md - Cost: $50-100 - Result: Continuous atomic clock lock
Real-World Example
Calibrating DSO1013D
Equipment: - DSO1013D oscilloscope - NEO-6M GPS module (from TinySA project) - 5V USB power supply
Procedure:
-
Connected GPS 1PPS to CH1
-
Scope settings:
CH1: 1V/div, DC coupling Timebase: 200 ms/div Trigger: CH1, rising, 1.5V level Average: 16 -
Enabled cursors, measured period:
ΔT = 1.000027 s -
Calculated error:
Error = 1.000027 - 1.000000 = +27 μs PPM = 27/10^6 = +27 ppm -
Interpretation:
- Scope timebase runs 27 ppm FAST
- At 1 second: reads 1.000027 s (27 μs error)
- At 1 ms: reads 1.000027 ms (27 ns error)
-
At 1 MHz: reads 1.000027 MHz (27 Hz error)
-
Applied correction:
Correction factor: 1.000000 / 1.000027 = 0.999973 Multiply all scope time readings by 0.999973 -
Created label:
"TIMEBASE: +27 ppm FAST Correction: × 0.999973 Cal date: 2026-01-02"
Result: Know scope accuracy to atomic clock standards!
Summary
What We Achieved
✓ Measured scope timebase error using GPS ✓ Accuracy limited by GPS: ±0.01 ppm ✓ Documented correction factor ✓ Can now make accurate time measurements
Key Points
- GPS 1PPS is perfect reference - atomic clock accuracy
- Scope measures period - compare to exact 1.000000 s
- Calculate PPM error - quantify timebase accuracy
- Apply correction - mental math or label on scope
- Verify regularly - monthly check, annual full cal
Next Step
Voltage calibration: oscilloscope_voltage_cal.md
Timebase now calibrated to GPS atomic clock accuracy!
APPENDIX E — OSCILLOSCOPE VOLTAGE CAL
Overview
Voltage calibration ensures accurate amplitude measurements. We'll build precision voltage references using cheap ICs and measure scope accuracy at each voltage range.
Key Idea: Use $2 precision voltage reference ICs as "voltage rulers" to check scope accuracy.
Building Precision Voltage References
Parts List
| Qty | Part | Voltage | Accuracy | Cost | Source |
|---|---|---|---|---|---|
| 1 | LM4040-1.2 | 1.225V | ±0.1% | $1.50 | Mouser, Digikey |
| 1 | LM4040-2.5 | 2.500V | ±0.1% | $1.50 | Mouser, Digikey |
| 1 | LM4040-5.0 | 5.000V | ±0.1% | $2.00 | Mouser, Digikey |
| 2 | Resistor 10kΩ 0.1% | - | ±0.1% | $1.00 | Mouser, Digikey |
| 1 | 9V battery | ~9V | ±5% | $1.00 | Local store |
| 1 | Breadboard | - | - | $3.00 | Local store |
Total: ~$10-15
Circuit Schematic
LM4040 Basic Circuit:
9V Battery (+)
│
├─────→ To other refs
│
10kΩ
│
├────→ OUTPUT (1.225V, 2.5V, or 5V)
│ │
┌───┴───┐ │
│ LM4040│ ├───→ Scope probe
│ │ │
└───┬───┘ │
│ │
GND ─────┴───→ Scope ground
Complete Reference Board (4 voltages):
9V Battery
│
├─ 10kΩ ─┬─ LM4040-1.2 ─→ 1.225V output ─→ Banana jack RED
│ │ │
├─ 10kΩ ─┼─ LM4040-2.5 ─→ 2.500V output ─→ Banana jack YEL
│ │ │
├─ 10kΩ ─┼─ LM4040-5.0 ─→ 5.000V output ─→ Banana jack GRN
│ │ │
│ │ │
│ Precision voltage divider:
│ │
│ 10kΩ (0.1%) ─┬─→ 10.00V output ─→ Banana jack BLU
│ │ (from 5V ref × 2)
│ 10kΩ (0.1%)
│ │
└──────────────── GND ─────────────────→ Banana jack BLK
Building the Circuit
Step 1: LM4040 Connections (30 minutes)
- Identify LM4040 pins: ``` LM4040 (TO-92 package, looking at flat side):
[Cathode] [Anode] [NC] 1 2 3
Pin 1 (Cathode) = Output voltage Pin 2 (Anode) = Ground Pin 3 (NC) = Not connected ```
- Breadboard layout: ``` Row 1: 9V+ Row 2: 10kΩ → LM4040-1.2 cathode → 1.225V output Row 3: LM4040-1.2 anode → GND
Row 5: 9V+ Row 6: 10kΩ → LM4040-2.5 cathode → 2.500V output Row 7: LM4040-2.5 anode → GND
Row 9: 9V+ Row 10: 10kΩ → LM4040-5.0 cathode → 5.000V output Row 11: LM4040-5.0 anode → GND ```
- Connect outputs to binding posts (for easy scope connection)
Step 2: 10V Divider (15 minutes)
From 5V reference to 10V:
Actually, easier method: Use two 5V refs in series!
9V+ ─ 10kΩ ─ LM4040-5.0 (REF1) ─┬─ 5V output
│
10kΩ ─ LM4040-5.0 (REF2) ─┬─ 10V output (REF1+REF2)
│
GND
Or use precision divider:
5V reference ─ 10kΩ (0.1%) ─┬─ 10V output
│
10kΩ (0.1%) ──┴─ GND
Wait, this gives 2.5V, not 10V!
Correct circuit:
Need op-amp to create 10V from 5V, or use two refs in series.
Simplest: Two LM4040-5.0 in series = 10V
Testing References with DMM
Verify each reference:
-
1.225V reference:
DMM reading: 1.224V to 1.226V (±0.1%) -
2.500V reference:
DMM reading: 2.498V to 2.502V (±0.1%) -
5.000V reference:
DMM reading: 4.995V to 5.005V (±0.1%) -
10.00V (if built):
Two 5V in series: 9.99V to 10.01V (±0.1%)
If readings are off: Check wiring, polarity, battery voltage >7V
Calibration Procedure
Step 1: Prepare Oscilloscope
- Warm up: 15-30 minutes powered on
- Probe: 10:1 probe (or 1:1 for low voltages)
- Settings:
- Coupling: DC
- Bandwidth: Full (not limited)
- Trigger: Normal, not Auto
Step 2: Measure Each Reference
1.225V Reference:
- Connect:
- Scope probe to 1.225V output
-
Ground clip to GND
-
Scope settings:
- V/div: 500 mV/div (to see ~1.2V signal)
-
Timebase: Doesn't matter (DC signal)
-
Read voltage:
- Use MEASURE → DC voltage
-
Or use cursor at trace level
-
Record:
Reference: 1.225V Scope reads: _____ V Error: _____ V Error %: _____ %
Repeat for all references: - 2.500V - 5.000V - 10.00V (if built)
Test multiple V/div settings:
For 5V reference, test: - 1V/div (scope reading: ) - 2V/div (scope reading: ) - 5V/div (scope reading: ___)
Each setting may have different error!
Step 3: Calculate Errors
Example measurements:
Reference: 5.000V
V/div Setting Scope Reads Error (V) Error (%)
─────────────────────────────────────────────────────
1V/div 5.12V +0.12 +2.4%
2V/div 5.08V +0.08 +1.6%
5V/div 5.05V +0.05 +1.0%
Conclusion: Error varies by V/div setting!
Scope is generally reading HIGH (+1 to +2.4%)
Step 4: Document Corrections
Create calibration table:
DSO1013D CH1 Voltage Calibration
Reference V/div Reading Error Correction
─────────────────────────────────────────────────────
1.225V 500mV 1.24V +1.2% ×0.988
2.500V 1V 2.54V +1.6% ×0.984
5.000V 2V 5.08V +1.6% ×0.984
5.000V 5V 5.05V +1.0% ×0.990
Average error: +1.35%
Average correction factor: ×0.987
CONCLUSION: Scope reads 1.35% HIGH
Multiply displayed voltage by 0.987 for actual voltage
Repeat for CH2! (Each channel may differ)
Probe Compensation
Critical for AC measurements!
Using Built-in Cal Signal
Most scopes have ~1 kHz square wave output:
- Locate cal output:
- Usually labeled "CAL", "PROBE COMP", or "1kHz"
-
Typically 1 kHz, 5V peak-to-peak square wave
-
Connect probe:
- Probe tip to CAL signal
-
Ground clip to GND
-
Observe square wave: ``` Good (compensated): ┌──┐ ┌──┐ │ │ │ │ ┘ └──┘ └──
Under-compensated: ┌──┐ ┌──┐ ╱ │ ╱ │ ┘ └──┘ └── (Rounded edges, looks like RC filter)
Over-compensated: ┌─┐ ┌─┐ │ ╲╱ │ ╲╱ ┘ └──┘ └── (Overshoot, ringing) ```
- Adjust probe:
- Find small trimmer capacitor on probe body
- Use plastic screwdriver
- Adjust until square wave has flat top
- Should look crisp, no overshoot
Do this for EVERY probe, EVERY time you connect it!
Without Built-in Cal
Build external square wave:
Simple 555 timer circuit:
555 timer configured as astable
Frequency: ~1 kHz
Output: 5V square wave
+5V
│
┌──┴──┐
│ 555 │
│timer│
└──┬──┘
│
Output → Scope
Or use function generator (if available)
Verification
Cross-Check with Known Voltages
Battery voltage:
Fresh AA battery: 1.5V - 1.65V
Measure with scope and DMM:
Should agree within ±3%
USB 5V:
USB port: 4.75V - 5.25V (spec)
Measure with scope
Compare to DMM
Known signal:
If you have signal generator:
Set to 1V RMS sine wave
Scope should show 2.83V peak-to-peak (1V × 2√2)
Complete Example
Calibrating DSO1013D Voltage
Equipment: - DSO1013D oscilloscope - LM4040-2.5 reference (built) - DMM (for verification)
Procedure:
- Built 2.5V reference
- LM4040AIZ-2.5
- 9V battery, 10kΩ resistor
-
Breadboard
-
Verified with DMM:
DMM reading: 2.501V ✓ (within ±0.1% spec) -
Connected to scope CH1:
- 10:1 probe
- V/div: 1V (to see ~2.5V clearly)
-
Coupling: DC
-
Measured on scope:
Scope reading: 2.58V -
Calculated error:
Reference: 2.501V (DMM-verified) Scope: 2.58V Error: +0.079V Error %: (0.079 / 2.501) × 100 = +3.2% -
Tested other V/div settings: ``` V/div Scope Reading Error % 500mV 2.56V +2.4% 1V 2.58V +3.2% 2V 2.54V +1.6% 5V 2.52V +0.8%
Average error: +2.0% ```
- Created correction table: ``` CH1: Reads ~2% HIGH Correction: Multiply by 0.98
Example: Scope shows 5.0V → Actual is 4.9V Scope shows 3.3V → Actual is 3.23V ```
- Labeled scope:
"CH1: +2.0% error CH2: (test separately) Multiply readings by 0.98"
Result: Know voltage accuracy to ±0.5%!
Alternative: Zener Diode References
If can't get LM4040:
Common zener voltages: - 3.3V zener diode (cheap, ~5% accuracy) - 5.1V zener diode (cheap, ~5% accuracy)
Circuit:
9V ─ 1kΩ ─┬─ 5.1V zener ─ GND
│
Output (≈5.1V ±5%)
Less accurate but usable for rough calibration
Summary
Voltage Calibration Achieved
✓ Built precision references (±0.1%) ✓ Measured scope at multiple voltages ✓ Documented errors per V/div setting ✓ Created correction table ✓ Probe compensation verified
Key Findings
- Scope errors typical: ±2-5% uncalibrated
- Each V/div setting different: Must test all
- CH1 and CH2 differ: Calibrate separately
- Probe compensation critical: Do every time!
Accuracy Achieved
Before calibration: Unknown, possibly ±5% After calibration: Known to ±0.5-1%
Next: Complete example
Voltage calibration complete!