====== Canon MF4370dn ====== ^ Canon MF4370dn || ^ Kontakt | [[wiki:user:cracki |cracki ]] | Ein Multifunktionsdrucker, der in der Karmanstr. 7 zur Entsorgung gelassen wurde. Wurde zerlegt und sortiert. * Glasplatte neben dem E-Lab rechts * [[projekte:contact_image_sensor|Contact Image Sensor]] bei Cracki * Motoren * keine Encoder gefunden (war n Laserdrucker) * haufenweise Lichtschranken * FFC Flachbandkabel und Sockel (1.0mm) * Platinen, u.a. eine mit Duzenden von Tastern ===== Beschriftungen ===== * 01 70315 * FK2-9569-000 * das ist die Typbezeichnung für den CIS * 01 57038164 F * Barcode: Format ITF, Typ Text, Wert 57038164 ===== Pinout ===== * 6 Clock * 7 Startpuls * 8 Vref * 9 VCC (5V) * 10 GND * 11 DPI (low: 300, high: 600, pullup) * 12 Aout * 2-4 V Ausgang, geht nie runter auf 0 * regelmäßige blinde Flecke, ca 0.5mm breit jeweils * doppelt so viele blinde Flecke, wenn Spannung an DPI > VCC ===== Reversing ===== Pins gezaehlt von innen (links) nach aussen (rechts). Bis auf GND sind 1-5 und 6-12 getrennt. Insbesondere 5, trotz weiterer Abzweigung, scheint mit nix weiter zu interagieren. ==== Messungen ==== Spannungen bei 10 mA und 3.4V: ^ + \ - ^ 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ Beschreibung des Pins ^ | 1 | 0.00 | | | | | GND | | 2 | | 0.00 | | | | GND Rot | | 3 | | | 0.00 | | | GND Grün | | 4 | | | | 0.00 | | GND Blau | | 5 | | 1.87 | 2.78 | 2.95 | 0.00 | VCC (Test: 3.35V 10mA) | auch: * 2 GND Rot, ~2.3V 50mA * 3 GND Gruen, ~3.45V 50mA * 4 GND Blau, ~3.45V 30mA bei ~4.5V Versorgung in die LEDs folgende Widerstände nach Erde: * Rot: 220 * Grün: 50 * Blau: 100 Spannungen bei 1 mA: ^ + \ - ^ 6 ^ 7 ^ 8 ^ 9 ^ 10 ^ 11 ^ 12 ^ Aufgabe ^ Beschreibung ^ | 6 | 0.00 | 1.14 | 1.43 | 0.76 | 1.00 | 1.14 | 1.38 | Clock | Betrieb: floating | | 7 | 1.14 | 0.00 | 1.43 | 0.76 | 1.00 | 1.14 | 1.38 | Startpuls | Betrieb: floating | | 8 | 1.07 | 1.07 | 0.00 | 0.69 | 0.96 | 1.07 | 0.98 | Vref | betrieb: low, driftet langsam (Vref?) | | 9 | 0.74 | 0.74 | 1.09 | 0.00 | 0.67 | 0.74 | 1.04 | VCC | | | 10 | 0.72 | 0.72 | 0.58 | 0.43 | 0.00 | 0.72 | 0.48 | GND | kupferne Masseflaeche, aufgeklebt | | 11 | 1.15 | 1.15 | 1.44 | 0.75 | 1.01 | 0.00 | 1.39 | DPI | Betrieb: high | | 12 | 1.08 | 1.08 | 0.96 | 0.67 | 0.96 | 1.08 | 0.00 | Aout | Betrieb: floating low, scheint digitale Werte zu produzieren | ===== Arduino Code ===== #define START 2 #define CLOCK 3 #define DPIMODE 4 #define LEDR 5 #define LEDG 6 #define LEDB 7 bool dpimode = 1; uint16_t pixels = dpimode ? 5184 : 2592; uint32_t linetime = 4000; // us uint32_t sched = 0; uint8_t lightcolor = 0; void set_lighting(uint8_t active) { digitalWrite(LEDR, !(active & 0b001)); digitalWrite(LEDG, !(active & 0b010)); digitalWrite(LEDB, !(active & 0b100)); } void setup() { pinMode(START, OUTPUT); pinMode(CLOCK, OUTPUT); pinMode(DPIMODE, OUTPUT); pinMode(LEDR, OUTPUT); pinMode(LEDG, OUTPUT); pinMode(LEDB, OUTPUT); digitalWrite(DPIMODE, dpimode); sched = micros(); } void loop() { set_lighting(0); digitalWrite(START, HIGH); digitalWrite(CLOCK, HIGH); digitalWrite(CLOCK, LOW); digitalWrite(START, LOW); set_lighting(1 << lightcolor); for (uint16_t counter = 82 + pixels; counter-- > 0; ) { PORTD |= _BV(PORTD3); PORTD &= ~_BV(PORTD3); } lightcolor = (lightcolor+1) % 3; sched += linetime; int32_t dt = sched - micros(); while (dt > 0x4000) { delayMicroseconds(0x4000); dt -= 0x4000; } if (dt > 0) delayMicroseconds(dt); }