Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projekte:epson-stylus-sx100 [2016-06-04 05:26]
cracki [Contact Image Sensor]
projekte:epson-stylus-sx100 [2017-01-17 02:01] (current)
Line 7: Line 7:
 Uebrig sind: Uebrig sind:
  
-  * Contact Image Sensor mit LEDs+  * [[projekte:​contact_image_sensor|Contact Image Sensor]] mit LEDs
   * Schrittmotor (96 Schritte, 18 Ohm, ~0.2-0.3 Ampere)   * Schrittmotor (96 Schritte, 18 Ohm, ~0.2-0.3 Ampere)
   * zwei DC Motoren, vmtl brushed   * zwei DC Motoren, vmtl brushed
Line 16: Line 16:
  
 Beschriftungen:​ FC11B913F56 F KTH0351-2 Beschriftungen:​ FC11B913F56 F KTH0351-2
 +
 +Numerierung:​
 +  * Rohm: Pin 1 aussen.
 +  * PCB: Pin 1 innen <- die nehmen wir
 +
 +==== Beleuchtung ====
  
 Die LEDs brauchen so 2-3 Volt, Strom ~20 mA bringt schon Licht. Die LEDs brauchen so 2-3 Volt, Strom ~20 mA bringt schon Licht.
Line 21: Line 27:
 die TO Pins am PCB sind: V+, Blau, Rot, Gruen. die TO Pins am PCB sind: V+, Blau, Rot, Gruen.
  
-NumerierungPin 1 aussen.+Bei 5V Versorgung sollte mit folgenden Widerständen nach Erde gezogen werden fuer weisses PapierRot:50, Grün:50, Blau:220.
  
 +<​pagebreak>​
 Spannung 1 mA: Spannung 1 mA:
-^ + \ - ^  ​^  ​10 11 12 ^ Beschreibung des Pins ^ +^ + \ - ^  ​^  ​ ​3 ​ ​4 ​ ​5 ​^ Beschreibung des Pins ^ 
-|     |  x |  ​B ​ ​G ​ ​R ​|    | LED + +|     |  x |          |    | N/C (so weit sich erkennen laesst) ​
-|     |    |  x |    |    |    | LED GND Blau +|     |    |  x |    |    |    | LED GND Rot 
-   ​10 ​|    |    |  x |    |    | LED GND Gruen | +    3 |    |    |  x |    |    | LED GND Gruen | 
-   ​11 ​|    |    |    |  x |    | LED GND Rot +    4 |    |    |    |  x |    | LED GND Blau 
-   ​12 ​|    |          |  x | N/C (so weit sich erkennen laesst) ​|+    5 |    |  ​R ​ ​G ​ ​B ​|  x | LED + | 
 + 
 +==== Datensignale ====
  
 Spannung 1 mA: Spannung 1 mA:
-^ + \ - ^    ​^    ​^    ​^    ​   ​5 ​   ​6 ​   ​7 ​^ Vias ^ Geometrie ​ ^ relativ ^ Vermutung ^ Beschreibung des Pins ^ +^ + \ - ^    ​^    ​^    ​^    ​  10   11   12 ^ Vias ^ Geometrie ​ ^ relativ ^ Vermutung ^ Beschreibung des Pins ^ 
-|     |    x | <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#b9b2ff>1.83</​typo>​ | <typo bg:#b2f4ff>1.50</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ | 1    | dünn       ​| ​        ​| ​          ​ueber der unteren ​Flaeche, unter #11 +|     |    x | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#b2f1ff>1.51</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | 1    | dünn       ​| ​        ​| ​Startpuls ​zwischen oberer ​Flaeche ​und Schrauben ​
-|     | <typo bg:#bdb2ff>1.85</​typo>​ |    x | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#b2f1ff>1.51</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ |    ​| ​dünn               ​          ​unter der Mittleren Flaeche, ueber #12 +|     | <typo bg:#b2ffcc>1.22</​typo>​ |    x | <typo bg:#b2ffe6>1.34</​typo>​ | <typo bg:#caffb2>0.99</​typo>​ | <typo bg:#b2ffe6>1.34</​typo>​ | <typo bg:#b2ffe6>1.34</​typo>​ | <typo bg:#b2ffe4>1.33</​typo>​ |    ​| ​breit      ​oben    ​3V3       | | 
-|     | <typo bg:#b9b2ff>1.83</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ |    x | <typo bg:#b2f4ff>1.50</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ | 1    | breit      ​mitte   Vref      ​wo die Schrauben durchgehen (aber kein kontakt) ​+|     | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ |    x | <typo bg:#b2f1ff>1.51</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#b6b2ff>1.82</​typo>​ | 1    | dünn               ​Clock     von unten hochstechend ​
-|     | <typo bg:#ffb2b2>0.40</​typo>​ | <typo bg:#ffb4b2>0.41</​typo>​ | <typo bg:#​ffb4b2>​0.41</​typo>​ |    x | <typo bg:#​ffb4b2>​0.41</​typo>​ | <typo bg:#ffb2bd>0.35</​typo>​ | <typo bg:#ffb4b2>0.41</​typo>​ | 3-5  | breitestes | unten   | GND       | ueber #+|     | <typo bg:#ffb4b2>0.41</​typo>​ | <typo bg:#ffb2bd>0.35</​typo>​ | <typo bg:#​ffb4b2>​0.41</​typo>​ |    x | <typo bg:#​ffb4b2>​0.41</​typo>​ | <typo bg:#ffb4b2>0.41</​typo>​ | <typo bg:#ffb2b2>0.40</​typo>​ | 3-5  | breitestes | unten   | GND       | ueber #
-    5 | <typo bg:#b6b2ff>1.82</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#b2f1ff>1.51</​typo>​ |    x | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | 1    | dünn               ​          ​von unten hochstechend ​+   ​10 ​| <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#b2f4ff>1.50</​typo>​ |    x | <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#b9b2ff>1.83</​typo>​ | 1    | breit      ​mitte   Vref      ​driftet langsam, wenn Versorgung angeklemmt (andere pins sind nah an GND) 
-    6 | <typo bg:#b2ffe4>1.33</​typo>​ | <typo bg:#b2ffe6>1.34</​typo>​ | <typo bg:#b2ffe6>1.34</​typo>​ | <typo bg:#caffb2>0.99</​typo>​ | <typo bg:#b2ffe6>1.34</​typo>​ |    x | <typo bg:#b2ffcc>1.22</​typo>​ |    ​| ​breit      ​oben    ​3V3       | | +   ​11 ​| <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#b2f1ff>1.51</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ |    x | <typo bg:#bdb2ff>1.85</​typo>​ |    ​| ​dünn               ​300/600 dpi unter der Mittleren Flaeche, ueber #12 
-    7 | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#b2f1ff>1.51</​typo>​ | <typo bg:#bdb2ff>1.85</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ |    x | 1    | dünn       ​| ​        ​| ​          ​zwischen oberer ​Flaeche ​und Schrauben ​|+   ​12 ​| <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#ffe0b2>0.61</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ | <typo bg:#b2f4ff>1.50</​typo>​ | <typo bg:#b9b2ff>1.83</​typo>​ | <typo bg:#bbb2ff>1.84</​typo>​ |    x | 1    | dünn       ​| ​        ​| ​Aout       ueber der unteren ​Flaeche, unter #11 |
  
-Widerstand:​ +==== Insgesamt ====
-^ + \ - ^    1 ^    2 ^    3 ^    4 ^    5 ^    6 ^    7 ^ +
-|     1 |    x |      |      |      |      |      |      | +
-|     2 |      |    x |      |      |      |      |      | +
-|     3 |      |      |    x |      |      |      |      | +
-|     4 |      |      |      |    x |      |      |      | +
-|     5 |      |      |      |      |    x |      |      | +
-|     6 |      |      |      |      |      |    x |      | +
-|     7 |      |      |      |      |      |      |    x | +
- +
-Vermutungen:​ +
-  * 4,6: Versorgung +
-  * 1,2,3,5,7: Daten+
  
 sieht verdammt nach [[http://​rohmfs.rohm.com/​en/​products/​databook/​datasheet/​module/​contact_image_sensor/​flatbed/​lsh3008-ca10a.pdf]] aus sieht verdammt nach [[http://​rohmfs.rohm.com/​en/​products/​databook/​datasheet/​module/​contact_image_sensor/​flatbed/​lsh3008-ca10a.pdf]] aus
 +
 +  * 6 Startpuls
 +  * 8 Clock
 +  * 10 Vref (sollte auf GND fest)
 +    * wenns hoeher ist, gibts kein gescheites bild mehr
 +  * 11 DPI Mode
 +    * macht auf jeden Fall, wieviele Clocks man pro Zeile rausholen kann
 +    * 0/L: 300 dpi ~2600 clocks
 +    * 1/H: 600 dpi ~5268 clocks
 +    * nach anderen datenblaettern hat man 82 clocks "​output period",​ dann kommen die pixel (inkl. vorne und hinten dummypixeln)
 +    * 600 dpi: 5184 pixels
 +    * 300 dpi: 2592 pixels
 +  * 12 Analog Out
 +    * bei steigender Clock gehts scheinbar los (kommt von GND hoch fuer jeden Pixel neu, gefuehlte 100ns hier)
 +    * bei fallender Clock sampeln klingt sinnvoll
 +
 +==== Operation ====
 +
 +Startpuls wird bei fallender Clock gesampelt. Wenn Startpuls, dann werden die Werte in den Ausgabepuffer geschickt. Dann mit Clock rauscyceln. Belichtungszeit haengt wohl vom Intervall zwischen Startpulsen ab.
 +
 +Was ich mache (funktioniert,​ kann man bestimmt noch reduzieren):​
 +
 +  * Werte -> Shiftregister,​ neue Belichtung starten:
 +    * Puls hoch
 +    * Clock hoch
 +    * warte 500us
 +    * Clock runter
 +    * warte 500us
 +    * Puls runter
 +  * Shiftregister rausholen:
 +    * Clock rauf (Signal geht los)
 +    * warte 1us
 +    * Clock runter (Signal sollte stabil sein, kann man sampeln)
 +    * warte 1us
 +    * so oft wie es pixel gibt
 +  * restliche Belichtungszeit geben
 +    * warte, 0-20 Millisekunden haben geklappt
 +
 +==== Arduino ====
 +
 +<​code>​
 +#define START 2
 +#define CLOCK 3
 +#define DPIMODE 4
 +
 +bool dpimode = 1;
 +uint16_t pixels = dpimode ? 5184 : 2592;
 +
 +uint32_t linetime = 20000; // us
 +uint32_t sched = 0;
 +
 +void setup() {
 +  pinMode(START,​ OUTPUT);
 +  pinMode(CLOCK,​ OUTPUT);
 +  pinMode(DPIMODE,​ OUTPUT);
 +
 +  digitalWrite(DPIMODE,​ dpimode);
 +
 +  sched = micros();
 +}
 +
 +void loop() {
 +  digitalWrite(START,​ HIGH);
 +  digitalWrite(CLOCK,​ HIGH);
 +  digitalWrite(CLOCK,​ LOW);
 +  digitalWrite(START,​ LOW);
 +
 +  for (uint16_t counter = 0; counter < 82 + pixels; counter += 1)
 +  {
 +    PORTD |= _BV(PORTD3);​
 +    //​delayMicroseconds(1);​
 +    PORTD &= ~_BV(PORTD3);​
 +    //​delayMicroseconds(1);​
 +  }
 +
 +  sched += linetime;
 +  int32_t dt = sched - micros();
 +  while (dt > 0x4000)
 +  {
 +    delayMicroseconds(0x4000);​
 +    dt -= 0x4000;
 +  }
 +  if (dt > 0)
 +    delayMicroseconds(dt);​
 +}
 +</​code>​
 ==== coloring code ==== ==== coloring code ====
 <​code>​ <​code>​
Line 74: Line 157:
 open("​foo.txt",​ "​w"​).write(rex.sub(colorize,​ source)) open("​foo.txt",​ "​w"​).write(rex.sub(colorize,​ source))
 </​code>​ </​code>​
 +
 +==== Bilder ====
 +
 +{{projekte:​sx100:​img_20160604_004626.jpg?​500|}}
 +
 +{{projekte:​sx100:​img_20160604_004801.jpg?​500|}}
 +
 +{{projekte:​sx100:​img_20160604_004821.jpg?​500|}}
 +
 +
Navigation



You are not allowed to add pages