فنون
الجمال والعناية
حِرَف
الثقافة والتاريخ
ترفيه
البيئة
الطعام والمشروبات
الهندسة العكسية
العلوم
رياضة
التقنية
الأجهزة القابلة للارتداء
The Charge-Coupled Device
Pixel

أنشأه

Pixel

29. أغسطس 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.
متقدم
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)

تسجيل الدخول للمشاركة في النقاش

جارٍ تحميل التعليقات...