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