Forum: Platinen [Platinenentwurf] Custom Keyboard


von Sandro K. (sandro_k)


Angehängte Dateien:

Lesenswert?

Hallo alle,

ich bin ein großer Fan von Custom Keyboards, das sind Tastaturen die 
ganz an die eigenen Bedürfnisse anpassbar sind. Bekannte Beispiele sind 
z.B. das Planck Keyboard [1] oder das ErgoDox [2]. Nun wollte ich mein 
eigenes Keyboard entwerfen. Eine Mischung aus den beiden oben genannten 
Tastaturen, eine Zeile mehr als das Planck und ebenso geteilt wie das 
ErgoDox.

Als erstes gilt es, eine Platine zu entwerfen um auf dieser Basis ein 
Gehäuse entwerfen zu können. Zum Einsatz kommt je Seite ein ATmega32U4, 
angeschlossen wird es über Mini-USB an der linken Hälfte. Die beiden 
Hälften werden mit einem TRS-Kabel verbunden.

Um Geld zu sparen, soll die Platine sowohl rechts als auch links 
verwendet werden können. Da ich kaum Erfahrung habe im entwerfen von 
Platinen, möchte ich hier meinen Entwurf vorstellen und darum bitten, 
dass sich jemand versiertes den Entwurf ansieht und mir ggf. Feedback 
gibt.

Gruß

[1] http://olkb.com/planck/
[2] https://deskthority.net/wiki/ErgoDox

von nop (Gast)


Lesenswert?

* ERC und DRC drüber laufen lassen ? check mal was deine fab kann
* abblockkondensatoren bei jedem vcc pin vom micro, schau im wiki nach 
den empfehlungen
* usb lines mit matched lengh normalerweise, kann schnell 
impedanzprobleme geben, vlt hat atmel da eine appnote? wenns geht machs 
ohne vias
* mehr abstand mit den leiterbahnen zum platinenrand (oben) falls nicht 
unbedingt nötig
* dickere leitungen für die usb power lines, kostet nix und vermeidet 
unnötigen spannungsabfall, kann aufgrund des niedrigen stromkonsums aber 
auch wegfallen
* uC auf bottom layer könnte etwas platz bringen
* jtag/isp header wirst du auch noch brauchen
* ne kleine polyfuse nach dem usb connector schadet nicht

wie gesagt, usb geschichte ist bissl heikel. schau mal hier: 
http://www.atmel.com/images/doc7633.pdf, 
http://www.atmel.com/images/doc8388.pdf, ti hat auch was gutes: 
http://www.ti.com/lit/an/spraar7e/spraar7e.pdf
Möglichst wenig herum basteln hier, am besten ein referenzdesign 
übernehmen.

Ansonsten noch ein + für kiCAD ;)

und lad bessere fotos bitte hoch, oder gleich das kicad projekt

von MiWi (Gast)


Lesenswert?

Sandro K. schrieb:
> Da ich kaum Erfahrung habe im entwerfen von
> Platinen, möchte ich hier meinen Entwurf vorstellen und darum bitten,
> dass sich jemand versiertes den Entwurf ansieht und mir ggf. Feedback
> gibt.
>
> Gruß
>
> [1] http://olkb.com/planck/
> [2] https://deskthority.net/wiki/ErgoDox

der Atmel hätte noch gerne Stützkondensatoren direkt an Vcc/GND, ein 
etwas größerer Elko (100u) schütz vor langen Leitungen und die 
Dataleitung hätte gerne einen ESD-Schutz, ebenso wie die USB-Leitungen.

wenn Du dann noch die beiden Masseflächen oben und unten noch ausreichen 
häufig (alle 2-3cm) mit Vias verbindest sollte das schon so ungefähr 
passen.

Manche Leitungen sind naja... komisch verlegt, die grüne links oben 
macht einiges an Schlenkereien, die so nicht nötig sind. Der Funktion 
wird das aber nicht schaden...


MiWi

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wieso hast du deine Matrix denn so kreuz und quer an die Ports 
angeschlossen? Das ist ja fast nur noch mit Tabelle ordentlich 
abzufragen und recht fehlerträchtig. Zumal du PortD & PortB eigentlich 
komplett frei hast.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Es gibt sicher noch weitere tastaturspezifische IC's, was mir jedoch 
sofort einfällt ist eine Chipfamilie [1] recht umfangreicher Tastatur 
IC's.

[1] http://www.codemercs.com/de/tastatur

von Sandro K. (sandro_k)


Lesenswert?

nop schrieb:
> * ERC und DRC drüber laufen lassen ? check mal was deine fab kann
Muss ich googlen was das ist/wie es geht. ^^

> * abblockkondensatoren bei jedem vcc pin vom micro, schau im wiki nach
> den empfehlungen
Mir wurde gesagt, dass ein Kondensator genüge. Ich kann natürlich noch 
welche hinzufügen.

> * usb lines mit matched lengh normalerweise, kann schnell
> impedanzprobleme geben, vlt hat atmel da eine appnote? wenns geht machs
> ohne vias
Matched lenght = alle Leitungen gleich lang?

> * dickere leitungen für die usb power lines, kostet nix und vermeidet
> unnötigen spannungsabfall, kann aufgrund des niedrigen stromkonsums aber
> auch wegfallen
Das hatte ich auch schon versucht, minimal dicker und ich kann die 
Leitung nicht mehr am Mikrocontrollen anbringen, da meckert KiCAD

> * uC auf bottom layer könnte etwas platz bringen
Darauf wird es wohl hinaus laufen wenn noch mehr angebracht werden muss.

> * jtag/isp header wirst du auch noch brauchen
Das hatte ich befürchtet, da weiß ich leider nicht wie man das im 
Schematic unterbringt. Google hat mir nicht wirklich geholfen, da ich 
nicht weiß nach was ich suchen muss. :/

> * ne kleine polyfuse nach dem usb connector schadet nicht
Polyfuse, gleich mal googeln... :D

> Ansonsten noch ein + für kiCAD ;)
+1 :D

> und lad bessere fotos bitte hoch, oder gleich das kicad projekt
hab was besseres:
https://github.com/layornos/split_planck

Danke schon mal für die Tipps, ich werde versuchen sie umzusetzen und 
über meinen Fortschritt hier im Thread berichten.

@MiWi
Gibt es eine gute, Anfänger-Freundliche, Beschreibung wie man einen ESD 
Schutz realisiert?

@Matthias Sch.
Ich hatte versucht, die Leitungen an die passende Seite zu legen, um 
unnötiges verlegen zu vermeiden.

@Joe G.
Bestimmt, nur gibt es für diesen uC bereits eine Software [1]

[1] https://github.com/tmk/tmk_keyboard

von Sandro K. (sandro_k)


Angehängte Dateien:

Lesenswert?

Ich habe die meisten Änderungen vorgenommen, nur der ESD Schutz und 
Polyfuse fehlen. Die Änderungen sind im Repo und hier angehängt.

von Sandro K. (sandro_k)


Angehängte Dateien:

Lesenswert?

Ich habe die Platine um Vias erweitert. Erst habe ich versucht die Vias 
wie in [1] beschrieben zu erstellen. Aber die Zuweisung des Netzes wird 
mit der Meldung "Unknown netname, netname not changed" abgebrochen. Also 
habe ich eine pro Via eine Leitung begonnen und diese durchkontaktiert. 
Ich bin mir nicht sicher ob man das so machen kann, aber die Platine 
sieht nicht so verkehrt aus.

[1] https://forum.kicad.info/t/stitching-ground-planes-with-vias/1177/3

von Nils S. (kruemeltee) (Gast)


Lesenswert?

Sandro K. schrieb:
> TRS-Kabel

Kurzschluss beim Einstecken.

von Sandro K. (sandro_k)


Lesenswert?

Nils S. (kruemeltee) schrieb:
> Sandro K. schrieb:
>> TRS-Kabel
>
> Kurzschluss beim Einstecken.

Was bewirkt den Kurzschluss? VDD und GND sind je nach Seite vertauscht?

Ließe sich das ggf. über Jumper lösen?

: Bearbeitet durch User
von someone (Gast)


Lesenswert?

Sandro, deine Begeisterung für das Thema ist löblich. Lasse dich also 
nicht entmutigen!
Es scheint mir aber, dass dir wichtige Grundkenntnisse fehlen. Das macht 
es natürlich sehr schwierig, dir sinnvoll weiterzuhelfen. Vielleicht 
willst Du hier kurz schreiben, was du elektronik-mäßig bereits weißt, 
damit wir deine Wissenslücken gezielt beheben können.


Anmerkungen:
(1) Warum ein JTAG-Header? Hast Du entsprechende Hardware dafür?
(2) Wo ist dein Quarz? Du kannst das ganze Layout um den Microcontroller 
nochmal aufreißen und den Quarz vernünftig anbinden, dessen Layout ist 
KRITISCH! Für USB-Kommunikation sowieso.
(3) ESD-Schutz: Es gibt Schaltungen für USB-ESD-Schutz. Üblicherweise 
sind das entsprechend ausgelegte Z-Dioden an (VCC und) GND. Such mal im 
Internet danach und schaue, wo du die entsprechenden Bauteile 
herkriegst.
(4) TRS zum Verbinden beider Teile ist eine ausgesprochen schlechte 
Idee. Besser: RJ45, RJ11, Mini-DIN.

von Sandro K. (sandro_k)


Lesenswert?

someone schrieb:
> Sandro, deine Begeisterung für das Thema ist löblich. Lasse dich also
> nicht entmutigen!
> Es scheint mir aber, dass dir wichtige Grundkenntnisse fehlen. Das macht
> es natürlich sehr schwierig, dir sinnvoll weiterzuhelfen. Vielleicht
> willst Du hier kurz schreiben, was du elektronik-mäßig bereits weißt,
> damit wir deine Wissenslücken gezielt beheben können.
Vor vielen Jahren im Grundstudium ein Semester Digitaltechnik, das wars. 
?  Wenig Erfahrung mit uCs und FPGAs.

> Anmerkungen:
> (1) Warum ein JTAG-Header? Hast Du entsprechende Hardware dafür?
Einen Programmer hätte ich, der Header wurde mir hier im Thread 
empfohlen. Ich hatte gehofft den uC per USB programmieren zu können, wie 
bei den Tastaturen Planck und ErgoDox. Wobei beim ErgoDox ein Teensy 2 
verwendet wird.

> (2) Wo ist dein Quarz? Du kannst das ganze Layout um den Microcontroller
> nochmal aufreißen und den Quarz vernünftig anbinden, dessen Layout ist
> KRITISCH! Für USB-Kommunikation sowieso.
Er befindet sich auf der Rückseite, dachte das wäre noch i.O. da die 
Verbindung sehr kurz ist.


> (3) ESD-Schutz: Es gibt Schaltungen für USB-ESD-Schutz. Üblicherweise
> sind das entsprechend ausgelegte Z-Dioden an (VCC und) GND. Such mal im
> Internet danach und schaue, wo du die entsprechenden Bauteile
> herkriegst.
Werd ich machen.


> (4) TRS zum Verbinden beider Teile ist eine ausgesprochen schlechte
> Idee. Besser: RJ45, RJ11, Mini-DIN.
TRS bzw TRRS wird beim ErgoDox verwendet, bisher hatte ich keine 
Probleme damit. RJ45 und MiniDIN sind zu groß und hat RJ11 nicht zu 
wenig Leitungen, wäre RJ14 nicht passender?


Danke für Dein Feedback.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wie gut bist du denn im Programmieren? Ich frage deswegen, weil deine 
Matrix zwar jetzt etwas aufgeräumter ist, sich aber immer noch 
unnötigerweise über 3 Ports erstreckt und spassig in der Behandlung 
wird.
Organisier das am besten so, das du Columns auf einem Port hast und Rows 
auf einem zweiten. Alle anderen Ports kannst du dann für LED oder 
Modifier nehmen. Ein/zwei Jumper zum Auswählen eines alternativen 
Layouts wären auch nicht schlecht.

von Sandro K. (sandro_k)


Lesenswert?

Bin Informatiker, daher würde ich mal behaupten meine 
Programmierkenntnisse sind ausreichend. Die Firmware die ich einsetzen 
werde sieht genau solch einen Aufbau der Matrix vor. Viel zu 
programmieren gibt es da nicht, nur Pins anpassen und die Layouts 
festlegen.

Das Layout über Jumper wechseln ist doch arg umständlich, das geht 
problemlos Softwareseitig.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sandro K. schrieb:
> Das Layout über Jumper wechseln ist doch arg umständlich, das geht
> problemlos Softwareseitig.

Ja, aber dazu musst du ja die Tastatur an einem Rechner mit dem 
richtigen Upload Programm haben - universell ist das nicht. Und Platz im 
MC für eine 2te Tabelle musst du nicht sparen, da gibts kein Geld 
zurück.

> Die Firmware die ich einsetzen
> werde sieht genau solch einen Aufbau der Matrix vor. Viel zu
> programmieren gibt es da nicht, nur Pins anpassen und die Layouts
> festlegen.

Achso, du machst nur Copy&Paste. Dann viel Spass.

: Bearbeitet durch User
von Sandro K. (sandro_k)


Lesenswert?

What... wozu denn einen Rechner mit "Upload Software" nur um das Layout 
zu ändern. Einfach eine Funktion definieren die das macht und auf eine 
Taste mappen und gut is. Die Firmware erlaubt es bis zu 32 Layer pro 
Layout zu verwenden, 1 - n Tasten können also belegt werden um das 
Layout zu ändern.

Ja Copy&Paste. Ich für meinen Teil weiß sinnvolleres mit meiner Zeit 
anzufangen als jedes mal das Rad neu zu erfinden. [1]

[1] https://de.wikipedia.org/wiki/Zwerge_auf_den_Schultern_von_Riesen

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sandro K. schrieb:
> Ja Copy&Paste. Ich für meinen Teil weiß sinnvolleres mit meiner Zeit
> anzufangen als jedes mal das Rad neu zu erfinden.

Hehehe, deswegen baust du jetzt eine Tastatur? Der war nicht schlecht 
:-P

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Matthias S. schrieb:
> Sandro K. schrieb:
>> Das Layout über Jumper wechseln ist doch arg umständlich, das geht
>> problemlos Softwareseitig.
>
> Ja, aber dazu musst du ja die Tastatur an einem Rechner mit dem
> richtigen Upload Programm haben - universell ist das nicht. Und Platz im
> MC für eine 2te Tabelle musst du nicht sparen, da gibts kein Geld
> zurück.

Der Zielrechner muß ja einen USB Host haben, also wirds eher kein 
Mikrocontroller sein.

von Sandro K. (sandro_k)


Lesenswert?

Eine geteilte, ortholineare Tastatur mit einer 5x6 Matix habe ich so 
leider nicht gefunden, daher muss ich sie selber machen. Und, dass ist 
ganz entscheidend, wie du vielleicht schon gemerkt hast bin ich ein 
Etechnik Noob, dh. ich kann dabei noch sehr viel lernen. Allein die 
Tipps die ich bisher bekommen habe, haben schon viel geholfen.

Programmieren muss ich schon bei der Arbeit, da mach ich in meiner 
Freizeit lieber was anderes. :D

: Bearbeitet durch User
von Sandro K. (sandro_k)


Lesenswert?

Die RJ11 Verbindung hätte mir gefallen, aber durch die nicht symetrische 
Anordnung der Pins lässt sich die Buchse nicht beidseitig verwenden. 
Also entweder ich muss zwei Platinen machen (doppelt so teuer) oder nach 
einer anderen Lösung suchen.

von someone (Gast)


Lesenswert?

Ich wollt ja eigentlich nicht mehr helfen, weil ich denke, dass du nun 
allein zurechtkommen solltest, aber bei den Leuten hier 
...................... was soll's. Leider kann man hier keine Antworten 
mehr erwarten, die sinnvoll sind, sondern nur die wohlüberlegte Planung 
prinzipiell infrage stellen; wenn man es dann erklärt, warum man 
bestimmte Dinge so macht, dann gibt's abschätzige Kommentare.


ESD-Schutz ist an den externen Leitungen wichtig. USB ist ein heißer 
Kandidat, aber insbesondere die Verbindungsleitung zwischen deinen 
beiden Hälften. Kann man auch weglassen, wenn die Beschaffung der 
Bauteile zu viel Aufwand darstellt, die Tastatur ist dann aber halt 
anfälliger.

Das Problem bei TRS bzw. TRRS ist, daß beim Ein- und Ausstecken die 
Leiter kurzgeschlossen werden. Damit muß deine Schaltung zurechtkommen. 
Beim TRRS willst du wahrscheinlich die Versorgungsspannung, Hin- und 
Rückkanal für Daten, und Ground verwenden. Beim Einstecken des Kabels 
wird dann potentiell alles mit allem verbunden, gegebenenfalls auch ohne 
Ground-Referenz. Das ist ein ziemlich schrottiges Design und eigentlich 
nur für Dinge gut, die sehr robust sind; Microcontroller sind das nicht. 
Kann man machen, sofern sichergestellt ist, daß nur im stromlosen 
Zustand gesteckt wird.
Bessere Buchsen hierfür wären wie bereits erwähnt RJ11, RJ45, aber auch 
USB oder Firewire. Das Problem bei der Verwendung "üblicher" Buchsen ist 
halt immer, dass niemand auf die Idee kommen sollte, in deine 
Datenübertragungs-USB-Buchse einen USB-Stick zu stecken, der wird das 
nämlich ggf. nicht überleben. ;)
Bei der Auswahl einer zuverlässigen Steckverbindung für hot-plugging 
solltest du darauf achten, dass GND zuerst kontaktiert wird, dann die 
Versorgungsspannung, und dann die Datenleitungen. Ist bei USB übrigens 
der Fall.

Dein Quarz-Layout ist schlecht zu erkennen. Vielleicht hast du ja Lust, 
das nochmal größer zu posten, damit man sieht, wie du das umgesetzt 
hast. Ich vermute, dass das so nicht unbedingt geht. Für USB sollte man 
eine gute Taktreferenz haben. Du kannst es natürlich versuchen, 
vielleicht funktioniert's dann auch, aber es ist besser, wenn du das 
gleich so gut wie möglich umsetzt.

Per USB kannst du den Controller erstmal nicht programmieren, du 
brauchst einen Programmer. Gegebenenfalls lässt sich später ein 
USB-Bootloader installieren, aber dafür brauchst du ebenfalls einen 
Programmer. Kommt dein vorhandener Programmer mit dem JTAG-Header 
zurecht? Du solltest nicht blind den Empfehlungen anderer Leute folgen, 
wenn du nicht verstehst, was sie bedeuten. Meinen natürlich ebensowenig.

von Sandro K. (sandro_k)


Angehängte Dateien:

Lesenswert?

Als ESD Schutz habe ich den USBLC6-2P6 genommen, die Beschaffung war 
kein Problem. Als Verbindungsport hatte ich vor, ggf. Micro-USB zu 
verwenden. Mini-USB wäre prinzipiell auch möglich, aber da ist die 
Verwechslungsgefahr mit der PC-Verbindung zu hoch. Auch wenn nur ich die 
Tastatur verwenden sollte, sicher ist sicher.

Wie sich das anhört scheint USB generell eine gute Wahl zu sein. Auch 
bei einer kommerziellen Version des ErgoDox wird USB anstatt TRRS 
verwendet.

Mein Programmer kommt mit einen JTAG Header klar. Der Grund warum ich 
den Header angebracht habe ist, dass es zwar den von mir vorgesehenen 
ATmega mit vorinstalliertem Bootloader gibt, der aber zum Einen teurer 
ist und zum Anderen habe ich von der Version ohne Bootloader noch zwei 
hier herum fliegen.

Anbei die aktuellste Version der Platine. Bei dieser Iteration habe ich 
mit dem RJ11 Anschluss experimentiert. Außerdem habe ich den Quarz 
verschoben und auf die selbe Seite wie den uC gebracht.

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.