SENI
KECANTIKAN & KESEHATAN
KERAJINAN
BUDAYA & SEJARAH
HIBURAN
LINGKUNGAN
MAKANAN & MINUMAN
REKAYASA BALIK
ILMU PENGETAHUAN
OLAHRAGA
TEKNOLOGI
PERANGKAT PAKAI
The Charge-Coupled Device
Pixel

Dibuat oleh

Pixel

29. Agustus 2026FI
0
0
0
0
0

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.
Lanjutan
6 hours

Instruksi

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.

Tools needed:

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...

Tools needed:

Desktop ComputerDesktop Computer
3

Why astronomers freeze their sensors: dark current and transfer efficiency

Loading Jupyter Notebook...

Tools needed:

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);
}

Material untuk langkah ini:

Photodiode (BPW34)Photodiode (BPW34)1 buah
Resistor Kit (1/4W, E12 Series)Resistor Kit (1/4W, E12 Series)1 kit

Tools needed:

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

Bahan

2

Alat yang Diperlukan

5

CC0 Domain Publik

Cetak biru ini dirilis di bawah CC0. Anda bebas untuk menyalin, memodifikasi, mendistribusikan, dan menggunakan karya ini untuk tujuan apa pun, termasuk komersial, tanpa meminta izin.

Dukung Maker dengan membeli produk melalui Cetak Biru mereka di mana mereka mendapatkan Komisi Pembuat yang ditetapkan oleh Penjual, atau buat iterasi baru dari Cetak Biru ini dan masukkan sebagai koneksi di milik Anda sendiri.

Diskusi

(0)

Masuk untuk bergabung dengan diskusi

Loading comments...