Forum: Mikrocontroller und Digitale Elektronik Tastatur KC85 mit USB-Anschluss ausrüsten


von Gregor N. (gregornash)


Lesenswert?

Hallo,

ich habe eine Tastatur made in GDR auf dem Trödelmarkt erstanden und 
würde diese gern mit einem USB-Anschluss ausrüsten. Es handelt sich um 
das KC85 Keyboard, wunderbar dokumentiert unter 
http://www.mpm-kc85.de/dokupack/kc852_keyboard.pdf

Die Tastatur verfügt über eine zweiadrige Leitung, die gleichzeitig 
Stromversorgung und Signalleitung ist. Sie soll laut Handbuch über einen 
270 Ohm-Widerstand mit 12V Spannung versorgt werden. Das Signal wird 
pulsabstandsmoduliert.

Was bedeutet das, wie hoch sind hier die Logikpegel?

Mir ist nicht ganz klar, wie ich das am besten realisiere. Ich hatte 
gedacht, aus den 5V des USB-Anschluss per Step-Up-Wandler die benötigten 
12V zu erzeugen und das Signal mit einem Arduino o.ä. auszuwerten. Würde 
es wie folgt funktionieren?

- StepUp-Wandler: Plus über 270 Ohm an Tastaturplus, Minus an 
Tastaturminus
- Pullup 10k an Arduino Pin
- Vom Arduino Pin über 150 Ohm Strombegrenzungswiderstand und 
Zener-Diode 5.1V zur Spannungsbegrenzung an das Tastaturplus

Vielen Dank für alle Hinweise
Gregor

: Verschoben durch User
von Mario M. (thelonging)


Lesenswert?

Gregor N. schrieb:
> wie hoch sind hier die Logikpegel

Es gibt keine Logikpegel, da die Übertragung durch Modulation der 
Stromaufnahme stattfindet.

Gregor N. schrieb:
> wie ich das am besten realisiere

U807 entfernen und durch Controller mit USB (z.B. ATMega32U4) ersetzen?

von malsehen (Gast)


Lesenswert?

Rot ist blau und plus ist minus!
Einfach zusammenknubbeln und fertig.

Endlich wieder Ladder spielen!
Dank 3d-Drucker eine neue    Taste!

von pegel (Gast)


Lesenswert?

Merkwürdige Idee, aber was solls.

Ich würde die Auswerteschaltung aus Bild 3 aufbauen und das entstehende 
Signal in einem kleinen V-USB µC auswerten und als USB-HID ausgeben.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Lösungsvorschlag, wenn du die Tatstatur nicht „verbasteln“ möchtest.
Der U807 (SAB3021) ist ein IR Fernbedienungssender. Der dazu passen 
zugehörige Decoder ist der U806 (SAB3022B). Besorge dir diesen Decoder 
und klemme ihn an eine passende Schaltung (meinetwegen Arduino).

: Bearbeitet durch User
von Sempfdazugeber (Gast)


Lesenswert?

Der Bedienkomfort einer KC85-2/3 Tastatur ist etwa der eines
chinesischen Bluetoothminikeyboards.
Ich würde sowas in die nächste Tonne werfen...

von W.S. (Gast)


Lesenswert?

Gregor N. schrieb:
> Die Tastatur verfügt über eine zweiadrige Leitung, die gleichzeitig
> Stromversorgung und Signalleitung ist. Sie soll laut Handbuch über einen
> 270 Ohm-Widerstand mit 12V Spannung versorgt werden. Das Signal wird
> pulsabstandsmoduliert.
>
> Was bedeutet das, wie hoch sind hier die Logikpegel?

Das bedeutet (wie du aus dem Schaltplan entnehmen kannst), daß diese 
Tastatur  auf der kombinierten Daten- und Versorgungsleitung kurze 
Low-Impuls-Bursts erzeugt. Sonderlich groß sind die wohl nicht, denn da 
wird lediglich ein 2k2 Widerstand von 9.1 Volt gegen GND gezogen.

Wahrscheinlich wäre es weitaus besser gewesen, die Anschlußleitung
dreiadrig zu machen: GND+VCC+Signal, um sich den Zirkus mit dem 
Komparator am µC zu ersparen. Aber das läßt sich ja nachholen.

Und eben die Zeit von einem Burst zum nächsten ist, was du messen mußt. 
Für eine Null sind das etwa 5 ms, für eine Eins etwa 7 ms und als 
Endekennzeichen so etwa 14 ms oder mehr.

Ob du da mit 5 Volt auskommst, mußt du ausprobieren. Intern arbeitet das 
Ding mit maximal 9.1 Volt, vielleicht funktioniert der Chip auch noch 
bei 5 Volt.

Ich hatte mal von Pollin zusammen mit anderen Fernbedienungen auch sowas 
dabei. Im Vergleich zu anderen FB sind das ziemliche Exoten. Im 
Gegensatz zum Rest der Welt brauchen diese FB gleich 4 Stück AAA als 
Versorgung.

W.S.

von c-hater (Gast)


Lesenswert?

Gregor N. schrieb:

> Mir ist nicht ganz klar, wie ich das am besten realisiere. Ich hatte
> gedacht, aus den 5V des USB-Anschluss per Step-Up-Wandler die benötigten
> 12V zu erzeugen und das Signal mit einem Arduino o.ä. auszuwerten. Würde
> es wie folgt funktionieren?
>
> - StepUp-Wandler: Plus über 270 Ohm an Tastaturplus, Minus an
> Tastaturminus
> - Pullup 10k an Arduino Pin
> - Vom Arduino Pin über 150 Ohm Strombegrenzungswiderstand und
> Zener-Diode 5.1V zur Spannungsbegrenzung an das Tastaturplus

Wahrscheinlich nicht.

Warum nimmst du nicht einfach die Originalschaltung des "Empfängers" aus 
der von dir selbst verlinkten Beschreibung, bzw. den relevanten Teil 
davon? D.h.: Bild 3 auf Seite 11. Der relevante Teil ist: R1..R4 und C1.

Das ganze Gedöns danach ersetzt du einfach durch einen AVR8 mit 
Analogkomparator (also nahezu jeden). Das, was in der Originalschaltung 
Pin1 und 2 des B2761 darstellt, macht am AVR8 AIN1 und AIN0.

Allenfalls könnte man als Übervorsichtiger noch eine zusätzliche 
Schottky-Diode zwischen dem Verbindungspunkt von C1/R4 und Masse des AVR 
vorsehen. Nötig ist das aber aller Wahrscheinlichkeit nach nicht.

Der Rest ist reine Software...

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

> Allenfalls könnte man als Übervorsichtiger noch eine zusätzliche
> Schottky-Diode zwischen dem Verbindungspunkt von C1/R4 und Masse des AVR
> vorsehen. Nötig ist das aber aller Wahrscheinlichkeit nach nicht.

Mist, ich sehe gerade, dass ich da ein Detail übersehen habe: der 
Spannungsteiler R2/R3 liegt an -5V, nicht an +5V. Also müßte man die 
Schaltung für den AVR-AC doch ein wenig abwandeln.

von R. M. (Gast)


Lesenswert?

c-hater schrieb:
> Mist, ich sehe gerade, dass ich da ein Detail übersehen habe: der
> Spannungsteiler R2/R3 liegt an -5V, nicht an +5V. Also müßte man die
> Schaltung für den AVR-AC doch ein wenig abwandeln.

Wobei das auch kein Problem sein muss.
Als OPV könnte man einen LM393 nehmen, die beiden Eingänge auf U/2 
vorspannen.
Das wäre auch mit dem B2761 so gegangen, aber wer weiss, wofür die 2. 
Hälfte von dem ursprünglich genutzt wurde.

Die -5V waren im KC sowieso vorhanden, für die alten 16k-DRAMs also 
wurden sie hierfür gleich mitgenutzt.

von Axel S. (a-za-z0-9)


Lesenswert?

Sempfdazugeber schrieb:
> Der Bedienkomfort einer KC85-2/3 Tastatur ist etwa der eines
> chinesischen Bluetoothminikeyboards.

Das ist leider nur zu wahr. Die Tasten klemmen gerne und/oder geben 
schlechten Kontakt. Und zu schnell darf man auch nicht tippen.

Der einzige Grund, warum man eine solche Tastatur verwenden wollen 
würde, wäre der Betrieb eines KC85 selber.

Joe G. schrieb:
> Der U807 (SAB3021) ist ein IR Fernbedienungssender. Der dazu passen
> zugehörige Decoder ist der U806 (SAB3022B). Besorge dir diesen Decoder

Wohl nicht. Zum einen dürfte der Decoder mittlerweile absolut unkaufbar 
sein (oder wenn dann zu Wucherpreisen). Das simple Pulsabstandsprotokoll 
kriegt man mit jedem µC der Welt in Software ganz locker nebenbei 
decodiert.

Es sind immer 7 Bursts von 36kHz mit 152µs Länge, die Länge zwischen 
zwei Bursts codiert entweder eine 0 (5.12ms) oder eine 1 (7.14ms). Das 
erste Bit ist immer 0 (das Startbit). Bei andauerndem Drücken einer 
Taste werden Frames mit 14.34ms Abstand gesendet, sonst ist der Abstand 
mindestens 19.46ms. Das alles unter der Maßgabe, daß der U807 mit 4MHz 
läuft.

von Gregor N. (gregornash)


Lesenswert?

Vielen Dank für all die Hinweise. Ich fasse die Hardwareoptionen mal für 
mich zusammen:

1. Hauruckmethode:
Schaltung inkl. Controller in der Tastatur komplett durch 
Microcontroller mit USB oder V-USB und um die 16 In/Out-Pins bzw. 
Kombination mit Schieberegister ersetzen. Maximalinvasiv aber einfach zu 
verstehen, vermutlich relativ schnell umzusetzen und passt im besten 
Fall in die Tastatur rein.

2. Nachbaumethode:
Auswertungsschaltung nachbauen (Bild 3), entweder nur bis ran an den 
B2761 oder bis direkt dahinter oder bis zum Ende. Das ist wegen der 
negativen Spannungen nicht ganz trivial, könnte aber durch "vorspannen" 
(= "virtuelle Masse"?) erreicht werden. Die 12V müssten auch noch 
irgendwie aus 5V USB erzeugt werden (Step-Up-Wandler). Wenn ich das 
richtig verstehe, könnten aber auch 9V reichen, weil die Tastatur 
ohnehin intern durch Z-Diode auf 9 Volt runtergeht.

Statt B2761 könnte auch ein LM393 verwendet werden. Egal wie...es ist 
immer irgendeine Art Schaltung mit Operationsverstärker. Ich habe noch 
keine Ahnung, wie genau man das aufbaut, werde aber in den nächsten 
Tagen mal einen Vorschlag ersinnen. Das könnte relativ groß werden und 
passt dann vielleicht nicht mehr in die Tastatur.

3. Nachkaufmethode:
Einen passenden Dekoderbaustein besorgen. Das könnte teuer werden. Und 
ich wüsste noch nicht, wie der dann beschaltet wird.

4. Naivmethode:
Warum eigentlich muss ein Operationsverstärker her? Weil die Bursts 
intern mit runterziehen auf Ground über 2,2kOhm erzeugt werden und das 
zu schwach ist? Ich hatte zwischendurch die Hoffnung, dass sich 
irgendeine Art Spannungsteiler aufbauen lässt, der direkt an einen Pin 
vom Mikrocontroller geht, ggf. noch mit Z-Diode gegen Überspannung 
gesichert. Aber das scheint nicht zu funktionieren?

5. Hauwegmethode
Tastatur wegwerfen, denn sie ist nicht ergonomisch. Das wäre schade, 
denn ich zitiere aus dem Handbuch (S.4):
> Bei der Entwicklung des Kleincomputers KC 85 durch den VEB
> Mikroelektronik "Wilhelm Pieck" Mühlhausen wurde ein Hauptaugenmerk
> auf die Entwicklung einer ergonomisch und ökonomisch optimalen Tastatur
> gelegt. Als ergonomisch günstig haben sich vom Computer abgesetzte,
> flache und leicht bewegliche Tastaturen erwiesen.

Was kann daran falsch sein?


Ich tendiere zu einer abgewandelten Nachbaumethode (Option 2), d.h. 
möglichst nur die vorderen Teile von Bild 3 nachbauen und als 
Operationsverstärker LM393 verwenden. Denn ich will gern lernen, wie so 
etwas funktioniert - auch für zukünftige Projekte. Softwaremäßig ist mir 
übrigens einigermaßen klar, wie das funktionieren kann, das bekomme ich 
hin.

Über konkrete, möglichst einfache Schaltungsvorschläge würde ich mich 
sehr freuen, versuche aber selbst in den nächsten Tagen einmal eine 
Skizze.

Nochmals vielen Dank für die bisherigen und die zukünftigen Ideen und 
Hinweise.

: Bearbeitet durch User
von Mike B. (mike_b97) Benutzerseite


Lesenswert?

Sempfdazugeber schrieb:
> Der Bedienkomfort einer KC85-2/3 Tastatur ist etwa der eines
> chinesischen Bluetoothminikeyboards.
> Ich würde sowas in die nächste Tonne werfen...

Zumindest für einige Ossis ist auch das ein Stück Technik-Geschichte.
Ein Stück das ins Museum gehört (und zwar unverbastelt) und nicht in die 
Tonne.
Selbst wenn es im Museum nur als gutes Beispiel für "martialisches 
Minimaldesign ohne Benutzerkomfort" ausgestellt wird, ist es besser als 
in Afrika als Stück tiefschwarz qualmendes Stück "Rohstoff" zu 
verbrennen.

von c-hater (Gast)


Lesenswert?

Gregor N. schrieb:

> Warum eigentlich muss ein Operationsverstärker her?

Weil einerseits die Unterschiede der Logikpegel ziemlich gering sind, 
andererseits aber auch ein gewisser Mindesthub überschritten werden 
soll, damit es überhaupt als Änderung des Logikpegels zählt.

Das Problem ist halt das Grundkonzept, die Logikpegel durch Modulation 
der Stromaufnahme einer digitalen Schaltung zu übertragen.

Aber was hast du gegen einen OV? Wie gesagt: jeder AVR8 enthält einen in 
Form des Analogkomparators und du willst doch letztlich sowieso einen 
AVR8 benutzen. Das passt doch gut.

Die Originalschaltung brauchst du dafür bloß minimal abwandeln. Etwa so:
1
+12V                             +5V
2
o----              -------*------o
3
     |            |       |
4
     |            |       -
5
     -            -      | |22k
6
    | | 270      | |22k  | |
7
    | |          | |      -
8
     -            -       |      AIN0
9
     |            |       *------o
10
     |    | ||    |       |      AIN1
11
o----*----| ||----*--------------o
12
          | ||    |       |
13
TAS       4.7µ    -       -
14
                 | |22k  | |18k  GND
15
o----            | |     | |   --o
16
     |            -       -   |
17
     |            |       |   |
18
    ---          ---     --- ---

von Tim (Gast)


Lesenswert?

Gregor N. schrieb:
> ich habe eine Tastatur made in GDR auf dem Trödelmarkt erstanden und
> würde diese gern mit einem USB-Anschluss ausrüsten.
Welche denn genau: Die Flache 
(http://www.mpm-kc85.de/html/D001BasisDevise.htm#Tastatur) oder die 
Dicke (http://www.mpm-kc85.de/html/D005Tastatur.htm)?

Axel S. schrieb:
>> Der Bedienkomfort einer KC85-2/3 Tastatur ist etwa der eines
>> chinesischen Bluetoothminikeyboards.
>
> Das ist leider nur zu wahr. Die Tasten klemmen gerne und/oder geben
> schlechten Kontakt. Und zu schnell darf man auch nicht tippen.
Für die flache Tastatur stimmt das. Aber mit der D005 kann man auch 
heute noch komfortabel arbeiten.

Allerdings sieht man heutzutage eher den umgekehrten Weg: Da wird eine 
PS/2-Tastatur mit Protokollwandler am KC85 betrieben.

P.S.: Die Schaltungsvariante mit dem Analogkomperator am ATtiny/ATmega 
hätte ich auch gewählt.

von Icke ®. (49636b65)


Lesenswert?

Mike B. schrieb:
> Sempfdazugeber schrieb:
>> Der Bedienkomfort einer KC85-2/3 Tastatur ist etwa der eines
>> chinesischen Bluetoothminikeyboards.
>> Ich würde sowas in die nächste Tonne werfen...
>
> Zumindest für einige Ossis ist auch das ein Stück Technik-Geschichte.
> Ein Stück das ins Museum gehört (und zwar unverbastelt) und nicht in die
> Tonne.

Man darf auch nicht vergessen, daß diese Tastatur Mitte der 80er in der 
DDR-Mangelwirtschaft für einen Heimcomputer entworfen wurde. Das heißt, 
sie mußte einfach und billig herzustellen sein, ohne hochwertige oder 
knappe Materialien zu verwenden. Unter diesen Voraussetzungen ist sie 
den Ingenieuren m.E. gut gelungen. Und wer mal mit der 
Flachfolientastatur eines Z1013 "gearbeitet" hat, wird sie als 
reglerecht komfortabel empfinden.

Axel S. schrieb:
> Der einzige Grund, warum man eine solche Tastatur verwenden wollen
> würde, wäre der Betrieb eines KC85 selber.

Dann würde man sie einfach anstecken und müßte keinen USB-Zauber 
dranbasteln. Ich vermute, der TE will sie als Eingabegerät für den 
KC-Emulator am PC benutzen.

von Peter D. (peda)


Lesenswert?

Axel S. schrieb:
> Das ist leider nur zu wahr. Die Tasten klemmen gerne und/oder geben
> schlechten Kontakt. Und zu schnell darf man auch nicht tippen.

Das ist auch meine Erinnerung, die Tastatur taugte nichts. Sie war nur 
solange gut, solange es nichts besseres gab.
Außerdem hatte sie durch den FB-IC eine extrem lange Verzögerungszeit. 
Reaktionsspiele ließen sich damit fast nicht spielen. Man mußte die 
Tasten schon drücken, lange bevor der Ball ins Tor rollte.

von Holm T. (Gast)


Lesenswert?

@Gregor N.:
Sieh Dich mal im Forum von robotrontechnik.de um, Du findest dort 
verschiedene Lösungen PS/2 und USB Tastaturen mit dem KC85 zu koppeln um 
die teilweise mittlerweile defekten oder aber nur die aus heutiger Sicht 
unergonomischen Originaltastaturen zu ersetzen. Ich habe auch einen KC85 
Turm da stehen, den mir ein Bastelfreund mal als Kompensation für eine 
P8000 hingestellt hat, ich habe die Originaltastatur und eine kleine POS 
-PS/2 Tastatur mit Attiny85 im DIN-Stecker. Die Originale Tastatur hat 
den Vorteil das sie eben genau das macht was dran steht...das ist aber 
bereits Alles.

Laß die Tastatur einem Besitzer eines KC85 (Jemandem Anderen als mir) 
zukommen und verwirf die Idee das Teil an einen PC zu prömpeln, Du wirst 
damit nicht froh. Ist wirklich nur ein gut gemeinter Rat.

Gruß,

Holm

von Al.Kn. (Gast)


Lesenswert?

Holm T. schrieb:
> Laß die Tastatur einem Besitzer eines KC85 (Jemandem Anderen als mir)
> zukommen und verwirf die Idee das Teil an einen PC zu prömpeln, Du wirst
> damit nicht froh. Ist wirklich nur ein gut gemeinter Rat.

Das würde das Beste sein!

MfG

von Gregor N. (gregornash)


Lesenswert?

Tim schrieb:
> Gregor N. schrieb:
> Welche denn genau: Die Flache
> (http://www.mpm-kc85.de/html/D001BasisDevise.htm#Tastatur) oder die
> Dicke (http://www.mpm-kc85.de/html/D005Tastatur.htm)?

Die flache in schwarz mit roten Tasten in der obersten Reihe. Also die 
ältere, mit Charme, aber ohne Bedienkomfort.


> Allerdings sieht man heutzutage eher den umgekehrten Weg: Da wird eine
> PS/2-Tastatur mit Protokollwandler am KC85 betrieben.

Ja, das habe ich im Netz auch mehrfach gefunden. Das ergibt für mich 
wiederum keinen Sinn - wenn ich ernsthaft einen Computer brauche, dann 
nehme ich lieber ein schnelles, vielseitiges, ergonomisches, leises, 
aktuelles Gerät. So unterschiedlich können Menschen sein.

Al.Kn. schrieb:
>> Laß die Tastatur einem Besitzer eines KC85 (Jemandem Anderen als mir)
>> zukommen und verwirf die Idee das Teil an einen PC zu prömpeln, Du wirst
>> damit nicht froh. Ist wirklich nur ein gut gemeinter Rat.
>
> Das würde das Beste sein!

Jetzt mal ernsthaft: die Frage ist nicht, wie ich die Tastatur loswerde, 
sondern wie ich sie per USB anschließe. Warum? Mir reicht als Grund erst 
einmal, dass ich dabei etwas lerne, zum Beispiel über Elektronik und 
über das aktuelle und historische Verhältnis Mensch-Computer. Vielleicht 
gibt das auch anderen Anlass, darüber nachzudenken, wenn man eine E-Mail 
mit der Tastatur einer vergangenen Ära schreiben kann.

Außerdem finde ich den Kontrast reizvoll...letztendlich werde ich weder 
einen orginalen KC noch einen Emulator damit betreiben, sondern das für 
einen F-Tsch-Chq-&-Wumm-Apparat verwenden oder als Zusatztastatur mit 
Makros für Programmieren, Spiele, Multimedia belegen oder als Twitter 
oder E-Mailmaschine.

Wozu wurde die @-Taste eigentlich vorrangig eingesetzt? Für welche 
Programmiersprache oder was auch immer war das gut? Weiß jemand, wie die 
den Weg auf die Belegung gefunden hat oder wer damals dabei gewesen ist?

Interessant ist auch, dass es eine Negatortaste gibt, aber keine Tilde.

von Gregor N. (gregornash)


Lesenswert?

c-hater schrieb:

> Die Originalschaltung brauchst du dafür bloß minimal abwandeln. Etwa so:
>
>
1
> +12V                             +5V
2
> o----              -------*------o
3
>      |            |       |
4
>      |            |       -
5
>      -            -      | |22k
6
>     | | 270      | |22k  | |
7
>     | |          | |      -
8
>      -            -       |      AIN0
9
>      |            |       *------o
10
>      |    | ||    |       |      AIN1
11
> o----*----| ||----*--------------o
12
>           | ||    |       |
13
> TAS       4.7µ    -       -
14
>                  | |22k  | |18k  GND
15
> o----            | |     | |   --o
16
>      |            -       -   |
17
>      |            |       |   |
18
>     ---          ---     --- ---
19
>


Wow, danke, das sieht richtig gut aus. Ich versuche noch zu verstehen, 
wie das funktioniert. Ist folgende Interpretation einigermaßen sinnvoll?

An AIN0 liegt durch den Spannungsteiler aus 22k und 18k normalerweise 
2,25V an. An AIN1 liegt durch den Spannungsteiler aus 22k und 22k 
normalerweise 2,5V an. Das heißt Spannung an AIN1 ist 0,25 V größer als 
AIN0. Die Tastatur zieht AIN1 auf Masse, dadurch wird AIN1 kurzzeitig 
bis zu 2,25V kleiner als AIN0. Das dreht den Logikpegel um.

Bitte entschuldige meine Naivität, ich lerne noch. Woher weiß ich, wie 
die Spannungsteiler dimensioniert werden? Und wozu ist eigentlich der 
4.7µ-Kondensator da?  Glättet der nicht die bursts weg?

[Anmerkung zum Edit: habe meine Interpretation noch einmal geändert]

: Bearbeitet durch User
von Al.Kn. (Gast)


Lesenswert?

Gregor N. schrieb:
> Jetzt mal ernsthaft: die Frage ist nicht, wie ich die Tastatur loswerde,
> sondern wie ich sie per USB anschließe.

Wenn du die Tastatur original belässt und Sie nur an USB adaptieren 
willst ist doch o.k.
Mir geht es darum dieses Teil nicht als Schrott zu sehen, wie es sehr 
viele machen!

von pegel (Gast)


Lesenswert?

Na dann:

-eine Buchse für den Klinkenstecker
-ein 5 zu 12V DCDC Wandler
-ein 270Ω R und ein 4,7µ C und evtl. eine 3V3 Z Diode
-ein BluePill Board

Der Rest ist Software.

von c-hater (Gast)


Lesenswert?

Gregor N. schrieb:

> An AIN0 liegt durch den Spannungsteiler aus 22k und 18k normalerweise
> 2,25V an. An AIN1 liegt durch den Spannungsteiler aus 22k und 22k
> normalerweise 2,5V an. Das heißt Spannung an AIN1 ist 0,25 V größer als
> AIN0. Die Tastatur zieht AIN1 auf Masse, dadurch wird AIN1 kurzzeitig
> bis zu 2,25V kleiner als AIN0. Das dreht den Logikpegel um.

So isses.

> Woher weiß ich, wie
> die Spannungsteiler dimensioniert werden?

Die Spannungsverhältnisse entstammen der Originalschaltung, die 
absoluten Werte des Spannungsteilers hinter dem Kondensator ergaben sich 
dadurch, dass ich versucht habe, die Zeitkonstante des Diffenziergliedes 
des Originals beizubehalten (in der gut begründeten Annahme, dass die 
Entwickler sich damals etwas dabei gedacht haben). Um das zu verstehen, 
muss man wissen: AC-mäßig verhalten sich die beiden Widerstände dieses 
Spannungsteilers wie eine Parallelschaltung (weil sie über + und - der 
5V-Versorgung praktisch kurzgeschlossen sind), haben also zusammen 
11kOhm (10kOhm waren's im Original).

Die Werte des anderen Spannungsteilers sind dann wiederum so gewählt, 
dass möglichst schon in der Schaltung benutzte Widerstandswerte 
verwendet werden, sich aber in etwa die Spannungsverhältnisse der 
Originalschaltung ergeben. D.h.: Referenz gut 0,2V unter "Neutrallage" 
des Signals.

> Und wozu ist eigentlich der
> 4.7µ-Kondensator da?  Glättet der nicht die bursts weg?

Genau. Der ist der eigentliche Trick der Originalschaltung. Primär hält 
er die DC-Komponente des zu messenden Signals (immer so ungefähr +12V) 
vom Messeingang fern. Sekundär bildet er zusammen mit dem 10k-Widerstand 
der Originalschaltung eine Zeitkonstante, die als Tiefpass (wenn auch 
nur erster Ordnung) wirkt. Damit werden die für Digitalschaltungen 
typischen kurzen Spikes mit der Betriebsfrequenz etwas weggedämpft. 
Insgesamt erleichtert es also dieser Tiefpass, das Nutzsignal (also die 
gewollte Modulation der Stromaufnahme) von der unvermeidlichen 
Modulation durch den normalen Betrieb des U807 zu trennen.

von W.S. (Gast)


Lesenswert?

Gregor N. schrieb:
> 1. Hauruckmethode:

Nein, das hast du nicht richtig verstanden. Die 1. Methode wäre, das 
zweipolige Anschlußkabel gegen ein dreipoliges Kabel zu ersetzen, wobei 
die dritte Leitung an die Ausgänge der zwei UND-Gatter gelegt wird - 
allenfalls über einen einfachen Spannungsteiler. Sowas geht mit einem 
einfachen Stereo-Kabel.

Damit hätte man schon mal einen µC-gerechten Spannungspegel des 
auszuwertenden Signals. Den Rest kann dann tatsächlich der µC per 
Software erledigen.

W.S.

von Gregor N. (gregornash)


Lesenswert?

W.S. schrieb:
> Nein, das hast du nicht richtig verstanden. Die 1. Methode wäre, das
> zweipolige Anschlußkabel gegen ein dreipoliges Kabel zu ersetzen, wobei
> die dritte Leitung an die Ausgänge der zwei UND-Gatter gelegt wird -
> allenfalls über einen einfachen Spannungsteiler. Sowas geht mit einem
> einfachen Stereo-Kabel.

Diese Möglichkeit hatte ich tatsächlich nicht richtig verstanden, ich 
hatte mich mit Option 1 auf folgenden Kommentar bezogen:

Mario M. schrieb:
> U807 entfernen und durch Controller mit USB (z.B. ATMega32U4) ersetzen?

von Gregor N. (gregornash)


Lesenswert?

Tatsächlich habe ich gerade die vorgeschlagene Schaltung von c-hater 
nachgebaut, an den Komparator von einem einen Arduino Uno (ATmega 328P) 
gehängt, per Zeitmessung zwischen Interrupts das Signal 
ausgewertet...und es funktioniert! Unglaublich, ganz herzlichen Dank bis 
hierhin!

Ok, es funktioniert fast. Das Signal ist nicht sauber. Es funktioniert 
gut, wenn ich die Tasten gedrückt halte. Bei einfachen Anschlägen 
entsteht aber meistens Datenmüll. Mal längere, mal sehr kurze 
Impulsabstände gemischt mit den im Handbuch beschriebenen Abständen.

Ich kann versuchen, das per Software zu optimieren. Aber vielleicht 
liegt das auch an der Schaltung?


Und einige Tasten gehen leider gar nicht, z.B. die Entertaste.

von Tim (Gast)


Lesenswert?

Gregor N. schrieb:
> Es funktioniert
> gut, wenn ich die Tasten gedrückt halte.
Also dann, wenn "das System" eingeschwungen ist.

> Bei einfachen Anschlägen
> entsteht aber meistens Datenmüll. Mal längere, mal sehr kurze
> Impulsabstände gemischt mit den im Handbuch beschriebenen Abständen.
> Ich kann versuchen, das per Software zu optimieren. Aber vielleicht
> liegt das auch an der Schaltung?
Da hilft ein Oszilloskop, um sich das resultierende Signal genauer 
anzuschauen.
Im Handbuch steht ja was von 5 und 7 ms für '0' und '1'.
Da würde ich die Unterscheidung bei 6 ms machen.
Testweise kann man auch den Koppel-Kondensator mal auf 2,2µF 
verkleinern.

> Und einige Tasten gehen leider gar nicht, z.B. die Entertaste.
http://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=13059

von Gregor N. (gregornash)


Lesenswert?

Tim schrieb:

> Da hilft ein Oszilloskop, um sich das resultierende Signal genauer
> anzuschauen.

Ich habe leider kein Oszilloskop, das steht noch ganz oben auf meiner 
Wunschliste. Mit dem Arduino kann ich aber die Mikrosekunden zwischen 
den Impulsen messen, das sieht zum Beispiel bei Taste "m" so aus:
1
7552 7552 7552 7552 5396 5396 7552 19444
2
628 60648 316 216 216 216 224 208 
3
216 216 216 216 216 216 216 240 
4
248 228 220 216 216 224 208

Die erste Zeile entspricht 1111001, beendet durch einen 
Doppelwortabstand von ca. 19,4ms. Das Bit ganz links ist das Bit für die 
Shift-Taste (Startbit). Den Rest muss man umdrehen, dann entspricht es 
der IBUS-Code-Nr. im Handbuch. Sprich: Startbit == 1, IBUS-Nummer = 
100111 = 39.

Danach kommt Müll.

Manchmal fehlt aber auch das erste Bit, zum Beispiel bei der Leertaste:
1
7548 7552 5392 5392 5392 7548 19564
2
320 216 60380
3
312 220 220 212 216 216 216 216 
4
216 220 216 216 236 244 216 220 
5
216 216 216 216

Als erstes Bit hätte hier laut Handbuch eine 0 stehen müssen.

Hält man die Leertaste gedrückt, wird es eindeutiger:
1
     7544 7548 5392 5388 5392 7548 15092
2
7548 7548 7544 5392 5392 5388 7544 15096
3
7548 7544 7548 5392 5388 5392 7544 15096
4
7548 7544 7548 5388 5392 5388 7548 15096
5
7544 7544 7548 5392 5388 5392 7548 15092
6
7548 7544 7548 22892
7
320 68412
8
296 216 216 216 224 208 220 216 
9
216 216 216 216 220 252 236 204 
10
216 220 216 316

In der ersten Zeile fehlt wieder das erste Bit, eine 0.
Danach wird vier Mal (bis man loslässt) ein vollständiges Wort gesendet, 
allerdings mit dem falschen Startbit, aber vielleicht ist da ja auch ein 
Fehler im Handbuch. Danach kommt wieder Müll.

Bei anderen Tasten kommt das erste Bit mal mit, mal nicht, je nach 
Laune. Ich werde mal probieren, den Elko zu tauschen.

von Tim (Gast)


Lesenswert?

Gregor N. schrieb:
> Danach kommt Müll.
Sollte eigentlich nicht sein, wenn auf der Leitung tatsächlich Ruhe ist.
Vielleicht statt der Widerstände an Ain0 ein Poti (ca. 47k) einbauen. Am 
Mittelabgriff kommt Ain0 und an die Enden jeweils +5V und GND.

Dann solange von der Mittelstellung wegdrehen (ggf. beide Richtungen 
probieren), bis das "Rauschen" aufhört, aber der Empfang von Bits noch 
läuft...

> Ich werde mal probieren, den Elko zu tauschen.
Ja, sieht so aus, als wenn der das erste Bit verschluckt...

von Gregor N. (gregornash)


Lesenswert?

Ich habe verschiedenes versucht: den Elko gegen 2,2µF getauscht, die 
beiden Spannungsteiler mit Potis gebaut (hatte keine 47k, habe 22k und 
100k probiert). Ja, das Signal lässt sich verändern. Aber sauber wird es 
nicht und ich kann nicht sagen, dass man es dadurch verbessern kann.

Ich vermute fast, dass das im Original auch so war und per Software 
abgefangen wurde. Mit mehrfachem Debouncing per Software (und 
Invertierung des Startbits) lässt sich die Tastatur zum Schreiben 
benutzen. Das fühlt sich extrem lahm an, aber vielleicht war das einfach 
nicht anders?

Zur Schaltung habe ich noch eine Frage: dieser Koppelkondensator trennt 
die beiden Stromkreise mit ihren unterschiedlichen 
Spannungsversorgungen, so dass sie sich gegenseitig nicht (zer)stören 
können, richtig? Ist das eine Technik, die für beliebige Messungen 
verwendet werden kann? Also zum Beispiel, um analoge Audiosignale 
mitzuschneiden oder um das digitale Signal in einer Heizungsanlage 
(Bus-System) mitzulesen?

Ich werde noch etwas an der Software optimieren. Und mir ein Oszilloskop 
zulegen. Eigentlich ein anderes Thema aber vielleicht habt ihr eine ganz 
kurze Einschätzung zu folgendem Gerät: Rigol DS1054Z. Ist das zu teuer 
für den Einstieg?

von c-hater (Gast)


Lesenswert?

Gregor N. schrieb:

> Ich habe leider kein Oszilloskop, das steht noch ganz oben auf meiner
> Wunschliste. Mit dem Arduino kann ich aber die Mikrosekunden zwischen
> den Impulsen messen, das sieht zum Beispiel bei Taste "m" so aus:
>
>
1
> 7552 7552 7552 7552 5396 5396 7552 19444
2
> 628 60648 316 216 216 216 224 208
3
> 216 216 216 216 216 216 216 240
4
> 248 228 220 216 216 224 208
5
>

Das ist doch schon fast so gut wie ein Oszi.

Was das Rauschen betrifft: Rechne einfach mal aus, welcher Frequenz dein 
Messwert "216" entspricht. Dann überlege, wo diese Frequenz herstammen 
kann. Im Prinzip sehe ich nur zwei Möglichkeiten, entweder ist es die 
Betriebsfrequenz des U807 oder Ripple auf der 12V-Spannung 
(Schaltwandler).

Was auch immer: der Wert ist weit weg von den Werten des Nutzsignals und 
wesentlich kürzer, das Zeug kann also sehr leicht und ohne Nachteile für 
die Benutzbarkeit der Sache per Software ausgefiltert werden. Dass das 
nötig sein würde, ergibt sich schon aus der Originalschaltung. Da ist 
nämlich auch noch was zwischen dem OV und der eigentlichen 
Rechentechnik, dessen Funktion musst du natürlich in Software 
nachbilden...

> Manchmal fehlt aber auch das erste Bit, zum Beispiel bei der Leertaste:

Bei dieser Sache tippe ich mal ganz stark auf einen Fehler in deiner 
Auswertesoftware und wage folgende Prophezeiung: nachdem du o.g. Filter 
implementiert hast, wirst du (fast) durchgängig das Phänomen haben, dass 
das Startbit beim ersten Tastendruck fehlt und für die restlichen Fälle 
wirst du einen scheinbar willkürlichen Messwert haben...

von Peter D. (peda)


Lesenswert?

Die Störungen werden durch das Umladen des Elkos entstehen. Auch nimmt 
man statt eines Komparators eher einen Schmitt-Trigger.
Ich habe mal Pulse mit einem 74HC14 regeneriert. Der Spannungsteiler 
legt den Eingang auf die Mitte zwischen den Schwellen. Der 
Koppelkondensator wird so klein gewählt, daß er aus den Flanken nur 
kurzen Nadeln macht.

von Gregor N. (gregornash)


Lesenswert?

c-hater schrieb:
> Da ist
> nämlich auch noch was zwischen dem OV und der eigentlichen
> Rechentechnik, dessen Funktion musst du natürlich in Software
> nachbilden...

Ich verstehe leider noch nicht, was der Rest der Schaltung macht...auch 
weil ich über die Bauteilnummern nicht so recht was finde. Aber per 
Software funktioniert es mittlerweile ganz gut und ich bin kurz davor, 
mir ein Oszilloskop zu kaufen, um dem Signal weiter auf den Grund zu 
gehen.

> wage folgende Prophezeiung: nachdem du o.g. Filter
> implementiert hast, wirst du (fast) durchgängig das Phänomen haben, dass
> das Startbit beim ersten Tastendruck fehlt und für die restlichen Fälle
> wirst du einen scheinbar willkürlichen Messwert haben...

Interessante Prognose...aber warum? Die Schaltung (das meinst Du mit 
Filter, nehme ich an) sollte doch im Orginal funktioniert haben?

Die Auswerteroutine ist tatsächlich noch nicht so ganz gut. Anscheinend 
verbraucht die Ausgabe auf dem Serial Monitor hin und wieder trotz hoher 
Baudrate so viel Zeit, dass Impulse übersprungen werden...was ich erst 
jetzt feststelle. Das hat bislang nicht gestört, da es eine Art 
unfreiwilliges Debouncing war.

von c-hater (Gast)


Lesenswert?

Gregor N. schrieb:

> Ich verstehe leider noch nicht, was der Rest der Schaltung macht...auch
> weil ich über die Bauteilnummern nicht so recht was finde.

Das ist im Kern ein Monoflop. Also ein digitaler Tiefpass einfachster 
denkbarer Bauart. Der macht genau das, was ich dir empfohlen habe: 
einfach stumpf alles ausfiltern, was wesentlich kürzer ist, als das, was 
du erwartest. In Software kann man das eleganter umsetzen, als es diese 
primitive Schaltung zu leisten vermag, denn die ist 
"polaritäts-sensitiv". In Software kannst du dasselbe Verhalten leicht 
auch unipolar herstellen. Eine Hardwareschaltung dafür ist auch möglich, 
wäre aber deutlich aufwendiger als die Originalvorlage. Deswegen wurde 
wohl damals darauf verzichtet, auch deshalb, weil es schlicht nicht 
nötig war. In Software kann man sich diesen Luxus aber locker leisten, 
denn er kostet nicht einen Takt Rechenzeit mehr als die 
"polaritäts-sensitive" Variante. Jedenfalls nicht auf einem AVR8...

> Interessante Prognose...aber warum?

Weil ich ein erfahrener Programmierer bin und deswegen wahrscheinlich 
schon 99,9% aller denkbaren blöden Fehler selber schon mindestens einmal 
gemacht (und behoben) habe. Z.B. eben auch den, den du sehr 
wahrscheinlich gemacht hast (weil er das aufgezeichnete Verhalten 
perfekt erklären könnte...)

von Gregor N. (gregornash)


Lesenswert?

c-hater schrieb:
> Z.B. eben auch den, den du sehr
> wahrscheinlich gemacht hast (weil er das aufgezeichnete Verhalten
> perfekt erklären könnte...)

Na dann hier mal mein aktueller Code. Ich habe lediglich ein paar 
debug-Definitionen entfernt, unübersichtlich ist es trotzdem noch.

Der Filter ist direkt unterhalb des Kommentars "Frequenzen ausfiltern" 
zu finden. Ich hatte diese Bedingung erst nicht drin, sondern nur die 
untere Grenze über TIME_ZERO ausgewertet. So ist es aber besser.

Wo hat oder hätte sich dort ein Fehler eingeschlichen?
1
/*
2
3
  KC85 Keyboard
4
5
 */
6
7
// Times
8
#define TIME_MINIMUM 1000
9
#define TIME_ZERO 4500          //tD0 = 5  tu  = 5,12 ms  Pulsabstand für lohgische Null
10
#define TIME_ONE 6500           //tD1 = 7  tu  = 7,168 ms Pulsabstand für lohgische Eins
11
#define TIME_WORD 13500         //tDW = 14 tu  = 14,336 ms Wortabstand
12
#define TIME_DOUBLEWORD 18500   //tDS = 13 tu  = 19,456 ms Doppelwortabstand
13
#define TIME_MAXIMUM 70000
14
15
16
// Char mappings
17
char* keychars_bit0[]= {"W", "A", "2", " ", "HOME", "-", "F2", "Y", "E", "S", "3", " ", "CLR (BS)", ":", "F3", "X", "T", "F", "5", "P", "DEL", "0", "F5", "V", "U", "H", "7", "O", "INS", "9", "BRK", "N", "I", "J", "8", "SPACE", "K", ",", "STOP", "M", "Z", "G", "6", "nicht belegt", "L", ".", "F6", "B", "R", "D", "4", "_", "+", "/", "F4", "C", "Q", "SHIFT LOCK", "1", "", "", "", "F1", "", ""};
18
char* keychars_bit1[]= {"w", "a", '"', " ", "CLS", "=", "F8", "y", "e", "s", " ", "(NEG)", "(HCOPY)", "*", "F9", "x", "t", "f", "%", "p", "(CLEAR LINE)", " ", "FB", "v", "u", "h", "'", "o", "INS", ")", "BRK", "n", "i", "j", "(", "NEG SPACE", "k", " ", "STOP", "m", "z", "g", "&", "", "l", "", "FC", "b", "r", "d", " ", "Ö", ";", "?", "FA", "c", "q", "SHIFT LOCK", "!", "SCROLL", "PAGE", "CONT", "F7", "ENTER", ""};
19
20
// States
21
volatile boolean triggered;
22
volatile boolean rising;
23
volatile byte acsr_value;
24
25
boolean key_hold = false;
26
boolean key_pressed = false;
27
28
unsigned long last_charout = 0;
29
30
unsigned long last_time = 0;
31
unsigned long current_time= 0;
32
unsigned long signal_time= 0;
33
unsigned long signal_count = 0;
34
35
// Buffer
36
byte keybuffer = 0;
37
byte keylast = 0;
38
39
//ISR routine
40
ISR (ANALOG_COMP_vect) {
41
  // Ignore the interrupt if we haven't reported the last one yet (debounce)
42
  if (triggered) 
43
    return;           
44
    
45
  cli();
46
  acsr_value = ACSR;
47
  rising = (acsr_value & bit(ACO)) > 0;
48
  triggered = true;
49
  sei();
50
}
51
52
void setup() {
53
  Serial.begin (115200);
54
  Serial.println ("Started.");
55
56
  ADCSRB = ADCSRB & ! bit(ACME);   // disable Analog Comparator Multiplexer Enable
57
  ACSR =  bit(ACI)                 // clear Analog Comparator Interrupt Flag
58
        | bit(ACIE)                // set Analog Comparator Interrupt Enable
59
        | bit(ACIS1) | bit(ACIS0)  // select rising edge: ACIS1/ACIS0 Analog Comparator Interrupt Mode Select
60
        ;
61
}
62
63
void loop() {
64
  if (triggered)
65
    read_signal();
66
    
67
  if (key_pressed | key_hold) {
68
      showKeyNumber();    
69
  }  
70
  
71
  key_pressed = false;
72
  key_hold = false;  
73
  triggered = false;     
74
}
75
76
77
void read_signal() {
78
    static byte blockcount = 0;
79
  
80
    current_time = micros();
81
    signal_time = current_time - last_time;
82
83
    // Frequenzen ausfiltern
84
    if ((signal_time < TIME_MINIMUM)) {
85
      return false;
86
    }  else {
87
      last_time = current_time;  
88
    }
89
    
90
    if (signal_time > TIME_MAXIMUM)
91
      Serial.println("\n\n----------\n");
92
93
    if ((signal_time < TIME_ZERO)) {
94
      resetBuffer();
95
      Serial.print(signal_time);
96
    }  
97
98
    else if ((signal_time > TIME_MAXIMUM)) {
99
      resetBuffer();
100
      Serial.print(signal_time);
101
      blockcount = 8;
102
    }  
103
    
104
    else if ((signal_time > TIME_DOUBLEWORD) ) {      
105
      key_pressed = ( signal_count == 7);
106
      finishBuffer();
107
108
      Serial.print(signal_time);
109
      Serial.print(" [D] ");
110
      blockcount = 8;
111
    }  
112
    else if ((signal_time > TIME_WORD) ) {
113
      key_hold = (signal_count == 7);
114
      finishBuffer();
115
116
      Serial.print(signal_time);
117
      Serial.print(" [W] ");
118
      blockcount = 8;        
119
    }
120
    else if (signal_time > TIME_ONE) {
121
      addBuffer(1);
122
123
      Serial.print(signal_time);
124
      Serial.print(" [1] ");        
125
    }  
126
    else if (signal_time > TIME_ZERO) {      
127
      addBuffer(0);
128
129
      Serial.print(signal_time);
130
      Serial.print(" [0] ");
131
      
132
    }  else {
133
        Serial.print(signal_time);
134
    }
135
136
      blockcount+= 1;
137
      if (blockcount >= 8) {
138
        Serial.println();
139
        blockcount = 0;
140
      } else {
141
        Serial.print(" ");
142
      }    
143
144
}
145
146
void addBuffer(byte state) {
147
  keybuffer = keybuffer >> 1;           //Platz machen für neues Bit
148
  keybuffer = keybuffer | (state << 6); //Neues Bit an Position 7 setzen
149
  signal_count += 1;
150
}
151
152
void finishBuffer() {
153
  //Startbit invertieren und nach vorne schieben 
154
  byte startbit = ~(keybuffer & 1) << 7;
155
  keylast = (keybuffer >> 1) | startbit;
156
  
157
  resetBuffer();
158
}
159
160
void resetBuffer() {
161
  signal_count = 0;
162
  keybuffer = 0;
163
}
164
165
166
// Output decimal number
167
void showKeyNumber() {
168
  if (key_pressed)
169
    Serial.print("PRESSED ");
170
  if (key_hold)
171
    Serial.print("HOLD ");    
172
    
173
  Serial.print (keylast);
174
  
175
  Serial.print (" ");
176
  showKeyChar();
177
  Serial.println();
178
}
179
180
181
// Output char
182
void showKeyChar() {
183
  static unsigned long time_char_current = 0;
184
  static unsigned long time_char_last = 0;
185
 
186
  static char* keychar;
187
188
  //Startbit == 1
189
  if (keylast >> 7 == 1)
190
      keychar = keychars_bit1[keylast & ~(1<<7) ];
191
   
192
   //Startbit == 0   
193
   else  
194
     keychar = keychars_bit0[keylast & ~(1<<7) ];  
195
196
  //Debouncing
197
  time_char_current = millis();
198
  if ((time_char_current - time_char_last) > 80) {
199
    Serial.print(keychar);
200
    time_char_last = time_char_current;
201
  }
202
}

von michael_ (Gast)


Lesenswert?

Ich kenne diese Tastatur nicht direkt.
Aber ich kann mir nicht vorstellen, dass man da so ein kompliziertes 
Programm braucht.

Ich würde mir da erst einmal den Eingang am KC85 ansehen.
Speicherplatz war damals sehr knapp.

von Gregor N. (gregornash)


Lesenswert?

michael_ schrieb:
> Ich kenne diese Tastatur nicht direkt.
> Aber ich kann mir nicht vorstellen, dass man da so ein kompliziertes
> Programm braucht.

Das sieht nur kompliziert aus, weil so viel Output-Code dazwischen 
liegt. Nimm alles mit "Serial" und was so dazu gehört raus. Dann ist es 
immer noch nicht besonders elegant, aber es bleibt nur noch übrig:
1
/*
2
3
  KC85 Keyboard
4
5
 */
6
7
// Times
8
#define TIME_MINIMUM 1000
9
#define TIME_ZERO 4500          //tD0 = 5  tu  = 5,12 ms  Pulsabstand für lohgische Null
10
#define TIME_ONE 6500           //tD1 = 7  tu  = 7,168 ms Pulsabstand für lohgische Eins
11
#define TIME_WORD 13500         //tDW = 14 tu  = 14,336 ms Wortabstand
12
#define TIME_DOUBLEWORD 18500   //tDS = 13 tu  = 19,456 ms Doppelwortabstand
13
#define TIME_MAXIMUM 70000
14
15
16
// States
17
volatile boolean triggered;
18
19
boolean key_hold = false;
20
boolean key_pressed = false;
21
22
unsigned long last_time = 0;
23
unsigned long current_time= 0;
24
unsigned long signal_time= 0;
25
unsigned long signal_count = 0;
26
27
// Buffer
28
byte keybuffer = 0;
29
byte keylast = 0;
30
31
//ISR routine
32
ISR (ANALOG_COMP_vect) {
33
  cli();
34
  triggered = true;
35
  sei();
36
}
37
38
void setup() {
39
  Serial.begin (115200);
40
  Serial.println ("Started.");
41
42
  ADCSRB = ADCSRB & ! bit(ACME);   // disable Analog Comparator Multiplexer Enable
43
  ACSR =  bit(ACI)                 // clear Analog Comparator Interrupt Flag
44
        | bit(ACIE)                // set Analog Comparator Interrupt Enable
45
        | bit(ACIS1) | bit(ACIS0)  // select rising edge: ACIS1/ACIS0 Analog Comparator Interrupt Mode Select
46
        ;
47
}
48
49
void loop() {
50
  if (triggered)
51
    read_signal();
52
    
53
  if (key_pressed | key_hold) 
54
      showKeyNumber();    
55
  
56
  key_pressed = false;
57
  key_hold = false;  
58
  triggered = false;     
59
}
60
61
62
void read_signal() {
63
    current_time = micros();
64
    signal_time = current_time - last_time;
65
66
    // Frequenzen ausfiltern
67
    if ((signal_time < TIME_MINIMUM)) 
68
      return false;
69
    else 
70
      last_time = current_time;  
71
72
    if ((signal_time < TIME_ZERO) | (signal_time > TIME_MAXIMUM)) 
73
      resetBuffer();
74
          
75
    else if ((signal_time > TIME_DOUBLEWORD) ) {      
76
      key_pressed = ( signal_count == 7);
77
      finishBuffer();
78
    }  
79
    else if ((signal_time > TIME_WORD) ) {
80
      key_hold = (signal_count == 7);
81
      finishBuffer();        
82
    }
83
    else if (signal_time > TIME_ONE) 
84
      addBuffer(1);
85
 
86
    else if (signal_time > TIME_ZERO)    
87
      addBuffer(0);      
88
}
89
90
void addBuffer(byte state) {
91
  keybuffer = keybuffer >> 1;           //Platz machen für neues Bit
92
  keybuffer = keybuffer | (state << 6); //Neues Bit an Position 7 setzen
93
  signal_count += 1;
94
}
95
96
void finishBuffer() {
97
  //Startbit invertieren und nach vorne schieben 
98
  byte startbit = ~(keybuffer & 1) << 7;
99
  keylast = (keybuffer >> 1) | startbit;
100
  
101
  resetBuffer();
102
}
103
104
void resetBuffer() {
105
  signal_count = 0;
106
  keybuffer = 0;
107
}
108
109
110
// Output decimal number
111
void showKeyNumber() {
112
  if (key_pressed)
113
    Serial.print("PRESSED ");
114
  if (key_hold)
115
    Serial.print("HOLD ");    
116
    
117
  Serial.println (keylast);
118
}

von michael_ (Gast)


Lesenswert?

Was sagt eigentlich der Assembler-Code des KC-85?

von michael_ (Gast)


Lesenswert?


von Gregor N. (gregornash)


Lesenswert?

michael_ schrieb:
> Was sagt eigentlich der Assembler-Code des KC-85?

Hui, muss ich erstmal lesen lernen. Nach dem ersten Überfliegen sieht es 
ganz ähnlich aus wie mein Programm. Das Rückwärtszählen der Takte finde 
ich sehr elegant.

von Gregor N. (gregornash)


Lesenswert?

W.S. schrieb:

> Nein, das hast du nicht richtig verstanden. Die 1. Methode wäre, das
> zweipolige Anschlußkabel gegen ein dreipoliges Kabel zu ersetzen, wobei
> die dritte Leitung an die Ausgänge der zwei UND-Gatter gelegt wird -
> allenfalls über einen einfachen Spannungsteiler. Sowas geht mit einem
> einfachen Stereo-Kabel.

Da muss ich jetzt noch einmal nachhaken: was machen diese beiden 
UND-Gatter denn da überhaupt? Die sehen so überflüssig aus. Beide 
Eingänge sind kurzgeschlossen, das ergibt doch gar keinen Sinn?

von MaWin (Gast)


Lesenswert?

michael_ schrieb:
> Aber ich kann mir nicht vorstellen, dass man da so ein kompliziertes
> Programm braucht

Die Fernbedienungscodes in passende Scancodes einer IBM Tastatur mit 
völlig anderem Layout umzuwandeln wird beliebig komplex.
Beide Tastaturen senden schliesslich KEIN ASCII.

von Gregor N. (gregornash)


Angehängte Dateien:

Lesenswert?

Trommelwirbel.....mein Oszilloskop ist angekommen. Tastatur wie im 
Handbuch beschrieben über 270 Ohm an 12 Volt angeschlossen, Tastkopf 
zwischen Widerstand und Tastatur gesetzt. Hier die ersten Aufnahmen.

Erkenntnisse:

- Der Spannungspegel liegt zwischen ca. 9,7 und 10,4 Volt (die dicken 
Linien). Das ist aber nicht immer gleich und sinkt auch mal auf 9,5 zu 
10,2 Volt ab.

- Das Signal ist durch Abfall der Spannung um ca. 0,5 Volt aufmoduliert.

- Man kann gut den "Wortabstand" zwischen den einzelnen Sendepaketen 
erkennen.


- Print 6: Das Signal besteht wie in der Anleitung beschrieben aus einem 
Burst mit fünf Tälern (sagt man das so?)

- Print 10 zeigt das Signal hinter dem Kondensator in der oben von 
c-hater beschriebenen Schaltung. Ziemlich verrückt, dass das überhaupt 
mit dem Arduino auswertbar ist.

- Dummerweise funktioniert das erste Bit nicht immer. Man sieht hier 
denke ich sehr schön, wie es verschollen geht. Nach einem Tastendruck 
wird der gesamte Pegel erst hochgezogen, aber das erste Bit sendet schon 
während der Aufwärtsfahrt.


Kann man da was machen? Das ist ja eigentlich ein Problem in der 
Tastatur und wohl kaum durch externe Beschaltung und nur mit sehr 
trickreicher Software zu bewältigen, oder?

: Bearbeitet durch User
von Gregor N. (gregornash)


Angehängte Dateien:

Lesenswert?

Hier noch ein Print mit den Signalen an beiden Spannungsteilern 
(Schaltung von c-hater). Der Bitverlust ist ja noch viel krasser als 
gedacht: es braucht erst ein komplettes Sendepaket und manchmal mehr, 
bis die Bursts unter die Triggerspannung fallen. Und das ist auch alles 
ziemlich rauschig. Muss das so sein?

von Tim (Gast)


Angehängte Dateien:

Lesenswert?

Kannst Du die Daten von Kanal 1 aus Deinem Oszi exportieren (Format: 
csv, xls o.ä) und hier einstellen?
Dann könnte man die Simulation damit füttern und nach einem geeigneten 
Hochpass suchen.

von Gregor N. (gregornash)



Lesenswert?

Tim schrieb:
> Kannst Du die Daten von Kanal 1 aus Deinem Oszi exportieren (Format:
> csv, xls o.ä) und hier einstellen?
> Dann könnte man die Simulation damit füttern und nach einem geeigneten
> Hochpass suchen.

Interessant, das geht? Mit welchem Programm macht man das?

Anbei die Daten auf dem Bild als csv-Datei, dazu noch die Einstellungen 
des Scopes in der txt-Datei. Sind das die Daten, die man für eine 
Simulation braucht? Ich kann sonst auch trc- oder wfm-Dateien 
exportieren.

Bei den Dateien mit Kennzeichnung "precap" hängt das Scope vor dem 
Koppelkondensator (4.7µ), bei den anderen Dateien hinter dem 
Kondensator.

Das Signal wird beim kurzen Drücken der Leertaste erzeugt. Zu sehen sind 
zwei Pakete mit sieben Bit, getrennt durch Wortabstand. Wenn man die 
Taste gedrückt hält, wird die Bitfolge auf dem oberen Spannungsneiveau 
fortlaufend weitergesendet.

: Bearbeitet durch User
von --- (Gast)


Lesenswert?

Du bist also zu doof, mit einem einfachen Komparator die Impulse da 
herausfischen.

Und ohne Fremderleuchtung wird das mit USB wohl auch nix.

von Mario M. (thelonging)


Angehängte Dateien:

Lesenswert?

Miss doch mal ganz ohne Auswerteschaltung. Meine Vermutung ist, dass der 
gezeigte Spannungssprung erst durch die Auswerteschaltung verursacht 
wird (Klemmdioden?). Sonst müsste die Tastatur ihre Stromaufnahme zu 
Beginn der Datenübertragung um mehr als 3 mA senken, wofür ich in deren 
Schaltplan keinen Grund erkennen kann. Du bist ja nicht der Erste, der 
sich an der KC85-Tastatur versucht. Z.B. habe ich obige Grafik gefunden 
und da ist eine glatte Linie bei 9V mit 0,5V-Impulsen nach unten zu 
sehen.

von Gregor N. (gregornash)


Lesenswert?

Mario M. schrieb:
> Miss doch mal ganz ohne Auswerteschaltung.

Habe ich als allererstes getan. Ohne Auswerteschaltung -> die obigen 
Messungen und Bilder mit Sprung, aber geradem Spannungsniveau. Ich werde 
noch einmal komplett neu aufbauen, mit anderer Spannungsversorgung. 
Wüsste aber nicht, was das ändern kann.


> Z.B. habe ich obige Grafik gefunden
> und da ist eine glatte Linie bei 9V mit 0,5V-Impulsen nach unten zu
> sehen.

Danke für den Tipp. Die habe ich auch gefunden. Vielleicht ist meine 
Tastatur ja auch kaputt. Ein paar Tasten gehen wie gesagt gar nicht, ein 
Pin des Controllers ist tot.

--- schrieb:
> zu doof [...]
> ohne Fremderleuchtung

Interessant, wie einige Menschen glauben, das Wissen sei von allein in 
sie hinein gepurzelt. Du müsstest ja alles, was Du kannst, ganz allein 
erfinden. Keine Schule, keine Bücher, kein Internet, keine Familie, 
keine Freunde. Realistischer ist doch, dass wir alle das Produkt unseres 
Umfelds sind. Ich wünsche Dir ein freundlicheres Umfeld. You made my 
day.

von c-hater (Gast)


Lesenswert?

Mario M. schrieb:

> Miss doch mal ganz ohne Auswerteschaltung.

Das ist ganz sicher eine gute Idee im Sinne der klassischen Fehlersuche: 
man versucht, mögliche Störeinflüsse zu eleminieren.

> Meine Vermutung ist, dass der
> gezeigte Spannungssprung erst durch die Auswerteschaltung verursacht
> wird (Klemmdioden?).

Das allerdings halte ich doch für eher unwahrscheinlich. Die verwendete 
Auswerteschaltung war doch im Thread enthalten. Keine Dioden als reale 
Bauelemente drin. Kämen also höchstens noch die Substratdioden der 
AVR-Eingänge in Frage. Aber noch nicht bei den Spannungen, die sich aus 
dem Oszibildern ablesen lassen. Also: nein, nix Dioden-Einflüsse.

Ich würde mal sagen: die Tastatur ist schlicht und einfach defekt.

> Sonst müsste die Tastatur ihre Stromaufnahme zu
> Beginn der Datenübertragung um mehr als 3 mA senken, wofür ich in deren
> Schaltplan keinen Grund erkennen kann.

Ganz genau so ist das. Würde sie normal funktionieren, gäbe es diesen 
Puls nicht. Wahrscheinlich war sie deshalb so günstig bei ePay...

von Gregor N. (gregornash)


Lesenswert?

c-hater schrieb:
>> Sonst müsste die Tastatur ihre Stromaufnahme zu
>> Beginn der Datenübertragung um mehr als 3 mA senken, wofür ich in deren
>> Schaltplan keinen Grund erkennen kann.
>
> Ganz genau so ist das. Würde sie normal funktionieren, gäbe es diesen
> Puls nicht. Wahrscheinlich war sie deshalb so günstig bei ePay...

Von wegen günstig...5 Euro. Nicht bei eBay, sondern aus einem total 
verrückten Trödelladen, eine Halle mit unglaublich viel unsortiertem 
Kram.

Ok, ich gehe nun davon aus, dass sie kaputt ist und werde den kompletten 
Controller rauswerfen, durch einen ATmega328 ersetzen und mit V-USB die 
USB-Verbindung bauen.

Bis hierhin habe ich schon unglaublich viel gelernt und bin in mir 
vorher verschlossene Welten eingetreten. Herzlichen Dank soweit, ganz 
besonders an c-hater, Tim und Mario M. Jetzt habe ich hoffentlich 
niemanden vergessen.

von c-hater (Gast)


Lesenswert?

Gregor N. schrieb:

> Von wegen günstig...5 Euro.

Wenn ich diese utopischen 5 Euro dafür ausgegeben hätte, würde ich nicht 
eher ruhen, bis ich entweder ein Lösung dafür gefunden hätte, dieses 
halbkaputte Stück Hardware doch noch irgendwie sinnvoll benutzen zu 
können oder besser: bis ich es repariert hätte.

Das wäre für mich eine reine Frage der Ehre. Also völlig jenseits von 
Sinn und Verstand und wirtschaftlichen Erwägungen...

Zum Glück habe nicht ich es gekauft. ;o)

von Tim (Gast)


Angehängte Dateien:

Lesenswert?

Gregor N. schrieb:
> Bei den Dateien mit Kennzeichnung "precap" hängt das Scope vor dem
> Koppelkondensator (4.7µ), bei den anderen Dateien hinter dem
> Kondensator.
Ich hab jetzt nur die Daten vor dem Kondensator genommen.
Mit einem Pythonskript waren die schnell ins PWL-Format für LTSpice 
gewandelt (alles oben als Anhang).

In der Simulation bildet C1 mit R2||R3 einen Hochpass mit einer 
Grenzfrequenz von 3 Hz. Wenn C1 auf 47n reduziert wird, erhöht sich die 
Grenzfrequnz auf 300 Hz. Damit sieht das Signal für den Komparator doch 
schon ganz brauchbar aus...

Wegen dem defekten Chip würde ich mal im richtigen Forum nachfragen:
http://robotrontechnik.de/html/forum/thwb/index.php

von Axel S. (a-za-z0-9)


Angehängte Dateien:

Lesenswert?

Gregor N. schrieb:
> Ok, ich gehe nun davon aus, dass sie kaputt ist und werde den kompletten
> Controller rauswerfen

Das ist sehr unwahrscheinlich. Ein kaputter U807 würde schlicht gar 
nichts tun. Die Tastatur sendet ja aber. Alle anderen Bauteile in der 
Tastatur wären problemlos ersetzbar (falls defekt).

Mal ne verrückte Idee: man könnte eine IR-LED an den Ausgang des U807 
hängen (ok ich sags extra dazu: mit einem Treibertransistor natürlich) 
und die Tastatur so als IR-Fernbedienung betreiben. Ein TSOP34136 
(31236, 1836, ... einer für 36kHz halt) als IR-Empfänger. Und schon hat 
man saubere Impulse für einen µC.

Im Anhang die empfohlene Beschaltung des U807 als IR-Sender.


> durch einen ATmega328 ersetzen und mit V-USB die USB-Verbindung bauen.

Frevel. Das ist etwa so als würdest du einen handgepflegten Oldtimer 
kaufen und dann den Motor rauswerfen und durch einen aktuellen ersetzen.

: Bearbeitet durch User
von Mario M. (thelonging)


Lesenswert?

Axel S. schrieb:
> Ein kaputter U807 würde schlicht gar
> nichts tun.

Es ist zwar ein Digital-IC, aber zwischen funktionierend und kaputt gibt 
es trotzdem Abstufungen. Zum Beispiel:

Gregor N. schrieb:
> ein
> Pin des Controllers ist tot.


Axel S. schrieb:
> einer für 36kHz halt) als IR-Empfänger

Original sendet die Tastatur mit 31kHz und 5 Impulsen pro Burst, also 
müsste man einen passenden Empfänger nehmen oder  den Taktgeber umbauen. 
Außerdem brauchen die TSOP mindestens 6 Impulse. Ich weiß nicht, ob es 
IR-Empfänger gibt, die mit weniger funktionieren.

Axel S. schrieb:
> Frevel. Das ist etwa so als würdest du einen handgepflegten Oldtimer
> kaufen und dann den Motor rauswerfen und durch einen aktuellen ersetzen.

Andere würden es einen Hot Rod nennen. ;-)

von W.S. (Gast)


Lesenswert?

Axel S. schrieb:
> Frevel. Das ist etwa so als würdest du...

...naja, ganz so schlimm ist das auch nicht. Ich hatte vor lange Zeit 
mal eine IR-Fernbedienung auf ähnliche Weise umgebaut, nämlich für einen 
DVD-Player, dessen FB verloren war. Den ursprünglichen Chip raus, dafür 
einen PIC16F870 (oder so) rücklings reingeklebt, dann alles mit feinem 
CuL Draht verstrippt.

Aber so eine Tastatur zur IR-Tastatur umzubauen, halte ich für 
kontraproduktiv. Dann eher schon ein dreipoliges Kabel oder eben einen 
mechanisch kleinen µC zum Umsetzen auf USB hinein.

W.S.

von Mario M. (thelonging)


Lesenswert?

Mario M. schrieb:
> und 5 Impulsen pro Burst

Ups, falsches Datenblatt. Es sind doch 6 Impulse, dann passt es zu den 
TSOP.

von Gregor N. (gregornash)


Lesenswert?

Axel S. schrieb:

> Mal ne verrückte Idee: man könnte eine IR-LED an den Ausgang des U807
> hängen (ok ich sags extra dazu: mit einem Treibertransistor natürlich)
> und die Tastatur so als IR-Fernbedienung betreiben. Ein TSOP34136
> (31236, 1836, ... einer für 36kHz halt) als IR-Empfänger. Und schon hat
> man saubere Impulse für einen µC.
>
> Im Anhang die empfohlene Beschaltung des U807 als IR-Sender.

Könnte man da nicht auch einen Optokoppler mit Hysterese nehmen? Ich 
habe hier zum Beispiel einen H11L1M rumzuliegen.

Mario M. schrieb:
> Mario M. schrieb:
>> und 5 Impulsen pro Burst
>
> Ups, falsches Datenblatt. Es sind doch 6 Impulse, dann passt es zu den
> TSOP.

Es sind gemessen 5 Impulse mit eine Periode von 34μs bzw. 29,4 kHz, 
siehe oben der Output vom Oszilloskop: 
https://www.mikrocontroller.net/attachment/375029/DS1Z_QuickPrint6.png

Es scheint mir mit der IR-Idee dann doch etwas komplizierter zu werden.

: Bearbeitet durch User
von Mario M. (thelonging)


Lesenswert?

Gregor N. schrieb:
> Es sind gemessen 5 Impulse

Stimmt. Das scheint von der Beschaltung der Mode-Eingänge abhängig zu 
sein.

von Gregor N. (gregornash)


Angehängte Dateien:

Lesenswert?

Tim schrieb:
> Mit einem Pythonskript waren die schnell ins PWL-Format für LTSpice
> gewandelt (alles oben als Anhang).

Deine LTSpice-Datei hat mir den Weg in diese Richtung gewiesen, vielen 
Dank! Bis zur Umwandlung zu PWL bin ich sogar schon gekommen, allerdings 
mit Excel+Texteditor. Auch das Simulieren hatte ich hinbekommen. Beim 
nächsten Schritt habe ich dann gehangen...


> In der Simulation bildet C1 mit R2||R3 einen Hochpass mit einer
> Grenzfrequenz von 3 Hz. Wenn C1 auf 47n reduziert wird, erhöht sich die
> Grenzfrequnz auf 300 Hz. Damit sieht das Signal für den Komparator doch
> schon ganz brauchbar aus...
>

Perfekt! Ich habe gerade keinen 47nF parat gehabt und bin deshalb mit 
68nF eingestiegen, anbei das Bild vom Oszilloskop.

Rein theoretisch kann man doch die optimale Grenzfrequenz ausrechnen, 
oder? Wäre nicht eine Grenzfrequenz optimal, die nur die bursts mit um 
die 30kHz durchlässt bzw. unter Berücksichtigung des Sampling Theorems 
davon die Hälfte? Wenn ich es richtig verstanden habe, dann wären das 
für 15kHz ca. 1nF bei einem Spannungsteiler mit ca. 2 x 10kOhm.

Sind denn irgendwelche Nebenwirkungen zu erwarten?

Kann man diese Technik eigentlich verallgemeinern und unabhängig von der 
Spannung der ursprünglichen Schaltung einfach so mit einem beliebigen 
Kondensator einen Spannungsteiler an einen Mikrocontroller ankoppeln?

Fragen über Fragen.

von Axel S. (a-za-z0-9)


Lesenswert?

Gregor N. schrieb:
> Axel S. schrieb:
>
>> Mal ne verrückte Idee: man könnte eine IR-LED an den Ausgang des U807
>> hängen (ok ich sags extra dazu: mit einem Treibertransistor natürlich)
>> und die Tastatur so als IR-Fernbedienung betreiben. Ein TSOP34136
>> (31236, 1836, ... einer für 36kHz halt) als IR-Empfänger. Und schon hat
>> man saubere Impulse für einen µC.
>>
>> Im Anhang die empfohlene Beschaltung des U807 als IR-Sender.
>
> Könnte man da nicht auch einen Optokoppler mit Hysterese nehmen?

Nein. <seufz> sind da irgendwelche Kenntnisse vorhanden?

>> Ups, falsches Datenblatt. Es sind doch 6 Impulse, dann passt es zu den
>> TSOP.
>
> Es sind gemessen 5 Impulse mit eine Periode von 34μs bzw. 29,4 kHz
...
> Es scheint mir mit der IR-Idee dann doch etwas komplizierter zu werden.

Nicht wirklich. Es gibt auch TSOP's für 30kHz. Und so super trennscharf 
sind die ohnehin nicht. Die 36kHz gelten übrigens für 4MHz Taktfrequenz 
am U807. Genau sind es 4MHz/112. Wenn die Tastatur bei 30kHz Träger 
rauskommt, ist die Taktfrequenz offensichtlich niedriger.

Was der TSOP auf jeden Fall schon mal macht, ist den Träger zu 
entfernen. Außerdem kuriert er deine Unfähigkeit, die Impulse von der 
12V Schiene auszukoppeln. Zu der Zeit als diese Tastatur designed wurde, 
war man noch in der Lage, eine solche Auswerteschaltung aufzubauen. Im 
Gegenteil wäre damals der IR-Empfänger aufwendiger gewesen, weil es die 
integrierten Empfänger noch nicht gab. Tatsächlich ist die gewählte 
Schaltungsvariante nur der Nichtverfügbarkeit von Steckverbindern mit 
mehr als 2 Polen anzulasten. Denn schon ein simpler dreipoliger Stecker 
hätte es erlaubt, GND, Vcc und Signal separat zu führen.

von Tim (Gast)


Lesenswert?

Gregor N. schrieb:
> Sind denn irgendwelche Nebenwirkungen zu erwarten?
Eigentlich nicht. Je höher die Grenzfrequenz ist, desto runder werden 
die Flanken an den Spikes. Irgendwann werden die Spikes dann kleiner und 
dann reicht es irgendwann nicht mehr für den Komparator.

> Kann man diese Technik eigentlich verallgemeinern und unabhängig von der
> Spannung der ursprünglichen Schaltung einfach so mit einem beliebigen
> Kondensator einen Spannungsteiler an einen Mikrocontroller ankoppeln?
Warum nicht? Nur wenn die Werte die Grenzen der Kleinspannung 
überschreiten, würde ich mir doch ein paar mehr Gedanken machen.

von Gregor N. (gregornash)


Lesenswert?

Axel S. schrieb:
> Nein. <seufz> sind da irgendwelche Kenntnisse vorhanden?

> Außerdem kuriert er deine Unfähigkeit, die Impulse von der
> 12V Schiene auszukoppeln.

Tja, was soll ich sagen? Ich habe leider in diesen Bereichen kaum 
Kenntnisse, bin dafür aber umso wissbegieriger. Ich bin übrigens 
Sozialwissenschaftler.

von W.S. (Gast)


Lesenswert?

Gregor N. schrieb:
> Ich bin übrigens
> Sozialwissenschaftler.

Na und?
Guck dir mal den Rothammel an. Ist ein dickes Buch über Antennen. Der 
Autor war auch kein Diplomelektroniker, sondern Soldat, Landwirt, 
Gastwirt, Postler und so weiter.

W.S.

von Gregor N. (gregornash)


Angehängte Dateien:

Lesenswert?

Dup didup dup. Laeuft. Dies ist mein erster Beitrag mit KC85 Tastatur 
ueber USB.

Das beste an der Sache ist, dass es ohne StepUp Wandler geht, die 
Tastatur haengt direkt an den 5 Volt vom USB Port. Erstaunlich, dieses 
rauschige Signal mit gerade mal 200mV Hub reicht aus. Mit den Potis und 
einer Status LED kann man den Abstand prima einstellen.

Jetzt muss nur noch der U807 repariert werden. Dann ist es kein 
Oldtimer, kein Hot Rod, sondern ein Trabi am Abschleppseil.

von Gregor N. (gregornash)


Lesenswert?

Axel S. schrieb:
> Mal ne verrückte Idee: man könnte eine IR-LED an den Ausgang des U807
> hängen (ok ich sags extra dazu: mit einem Treibertransistor natürlich)
> und die Tastatur so als IR-Fernbedienung betreiben. Ein TSOP34136
> (31236, 1836, ... einer für 36kHz halt) als IR-Empfänger. Und schon hat
> man saubere Impulse für einen µC.
>
> Im Anhang die empfohlene Beschaltung des U807 als IR-Sender.

Danke für den Schaltplan, gutes Lernmaterial, ich habe wieder das eine 
und andere mitgenommen. Die Idee finde ich ganz famos - gehe jetzt aber 
erst einmal den angefangenen Weg weiter...der scheint ebenfalls zum Ziel 
zu führen.

von Axel S. (a-za-z0-9)


Lesenswert?

Gregor N. schrieb:
> Jetzt muss nur noch der U807 repariert werden. Dann ist es kein
> Oldtimer, kein Hot Rod, sondern ein Trabi am Abschleppseil.

Gregor N. schrieb:
> Vielleicht ist meine Tastatur ja auch kaputt. Ein paar Tasten
> gehen wie gesagt gar nicht, ein Pin des Controllers ist tot.

Kannst du dazu mehr sagen? Welcher Pin? Wie festgestellt? Achte auf 
kalte Lötstellen. Ebenfalls nicht auszuschließen ist eine weggegammelte 
Leiterbahn. Tastaturen sind typisch widrigen Umgebungsbedingungen 
ausgesetzt. Schon Handschweiß allein ist erstaunlich aggressiv, da muß 
noch nicht mal Cola in die Tastatur geflossen sein.

Falls es den U807 wirklich gerissen hat und du sonst keinen Ersatz 
findest, dann melde dich bei mir. Ich schaue dann mal in meinem Fundus.

von Gregor N. (gregornash)


Angehängte Dateien:

Lesenswert?

Mission erfuellt. Nachdem ich den U807 getauscht  hatte, ging es immer 
noch nicht. Letztlich hatte sich zwischen zwei Leiterbahnen unsichtbar 
leitender Dreck gebildet. Isopropanol und Freikratzen, alles auf 
Verdacht, waren die Loesung. Tada...ich kann nun aucc 0en und Qs 
schreiben und habe Cursortasten.

Das laeuft alles mit Minimalbeschaltung: wie oben, aber mit zwei 10k 
Potis und 68nF Koppelkondensator. Dahinter haengt ein Digispark USB 
Board mit ATtiny85.

Herzlichen Dank an alle fuer die grossartige Unterstuetzung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.