mikrocontroller.net

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


Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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 Moderator
Autor: Mario M. (thelonging)
Datum:

Bewertung
2 lesenswert
nicht 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?

Autor: malsehen (Gast)
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Rot ist blau und plus ist minus!
Einfach zusammenknubbeln und fertig.

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

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joe G. (feinmechaniker) Benutzerseite
Datum:

Bewertung
5 lesenswert
nicht 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
Autor: Sempfdazugeber (Gast)
Datum:

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

Autor: W.S. (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
3 lesenswert
nicht 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...

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: R. M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Mike B. (Firma: Buchhaltung+Controlling) (mike_b97) Benutzerseite
Datum:

Bewertung
3 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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:
+12V                             +5V
o----              -------*------o
     |            |       |
     |            |       -
     -            -      | |22k
    | | 270      | |22k  | |
    | |          | |      -
     -            -       |      AIN0
     |            |       *------o
     |    | ||    |       |      AIN1
o----*----| ||----*--------------o
          | ||    |       |
TAS       4.7µ    -       -
                 | |22k  | |18k  GND
o----            | |     | |   --o
     |            -       -   |
     |            |       |   |
    ---          ---     --- ---

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Icke ®. (49636b65)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Holm T. (holm)
Datum:

Bewertung
1 lesenswert
nicht 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

Autor: Al.Kn. (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
c-hater schrieb:

> Die Originalschaltung brauchst du dafür bloß minimal abwandeln. Etwa so:
>
>
> +12V                             +5V
> o----              -------*------o
>      |            |       |
>      |            |       -
>      -            -      | |22k
>     | | 270      | |22k  | |
>     | |          | |      -
>      -            -       |      AIN0
>      |            |       *------o
>      |    | ||    |       |      AIN1
> o----*----| ||----*--------------o
>           | ||    |       |
> TAS       4.7µ    -       -
>                  | |22k  | |18k  GND
> o----            | |     | |   --o
>      |            -       -   |
>      |            |       |   |
>     ---          ---     --- ---
> 


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
Autor: Al.Kn. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: pegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/show...

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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:
7552 7552 7552 7552 5396 5396 7552 19444
628 60648 316 216 216 216 224 208 
216 216 216 216 216 216 216 240 
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:
7548 7552 5392 5392 5392 7548 19564
320 216 60380
312 220 220 212 216 216 216 216 
216 220 216 216 236 244 216 220 
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:
     7544 7548 5392 5388 5392 7548 15092
7548 7548 7544 5392 5392 5388 7544 15096
7548 7544 7548 5392 5388 5392 7544 15096
7548 7544 7548 5388 5392 5388 7548 15096
7544 7544 7548 5392 5388 5392 7548 15092
7548 7544 7548 22892
320 68412
296 216 216 216 224 208 220 216 
216 216 216 216 220 252 236 204 
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.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
>
>
> 7552 7552 7552 7552 5396 5396 7552 19444
> 628 60648 316 216 216 216 224 208
> 216 216 216 216 216 216 216 240
> 248 228 220 216 216 224 208
> 

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...

Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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?
/*

  KC85 Keyboard

 */

// Times
#define TIME_MINIMUM 1000
#define TIME_ZERO 4500          //tD0 = 5  tu  = 5,12 ms  Pulsabstand für lohgische Null
#define TIME_ONE 6500           //tD1 = 7  tu  = 7,168 ms Pulsabstand für lohgische Eins
#define TIME_WORD 13500         //tDW = 14 tu  = 14,336 ms Wortabstand
#define TIME_DOUBLEWORD 18500   //tDS = 13 tu  = 19,456 ms Doppelwortabstand
#define TIME_MAXIMUM 70000


// Char mappings
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", "", ""};
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", ""};

// States
volatile boolean triggered;
volatile boolean rising;
volatile byte acsr_value;

boolean key_hold = false;
boolean key_pressed = false;

unsigned long last_charout = 0;

unsigned long last_time = 0;
unsigned long current_time= 0;
unsigned long signal_time= 0;
unsigned long signal_count = 0;

// Buffer
byte keybuffer = 0;
byte keylast = 0;

//ISR routine
ISR (ANALOG_COMP_vect) {
  // Ignore the interrupt if we haven't reported the last one yet (debounce)
  if (triggered) 
    return;           
    
  cli();
  acsr_value = ACSR;
  rising = (acsr_value & bit(ACO)) > 0;
  triggered = true;
  sei();
}

void setup() {
  Serial.begin (115200);
  Serial.println ("Started.");

  ADCSRB = ADCSRB & ! bit(ACME);   // disable Analog Comparator Multiplexer Enable
  ACSR =  bit(ACI)                 // clear Analog Comparator Interrupt Flag
        | bit(ACIE)                // set Analog Comparator Interrupt Enable
        | bit(ACIS1) | bit(ACIS0)  // select rising edge: ACIS1/ACIS0 Analog Comparator Interrupt Mode Select
        ;
}

void loop() {
  if (triggered)
    read_signal();
    
  if (key_pressed | key_hold) {
      showKeyNumber();    
  }  
  
  key_pressed = false;
  key_hold = false;  
  triggered = false;     
}


void read_signal() {
    static byte blockcount = 0;
  
    current_time = micros();
    signal_time = current_time - last_time;

    // Frequenzen ausfiltern
    if ((signal_time < TIME_MINIMUM)) {
      return false;
    }  else {
      last_time = current_time;  
    }
    
    if (signal_time > TIME_MAXIMUM)
      Serial.println("\n\n----------\n");

    if ((signal_time < TIME_ZERO)) {
      resetBuffer();
      Serial.print(signal_time);
    }  

    else if ((signal_time > TIME_MAXIMUM)) {
      resetBuffer();
      Serial.print(signal_time);
      blockcount = 8;
    }  
    
    else if ((signal_time > TIME_DOUBLEWORD) ) {      
      key_pressed = ( signal_count == 7);
      finishBuffer();

      Serial.print(signal_time);
      Serial.print(" [D] ");
      blockcount = 8;
    }  
    else if ((signal_time > TIME_WORD) ) {
      key_hold = (signal_count == 7);
      finishBuffer();

      Serial.print(signal_time);
      Serial.print(" [W] ");
      blockcount = 8;        
    }
    else if (signal_time > TIME_ONE) {
      addBuffer(1);

      Serial.print(signal_time);
      Serial.print(" [1] ");        
    }  
    else if (signal_time > TIME_ZERO) {      
      addBuffer(0);

      Serial.print(signal_time);
      Serial.print(" [0] ");
      
    }  else {
        Serial.print(signal_time);
    }

      blockcount+= 1;
      if (blockcount >= 8) {
        Serial.println();
        blockcount = 0;
      } else {
        Serial.print(" ");
      }    

}

void addBuffer(byte state) {
  keybuffer = keybuffer >> 1;           //Platz machen für neues Bit
  keybuffer = keybuffer | (state << 6); //Neues Bit an Position 7 setzen
  signal_count += 1;
}

void finishBuffer() {
  //Startbit invertieren und nach vorne schieben 
  byte startbit = ~(keybuffer & 1) << 7;
  keylast = (keybuffer >> 1) | startbit;
  
  resetBuffer();
}

void resetBuffer() {
  signal_count = 0;
  keybuffer = 0;
}


// Output decimal number
void showKeyNumber() {
  if (key_pressed)
    Serial.print("PRESSED ");
  if (key_hold)
    Serial.print("HOLD ");    
    
  Serial.print (keylast);
  
  Serial.print (" ");
  showKeyChar();
  Serial.println();
}


// Output char
void showKeyChar() {
  static unsigned long time_char_current = 0;
  static unsigned long time_char_last = 0;
 
  static char* keychar;

  //Startbit == 1
  if (keylast >> 7 == 1)
      keychar = keychars_bit1[keylast & ~(1<<7) ];
   
   //Startbit == 0   
   else  
     keychar = keychars_bit0[keylast & ~(1<<7) ];  

  //Debouncing
  time_char_current = millis();
  if ((time_char_current - time_char_last) > 80) {
    Serial.print(keychar);
    time_char_last = time_char_current;
  }
}




Autor: michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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:
/*

  KC85 Keyboard

 */

// Times
#define TIME_MINIMUM 1000
#define TIME_ZERO 4500          //tD0 = 5  tu  = 5,12 ms  Pulsabstand für lohgische Null
#define TIME_ONE 6500           //tD1 = 7  tu  = 7,168 ms Pulsabstand für lohgische Eins
#define TIME_WORD 13500         //tDW = 14 tu  = 14,336 ms Wortabstand
#define TIME_DOUBLEWORD 18500   //tDS = 13 tu  = 19,456 ms Doppelwortabstand
#define TIME_MAXIMUM 70000


// States
volatile boolean triggered;

boolean key_hold = false;
boolean key_pressed = false;

unsigned long last_time = 0;
unsigned long current_time= 0;
unsigned long signal_time= 0;
unsigned long signal_count = 0;

// Buffer
byte keybuffer = 0;
byte keylast = 0;

//ISR routine
ISR (ANALOG_COMP_vect) {
  cli();
  triggered = true;
  sei();
}

void setup() {
  Serial.begin (115200);
  Serial.println ("Started.");

  ADCSRB = ADCSRB & ! bit(ACME);   // disable Analog Comparator Multiplexer Enable
  ACSR =  bit(ACI)                 // clear Analog Comparator Interrupt Flag
        | bit(ACIE)                // set Analog Comparator Interrupt Enable
        | bit(ACIS1) | bit(ACIS0)  // select rising edge: ACIS1/ACIS0 Analog Comparator Interrupt Mode Select
        ;
}

void loop() {
  if (triggered)
    read_signal();
    
  if (key_pressed | key_hold) 
      showKeyNumber();    
  
  key_pressed = false;
  key_hold = false;  
  triggered = false;     
}


void read_signal() {
    current_time = micros();
    signal_time = current_time - last_time;

    // Frequenzen ausfiltern
    if ((signal_time < TIME_MINIMUM)) 
      return false;
    else 
      last_time = current_time;  

    if ((signal_time < TIME_ZERO) | (signal_time > TIME_MAXIMUM)) 
      resetBuffer();
          
    else if ((signal_time > TIME_DOUBLEWORD) ) {      
      key_pressed = ( signal_count == 7);
      finishBuffer();
    }  
    else if ((signal_time > TIME_WORD) ) {
      key_hold = (signal_count == 7);
      finishBuffer();        
    }
    else if (signal_time > TIME_ONE) 
      addBuffer(1);
 
    else if (signal_time > TIME_ZERO)    
      addBuffer(0);      
}

void addBuffer(byte state) {
  keybuffer = keybuffer >> 1;           //Platz machen für neues Bit
  keybuffer = keybuffer | (state << 6); //Neues Bit an Position 7 setzen
  signal_count += 1;
}

void finishBuffer() {
  //Startbit invertieren und nach vorne schieben 
  byte startbit = ~(keybuffer & 1) << 7;
  keylast = (keybuffer >> 1) | startbit;
  
  resetBuffer();
}

void resetBuffer() {
  signal_count = 0;
  keybuffer = 0;
}


// Output decimal number
void showKeyNumber() {
  if (key_pressed)
    Serial.print("PRESSED ");
  if (key_hold)
    Serial.print("HOLD ");    
    
  Serial.println (keylast);
}


Autor: michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sagt eigentlich der Assembler-Code des KC-85?

Autor: michael_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Gregor N. (gregornash)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Tim (Gast)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: --- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du bist also zu doof, mit einem einfachen Komparator die Impulse da 
herausfischen.

Und ohne Fremderleuchtung wird das mit USB wohl auch nix.

Autor: Mario M. (thelonging)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Tim (Gast)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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

Autor: Axel S. (a-za-z0-9)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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
Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario M. schrieb:
> und 5 Impulsen pro Burst

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

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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/...

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

: Bearbeitet durch User
Autor: Mario M. (thelonging)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gregor N. schrieb:
> Es sind gemessen 5 Impulse

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

Autor: Gregor N. (gregornash)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor N. (gregornash)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.