Archiv:SI2C: Difference between revisions

From Chaosdorf Wiki
(→‎Protokoll: zomg Datenrate)
m (Move page script moved page SI2C to Archiv:SI2C without leaving a redirect: Umzug in die Sonnenstr)
 
(42 intermediate revisions by 5 users not shown)
Line 4: Line 4:
|location=Hauptraum
|location=Hauptraum
|resource category=Infrastruktur
|resource category=Infrastruktur
|image=SI2C-Timing.png
|ownership=club
|ownership=club
|contactnick=derf
|contactnick=derf
Line 9: Line 10:
|has label=Yes
|has label=Yes
}}
}}
I²C-basierte twowire-Verbindung, aktuell writeonly.
 
I²C-ähnliche Twowire-Verbindung, allerdings writeonly und ohne ACKs um die Verwendung von Repeatern zu vereinfachen.


== Hardware ==
== Hardware ==


TBD. Auf dem Endgerät sollten SDA und SCL per Optokoppler galvanisch getrennt sein und Spannungen im Bereich 3 .. 16 Volt akzeptieren.
Ein SI2C-Bus hat vier Leitungen: GND, VCC, SDA und SCL. SDA und SCL müssen sowohl 3.3V als auch 5V als High-Pegel akzeptieren und high impedance sein, sinnvollerweise werden dazu Optokoppler verwendet (spart auch direkt jegliche Probleme mit ungleichen GND-Pegeln).
 
Für einen Client gibt es zwei Varianten, am Bus zu hängen:
 
* Ohne eigenes Netzteil: VCC und GND kommen aus dem Bus. Es sollte damit gerechnet werden, dass VCC auf ~11V runtergehen kann, und am besten werden keine signifkanten Lasten betrieben. 7-Segment-Anzeigen und Relais sind aber kein Problem
* Mit eigenem Netzteil: GND aus dem Bus geht nur zum Eingang der Optokoppler, die restliche Schaltung bekommt VCC und GND aus ihrem Netzteil. Der Bus-VCC wird nicht verwendet
 
Beispiel für die Variante mit eigenem Netzteil: [https://github.com/chaosdorf/dorfmap/blob/master/client/avrshift/avrshift.png avrshift Schaltplan]. Bei Aufbau ohne Netzteil kommt VCC (SUPPLY-1) aus dem Bus
und es ist GND == GPIOGND.
 
=== Ratings ===
 
{| class="wikitable"
|-
! Parameter !! Min !! Max
|-
| VCC || — || 12 V
|-
| SDA/SCL low || -0.1 V || 0.1 V
|-
| SDA/SCL high || 3 V || 5 V
|-
| VCC current || — || 250 mA
|-
| SDA/SCL current @ 3.3V || — || 1 mA
|-
| SDA/SCL current @5V || — || 5 mA
|}


== Protokoll ==
== Protokoll ==


Bitbasiert, falls Geräte Bytes erwarten wird das MSB zuerst übertragen. Die letzten 16 Bit sind die Geräte-Adresse.
Bitbasiert. Im Ruhezustand sind SDA und SCL low, die erste steigende SCL-Flanke ist auch das erste most significant bit der Übertragung (es gibt keine start condition). Bei jeder weiteren steigenden SCL-Flanke werden weitere Bits eingelesen, beendet wird das ganze durch die stop condition: Fallende SCL-Flanke mit SDA high. D.h.: Falls weitere bits folgen, muss SDA vor der fallenden SCL-Flanke auf low gesetzt werden.


[[Image:SI2C-Timing.png]]
Auf höherer Ebene gilt: Es können beliebig viele Bits / Bytes übertragen werden, solange die least significant (d.h. die letzten) 16 Bit die Geräteadresse sind. Nach einer steigenden SCL-Flanke ist das SDA-Signal für 100µs gültig, d.h. es muss in dieser Zeit eingelesen und verarbeitet werden. Die Low- bzw. High-Phase von SCL dauert je 200µs, nach der stop condition darf beliebig lange nicht auf den Bus reagiert werden. For the record: Die Übertragungsrate ist damit ca. 2kbit/s.
 
=== TLDR ===


{| class="wikitable"
{| class="wikitable"
Line 31: Line 62:
|}
|}


(Es wird also mit 250 kbit/s übertragen)
[[Image:SI2C-Timing.png]]
 
AVR-C-Beispiel: [https://github.com/derf/dorfmap/blob/master/avrshift/main.c#L68 avrshift/main.c Z.68ff]


== Kabel ==
== Kabel ==
[[File:SI2C-Doku.png|thumb|right|400x200px|Kabelwege]]


{| class="wikitable"
{| class="wikitable"
! Bus !! Kabel
! Bus !! Kabel
|-
|-
| feedback1 || [[Schleuse]] an {{H|feedback}} --(( violettes RJ45 ))-- Kabelkanal oberhalb [[Printer/CLC1160]] --(( Flachbandkabel entlang Kabelkanal ))-- [[Treppe]]
| feedback1 || [[Schleuse]] an {{H|feedback}} --(( violettes RJ45 ))-- Kabelkanal oberhalb [[Printer/HP2100]] --(( Flachbandkabel entlang Kabelkanal ))-- [[Treppe]]
|-
| feedback1 || Repeater [[Nomspace]] --(( Flachbandkabel ))-- [[Maschinenraum]]
|-
|-
| donationprint1 || [[Schleuse]] an {{H|donationprint}} --(( Flachbandkabel ))-- [[Laptop Lounge]]
| donationprint1 || [[Schleuse]] an {{H|donationprint}} --(( Flachbandkabel ))-- [[Laptop Lounge]]
Line 49: Line 86:


* 1: SDA
* 1: SDA
* 2: VCC (9V .. 12V)
* 2: VCC (12V)
* 3: GND
* 3: GND
* 4: SCL
* 4: SCL
Line 71: Line 108:


{| class="wikitable"
{| class="wikitable"
! Bus !! ID !! Firmware rev !! Funktion
! Bus !! ID !! Firmware !! rev !! Ort !! Funktion
|-
| feedback1 || <tt>0002</tt> || avrshift || 0.04-42-g1a373d3 || Hackcenter Kabelkanal || 12V sink
|-
| feedback1 || <tt>0004</tt> || charwrite-legacy || 0.04-106-g544d694 || <s>Hackcenter</s> || <s>4x7segment (links)</s>
|-
| feedback1 || <tt>0005</tt> || charwrite-legacy || 0.04-106-g544d694 || <s>Hackcenter</s> || <s>4x7segment (rechts)</s>
|-
| feedback1 || <tt>0006</tt> || avrmf || 0.05-28-g5f8445e || <s>Schaufenster</s> || <s>5V source (5 digital, 3 pwm) + Repeater</s>
|-
| feedback1 || <tt>0007</tt> || avrshift || 0.05-38-g7b9a4e3 || Lounge Kabelkanal || 12V sink
|-
| feedback1 || <tt>0008</tt> || blinkencontrol || 0.05-47-g7ce9480 SDASCL_MIXUP || Hackcenter Regal || RGB-LED-Streifen
|-
| feedback1 || <tt>0009</tt> || avrshift || 0.05-69-gcc36007 || Hackcenter Regal || 5V source -> 12V sink -> LED-Streifen im Regal
|-
| feedback1 || <tt>000a</tt> || avrmf || 0.06-44-g7757c9b || Nomspace || 12V out (6 digital, 3 pwm) + Repeater
|-
| feedback1 || <tt>000c</tt> || avrpwm || 0.07-2-g3fff051  || Treppe || 12V out (9 digital, 4 pwm)
|-
| feedback1 || <tt>000d</tt> || avrpwm || 0.08-2-g3a8deec || Maschinenraum || 12V out (9 digital, 4 pwm)
|-
| feedback1 || <tt>000e</tt> || avrpwm || 1.0.2-4-ga5c3047 || Hackcenter || 12V out (9 digital, 4 pwm)
|-
| feedback1 || <tt>000f</tt> || avrmf || 1.0.2-12-gc323689 || Schaufenster || 12V out (7 digital, 4 pwm) + Repeater
|-
|-
| feedback1 || <tt>0002</tt> || 0.04-42-g1a373d3 || avrshift (serial in, parallel 12V out als current sink)
| feedback1 || <tt>0010</tt> || charwrite || 1.0.2-17-g188905a || Maschinenraum || 6x7segment
|-
|-
| feedback1 || <tt>0004</tt> || 0.04-106-g544d694 || 7segment Hackcenter (8 Ziffern, links)
| feedback1 || <tt>0011</tt> || charwrite || 1.0.2-17-g188905a || Küche || 6x7segment
|-
|-
| feedback1 || <tt>0005</tt> || 0.04-106-g544d694 || 7segment Hackcenter (8 Ziffern, rechts)
| feedback1 || <tt>0012</tt> || avrpwm || 1.0.2-37-gef59205 || Hackcenter Regal || 12V out (9 digital, 4 pwm)
|-
|-
| feedback1 || <tt>0006</tt> || 0.04-120-gf2b7838 || avrmf mit parallel 5V out (5 digital, 3 pwm)
| feedback1 || <tt>0013</tt> || charwrite || 1.0.2-38-gabb5185 || Hackcenter || 6x7segment
|-
|-
| donationprint1 || <tt>0000</tt> || 0.04-42-g1a373d3 || avrshift (serial in, parallel 12V out als current sink)
| donationprint1 || <tt>0000</tt> || avrshift || 0.04-42-g1a373d3 || Lounge || 12V out
|-
|-
| donationprint2 || <tt>0001</tt> || 0.04-110-gfa20b4e || blinkencontrol (RGB)
| donationprint2 || <tt>0001</tt> || blinkencontrol || 0.04-110-gfa20b4e || Lounge || RGB-LED-Streifen
|-
|-
| donationprint2 || <tt>0003</tt> || 0.04-50-gf6641aa || 7segment Lounge (4 Ziffern)
| donationprint2 || <tt>0003</tt> || charwrite-legacy || 0.04-50-gf6641aa || Lounge || 4x7segment
|-
|-
|}
|}
Aktuell gibt es die folgenden Arten von Geräten
=== Master ===
==== Raspberry Pi ====
Ein RasPi kann direkt über zwei GPIO-Pins (+ Ground) als Bus Master angeschlossen werden. Der Bus kann dann mittels [https://github.com/chaosdorf/dorfmap/tree/master/si2c-bitwrite si2c-bitwrite], [https://github.com/chaosdorf/dorfmap/tree/master/si2c-bytewrite si2c-bytewrite] oder [https://github.com/chaosdorf/dorfmap/tree/master/si2c-charwrite si2c-charwrite] (abhängig von der Art des Zielgeräts) bespielt werden.
Die Programme erwarten jeweils die Pin-Nummer des SDA-Pins als erstes und die des SCL-Pins als zweites, also z.B. "si2c-bitwrite 8 11" für gpio8 und gpio11. Die Nummern beziehen sich auf das sysfs (<tt>/sys/class/gpio</tt>), die Pins müssen dort schon als Outputs exportiert sein. si2c-charwrite nimmt zusätzlich die Zieladresse (hi und lo) als drittes und viertes Argument.
Die eigentlichen Daten (inklusive Adresse für bitwrite/bytewrite) werden auf STDIN entgegengenommen. Ein Bit/Byte/String (alles in ASCII) pro Zeile, bei "push" oder EOF wird übertragen. Eine Payload von FE ED CA FE an einen Byte-orientierten Client mit Adresse 000a an GPIO-Pins 8 und 11 wäre dann z.B. <tt>echo "254\n237\n202\n254\n0\n10\n" | si2c-bytewrite 8 11</tt>
=== Client ===
==== avrshift ATTiny2313A ====
Addressierbares Schieberegister. Nimmt Bits entgegen und ordnet sie den digitalen Ausgängen (i.A. 5V oder 12V) zu.
==== avrpwm ATTiny2313A ====
Addressierbares Schieberegister++. Ordnet einen Teil der Eingabe binär (bitweise) den digitalen Ausgängen zu und hat dann noch drei bis vier Bytes für Analog-Ausgänge (8bit-PWM.)
==== avrmf ATTiny2313A ====
avrshift/avrpwm mit Repeater. Hat allerdings zwei Ausgänge weniger, die stattdessen SDA und SCL galvanisch getrennt weiterreichen.
==== blinkencontrol ATTiny2313A ====
Wird direkt mit Animationssequenzen gefüttert, Details siehe [[Blinkencontrol]].
==== 7segment ATTiny2313A ====
Steuert vier 7-Segment-Displays. Empfängt 32 Byte an Daten und legt diese direkt auf die Segmente, Zeichen müssen also schon vorher auf Bytes umgerechnet werden. Es werden immer nacheinander Bytes 1-4, 5-8, 9-12, … angezeigt (d.h. die Position auf dem Display ist byteposition % 4).
==== avr-rs232 ATTiny2313A ====
Bus-Test / Debugger. Gibt empfangene Pakete (Bytefolge inkl. Stop Condition) hexadezimal auf der seriellen Schnittstelle aus, kann mit nem USB-TTL-Adapter ausgelesen werden.
==== avr-rs232 Arduino ====
Bus-Test / Debugger. Gibt empfangene Pakete (Bytefolge inkl. Stop Condition) hexadezimal auf der seriellen Schnittstelle aus, kann mit nem USB-TTL-Adapter ausgelesen werden.
Hat keine galvanische Trennung zum Bus, sollte also nur von einem Laptop ohne angeschlossenes Netzteil benutzt werden.
== Platinen ==
Der Großteil der im Dorf verbauten Platinen ist handgeklöppelt auf Lochraster, inzwischen gibt es aber auch fertige PCBs zum Bestücken.
=== avrmf ===
[[File:avrmf-smd-top.jpg|thumb|right|400x200px|avrmf (obere Seite)]]
[[File:avrmf-smd-bot.jpg|thumb|right|400x200px|avrmf (untere Seite)]]
Kann für avrshift/avrpwm/avrmf genutzt werden, bei Verwendung als Repeater werden die beiden ULN2803-Beinchen oben Links (bei den als avrmf SDA/SCL gelabelten Kontakten) abgeknipst und durch SI2C-Kabel ersetzt.
Serviervorschlag:
* 100nF 0805 auf C2
* 10k 0805 auf R3
* 1k 0805 auf R1, R2, R4, R5
* 0805 LEDs: grün auf PWR, gelb oder rot auf ACT (Pluspol zeigt zum Label, Minuspol zum ULN2803)
* ICs und Wannenstecker wie angegeben
** Die beiden KB817 können auch durch einen KB827, TLV827 o.ä. ersetzt werden
* 330nF oder 1µF auf C1

Latest revision as of 18:54, 1 July 2020

Vereinfachtes I²C
SI2C-Timing.png
Einwege-Kommunikation
Ort Hauptraum
Besitzstatus Club-Eigentum
Kontakt derf
Benutzung vorsichtig


I²C-ähnliche Twowire-Verbindung, allerdings writeonly und ohne ACKs um die Verwendung von Repeatern zu vereinfachen.

Hardware[edit source]

Ein SI2C-Bus hat vier Leitungen: GND, VCC, SDA und SCL. SDA und SCL müssen sowohl 3.3V als auch 5V als High-Pegel akzeptieren und high impedance sein, sinnvollerweise werden dazu Optokoppler verwendet (spart auch direkt jegliche Probleme mit ungleichen GND-Pegeln).

Für einen Client gibt es zwei Varianten, am Bus zu hängen:

  • Ohne eigenes Netzteil: VCC und GND kommen aus dem Bus. Es sollte damit gerechnet werden, dass VCC auf ~11V runtergehen kann, und am besten werden keine signifkanten Lasten betrieben. 7-Segment-Anzeigen und Relais sind aber kein Problem
  • Mit eigenem Netzteil: GND aus dem Bus geht nur zum Eingang der Optokoppler, die restliche Schaltung bekommt VCC und GND aus ihrem Netzteil. Der Bus-VCC wird nicht verwendet

Beispiel für die Variante mit eigenem Netzteil: avrshift Schaltplan. Bei Aufbau ohne Netzteil kommt VCC (SUPPLY-1) aus dem Bus und es ist GND == GPIOGND.

Ratings[edit source]

Parameter Min Max
VCC 12 V
SDA/SCL low -0.1 V 0.1 V
SDA/SCL high 3 V 5 V
VCC current 250 mA
SDA/SCL current @ 3.3V 1 mA
SDA/SCL current @5V 5 mA

Protokoll[edit source]

Bitbasiert. Im Ruhezustand sind SDA und SCL low, die erste steigende SCL-Flanke ist auch das erste most significant bit der Übertragung (es gibt keine start condition). Bei jeder weiteren steigenden SCL-Flanke werden weitere Bits eingelesen, beendet wird das ganze durch die stop condition: Fallende SCL-Flanke mit SDA high. D.h.: Falls weitere bits folgen, muss SDA vor der fallenden SCL-Flanke auf low gesetzt werden.

Auf höherer Ebene gilt: Es können beliebig viele Bits / Bytes übertragen werden, solange die least significant (d.h. die letzten) 16 Bit die Geräteadresse sind. Nach einer steigenden SCL-Flanke ist das SDA-Signal für 100µs gültig, d.h. es muss in dieser Zeit eingelesen und verarbeitet werden. Die Low- bzw. High-Phase von SCL dauert je 200µs, nach der stop condition darf beliebig lange nicht auf den Bus reagiert werden. For the record: Die Übertragungsrate ist damit ca. 2kbit/s.

TLDR[edit source]

SCL SDA Aktion
X Bit X von rechts (als Least Significant Bit) ins Register schieben
1 stop condition: Eingabedaten übernehmen
0 Keine

SI2C-Timing.png

AVR-C-Beispiel: avrshift/main.c Z.68ff

Kabel[edit source]

Kabelwege
Bus Kabel
feedback1 Schleuse an feedback --(( violettes RJ45 ))-- Kabelkanal oberhalb Printer/HP2100 --(( Flachbandkabel entlang Kabelkanal ))-- Treppe
feedback1 Repeater Nomspace --(( Flachbandkabel ))-- Maschinenraum
donationprint1 Schleuse an donationprint --(( Flachbandkabel ))-- Laptop Lounge
donationprint2 Schleuse donationprint --(( 2x rot/weiß Doppellitze ))-- Laptop Lounge an Blinkencontrol

Pinbelegung 4pol-Flachbandkabel[edit source]

  • 1: SDA
  • 2: VCC (12V)
  • 3: GND
  • 4: SCL

Pinbelegung 8pol-Flachbandkabel[edit source]

Geplant, für Kombikabel mit CAN und SI2C.

  • 1: CANH
  • 2: 12V
  • 3: CANL
  • 4: GND
  • 5: SDA
  • 6: GND
  • 7: SCL
  • 8: 5V

Devices[edit source]

Soft- und Firmware liegen aktuell im dorfmap-Repo.

Bus ID Firmware rev Ort Funktion
feedback1 0002 avrshift 0.04-42-g1a373d3 Hackcenter Kabelkanal 12V sink
feedback1 0004 charwrite-legacy 0.04-106-g544d694 Hackcenter 4x7segment (links)
feedback1 0005 charwrite-legacy 0.04-106-g544d694 Hackcenter 4x7segment (rechts)
feedback1 0006 avrmf 0.05-28-g5f8445e Schaufenster 5V source (5 digital, 3 pwm) + Repeater
feedback1 0007 avrshift 0.05-38-g7b9a4e3 Lounge Kabelkanal 12V sink
feedback1 0008 blinkencontrol 0.05-47-g7ce9480 SDASCL_MIXUP Hackcenter Regal RGB-LED-Streifen
feedback1 0009 avrshift 0.05-69-gcc36007 Hackcenter Regal 5V source -> 12V sink -> LED-Streifen im Regal
feedback1 000a avrmf 0.06-44-g7757c9b Nomspace 12V out (6 digital, 3 pwm) + Repeater
feedback1 000c avrpwm 0.07-2-g3fff051 Treppe 12V out (9 digital, 4 pwm)
feedback1 000d avrpwm 0.08-2-g3a8deec Maschinenraum 12V out (9 digital, 4 pwm)
feedback1 000e avrpwm 1.0.2-4-ga5c3047 Hackcenter 12V out (9 digital, 4 pwm)
feedback1 000f avrmf 1.0.2-12-gc323689 Schaufenster 12V out (7 digital, 4 pwm) + Repeater
feedback1 0010 charwrite 1.0.2-17-g188905a Maschinenraum 6x7segment
feedback1 0011 charwrite 1.0.2-17-g188905a Küche 6x7segment
feedback1 0012 avrpwm 1.0.2-37-gef59205 Hackcenter Regal 12V out (9 digital, 4 pwm)
feedback1 0013 charwrite 1.0.2-38-gabb5185 Hackcenter 6x7segment
donationprint1 0000 avrshift 0.04-42-g1a373d3 Lounge 12V out
donationprint2 0001 blinkencontrol 0.04-110-gfa20b4e Lounge RGB-LED-Streifen
donationprint2 0003 charwrite-legacy 0.04-50-gf6641aa Lounge 4x7segment

Aktuell gibt es die folgenden Arten von Geräten

Master[edit source]

Raspberry Pi[edit source]

Ein RasPi kann direkt über zwei GPIO-Pins (+ Ground) als Bus Master angeschlossen werden. Der Bus kann dann mittels si2c-bitwrite, si2c-bytewrite oder si2c-charwrite (abhängig von der Art des Zielgeräts) bespielt werden.

Die Programme erwarten jeweils die Pin-Nummer des SDA-Pins als erstes und die des SCL-Pins als zweites, also z.B. "si2c-bitwrite 8 11" für gpio8 und gpio11. Die Nummern beziehen sich auf das sysfs (/sys/class/gpio), die Pins müssen dort schon als Outputs exportiert sein. si2c-charwrite nimmt zusätzlich die Zieladresse (hi und lo) als drittes und viertes Argument.

Die eigentlichen Daten (inklusive Adresse für bitwrite/bytewrite) werden auf STDIN entgegengenommen. Ein Bit/Byte/String (alles in ASCII) pro Zeile, bei "push" oder EOF wird übertragen. Eine Payload von FE ED CA FE an einen Byte-orientierten Client mit Adresse 000a an GPIO-Pins 8 und 11 wäre dann z.B. echo "254\n237\n202\n254\n0\n10\n" | si2c-bytewrite 8 11

Client[edit source]

avrshift ATTiny2313A[edit source]

Addressierbares Schieberegister. Nimmt Bits entgegen und ordnet sie den digitalen Ausgängen (i.A. 5V oder 12V) zu.

avrpwm ATTiny2313A[edit source]

Addressierbares Schieberegister++. Ordnet einen Teil der Eingabe binär (bitweise) den digitalen Ausgängen zu und hat dann noch drei bis vier Bytes für Analog-Ausgänge (8bit-PWM.)

avrmf ATTiny2313A[edit source]

avrshift/avrpwm mit Repeater. Hat allerdings zwei Ausgänge weniger, die stattdessen SDA und SCL galvanisch getrennt weiterreichen.

blinkencontrol ATTiny2313A[edit source]

Wird direkt mit Animationssequenzen gefüttert, Details siehe Blinkencontrol.

7segment ATTiny2313A[edit source]

Steuert vier 7-Segment-Displays. Empfängt 32 Byte an Daten und legt diese direkt auf die Segmente, Zeichen müssen also schon vorher auf Bytes umgerechnet werden. Es werden immer nacheinander Bytes 1-4, 5-8, 9-12, … angezeigt (d.h. die Position auf dem Display ist byteposition % 4).

avr-rs232 ATTiny2313A[edit source]

Bus-Test / Debugger. Gibt empfangene Pakete (Bytefolge inkl. Stop Condition) hexadezimal auf der seriellen Schnittstelle aus, kann mit nem USB-TTL-Adapter ausgelesen werden.

avr-rs232 Arduino[edit source]

Bus-Test / Debugger. Gibt empfangene Pakete (Bytefolge inkl. Stop Condition) hexadezimal auf der seriellen Schnittstelle aus, kann mit nem USB-TTL-Adapter ausgelesen werden.

Hat keine galvanische Trennung zum Bus, sollte also nur von einem Laptop ohne angeschlossenes Netzteil benutzt werden.

Platinen[edit source]

Der Großteil der im Dorf verbauten Platinen ist handgeklöppelt auf Lochraster, inzwischen gibt es aber auch fertige PCBs zum Bestücken.

avrmf[edit source]

avrmf (obere Seite)
avrmf (untere Seite)

Kann für avrshift/avrpwm/avrmf genutzt werden, bei Verwendung als Repeater werden die beiden ULN2803-Beinchen oben Links (bei den als avrmf SDA/SCL gelabelten Kontakten) abgeknipst und durch SI2C-Kabel ersetzt.

Serviervorschlag:

  • 100nF 0805 auf C2
  • 10k 0805 auf R3
  • 1k 0805 auf R1, R2, R4, R5
  • 0805 LEDs: grün auf PWR, gelb oder rot auf ACT (Pluspol zeigt zum Label, Minuspol zum ULN2803)
  • ICs und Wannenstecker wie angegeben
    • Die beiden KB817 können auch durch einen KB827, TLV827 o.ä. ersetzt werden
  • 330nF oder 1µF auf C1