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
* 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
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
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.
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
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
Ich habe die meisten Änderungen vorgenommen, nur der ESD Schutz und Polyfuse fehlen. Die Änderungen sind im Repo und hier angehängt.
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
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
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.
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
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.
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.
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
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
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
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.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.