ART
BEAUTÉ ET BIEN-ÊTRE
ARTISANAT
CULTURE ET HISTOIRE
DIVERTISSEMENT
ENVIRONNEMENT
NOURRITURE ET BOISSONS
INGÉNIERIE INVERSE
SCIENCES
SPORTS
TECHNOLOGIE
TECHNOLOGIE PORTABLE
The Fourier Transform Spectrometer
Mark

Créé par

Mark

30. août 2026FI
30
0
0
0
0

The Fourier Transform Spectrometer

A prism or a grating separates colours by sending them in different directions, and you look at where each one went. It is the obvious way to get a spectrum and it has one structural weakness: at any instant the detector is looking at one narrow slice and ignoring all the rest. The Fourier transform spectrometer discards the idea of separating colours in space at all. It is a Michelson interferometer with one mirror scanning steadily. Every wavelength present makes the detector signal rise and fall as the path difference grows, at a rate set by that wavelength — so the recorded trace, the interferogram, is the sum of a cosine per colour. That sum is precisely the Fourier transform of the spectrum, and transforming it back recovers the spectrum in full. Two things fall out. Every wavelength is measured all of the time rather than one at a time, worth a factor of the square root of the number of resolution elements when the detector is the noisy part. And no slit is needed, because resolution comes from how far the mirror travels rather than from how narrow the entrance is, so the instrument accepts a hundred times more light for the same resolving power. Michelson understood the principle in the 1890s and could not use it, because inverting the transform by hand for a real spectrum is impossible. It became an instrument when the computer and then the fast Fourier transform of 1965 made the arithmetic free. Every infrared laboratory on earth now runs one.
Avancé
4 hours

Consignes

1

Make the mirror scan

Take the Michelson of blueprint 4 and drive one mirror steadily instead of by hand — a slow-turning micrometer screw, or a small motor and a lever, moving smoothly through a hundred micrometres or so. Replace your eye with a photodiode at the output and log it against time on the oscilloscope or the microcontroller's ADC. Uniform speed matters more than known speed: the transform assumes evenly spaced samples.

Matériaux pour cette étape :

Photodiode (BPW34)Photodiode (BPW34)1 pièce
Resistor KitResistor Kit1 pièce

Outils nécessaires :

Micrometer Screw GaugeMicrometer Screw Gauge
ESP32 Development BoardESP32 Development Board
Digital OscilloscopeDigital Oscilloscope
Optical Bench KitOptical Bench Kit
RC Motor (Brushless)RC Motor (Brushless)
2

Record two sources and look at the difference

Scan first with the laser. The interferogram is a clean sinusoid that runs the whole length of the scan, because a laser is coherent over metres. Now scan with a white LED. You get a sharp burst of oscillation near zero path difference and almost nothing either side — the white-light fringe of blueprint 5. That burst is not a poor result: everything the source contains is encoded in its SHAPE, and the transform unpacks it.

Outils nécessaires :

Laser PointerLaser Pointer
LED Light SourceLED Light Source
Digital OscilloscopeDigital Oscilloscope
Desktop ComputerDesktop Computer
Laser Safety GlassesLaser Safety Glasses
3

Log the interferogram

Flash it, start the mirror moving, and capture the CSV. Two thousand samples a second for ten seconds is plenty. The second photodiode is the part worth adding. Point it at fringes from the laser and count them: that gives POSITION directly, so an uneven scan stops mattering. Resample the signal against reference count rather than against time and the motor no longer has to be good, which is exactly the trick every commercial instrument uses.
interferogram_log.inocpp
// Log a Michelson interferogram: one photodiode, one steadily moving mirror.
//
// The transform in the notebook assumes EVENLY SPACED samples, so the two things that
// matter are a constant sample interval and a constant mirror speed. Everything else is
// arithmetic done afterwards.
//
// Wiring: photodiode + 10k to GPIO34 through the transimpedance stage, or straight into
// the ADC with a 100k load if you only want the shape. Optional: a second photodiode on
// GPIO35 watching a reference laser, so fringe COUNT gives position without trusting the
// motor at all -- which is what a real instrument does.

const int PIN_SIG = 34;      // the interferogram
const int PIN_REF = 35;      // reference-laser fringes, optional but transformative

const unsigned long DT_US   = 500;      // 2 kHz sampling
const unsigned long N_SAMPS = 20000;    // 10 seconds of scan

void setup() {
  Serial.begin(115200);
  delay(300);
  analogReadResolution(12);
  analogSetPinAttenuation(PIN_SIG, ADC_11db);
  analogSetPinAttenuation(PIN_REF, ADC_11db);

  Serial.println("# Michelson interferogram log");
  Serial.printf("# %lu samples at %lu us -> %.1f s of scan\n",
                N_SAMPS, DT_US, N_SAMPS * DT_US / 1e6);
  Serial.println("# start the mirror moving BEFORE the countdown ends, and let it run past the end");
  for (int i = 3; i > 0; i--) { Serial.printf("# %d\n", i); delay(1000); }
  Serial.println("sample,signal,reference");

  unsigned long next = micros();
  long refCount = 0;
  int lastRef = 0;

  for (unsigned long k = 0; k < N_SAMPS; k++) {
    while ((long)(micros() - next) < 0) ;          // hold the interval, do not drift
    next += DT_US;

    int sig = analogRead(PIN_SIG);
    int ref = analogRead(PIN_REF);

    // Count reference fringes by threshold crossing: this is the position scale, and it
    // is immune to the motor speeding up or slowing down.
    int refHigh = ref > 2048;
    if (refHigh && !lastRef) refCount++;
    lastRef = refHigh;

    Serial.printf("%lu,%d,%ld\n", k, sig, refCount);
  }
  Serial.println("# done -- paste the two columns into the notebook");
  Serial.println("# resample the signal against REFERENCE COUNT, not against sample number,");
  Serial.println("# and an uneven scan stops mattering entirely.");
}

void loop() {}

Matériaux pour cette étape :

Photodiode (BPW34)Photodiode (BPW34)2 pièces
Resistor KitResistor Kit1 pièce

Outils nécessaires :

ESP32 Development BoardESP32 Development Board
Breadboard - ClassicBreadboard - Classic
Jumper Wire SetJumper Wire Set
Desktop ComputerDesktop Computer
4

Transform it, and compare with a grating

Chargement du notebook Jupyter…

Outils nécessaires :

Desktop ComputerDesktop Computer
5

Compendium: apodisation, and the zero you must find

WHY THE RAW TRANSFORM RINGS. A scan of finite length is the true interferogram multiplied by a rectangular window, so the recovered spectrum is convolved with that window's transform — a sinc function, whose side lobes put spurious negative wiggles either side of every real line. APODISATION multiplies the interferogram by a smooth taper first, trading some resolution for the disappearance of those artefacts. Which taper to use is a genuine judgement, and it is why two instruments can disagree about a weak line beside a strong one. THE ZERO MUST BE FOUND, NOT ASSUMED. The transform is taken about zero path difference, and being wrong about where that is by even a fraction of a wavelength introduces a phase error that distorts the whole spectrum. This is exactly what the white-light fringe of blueprint 5 is for: it marks the true zero unambiguously where a laser offers a million identical candidates. Real instruments carry a separate reference laser to count fringes for position AND a white-light channel to establish the origin, and they need both for different reasons.

Matériaux

2

Outils requis

11

CC0 Domaine public

Ce blueprint est publié sous CC0. Vous êtes libre de copier, modifier, distribuer et utiliser ce travail pour tout usage, sans demander la permission.

Soutenez le Maker en achetant des produits via son Blueprint où il perçoit une Commission Maker définie par les Vendeurs, ou créez une nouvelle itération de ce Blueprint et incluez-le comme connexion dans votre propre Blueprint pour partager les revenus.

Commentaires

(0)

Se connecter pour participer à la discussion

Chargement des commentaires...