Specifications

All figures are nominal and uncalibrated unless noted. Voltage figures are the design values of the analog chain, not measurements against a traceable reference.

Platform

MicrocontrollerATmega32A
Clock16 MHz
Flash32 KB — 25348 bytes used (77.4%)
SRAM2 KB — 1250 bytes used (61.0%)
FirmwareBare-metal C++; no Arduino framework, no OS, no dynamic allocation
WirelessHM-10 Bluetooth Low Energy module on the MCU UART
ClientsWeb app, PyWebView desktop app, Android app

Function generator

Channels2
Frequency range1 Hz - 20 kHz
Frequency range, Dual with both channels active1 Hz - 10 kHz per channel
Frequency setting resolution1 Hz
Underlying DDS resolution9.31 µHz (32-bit phase accumulator at 40 kHz)
Update rate40 kSa/s single channel; 20 kSa/s per channel in Dual
Built-in waveformsSine, square, triangle, sawtooth, haversine
Arbitrary waveform1 per channel (waveform index 5)
Arbitrary table length256 points CH1, 128 points CH2
Arbitrary point width16-bit
Duty cycle1 - 99% in 1% steps (square wave only)
Phase0 - 359° in 1° steps

Output

Amplitude range0.93 - 15.15 Vpp
Amplitude controlX9C103 attenuator + X9C104 gain digital potentiometers, 100 positions each = 10,000 analog combinations
Digital fine scale15-bit, 32,768 steps
DC offset range±7.58 V
Offset converter16-bit DAC, 65,536 codes
Supply rails±15 V analog, ±8 V, +5 V logic (78xx/79xx linear)
Signal converterDual 16-bit R-2R ladder DAC via daisy-chained 74HC595 shift registers
Converter interfaceSPI at 8 MHz — one 16-bit word every 2 µs
Output filterSallen-Key low-pass

Frequency modulation

Carrier≤ 10 kHz
Modulating frequency≤ 1 kHz
Peak deviation≤ 5 kHz
Modulating waveformsSine, square (FSK), triangle, sawtooth (chirp)
ChannelsBoth, independently

Oscilloscope

Input

Input dividerNone on board — attenuation comes from the probe
Programmable gain×0.19 - ×3.03 (10,000 combinations)
Converter full scale±2.5 V at the converter node
Input range at unity gain±2.5 V at the BNC (±25 V through a 10× probe)
Input range at minimum gain±13.2 V at the BNC (±132 V through a 10× probe)
Input range at maximum gain±0.83 V at the BNC (±8.3 V through a 10× probe)
ProtectionRelay isolation (K4) only; no input clamp

16-bit SAR path

MethodSuccessive approximation; CH1 signal DAC as reference, LM393 comparator
Resolution16 bits — 76 µV at the converter node
Referred to input at unity chain gain76 µV at the BNC (~0.76 mV at a 10× probe tip)
Time per bit~13.5 µs
Time per sample216 µs (~4.6 kSa/s)
Available inOscilloscope mode only

Internal 10-bit ADC path

MethodATmega internal ADC; touches no DAC
Resolution10 bits — 4.88 mV at the converter node
Conversion13 ADC clocks
Div32 prescaler26 µs per sample (~38 kSa/s)
Div16 prescaler13 µs per sample (~77 kSa/s), noticeably degraded
Available inOscilloscope mode and CH2 Generator + Scope mode

Acquisition and display

Capture depthup to 1000 samples per burst
App display buffer4096 samples
Automatic measurements26, drag-reorderable, selection persisted
Cursors4 draggable — 2 vertical, 2 horizontal
TriggerPost-capture; edge, rising/falling, auto or normal
Hardware trigger circuitNone
Hardware timebaseNone
AutosetSearches upward from minimum gain
TransportBluetooth Low Energy via HM-10
MCU-to-module UART115200 baud, 8-N-1. Fixed — not switchable from the board or over BLE
Throughput, ASCII format~1.1 kSa/s
Throughput, compact binary format~3.5 kSa/s
ProtocolLine-oriented ASCII, CR/LF terminated

Relay assignment

RelayFunction
K1Signal path configuration
K2CH1 output gate — mutes when energised
K3CH2 output gate — mutes when energised
K4Oscilloscope input connect
K5Redirects CH1’s gain pack into the comparator stage

Not specified here

The following are deliberately absent because no verified figure exists. Do not infer them from the numbers above.

  • Output impedance and maximum output current.
  • The op-amp clip point, and therefore the true maximum output swing. The amplitude figures above are the gain network’s design ceiling; they take no account of where the output stage actually saturates against its ±15 V rails.
  • Analog bandwidth of the oscilloscope input chain, and its -3 dB point.
  • Amplitude and offset accuracy, linearity and temperature drift.
  • Total harmonic distortion of the generator output.
  • Power consumption and supply requirements.
  • BLE range.

These are measurable on a bench and should be characterised before any of them is quoted.

Updated · Full project report (PDF)