སྒྱུ་རྩལ
མཛེས་སྡུག་དང་བདེ་ཐང
བཟོ་རིག
རིག་གནས་དང་ལོ་རྒྱུས
དགའ་སྟོན
ཁོར་ཡུག
ཟས་དང་བཏུང་རྫས
ཕྱིར་འཕྲུལ་རིག
ཚན་རིག
རྩེད་འགྲན
རིག་རྩལ
གྱོན་རུང
The Charge-Coupled Device
Pixel

བཟོས་མཁན

Pixel

29. སྤྱི་ཟླ་བརྒྱད་པ 2026FI

The Charge-Coupled Device

Boyle and Smith, 1969, sketched in an hour on a blackboard; Nobel Prize 2009. A CCD pixel is the DRAM cell read the opposite way: DRAM holds charge and refreshes it in place, a CCD SHIFTS each packet down the row to one amplifier, a bucket brigade for electrons. Because it collects charge on a fixed grid instead of scanning a beam, it kills the vidicon's two diseases — distortion and lag — at a stroke. The price: move charge thousands of times and lose none.
མཐོ་རིམ
6 hours

ལམ་སྟོན

1

The pixel is the DRAM cell, read by moving the charge

The pixel is the DRAM cell. A gate over silicon makes a potential well; in DRAM you fill it to mean a 1, in a CCD light fills it with electrons. The difference is the whole invention: DRAM reads each cell in place (a wire and an amplifier per column); a CCD MOVES the charge, tipping each packet into the next well like water between buckets, to a single amplifier at the end. Almost no wires, but every packet is transferred thousands of times.

ལག་ཆས་དགོས་མཁོ:

Notebook and PencilNotebook and Pencil
2

The bucket brigade: how one image becomes one signal

Follow one photon to the output. Expose (each well fills like a bucket in the rain); clock the whole image DOWN row by row into a readout register; clock that register SIDEWAYS into one amplifier that weighs each packet in turn. One amplifier reads the entire image, so there is no pixel-to-pixel gain variation. The vidicon's distortion (no beam) and lag (wells fully cleared) are simply gone; the new failure modes are transfer loss and dark current.

Flow

Loading...

ལག་ཆས་དགོས་མཁོ:

Desktop ComputerDesktop Computer
3

Why astronomers freeze their sensors: dark current and transfer efficiency

Loading Jupyter Notebook...

ལག་ཆས་དགོས་མཁོ:

Desktop ComputerDesktop Computer
4

Measure real dark current against temperature

You cannot clock a bare CCD, but you can measure the physics that rules it — dark current rising exponentially with temperature — on any cheap photodiode. Read a reverse-biased diode's leakage in the dark at several temperatures; the slope of log(current) vs 1/T gives the doubling temperature, ~6-10 C, the same number that forces observatories to pour liquid nitrogen over their cameras.
ccd_darkcurrent.inocpp
// Dark current versus temperature — the physics behind why CCDs are cooled.
//
// A reverse-biased photodiode's leakage IS a dark current. Read it through a large load
// while logging temperature, warm the sensor gently in the dark, and the slope of
// log(current) vs 1/T gives the activation energy and the doubling temperature — the same
// characterisation an astronomy lab runs on a real CCD.
//
// Wiring
//   Photodiode: cathode -> 3V3, anode -> GPIO34 and -> 1M -> GND  (reverse bias; leakage
//               develops a small voltage across the 1M load)
//   DS18B20 temperature sensor -> GPIO4 with a 4k7 pull-up to 3V3
//   ALL inside a light-tight box. Dark current means DARK.

#include <OneWire.h>
#include <DallasTemperature.h>

const int PIN_DIODE = 34;      // ADC1
const int PIN_TEMP  = 4;
const float R_LOAD  = 1.0e6;   // ohm
const float VCC     = 3.3;

OneWire oneWire(PIN_TEMP);
DallasTemperature tempSensor(&oneWire);

float readDarkVolts() {
  const int N = 512;           // heavy averaging: the signal is tiny and the ADC is noisy
  uint32_t acc = 0;
  for (int i = 0; i < N; i++) { acc += analogRead(PIN_DIODE); delay(2); }
  return (float)acc / N * (VCC / 4095.0);
}

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

  Serial.println("# Dark current vs temperature");
  Serial.println("# Keep the box CLOSED. Warm the sensor slowly (a hand, a warm room).");
  Serial.println("# temp_C\tdark_V\tdark_current_nA\tinvT_1perK\tln_current");
}

void loop() {
  tempSensor.requestTemperatures();
  float T = tempSensor.getTempCByIndex(0);
  if (T < -100) { Serial.println("# temp sensor not found"); delay(1000); return; }

  float v = readDarkVolts();
  float i_nA = (v / R_LOAD) * 1e9;          // I = V / R, in nanoamps
  float invT = 1.0 / (T + 273.15);
  float lnI  = (i_nA > 0) ? log(i_nA) : 0;

  Serial.print(T, 2);    Serial.print('\t');
  Serial.print(v, 4);    Serial.print('\t');
  Serial.print(i_nA, 3); Serial.print('\t');
  Serial.print(invT, 6); Serial.print('\t');
  Serial.println(lnI, 3);

  // Log once every few seconds as the temperature drifts. Fit ln(I) vs 1/T offline:
  //   slope = -Ea/k ;  doubling temp dT = T^2 * k * ln(2) / Ea.
  delay(3000);
}

གོམ་པ་འདིའི་རྫས་རིགས:

Photodiode (BPW34)Photodiode (BPW34)1 དུམ་བུ།
Resistor Kit (1/4W, E12 Series)Resistor Kit (1/4W, E12 Series)1 ཡོ་བྱད་ཚན།

ལག་ཆས་དགོས་མཁོ:

ESP32 Development BoardESP32 Development Board
DS18B20 Temperature Sensor (Waterproof)DS18B20 Temperature Sensor (Waterproof)
BreadboardBreadboard

རྫས་རིགས

2

ལག་ཆས་དགོས་མཁོ

5

འབྲེལ་ཡོད་བིལུ་པིརིན་ཊི

བིལུ་པིརིན་ཊི་འདི་ཚུ་ཐབས་ལམ་དང་རྫས་རིགས། སྤྱི་ཆོས་བགོ་བཤའ་བྱེད

CC0 སྤྱི་དབང

བིལུ་པིརིན་ཊི་འདི་CC0 འོག་བཀྲམས་ཡོད། ཁྱེད་རང་གིས་ཆོག་མཆན་མ་བཞེས་པར་ཕབ་ལེན་དང་བཟོ་བཅོས། བགོ་བཤའ། དགོས་མཁོ་གང་ལའང་བཀོལ་སྤྱོད་བྱས་ཆོག

བཟོ་མཁན་ལ་རྒྱབ་སྐྱོར་བྱེད་པའི་ཆེད་ཁོང་ཚོའི་བིལུ་པིརིན་ཊི་བརྒྱུད་ཐོན་སྐྱེད་ཉོ། བཟོ་མཁན་གྱིས བཟོ་མཁན་གྱི་ཁེ་ཕོགས ཚོང་པས་གཏན་འཁེལ་བྱས་པ། ཡང་ན་བིལུ་པིརིན་ཊི་འདིའི་པར་གསར་བཟོས་ཏེ་ཁྱེད་རང་གི་བིལུ་པིརིན་ཊི་ནང་མཐུད་སྦྲེལ་བྱས་ཏེ་ཡོང་སྒོ་བགོ་བཤའ་བྱེད།

གྲོས་བསྡུར

(0)

ནང་འཛུལ གྲོས་བསྡུར་ནང་མཉམ་ཞུགས་ཆེད

བསམ་ཚུལ་ཚུ་ཐོབ་བཞིན...