I think there's no need to decide for a single program for all of us, unless we want to actually buy some licenses.
Because I'm totally into KiCad, I can share the libraries I've already made (I just need to clean up the mess) - especially cherry switches, stabilizers, etc. and we can try to put together a geekhack component repository for KiCad.
Because I'm totally into KiCad, I can share the libraries I've already made (I just need to clean up the mess) - especially cherry switches, stabilizers, etc. and we can try to put together a geekhack component repository for KiCad.
I am surprised regack hasn't posted here thus far.MOZ, you guys are working in kicad, correct?
regack and I have been working on a couple of PCB designs, not just software end but hardware as well to develop and open-source keyboard controller, which could be directly plugged into any keyboard PCB with a specific connector, this would allow you to reuse your controller for newer projects and also as a replacement for the Teensy for DIY keyboards. The current footprint is about 60% of the Teensy so it can be mounted between keys as well.
Besides this we are working on a multi USB-head breakout board to convert any non-detachable keyboard to a detachable one.
Did I mention the "usb-hub" style board to allow multiple keyboard PCBs to be connected to one board and thus only utilise only one USB port and house all the PCBs into one board, thus allowing for a modular keyboard.
I am surprised regack hasn't posted here thus far.MOZ, you guys are working in kicad, correct?
regack and I have been working on a couple of PCB designs, not just software end but hardware as well to develop and open-source keyboard controller, which could be directly plugged into any keyboard PCB with a specific connector, this would allow you to reuse your controller for newer projects and also as a replacement for the Teensy for DIY keyboards. The current footprint is about 60% of the Teensy so it can be mounted between keys as well.
Besides this we are working on a multi USB-head breakout board to convert any non-detachable keyboard to a detachable one.
Did I mention the "usb-hub" style board to allow multiple keyboard PCBs to be connected to one board and thus only utilise only one USB port and house all the PCBs into one board, thus allowing for a modular keyboard.
if everyone posting in this thread works in kicad, then frankly i think it's decided ;)
Can anyone describe a set of rules to create a proper set of pads for a solder bridge?
For your list at the top of this thread: PTH = Plated Through HoleThanks, added.
How long does it take a newbie to design a 60% size PCB?
regack made a nice tutorial, it is up on his github: https://github.com/regack/depot/raw/master/basics/Kicad_Basics.pdf
He is a sneaky bastard :P
My components and modules library is pretty much done as well, so I will post that later today as well.
regack made a nice tutorial, it is up on his github: https://github.com/regack/depot/raw/master/basics/Kicad_Basics.pdf
He is a sneaky bastard :P
My components and modules library is pretty much done as well, so I will post that later today as well.
Well I clicked on the link and all I got was a gray screen with a light gray oval in the middle.
regack made a nice tutorial, it is up on his github: https://github.com/regack/depot/raw/master/basics/Kicad_Basics.pdf
He is a sneaky bastard :P
My components and modules library is pretty much done as well, so I will post that later today as well.
Well I clicked on the link and all I got was a gray screen with a light gray oval in the middle.
same here. I even tried right clicking and save as, but then the pdf I downloaded was corrupt.
Here: https://github.com/regack/depot
You'll have to download the zip
Here: https://github.com/regack/depot
You'll have to download the zip
MOZ, you are the man. I didn't realize you could do that. I am a self-professed github noob though. Thanks.
Here: https://github.com/regack/depot
You'll have to download the zip
MOZ, you are the man. I didn't realize you could do that. I am a self-professed github noob though. Thanks.
Yeah, I am still trying to figure out how to download this zip file that I may not even be seeing.
Here: https://github.com/regack/depot
You'll have to download the zip
MOZ, you are the man. I didn't realize you could do that. I am a self-professed github noob though. Thanks.
Yeah, I am still trying to figure out how to download this zip file that I may not even be seeing.
Here: https://github.com/regack/depot
You'll have to download the zip
MOZ, you are the man. I didn't realize you could do that. I am a self-professed github noob though. Thanks.
Yeah, I am still trying to figure out how to download this zip file that I may not even be seeing.
it took me a minute to find it too. look at the red circled area on right:Show Image(http://i967.photobucket.com/albums/ae156/jbedwell81/zipfile_zps0c8dd876.png)
So I was watching that youtube playlist from contextual electronics, and I am not sure if I am more confused or if I understand it better. It seems like he does know what he is doing but didn't plan and rehearse the video series and keeps going 3 steps forward and 2 steps back to get ahead one step. All I want to do is learn how to make a pcb for one switch with pads to solder wires to for making hand wired matrices easier to wire up.
So I just ordered 3x custom breakout boards from oshpark.. It cost me $2.05 WITH FREE 1ST CLASS SHIPPING TO THE UK.. seriously.. How can they make money at these prices?
Just some little 12x22mm mini usb breakout boards..So I just ordered 3x custom breakout boards from oshpark.. It cost me $2.05 WITH FREE 1ST CLASS SHIPPING TO THE UK.. seriously.. How can they make money at these prices?
Which boards?
regack made a nice tutorial, it is up on his github: https://github.com/regack/depot/raw/master/basics/Kicad_Basics.pdf
He is a sneaky bastard :P
My components and modules library is pretty much done as well, so I will post that later today as well.
I'm trying to do something and found this small tutorial series: http://www.youtube.com/playlist?list=PLy2022BX6Esr6yxwDzhqYZyuuenJE2s5B
Can really recommend it.
Here is the library.
This should suffice for almost every application for keyboard designing.
Contains components for eeschema as well as modules for PCBnew (Both parts of KiCAD)
komar007, perhaps you could include the library posted here into the github.Here is the library.
This should suffice for almost every application for keyboard designing.
Contains components for eeschema as well as modules for PCBnew (Both parts of KiCAD)
komar007, perhaps you could include the library posted here into the github.Here is the library.
This should suffice for almost every application for keyboard designing.
Contains components for eeschema as well as modules for PCBnew (Both parts of KiCAD)
CD4148WS by Crownpo, the footprint is regular 0805.
DC Components produces it too.
Yes, the availability of these is poor to say the least. in general, 0805 diodes are hard to get anywhere in the world for reasons beyond my imagination, which footprint can possibly be better for signal diodes...CD4148WS by Crownpo, the footprint is regular 0805.
DC Components produces it too.
I had trouble locating those or something similar, so I switched over to an SOD-123 footprint and used these Vishay 1N4148W-E3-08 SOD-123 diodes (http://www.vishay.com/docs/85748/1n4148w.pdf).
I would love to have found those somewhere easy (for me) to buy from.
I don't know if this would be of interest to anyone else, but I recently discovered that you can order the ATmega32U4 in a TQFP-44 package size from PJRC (the company that makes Teensy) with the HalfKay bootloader pre-loaded onto them. Meaning you can use the convenient Teensy Loader software to load FW onto your keyboard.HalfKay is the only thing I dislike about Teensy. I don't get the point of it. It doesn't have an ABI which would allow you to write to flash in runtime, so stuff like reprogramming layout on the GH60 doesn't work in a different way than by generating new firmware and flashing:/
So my PCBs from oshpark arrived after a few weeks. I can't complain for $2. Unfortunately, I'm an idiot who doesn't know how to doublecheck his work :)) (note the trace doesn't quiiiite reach the pad)Show Image(http://i.imgur.com/WHruMVK.jpg)
So my PCBs from oshpark arrived after a few weeks. I can't complain for $2. Unfortunately, I'm an idiot who doesn't know how to doublecheck his work :)) (note the trace doesn't quiiiite reach the pad)
Hi guys! I'm not sure if this is possible but if I want to make a PCB to fit 5x4 cherry mx switches to make a ultra 'mini' keyboard. isit possbie? As I was told that I can order PCBs from OSHpark and PCB wing. Lets say If im going to order from PCBwing what options am I suppose to select? I really know nothing about PCB so I'm hoping you guys can help me out, thanks! :)
Thanks for the reply! I just watched WhiteFireDragon's video to know more about building it, after thinking for awhile, i think that a 5x5 would be better. If im getting a 5x5 off PCBwing, all I need is to just change to dimension to 3.75 on each side? e.g http://imgur.com/sY2eWej (http://imgur.com/sY2eWej)
I have a few questions tho,
I think I can only go with PCB mounted keys as going for plate mount will just add up to the cost :p .
1. But if i ever want to go plate mount, where can i get one?
2. Are there any cheaper board options for a 5x5?
3. would I need something like the teensy?
4. Is there anyone I can ask for the design of the board?
Sorry for the questions, still pretty new to the whole DIY keyboard thing.
a useful list of books on pcb design can be found here: http://www.cadsoftusa.com/training/booksThanks, added.
hope it migth be useful for some of you.
Yeah, those work fine.Thanks. Get one and also arduino micro clone from ebay http://goo.gl/eSSVDx
Reading Netlist "\Shared\Keyboard\PCB\TEST Matrix\Test_matrix\Test_matrix.net"
Using component/footprint link file "\Shared\Keyboard\PCB\TEST Matrix\Test_matrix\Test_matrix.cmp"
Module [D1]: Pad [1] not found
Module [D1]: Pad [2] not found
One gotcha that you might run into, is that the eeschema symbol and the
footprint mod must agree on pin names/numbers when I first started using
kicad, I found transistor footprints with pin names of e c b which would
not connect to their symbol counterparts (which had been numbered as 1
2 3) This confused me for a while until the penny dropped.
As the quote says you just have to use same pin names(numbers) in both schematic symbol and footprint module. If you want to use 'SOD-123 (A-C)' modules in pcbnew you must use diode symbol which has pin names A and C in eeschema.
Hi komar007 thanks for this information, I can see where I have gone wrong. I had taken the diode from the KB_common.lib which is part of Regack's tutorial on GitHub (https://github.com/regack/depot/tree/master/basics/0-Base). It appears the pins on the MX1A and CONN_1 are numbered, while the Diode uses letters. Maybe someone else can confirm this, so I can be sure I'm not going nuts. Having a play with the library editor really made sense and revealed the Pin numbers/letters. Great I learnt something new here.Go ahead and use the thread for whatever you want, it's basically dead, so it needs some traffic;)
I was wondering if I can use this thread for future trouble shooting, or is it more about sharing knowledge?
In the spirit of this thread I wanted to leave a really great link (http://breadboardkiller.com/index.php/blog/82-exporting-gerbers-from-kicad)explaining how to export gerber files from KiCad.
adafruit is now selling 3 packs of eagle licenses for extremely reasonable prices. anyone interested in splitting a package? kicad is so horrid XD
I've seen a couple of keyboard PCBs that cover the through-hole pads on the top side with solder mask. e.g.
(Attachment Link)
Does anyone know why this is done? I'm guessing it might make it a tiny bit easier to desolder a switch or LED, since there won't be a pad under the switch for solder to form.
I'm thinking of doing that on the Planck/Atomic PCB but I also prefer to know why something is done a certain way, rather than just copy blindly...
Kicad, especially given the recent changes in the past year, has been extremely good to me. Eagle on the other hand was unbearable. Unless one is designing complex fpga 10+ layer boards with RF considerations or somesuch, in which case maybe Altium is more suitable.I used a git version of kicad for Katy and (especially considering its price) it is good enough for a simple keyboard ... and it would be great if it could import step files.
Diptrace was also quite nice, but I kept going back to Kicad.. if only Kicad could properly do 3d import and export in step or similar...
You need a local library of footprints only when you are drawing your own footprints.I don't see anything after pressing all of those :-(
You need to draw (or import) your own footprints only when you cannot find some suitable footprints in the standard libraries.
You should be able to find standard footprints at least for the diodes.
Select appropriate library on the left (e.g. Diodes_SMD or Diodes_ThroughHole), leave D1 selected in the middle plane, and select filtering to library and pin count (the last 3 icons in the toolbar). You should see some options in the right pane.
Try to deactivate all 3 filters (keyword, library, and pin count).Nope
Still not seeing anything?
That sucks.Thanks!
Well, I use it on linux and two more things needed to be done to have kicad footprints working were:Maybe something similar needs to be done on windows too. Of course, it should have been done by setup. If somebody who uses kicad on windows does not chime in with some ideas then you may try to ask on #kicad IRC channel, or some kicad mailing list. This works fine for me on linux.
- setting environment variable KISYSMOD to the directory with footprints (in my case /usr/share/kicad/footprints)
- copying /usr/share/kicad/footprints/fp-lib-table to ~/.config/kicad
Well, the format of footprint files changed when I changed from about a year old release to a git version.I just got around this by installing an older version of KiCAD, the lazy way.
But the install should copy the new footprint libraries to your PC. And the uninstall of the old version should have removed the old libraries.
On linux, I did not need to upgrade any libraries. I needed to set path to new libraries, update fp-lib-table, and (for the PCB which I needed to modify) I needed to assign footprints from the new libraries. I do not have any experience with windows version of kicad so I do not know how the upgrade would go there.
There is also some way how to pull footprints directly from git (internet) instead of from your local install of kicad. But I do not use it so I'm not sure how that must be setup.
Just curious to see what people think of this...I did not study your schematic but your PCBs looks very empty.
min track width 0.3 mm, min gap 0.25 mmThese were the settings that I used, however trying to do it on a single sided board is next to impossible in situations like this, at least to my understanding:
Edit: And add fill zones if you etch at home. You will save your FeCl3 or whatever you use. You can just create one zone over the whole PCB and assign it to NoNet. So it is easy to add.
Yes, you probably need a via for the crystal. I do not know whether it is acceptable to put the decoupling capacitor so far away to allow routing around the crystal.
Do you need the crystal? Are internal clock sources that bad? In my case, it is optional. Using an internal clock source is recommended for USB anyway (not sure if it is even possible to use an external clock source for it). And I do not need that precise time for anything else.
Hi all. Does anyone know how to import the geekhack footprints [https://github.com/geekhack-org/kicad-library/tree/master/modules]? In Cvpcb I do the following:Yeah, I had the same issue. What version are you using? If you are using the newest version, download the one from like 7-7-2013, and then add them in using the guide.
- Go to 'Edit library table'
- Click on 'project specific libraries' tab, then click 'append library'
- fill in details with nickname 'geekhack', path as local path (/Users/sypl/keyboards/kicad/libraries/kicad-library/modules), plugin type 'KiCad'
- Click ok,
But when I click on the geekhack library it shows nothing. Only library filter is on.
Are there any footprints for the AT90USB1287? I can't seem to find one.
Application: kicad
Version: 0.201501310101+5397~21~ubuntu14.10.1-product Release build
wxWidgets: Version 3.0.1 (debug,wchar_t,compiler with C++ ABI 1002,GCC 4.9.1,wx containers,compatible with 2.8)
Platform: Linux 3.16.0-30-generic x86_64, 64 bit, Little endian, wxGTK
Boost version: 1.54.0
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=OFF
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_WXPYTHON=ON
USE_FP_LIB_TABLE=HARD_CODED_ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_WEBKIT=ON
Hi all. Does anyone know how to import the geekhack footprints [https://github.com/geekhack-org/kicad-library/tree/master/modules]? In Cvpcb I do the following:
- Go to 'Edit library table'
- Click on 'project specific libraries' tab, then click 'append library'
- fill in details with nickname 'geekhack', path as local path (/Users/sypl/keyboards/kicad/libraries/kicad-library/modules), plugin type 'KiCad'
- Click ok,
But when I click on the geekhack library it shows nothing. Only library filter is on.
I can add those footprints with your method but I use path like '/home/noname/tmp/gh-test/tqfp.mod'.
Nickname: tqfp
Library Path: /home/noname/tmp/gh-test/tqfp.mod
Plugin Type: Legacy
Version info of my KiCad.Code: [Select]Application: kicad
Version: 0.201501310101+5397~21~ubuntu14.10.1-product Release build
wxWidgets: Version 3.0.1 (debug,wchar_t,compiler with C++ ABI 1002,GCC 4.9.1,wx containers,compatible with 2.8)
Platform: Linux 3.16.0-30-generic x86_64, 64 bit, Little endian, wxGTK
Boost version: 1.54.0
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=OFF
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_WXPYTHON=ON
USE_FP_LIB_TABLE=HARD_CODED_ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_WEBKIT=ONHi all. Does anyone know how to import the geekhack footprints [https://github.com/geekhack-org/kicad-library/tree/master/modules]? In Cvpcb I do the following:
- Go to 'Edit library table'
- Click on 'project specific libraries' tab, then click 'append library'
- fill in details with nickname 'geekhack', path as local path (/Users/sypl/keyboards/kicad/libraries/kicad-library/modules), plugin type 'KiCad'
- Click ok,
But when I click on the geekhack library it shows nothing. Only library filter is on.
What would happen if I were to connect two or more mini (or micro) usb ports for data transfer to the same pins? I was thinking it would be nice to have a keyboard with ports top, left and right. Top would be useful if using desktop and long cable; left and right would be useful for short cables on top of laptops. If someone went crazy and plugged in all three would it fry the board or something? Would it read as three keyboards?
Makes me a little sad to see I was the last poster in this thread almost a month ago... No PCB love?
Anyway, I had another question. I want to make a PCB with the atmega32u4, but waaaaaay stripped down from the teensy2.0. I only need 16pins and a usb connector, and that's it (I think).
Given this schematic [https://www.pjrc.com/teensy/schematic2.gif], how much of this can I junk? For the usb I have to connect d+, d-, uvcc, ugnd and vbus it looks like, as well as some capacitors. And I think it's safe to get rid of the reset button, right? I can reset via software, yes? Would that do it?
Your capacitors in the top left corner are not connected correctly. You ideally want at least a 10µF capacitor between VCC and GND anywhere in your design, an electrolyte will be good. Then you want 0.1µF or 1.0µF "bypass" capacitors at every VCC pin to ensure you don't ever so momentarily drop the supply voltage at that pin, and also to filter out some EMI (I think). The datasheet should hold more info on which value capacitors to use where. Here you want small ceramic capacitors to be able to place them close to their supply pin.
They are not for you to use - they are for you to supply with power.
If I understand correctly the .1uF capacitors must be placed as closely to the chip as possible, correct?Yes.
The 1�F capacitor between VBUS and GND looks small to me (but it will probably work as you have it). I would put there something between 10 - 20 �F.
The maximum droop in the hub V BUS is 330 mV, or about 10% of the nominal signal swing from the function.
In order to meet this requirement, the following conditions must be met:
• The maximum load (C RPB ) that can be placed at the downstream end of a cable is 10 μ F in parallel with
44 Ω . The 10 μ F capacitance represents any bypass capacitor directly connected across the V BUS lines in
the function plus any capacitive effects visible through the regulator in the device. The 44 Ω resistance
represents one unit load of current drawn by the device during connect.
• If more bypass capacitance is required in the device, then the device must incorporate some form of V BUS
surge current limiting, such that it matches the characteristics of the above load.
This works somewhat okay with press-and-peel, but for the glossy paper it tends to make the waxes in the paper bond to the toner, and the paper is then really hard to remove and interferes with the etching process.We may be lucky with the glossy paper from the old catalog. But what you describe is exactly what we got with the expensive photo paper. So an expensive photopaper can cause the same problems even with a good (low temperature) toner.
@skullydazed, I also just noticed you have some wrong values of components on both the schematic and PCB.
I think you meant R1, R2 to be 22, not 22K and C3, C4 - 10pF (or a bit more), not 10uF.
As for R3, I don't know if this is a problem, but I think you're getting dangerously close to the internal weak pull-up resistance. I normally use 10K successfully for HWB, I'm not actually sure this pin is pulled-up or not during boot, but I wouldn't use more than 10K there.
The teensy uses 1k here, and they don't seem to have any problems when that's all that there, so I assumed it was probably OK. Swapping that out for 10k is easy enough.
For R3, 1k is OK, and even shorting HWB to ground without a resistor would be okay too (unless you set it to "1" in output mode in firmware:D), it's the higher values I'm worried about.
I would like to get some feedback from the experts in this thread about something that has been taking up a lot of my brainspace recently.
Most of you probably have checked out my plate/case tool builder.swillkb.com (http://builder.swillkb.com/) at this point. When I started that project I had the pipe dream of being able to take a JSON input and generate the plate, case, pcb and firmware for a custom keyboard layout in a few clicks. Obviously, that was way too ambitious for a first pass, so I just started with what I could reasonably bite off and built the plate/case builder. skullydazed has put together a pretty cool tool (http://kalerator.clueboard.co/) to help create EAGLE scripts based on the same Keyboard Layout Editor input (GH Thread (https://geekhack.org/index.php?topic=74139.msg1819651#msg1819651)). His tool is written in Python, so I open sourced my original builder engine (https://github.com/swill/kb_builder) which was also written in Python. It would be cool if someone wanted to integrate those two code bases, but thats not what this post is about.
I am not sure that creating EAGLE scripts is really the best way to solve this problem for my tool because most people won't be able to validate or even open them. It is just too hard of a format for the regular person to work with.
I am currently looking into producing Gerber files from my tool to define the PCB design. The Gerber files would have corresponding SVG files so you could visually inspect that the output is what you expect. The Gerber files would be generated from these SVG files, so you could be confident with what is in the Gerber file without having the means to actually view it. I would also be exposing a tool for being able to convert an SVG to Gerber file, so if you would like to modify the layout in any way, you could modify the SVG and then reupload it and get the resulting Gerber files.
There are many obstacles in my way to be able to actually make this work. Including, but not limited to:
- Develop the ability to generate Gerber files from an SVG
- Develop an autorouter that will deterministically output SVG files for any keyboard layout
- Implement the autorouter into the core engine of my tool
Before I go too far down this road, I am interested in feedback on this approach. Am I sane? Given that I am really focusing my tool on builders who have ideas but don't have the technical means to be able to do every step, is this realistic from a usability and modification perspective? If you don't think this is realistic, how would you approach the problem and what would you be targeting to produce?
I understand the complexity of what I am trying to do here is pretty crazy and it won't be something I develop in a few weeks, this is going to take all my free time for months. That being said, I really want to orient my self so I start moving in at least close to the right direction. :P
I appreciate all feedback, regardless of what you have to say. :) Cheers...
I am not sure that creating EAGLE scripts is really the best way to solve this problem for my tool because most people won't be able to validate or even open them. It is just too hard of a format for the regular person to work with.
I am currently looking into producing Gerber files from my tool to define the PCB design. The Gerber files would have corresponding SVG files so you could visually inspect that the output is what you expect. The Gerber files would be generated from these SVG files, so you could be confident with what is in the Gerber file without having the means to actually view it. I would also be exposing a tool for being able to convert an SVG to Gerber file, so if you would like to modify the layout in any way, you could modify the SVG and then reupload it and get the resulting Gerber files.
Before I go too far down this road, I am interested in feedback on this approach. Am I sane? Given that I am really focusing my tool on builders who have ideas but don't have the technical means to be able to do every step, is this realistic from a usability and modification perspective? If you don't think this is realistic, how would you approach the problem and what would you be targeting to produce?
I understand the complexity of what I am trying to do here is pretty crazy and it won't be something I develop in a few weeks, this is going to take all my free time for months. That being said, I really want to orient my self so I start moving in at least close to the right direction. :P
Since version 6 (I think) all EAGLE files are written in XML. So you can try to directly generate a XML file that is a valid schematic and/or PCB. Will need to deal with customs libraries for the MX switches, but other components (like diodes, through hole or SMD) are probably already supported with standard EAGLE libraries. I can say that ATmega32u4 microcontroller requires a custom library.
Both seeedstudio and sparkfun publish open libraries with footprints for those parts. I prefer the seeed version because it has outlines for automatic pick-n-place, which is actually cheaper than you might imagine.That's new to me, thank you for the information.
Generating the gerbers is only half the challenge. You have to get them made too. I haven't been able to find a fab house to make single keyboard-sized PCB's for less than about $80, and it takes a few weeks to get them at that price.
On that note, check out pcbshopper - I just tested with 130mm x 350mm dimensions (roughly the size of the phantom plate I have lying about, presuming it's fairly indicative of the size of the PCB underneath), 2 layer with HASL and standard solder mask, quantity 5, and was quoted $150 US including shipping for a 5 day turn around with PCBWay, and $120+ shipping via Smart-prototyping. YMMV (I find sometimes the actual order page has slightly different pricing) but I think you'll find that getting a small batch fabbed is actually feasible now. Just takes a couple mates who want the same switch layout, and it becomes surprisingly affordable.
On that note, check out pcbshopper - I just tested with 130mm x 350mm dimensions (roughly the size of the phantom plate I have lying about, presuming it's fairly indicative of the size of the PCB underneath), 2 layer with HASL and standard solder mask, quantity 5, and was quoted $150 US including shipping for a 5 day turn around with PCBWay, and $120+ shipping via Smart-prototyping. YMMV (I find sometimes the actual order page has slightly different pricing) but I think you'll find that getting a small batch fabbed is actually feasible now. Just takes a couple mates who want the same switch layout, and it becomes surprisingly affordable.
You are right, the main cost here is the setup. If you can get others to go in with you it'll save you a lot.
I've been experimenting a bit with PCB fab at home, actually. I tried the toner transfer method which works but was a few hours of work. This weekend I'm going to try out the photoresist method to see how that works for me. I want to do a lot of experimentation with layouts and spending $25 on the raw materials (and getting my results the same day) is very appealing to me.
I am not sure that creating EAGLE scripts is really the best way to solve this problem for my tool because most people won't be able to validate or even open them. It is just too hard of a format for the regular person to work with.
I agree with you here, but the problem is that the other PCB tools are even harder for most people to work with. Before I settled on using EAGLE I tried to get gEDA and KiCAD going and while I was able to make them work every step was a challenge.
Yes, this is why I would like to see if I can make an image based model work. I think people will have a lot harder time if they have to learn an actual PCB design software to use what they were provided. What formats does KiCAD use natively? Basic premise of that format? That seems like the most accessible of the different PCB modeling softwares. What formats CAN it export into?I am currently looking into producing Gerber files from my tool to define the PCB design. The Gerber files would have corresponding SVG files so you could visually inspect that the output is what you expect. The Gerber files would be generated from these SVG files, so you could be confident with what is in the Gerber file without having the means to actually view it. I would also be exposing a tool for being able to convert an SVG to Gerber file, so if you would like to modify the layout in any way, you could modify the SVG and then reupload it and get the resulting Gerber files.
Generating the gerbers is only half the challenge. You have to get them made too. I haven't been able to find a fab house to make single keyboard-sized PCB's for less than about $80, and it takes a few weeks to get them at that price. People can etch the board themselves for less than $50, but for that they just need SVG (or something else they can print from accurately.)
Yes, exactly. I think that an SVG is a good format to start with because I think it would enable people being able to experiment with making PCBs as well. I see people probably doing micro-GBs and getting like 5 PCBs made at a time to bring the costs down. Would Gerber files be a good fit for that type of use case?
The ability to edit the layout will be necessary too, and I think your SVG approach may the best choice for that. However, you will have to deal with error detection. For example, what if they cross two traces, or run a trace through the middle of the MX switch's hole? If you can design a UI that prevents them from making those mistakes in the first place it'd be a lot more work on the frontend, but also more user friendly and potentially saves you having to catch a million corner cases in your SVG processing code.
I agree that using a format that can be easily edited is a good idea.
Your points are valid about the 'error detection'. I think my ability to write an autorouter that will fit into my application cleanly is going to be a pretty central aspect to my success doing this. I would be trying to make it so people would not have to modify it and I could validate what the autorouter has produced by showing each of the layers on its own and showing an SVG of the layers superimposed on each other with different colors. I would be focusing on trying to make sure there are no errors produced by my autorouter, but I would probably not be checking the files if someone uploaded their own SVG because I won't have all of the parameters of the PCB in the system when I do the SVG to Gerber (or whatever) process unless the routing of the PCB has been generated by my tool in that instance. Hope that makes sense...Before I go too far down this road, I am interested in feedback on this approach. Am I sane? Given that I am really focusing my tool on builders who have ideas but don't have the technical means to be able to do every step, is this realistic from a usability and modification perspective? If you don't think this is realistic, how would you approach the problem and what would you be targeting to produce?
I understand the complexity of what I am trying to do here is pretty crazy and it won't be something I develop in a few weeks, this is going to take all my free time for months. That being said, I really want to orient my self so I start moving in at least close to the right direction. :P
I'm pretty sure that thinking about tackling a project like this rules out sanity. ;D I think the approach you're looking at can work, and work quite well. I think you are probably underestimating how hard it will be to route the columns (or rows for row-staggered keyboards) when you write your autorouter, but perhaps I'm just overestimating it.
Yes, I am going to have to do a bit of a refresher on different algorithms and graph theory I took in Uni. I also need to study all the the PCBs I have here to get a feel for how they run everything. I am guessing that in general they will probably run the rows on one side and the columns on the other side of the PCB? That may be way too simplistic for the real complexity, but would make sense for making things not cross and such. I suspect I am going to be writing a lot of proximity algorithms. Haha... The autorouter is the one piece that I feel the most intimidated by. I have a pretty solid grasp on the rest (I think), at least in theory. We will see how I do I guess...Since version 6 (I think) all EAGLE files are written in XML. So you can try to directly generate a XML file that is a valid schematic and/or PCB. Will need to deal with customs libraries for the MX switches, but other components (like diodes, through hole or SMD) are probably already supported with standard EAGLE libraries. I can say that ATmega32u4 microcontroller requires a custom library.
Both seeedstudio and sparkfun publish open libraries with footprints for those parts. I prefer the seeed version because it has outlines for automatic pick-n-place, which is actually cheaper than you might imagine.
To be honest I didn't read everything in the previous posts, but have you looked at the specifications for the gerber file format? It's v e r y simple. If you know your way around svg's (which I don't) learning gerber should be a walk in the park. It's a very simple vectorized thing, translating from something else vectorized should be decently straight forward.. Gerbers are the standard in PCB manufacturing (to my knowledge). Any serious manufacturer should accept them.Awesome. Thanks for this, I will check that out.
The specification is linked from this page http://www.ucamco.com/downloads
What are the most common file types that fab shops will take? I would like to be generating SVG files natively and then converting them into the final form if possible. So image based formats are better for me. It also makes the modification of the files more accessible because anyone can use Inkscape or Adobe Illustrator to make basic modifications. If I can do that, then I would be relying on a format converter (SVG to Whatever), so I could easily accept anyone's SVG (in theory). I think scripting is a totally valid way to solve this, but I think it is going to be less accessible for people. None will have tools to check it and making modifications will be impossible for the general user group.
Is there a graphics format and a different format for the drilling of the holes? How does this work and what would I need to produce?
[/tt]
Yes, exactly. I think that an SVG is a good format to start with because I think it would enable people being able to experiment with making PCBs as well. I see people probably doing micro-GBs and getting like 5 PCBs made at a time to bring the costs down. Would Gerber files be a good fit for that type of use case?
[/tt]
Yes, I am going to have to do a bit of a refresher on different algorithms and graph theory I took in Uni. I also need to study all the the PCBs I have here to get a feel for how they run everything. I am guessing that in general they will probably run the rows on one side and the columns on the other side of the PCB? That may be way too simplistic for the real complexity, but would make sense for making things not cross and such. I suspect I am going to be writing a lot of proximity algorithms. Haha... The autorouter is the one piece that I feel the most intimidated by. I have a pretty solid grasp on the rest (I think), at least in theory. We will see how I do I guess...
[/tt]
I'm still confused. I just can't get the library part of kicad to work properly.
Even using the tutorial files from https://github.com/BathroomEpiphanies/KiCAD-Keyboard-Tutorial when I click on Cvpcb I get an error message warning me that it can't autolink the components:
---------------------------
Some of the assigned footprints are legacy entries (are missing lib nicknames). Would you like CvPcb to attempt to convert them to the new required FPID format? (If you answer no, then these assignments will be cleared out and you will have to re-assign these footprints yourself.)
---------------------------
Yes No
---------------------------
Doesn't matter which way I answer, the result is that none of the components have footprints assigned.
I tried adding the lib and mod files that came with the tutorial but when I select 'footprint' from the list on the left, no components appear on the right.
Could someone (using the current version of kicad) please explain how to import the MX switches, diodes and teensy controller into my project so that I can use them in all the necessary places?
I'm still confused. I just can't get the library part of kicad to work properly.
Even using the tutorial files from https://github.com/BathroomEpiphanies/KiCAD-Keyboard-Tutorial when I click on Cvpcb I get an error message warning me that it can't autolink the components:
---------------------------
Some of the assigned footprints are legacy entries (are missing lib nicknames). Would you like CvPcb to attempt to convert them to the new required FPID format? (If you answer no, then these assignments will be cleared out and you will have to re-assign these footprints yourself.)
---------------------------
Yes No
---------------------------
Doesn't matter which way I answer, the result is that none of the components have footprints assigned.
I tried adding the lib and mod files that came with the tutorial but when I select 'footprint' from the list on the left, no components appear on the right.
Could someone (using the current version of kicad) please explain how to import the MX switches, diodes and teensy controller into my project so that I can use them in all the necessary places?
I installed it from kicad-product-r5528.036404d-x86_64.exe
I believe that is 2015-04-13. I figured I was better off using the 'stable' versions rather than debug versions. Judging by the date you mentioned, you got your copy from somewhere else entirely. That date isn't listed here: http://www2.futureware.at/~nickoe/ which I reached from http://www.kicad-pcb.org/display/KICAD/Installing+KiCad#InstallingKiCad-Windows
I have a question about the AtMega32u4. Some schematics show a pullup-resistor at the RESET pin, some don't. Why? Is the pull-up necessary or not?I've PM'd you, but I guess here is the better place to share this.
The reset line has an internal pull-up resistor, but if the environment is noisy it can be insufficient and reset canSo I always use an external 10k. But I guess that in 99% of cases it is OK not to put one there.
therefore occur sporadically. Refer to datasheet for value of pull-up resistor on specific devices.
I've PM'd you, but I guess here is the better place to share this.
PCB Fab
-------
pcbway.com XTant, Planck, xwhatsit, Alps64, HHKB Alt
https://geekhack.org/index.php?topic=51767.msg1483719#msg1483719
https://geekhack.org/index.php?topic=51767.msg1482989#msg1482989
https://geekhack.org/index.php?topic=70092.msg1686984#msg1686984
http://deskthority.net/workshop-f7/new-buckling-spring-design-t10234-60.html#p224987
http://deskthority.net/workshop-f7/small-batch-pcbs-t10456.html#p224367
pcbcart.com GH60
https://geekhack.org/index.php?topic=34959.msg703250#msg703250
pcbwing.com Ergodox, Zeta, Phantom
https://geekhack.org/index.php?topic=48851.msg1394559#msg1394559
https://geekhack.org/index.php?topic=71161.msg1721833#msg1721833
seeedstudio.com keyboard.io
https://geekhack.org/index.php?topic=52639.msg1169072#msg1169072
oshpark.com The Enabler
https://geekhack.org/index.php?topic=57511.msg1331617#msg1331617
elecrow.com HHKB Alt, Alpst64 Rev.A
https://geekhack.org/index.php?topic=12047.msg1293117#msg1293117
https://geekhack.org/index.php?topic=69740.msg1702786#msg1702786
dirtpcb.com Regack, HHKB Alt, TMK USB-USB converter
https://geekhack.org/index.php?topic=70566.0
itead
smart-prototyping.com
Hey guys, I am attempting to learn KiCad for a full keyboard project of mine.
I have been trying to follow this tutorial, along with that lib. The problem is, the tutorial is outdated for the current version as it seems that a fair bit has changed in the GUI of KiCad.
Would anyone be willing to do an updated version some a simple 3x3 matrix or something similar. This would preferably include a basic lib for keyboard components including MX footprints, stab cutouts for PCB mount stabs, Alps switches, and possibly MX/Alps switches. Also, and update for how to import from GitHub to KiCad would be amazing.
Hey guys, I am attempting to learn KiCad for a full keyboard project of mine.
I have been trying to follow this tutorial, along with that lib. The problem is, the tutorial is outdated for the current version as it seems that a fair bit has changed in the GUI of KiCad.
Would anyone be willing to do an updated version some a simple 3x3 matrix or something similar. This would preferably include a basic lib for keyboard components including MX footprints, stab cutouts for PCB mount stabs, Alps switches, and possibly MX/Alps switches. Also, and update for how to import from GitHub to KiCad would be amazing.
I like this tutorial:
Part 1 - Part 2 - Part 3 - upcoming
This Udemy course (free) is more exhaustive:
https://www.udemy.com/learn-kicad-printed-circuit-board-design/
so i have KiCad, a CNC, and a burning desire to etch my own pcb in my workshop. any takers on a hand? i have the design done, plate CAD imported, everything looking good but when i go to start working on the traces i'm getting errors and can't seem to figure out what i'm doing wrong. any help would be smashing. attached is what ive been working on. i'm starting small but eventually i want to do a 60% TKL and full size keyboard PCB etched. all with Teensy controllers.
thanks in advance.
Currently I have a x-carve but I will be setting up probing. It's likely I won't do any pcb milling until I transfer to Linux CNC. So I have plenty of time to do had wired boards and get familiar with TMK etc. For now I plan on using a teensy. I'm also planning on doing some more mods on my xcarve to improve it. Stiffining mods etc. Also my spindle will do 30k. Makita 701cso i have KiCad, a CNC, and a burning desire to etch my own pcb in my workshop. any takers on a hand? i have the design done, plate CAD imported, everything looking good but when i go to start working on the traces i'm getting errors and can't seem to figure out what i'm doing wrong. any help would be smashing. attached is what ive been working on. i'm starting small but eventually i want to do a 60% TKL and full size keyboard PCB etched. all with Teensy controllers.
thanks in advance.
What kind of CNC are you talking about?
Assuming that you want to mill the traces, you'll have several challenges to overcome. You'll want to use a V-carve bit with a very tiny head, and you'll want to zero your machine very precisely. So precisely, in fact, that unless you have a vacuum table you'll have to setup a probe so that you can measure the topology of your PCB before starting. This way the mill can vary the height as needed to get a uniform depth.
You'll also need a machine with very little backlash and a spindle that can run at high speed (15k or faster) with very little runout. These things become less important if you're using a teensy for a controller, and more important if you want to use SMT components for your controller.
Once you have all that in place milling the board itself is pretty easy. There are plenty of programs that will turn gerbers into gcode so it's just a matter of mounting your board, zeroing in your CNC, and running the resulting g-code.
Currently I have a x-carve but I will be setting up probing. It's likely I won't do any pcb milling until I transfer to Linux CNC. So I have plenty of time to do had wired boards and get familiar with TMK etc. For now I plan on using a teensy. I'm also planning on doing some more mods on my xcarve to improve it. Stiffining mods etc. Also my spindle will do 30k. Makita 701c
So getting familiar with kicad is my next step in the learning curve for this project.
Trace too close to padCurrently I have a x-carve but I will be setting up probing. It's likely I won't do any pcb milling until I transfer to Linux CNC. So I have plenty of time to do had wired boards and get familiar with TMK etc. For now I plan on using a teensy. I'm also planning on doing some more mods on my xcarve to improve it. Stiffining mods etc. Also my spindle will do 30k. Makita 701c
So getting familiar with kicad is my next step in the learning curve for this project.
Sounds like you're getting a handle on it. Using a router for this purpose may or may not work for you, they have quite a bit of runout compared to spindles made for the task. It's fine as long as your traces are large enough, but that can make adding an SMT controller to the board more difficult.
What specific errors are you seeing? Without that info it's hard for anyone to help you.
Then you probably drew a trace too close to a pad ;)
Have you made a schematic, generated a netlist, and assigned footprints to your components? If you haven't the PCB editor won't know which pads are supposed to be connected, and can only assume that each pad belongs to its own "net". That way you can't really connect anything without getting errors.
If you want to do things right you really need to start in eeschema, the schematics editor, and build your circuit there. That's from where you generate the netlist. If you just want to play around in pcbnew, where you draw the pcb, you can disable "Enforce design rules when routing" under Preferences->General. That lets you draw however you like. Which is perfectly fine for small stuff. When things start getting complicated the automatic checks are nice to have around. But that requires all previous steps to have been taken.
Basic workorder:
- Pcb editor
- Set up footprint libraries
- draw/import pcb footprints
- Schematics editor
- Set up component libraries
- draw/import schematic components
- Place components
- Hook them up
- Assign footprints
- Export netlist
- Pcb editor
- Read netlist
- Place components
- Route everything
- Iterate, iterate, iterate
Just in case, have you tried the tutorials linked in the second message of the thread?Let me check. I may have missed them. I looked over afew things. Likely it's more complete than that I've missed
my issue right now is the cherry mx switch sketches i have dont have footprints matched to them and i'm not seeing how to do that or a library with those already married.
things are starting to come together :3
(Attachment Link)
Why.. is the teensy there?Trying to figure out routing and it was easiest there for the moment. Just revision 2 tho. I tried near the space bar but had routing issues. I'm going to be engraving it with my cnc or am planning to so the traces are .5mm causing routing challenges
I don't think that C3 is in the right position, if you check the the Teensy 2.0 schematic you'll see that it should be between VCC and GND, not on the VCC line: https://www.pjrc.com/teensy/schematic.html
The USB connector sems to be correct.
Yes, that's more like it. You might want to do a bit of research about ICs and decoupling capacitors to understand why and how you should position caps connected to VCC, but as it is now it looks okay.
WS2812Bs have an IC inside each LED, so you just have to connect the data pin to an output pin on the atmega.
For traditional LEDs (without in-built controller) you'll generally want to use a constant current driver, which would be controlled by the atmega and to which you connect your LEDs (usually connected as some kind of matrix). If you have no idea what that means, search for "led constant current driver" on google, perhaps buy a few chips and a bunch of LEDs from adafruit or sparkfun, and take a look at existing solutions — for instance the Infinity keyboards made by the Input Club are open source, so you can look up their schematics and code to study how backlighting was implemented.
Remember that hardware is just one side of the problem, you need code to tell your LEDs how to behave. If you have no idea how you are going to implement that in code, perhaps it's too early to add LEDs to your PCB.
Great job so far on the PCB! Do you plan on doing one for each of the different sizes of keyboard you are building in those wooden cases?things are starting to come together :3
(Attachment Link)
design v2
Wow that would be awesome even if to just learn from someone way more expierenced than me. I would be honored if you wouldn't mind sending me your design.Great job so far on the PCB! Do you plan on doing one for each of the different sizes of keyboard you are building in those wooden cases?things are starting to come together :3
(Attachment Link)
design v2
I know it's a good exercise to start with the smallest PCB and work your way up, but if you want to cheat and use an existing JD40 PCB, I can send you one. :)
Can I get a bit of a sanity check? The PCB I'm working on at the moment is my first attempt to support both ANSI/ISO at the same time.
I'm connecting the alternate switches up like so:Show Image(http://i.imgur.com/3VwUZLv.png)Show Image(http://i.imgur.com/ZdFH0rP.png)
Is this the way it's usually done? I don't have a decent multi-layout PCB design on hand for reference.
Still gotta work out where in the matrix I'm going to add the extra key that comes with a split backspace , but aside from these couple of things I'm just about done with the switches and can move onto the rest of the board, so any other general comments or pointing out of stupid things I've missed would be appreciated.Show Image(http://i.imgur.com/Gp3KIRv.png)
Is there a reason you have the trace from ANSI enter's column to ISO enter's column running parallel to a trace on the same net? Normally I would have it join the column immediately and have only a single trace run vertically from that point.I'm not altogether sure what you're meaning by 'join the column immediately' - If you look at the other picture, showing the left shift, the way I handled it there was to simply run the column through the standard key, then connect the corresponding pins of the variant switches in series with each other. It's a T junction of sorts, with the column being the cross bar and the variant keys arranged along the line that is perpendicular to it, if that makes sense.
Is there a reason you have the trace from ANSI enter's column to ISO enter's column running parallel to a trace on the same net? Normally I would have it join the column immediately and have only a single trace run vertically from that point.I'm not altogether sure what you're meaning by 'join the column immediately' - If you look at the other picture, showing the left shift, the way I handled it there was to simply run the column through the standard key, then connect the corresponding pins of the variant switches in series with each other. It's a T junction of sorts, with the column being the cross bar and the variant keys arranged along the line that is perpendicular to it, if that makes sense.
I've done the same with the return key, but given the hole in the PCB for the centre of the ISORETN switch I had to route the trace around it rather than it simply flowing to the right like on the shift image.
Are you suggesting that I do away with the trace between ISORETN and UP, and simply route ISORETN->RETN->UP like the following?Show Image(http://i.imgur.com/h2q7857.png)
Hello i would need help with designing a onboard 32u4 controller but the hard side my project should be single sidet so there come some hickups
How thin are those traces anyway. They look very thin to me. The board manufacturer would probably question your sanity over that hole overlapping the pad like that. But if that is what you want you may be able to talk them into doing it for you =)
How thin are those traces anyway. They look very thin to me. The board manufacturer would probably question your sanity over that hole overlapping the pad like that. But if that is what you want you may be able to talk them into doing it for you =)Pretty sure some of the SPRiT boards have holes and pads overlapping like that.
As for trace width/spacing, it's usually better (read: safer) to go with wider traces — there is no need to stick to the fab's absolute minima if your pcb can accomodate wider traces.
If you can't do it with 30 mil you are doing it wrong ;-) And I know all about overlapping... Gave up on PCB mount rubbish long ago =PWow, that's a lot of switches next to each other!
(Attachment Link)
is there a good way to place switch footprints to a DXF plate of a keyboard in KiCad? i'm ding it by hand at the moment and boy is that painful. i as to ensure precise placement of the switches. and for time's sake.
is there a good way to place switch footprints to a DXF plate of a keyboard in KiCad? i'm ding it by hand at the moment and boy is that painful. i as to ensure precise placement of the switches. and for time's sake.
I usually set the grid to 0.75" divided by 8 or 16, that is 0.09375" or 0.046875". Then you can use 's' to snap the grid origin to wherever you want. Activate the trace tool and hover over the central pad for a switch. The tool will "magnetically" snap to that pad. Hit 's' and set the origin there. Then you can use the 0.09375" grid to place components correctly.
Or you script it some way... The KiCAD file formats are quite scriptable.
If you can't do it with 30 mil you are doing it wrong ;-) And I know all about overlapping... Gave up on PCB mount rubbish long ago =PWow, that's a lot of switches next to each other!
(Attachment Link)
If you can't do it with 30 mil you are doing it wrong ;-) And I know all about overlapping... Gave up on PCB mount rubbish long ago =PFor the matrix, sure.. but no MCU I've ever routed could have 30 mil traces connected to adjacent pins, the pitch is way too small, and the amount of necking needed to make it work would defeat the purpose. It's only going to get worse, too, some ICs I've been using on non-keyboard projects are now only available in 3mm x3mm LGA :eek:
is there a good way to place switch footprints to a DXF plate of a keyboard in KiCad? i'm ding it by hand at the moment and boy is that painful. i as to ensure precise placement of the switches. and for time's sake.
I usually set the grid to 0.75" divided by 8 or 16, that is 0.09375" or 0.046875". Then you can use 's' to snap the grid origin to wherever you want. Activate the trace tool and hover over the central pad for a switch. The tool will "magnetically" snap to that pad. Hit 's' and set the origin there. Then you can use the 0.09375" grid to place components correctly.
Or you script it some way... The KiCAD file formats are quite scriptable.
thanks i'll give that a try. doing it by hand is painful. it works but one of my upcoming projects is a 108 key. and doing that by hand would make me want to chop off my fingers and give up on keyboards LOL
is there a good way to place switch footprints to a DXF plate of a keyboard in KiCad? i'm ding it by hand at the moment and boy is that painful. i as to ensure precise placement of the switches. and for time's sake.
I usually set the grid to 0.75" divided by 8 or 16, that is 0.09375" or 0.046875". Then you can use 's' to snap the grid origin to wherever you want. Activate the trace tool and hover over the central pad for a switch. The tool will "magnetically" snap to that pad. Hit 's' and set the origin there. Then you can use the 0.09375" grid to place components correctly.
Or you script it some way... The KiCAD file formats are quite scriptable.
thanks i'll give that a try. doing it by hand is painful. it works but one of my upcoming projects is a 108 key. and doing that by hand would make me want to chop off my fingers and give up on keyboards LOL
That's the entire reason I wrote a tool (http://kalerator.clueboard.co/) to lay those out for me in EAGLE. Doesn't help those of you using KiCAD, but maybe someday someone will write a similar tool for that.
I actually sort of scripted my last design. I made a matrix with all "nodes" populated in the schematic. Then I made a single footprint with twice the number of pads in relation to switches. So column 0, row A, in the matrix is labeled with pads 0 and 2, column 1, row A with pads 2 and 3, and so on. If a switch has multiple possible locations, the pad numbers are just re-used. That works fine in KiCad at least. I then calculate where all pads go. That way I didn't need to place ~200 switch footprints, and it's also not possible to accidentally move them around.Alright I'll send you my footprint then lol
A hundred switches or so really aren't that bad to place by hand. Routing them up is much more time consuming anyway. At least to me...
I didn't quite get your last explanation..
I've got a couple questions on using a secondary IC. I'm planning on using an atmega32u4 to drive my matrix and then adding an atmega328p to drive some WS2812Bs. Is it possible to program both chips without external tools? Here's what I was planning:Why complicate something simple? You can use a LED driver for that. The IS31FL3731 IC is used by Ergodox Infinity and can be controlled through I2C. Example: http://imgur.com/a/FbJg9 (http://imgur.com/a/FbJg9) (the guy didn't released his code, though. :( )
With MOSI, MISO, SCK, reset, power/ground, and RX/TX pins connected between the two,
1) Use the DFU bootloader on the 32u4 to upload code turning it into an AVR ISP.
2) With the above, burn a bootloader onto the 328p, then upload LED control code.
3) Upload TMK/etc to the 32u4.
Why complicate something simple? You can use a LED driver for that. The IS31FL3731 IC is used by Ergodox Infinity and can be controlled through I2C. Example: http://imgur.com/a/FbJg9 (http://imgur.com/a/FbJg9) (the guy didn't released his code, though. :( )
This IC can handle up to 144 individual LEDs or 32 RGB LEDs + 48 not-red LEDs. You would need 2 of them to light all the keys of a typical 60% keyboard with RGB LEDs.Why complicate something simple? You can use a LED driver for that. The IS31FL3731 IC is used by Ergodox Infinity and can be controlled through I2C. Example: http://imgur.com/a/FbJg9 (http://imgur.com/a/FbJg9) (the guy didn't released his code, though. :( )
Correct me if I'm wrong, but the IS3FL3731 can only drive typical LEDs, right? Only RGB LEDs literally composed of three LEDs (like the 5060BRG4 he used) would work, and that'd require 60*3=180 LEDs, too many for the IC.
Hmm, didn't know that- thanks for the help. How should the matrix be wired? Do the differing voltage drops make a difference for constant current drivers?You'll need to look the datasheet for that: http://www.issi.com/WW/pdf/31FL3731.pdf (http://www.issi.com/WW/pdf/31FL3731.pdf)
Care to show us what its going to be? :)
Care to show us what its going to be? :)
Actually, Santa came early =)
A full size board, that is expected to fit a number of Costar cases, both full size and TKL. It supports a range of different regular layouts as well as a bunch of symmetric ones.
(Attachment Link)
It will be controlled by this daughter board.
(Attachment Link)
I haven't had time to test anything yet...
I'd like to implement a Teensy on my board but I am not sure how to handle the USB port. The simplest way would be to do it like on the Ergodox:Well... It works for the ergodox!
(Attachment Link)
But I read that USB data lines have to be routed as a differential pair (http://www.appfruits.com/2015/03/building-your-own-custom-teensy/), so I am not sure whether wiring it like this would be a safe choice or not. Should I expect problems with this way or wiring the USB port?
Well... It works for the ergodox!
Jd40 smallfry has a similar USB header hop
Well... It works for the ergodox!
I was wondering if there had been any reports of problems with the Ergodox's USB connection, but a quick search didn't return anything. So I guess it's good enough indeed!Jd40 smallfry has a similar USB header hop
True, and other prototype boards as well. If the cable is cut and soldered properly, maybe it's not that different from the internal USB cable on many keyboards (here (http://i16.photobucket.com/albums/b16/xBfish/Web%20Content%20Pictures/2_zps01b28eea.jpg) for instance).
Yeah, I'm still debating whether to use a Teensy or implement the atmega chip on the pcb. I'll be making a very thin case (the project is here (https://deskthority.net/workshop-f7/the-slab-65-keyboard-with-wood-case-t12512.html)) but the keyboard will sit at a 7° angle so there will be room for the bulky Teensy+USB cable. The onboard chip would be more elegant and less costly should I build several of them, but I already have a few Teensies on hand and this is my first keyboard PCB so I'd rather go one step at a time.
I don't think the Teensy 2.0 has pads on the bottom of the board for the USB lines, only the 3.x and LC have them (unless I'm mistaken). And as you stated, it might not be the safest choice.
Also, I just saw that Teensies always communicate at Full Speed (12 Mbit/s), so trace impedance and such are no issue in this case. So I'll do it the Ergodox way this time. Thanks for all the answers guys!
it boils down to how much space you need under the PCB from an engineering standpoint. if you have a cavernous amount of space then it doesn't really matter. if your trying to get the thinnest thing possible then that extra 5-6mm the teensy and USB male header takes up becomes an annoyance. i'm dealing with that in a project now for my "build to give back" its not a HUGE deal as my material is thick enough to take the extra pocket i have to cut into account. dont get me wrong the JD40 smallfry PCB is really excellent. i'm only now starting PCB design. daughter boards such as the teensy are handy as it makes PCB creation and assembly easy. but long term a built in ATMega or similar controller would be great. i use the JD40 as an example as ive been studying it as i assemble my build. its always nice to have something in hand to look at.
back to your comment. the teensy seems to have some pad headers underneath it that could possibly be directly soldered onto the PCB eliminating the female USB plug. but its underneath the teensy so soldering it would require a heat gun or a solder re-flow station. also if it was me i'm not sure i'd like that solution as i couldn't be 100% sure i had the pads soldered correctly as it would be covered. making troubleshooting a nightmare.
food for thought.
it boils down to how much space you need under the PCB from an engineering standpoint. if you have a cavernous amount of space then it doesn't really matter. if your trying to get the thinnest thing possible then that extra 5-6mm the teensy and USB male header takes up becomes an annoyance. i'm dealing with that in a project now for my "build to give back" its not a HUGE deal as my material is thick enough to take the extra pocket i have to cut into account. dont get me wrong the JD40 smallfry PCB is really excellent. i'm only now starting PCB design. daughter boards such as the teensy are handy as it makes PCB creation and assembly easy. but long term a built in ATMega or similar controller would be great. i use the JD40 as an example as ive been studying it as i assemble my build. its always nice to have something in hand to look at.
back to your comment. the teensy seems to have some pad headers underneath it that could possibly be directly soldered onto the PCB eliminating the female USB plug. but its underneath the teensy so soldering it would require a heat gun or a solder re-flow station. also if it was me i'm not sure i'd like that solution as i couldn't be 100% sure i had the pads soldered correctly as it would be covered. making troubleshooting a nightmare.
food for thought.
I don't believe the pads on the bottom break out the USB data lines. The Teensy would really be made better for general keyboard use if the USB D+/D- were broken out into pins, eliminating the need for the need for that USB jumper. I suppose you could remove the USB connector and try to solder directly to the 5 little pads at the base of it but that would be pretty fiddly.
At one point I made this thing:Show Image(http://i.imgur.com/4pqEZwkm.jpg)
...which is an ATMEGA32U4 + MCP23018 with that .5 pitch low-profile interconnect. I made a breakout board for it which provided every single ATMEGA IO line, but in the end (even though it worked) I just abandoned it in favor of building everything on the PCB itself.
Twiddle, both here on Geekhack (https://geekhack.org/index.php?topic=62667.msg2039178#msg2039178) and over on DT (https://deskthority.net/workshop-f7/alternative-controller-experiments-t8735-150.html) has some nice alternate controller ideas for the future going.
It really wouldn't take very long to design a quick replacement for the Teensy that could be a lot better for daughterboard cases like the JD40 or original ErgoDox - the problem is who would front the cost of the first production run - and who is going to continue to have them made and hold stock?
Sorry, I got kind of distracted and started rambling.
it boils down to how much space you need under the PCB from an engineering standpoint. if you have a cavernous amount of space then it doesn't really matter. if your trying to get the thinnest thing possible then that extra 5-6mm the teensy and USB male header takes up becomes an annoyance. i'm dealing with that in a project now for my "build to give back" its not a HUGE deal as my material is thick enough to take the extra pocket i have to cut into account. dont get me wrong the JD40 smallfry PCB is really excellent. i'm only now starting PCB design. daughter boards such as the teensy are handy as it makes PCB creation and assembly easy. but long term a built in ATMega or similar controller would be great. i use the JD40 as an example as ive been studying it as i assemble my build. its always nice to have something in hand to look at.
back to your comment. the teensy seems to have some pad headers underneath it that could possibly be directly soldered onto the PCB eliminating the female USB plug. but its underneath the teensy so soldering it would require a heat gun or a solder re-flow station. also if it was me i'm not sure i'd like that solution as i couldn't be 100% sure i had the pads soldered correctly as it would be covered. making troubleshooting a nightmare.
food for thought.
I don't believe the pads on the bottom break out the USB data lines. The Teensy would really be made better for general keyboard use if the USB D+/D- were broken out into pins, eliminating the need for the need for that USB jumper. I suppose you could remove the USB connector and try to solder directly to the 5 little pads at the base of it but that would be pretty fiddly.
At one point I made this thing:Show Image(http://i.imgur.com/4pqEZwkm.jpg)
...which is an ATMEGA32U4 + MCP23018 with that .5 pitch low-profile interconnect. I made a breakout board for it which provided every single ATMEGA IO line, but in the end (even though it worked) I just abandoned it in favor of building everything on the PCB itself.
Twiddle, both here on Geekhack (https://geekhack.org/index.php?topic=62667.msg2039178#msg2039178) and over on DT (https://deskthority.net/workshop-f7/alternative-controller-experiments-t8735-150.html) has some nice alternate controller ideas for the future going.
It really wouldn't take very long to design a quick replacement for the Teensy that could be a lot better for daughterboard cases like the JD40 or original ErgoDox - the problem is who would front the cost of the first production run - and who is going to continue to have them made and hold stock?
Sorry, I got kind of distracted and started rambling.
Does anyone know if/how KiCad/pcbnew supports curved tracks (or curved track corners at least)? Searched, but only saw this on several wishlists, and saw it being discussed about a year ago...It supports.. some kinda curves. The Infinity PCBs use them. However the traces were done by an autorouter, so while the file format might support it, I don't think the KiCAD UI does.
Do I have to stick to 45degs? (or approximate curves manually?) Could I use the circular drawing tool somehow to add these?
@funderburker,
The easiest way is to start with Arduino. There is plenty of tutorials online, for example on youtube. You can buy starter kits for this quite easily.
Several people make tutorials on the same subjects, so if you can't understand something from one tutorial, go to the other.
Some things you need to answer to yourself before you start learning:
1. Do you want to be proficient at it, or make a single project, or get some base knowledge so you can create stuff occasionally?
This describes your engagement, and determines how much time and money you should be investing into it.
It also describes whether you should pay someone to do it, or do it yourself.
You will need tools and materials to solder/desolder stuff, to etch the PCBs, you will need to buy components...
2. People learn differently. I think it's because their brains like to gather knowledge in different ways. You should first look at which mode fits you best:
- read all the books on the subject, memorize everything, think out your project, and only then proceed to create it, or,
- jump head first, making a lot of mistakes, and building the knowledge as you go.
Find out which of these work best for you, and follow it.
In both cases, prepare your education materials! Don't dive into the details straight away. See what exact things you need to learn to reach your aim. Try not to off-topic into other interesting things too much. Stay focused and aim-oriented.
I'd suggest finding a local hackerspace or makerspace (http://makeriga.org/ perhaps?) to get you started, and work in a way where you get your results quickly.
A nice starter project is to get an arduino, and:
- upload a code to it that makes the computer recognize it as a human interface device (HID). There is a ready code for that online, look around.
- wire a switch to it, and program the arduino to send a keypress info to the computer when you click the switch.
And on a final note, if you want to gain proficiency, don't ask. Search.
Why?
First of all, people will most often give you replies you're not ready for. The experienced ones will give you complex answers. The inexperienced ones will give you bad answers.
Second of all, this teaches you how to formulate search queries, what to look for, and how to apply that to your project. You'll be doing a lot of that in the future, even as an experienced EE! Saw Stackoverflow? Seen its popularity? It's not there without a reason!
kicad noob trying to learn more.
is there a Matias/CherryMX universal footprint out there anywhere? if so pleas point me in that direction
Sweeeeeeet. My upcoming project thanks you. (67%)kicad noob trying to learn more.
is there a Matias/CherryMX universal footprint out there anywhere? if so pleas point me in that direction
https://geekhack.org/index.php?topic=48851.msg1240670#msg1240670
CHERRY_ALPS_PLATED should have what you need.
Thank you!! Now to finish working out the mess of tracks...If MOZ says it looks good its good :D
If MOZ says it looks good its good :D
I know people posting the same (hopefully) schematic have asked this question before, but I'm very paranoid about making mistakes as this is my first go at making a PCB. Would someone mind checking this sample of my keyboard matrix schematic and my teensy replacement schematic? Also my first post on geekhack!
(http://i.imgur.com/PbHfnGr.jpg) (http://i.imgur.com/PbHfnGr.jpg)
[...] I can't figure out what type of crystal I should use. Could someone point me to where I could buy the right one/what the footprint of that one is?
Show ImageI know people posting the same (hopefully) schematic have asked this question before, but I'm very paranoid about making mistakes as this is my first go at making a PCB. Would someone mind checking this sample of my keyboard matrix schematic and my teensy replacement schematic? Also my first post on geekhack!
(http://i.imgur.com/PbHfnGr.jpg) (http://i.imgur.com/PbHfnGr.jpg)
(http://i.imgur.com/kva5d4D.jpg) (http://i.imgur.com/kva5d4D.jpg)
[...] I can't figure out what type of crystal I should use. Could someone point me to where I could buy the right one/what the footprint of that one is?
Show ImageI know people posting the same (hopefully) schematic have asked this question before, but I'm very paranoid about making mistakes as this is my first go at making a PCB. Would someone mind checking this sample of my keyboard matrix schematic and my teensy replacement schematic? Also my first post on geekhack!
(http://i.imgur.com/PbHfnGr.jpg) (http://i.imgur.com/PbHfnGr.jpg)
(http://i.imgur.com/kva5d4D.jpg) (http://i.imgur.com/kva5d4D.jpg)
Welcome to geekhack!
Good job. You should connect UGND to ground.[...] I can't figure out what type of crystal I should use. Could someone point me to where I could buy the right one/what the footprint of that one is?
What kind of other components are you using and how much space is there on the board?
Can you afford to use a big THT crystal or is SMD better?
I usually use 2.5x2mm 4-pad SMD crystals, like Epson FA-20H. I can recommend those.
Show ImageI know people posting the same (hopefully) schematic have asked this question before, but I'm very paranoid about making mistakes as this is my first go at making a PCB. Would someone mind checking this sample of my keyboard matrix schematic and my teensy replacement schematic? Also my first post on geekhack!
(http://i.imgur.com/PbHfnGr.jpg) (http://i.imgur.com/PbHfnGr.jpg)
(http://i.imgur.com/kva5d4D.jpg) (http://i.imgur.com/kva5d4D.jpg)
Welcome to geekhack!
Good job. You should connect UGND to ground.[...] I can't figure out what type of crystal I should use. Could someone point me to where I could buy the right one/what the footprint of that one is?
What kind of other components are you using and how much space is there on the board?
Can you afford to use a big THT crystal or is SMD better?
I usually use 2.5x2mm 4-pad SMD crystals, like Epson FA-20H. I can recommend those.
Thanks for the help! I would prefer SMD, so that looks perfect, but I can't seem to find it in stock anywhere with reasonable shipping to the U.S. :/
Show ImageI know people posting the same (hopefully) schematic have asked this question before, but I'm very paranoid about making mistakes as this is my first go at making a PCB. Would someone mind checking this sample of my keyboard matrix schematic and my teensy replacement schematic? Also my first post on geekhack!
(http://i.imgur.com/PbHfnGr.jpg) (http://i.imgur.com/PbHfnGr.jpg)
(http://i.imgur.com/kva5d4D.jpg) (http://i.imgur.com/kva5d4D.jpg)
[...] I can't figure out what type of crystal I should use. Could someone point me to where I could buy the right one/what the footprint of that one is?
We used this for the GHPad
www.digikey.com/product-detail/en/7M-16.000MAAJ-T/887-1125-1-ND/2119014
is there a repo somewhere that outlines a logic controller that would support larger keyboards such as the at90usb1286 that the Teensy 2.0 ++ uses. KiCAD please.Shouldn't be too hard to import this into KiCAD: https://www.pjrc.com/teensy/schematic2pp.gif
even a kicad schematic of a teensy 2++. i'm looking for a default jumping off point for future keyboard designs that have build on logic controllers. thanks :thumb:
is there a repo somewhere that outlines a logic controller that would support larger keyboards such as the at90usb1286 that the Teensy 2.0 ++ uses. KiCAD please.Shouldn't be too hard to import this into KiCAD: https://www.pjrc.com/teensy/schematic2pp.gif
even a kicad schematic of a teensy 2++. i'm looking for a default jumping off point for future keyboard designs that have build on logic controllers. thanks :thumb:
We're actively over at DT working on an ARM based solution that provides about 32 IO pins
Hello! I'm a long time lurker of the GH forums and I recently decided to start a keyboard project. My current implementation includes the following:what is the power draw of all those ws2812b's?
- 68% Cherry MX Keys
- RGB Backlight per Key using WS2812B
- RGB Underglow using WS2812B
- Bluetooth using a Bluefruit EZ Key HID
- Battery Charging Circuit
I was wondering if you guys might take a look at my schematic and point out any errors or trouble I may run into. Thanks for any help!
Here is the schematic: http://imgur.com/a/UNtnN
*Credit to Komar777, Jack Humbert, Adafruit and others for their schematics which mine is based on.
** FB Pin in charging circuit has been fixed and updated with new Imgur
Hello! I'm a long time lurker of the GH forums and I recently decided to start a keyboard project. My current implementation includes the following:what is the power draw of all those ws2812b's?
- 68% Cherry MX Keys
- RGB Backlight per Key using WS2812B
- RGB Underglow using WS2812B
- Bluetooth using a Bluefruit EZ Key HID
- Battery Charging Circuit
I was wondering if you guys might take a look at my schematic and point out any errors or trouble I may run into. Thanks for any help!
Here is the schematic: http://imgur.com/a/UNtnN
*Credit to Komar777, Jack Humbert, Adafruit and others for their schematics which mine is based on.
** FB Pin in charging circuit has been fixed and updated with new Imgur
looking for the slotted through hole mini usb kicad footprint. for some reason i can't find any. any help would be awesome.
UVCC should be connected.
Tapatalk を使用して私の Nexus 5X から送信
I'm pretty sure this is the answer. I'll reply back after I work on it again.
UVCC should be connected.
Do you need an external pullup on D+ with that chip, or is it internal?This IC has an internal selectable pullup. I added a 1.5k pullup on the D+ line just to test. This makes the D+ the correct voltage, but there is still no response from the computer.
If it's internal I'd verify your firmware is actually enabling it, theres usually a register for 'soft connect' or something like that that you should be using.
I'm pretty sure this is the answer. I'll reply back after I work on it again.
I'm back.UVCC should be connected.
UVCC and AVCC are both connected and at 5V. No USB. The D+ line is still 0V.Do you need an external pullup on D+ with that chip, or is it internal?This IC has an internal selectable pullup. I added a 1.5k pullup on the D+ line just to test. This makes the D+ the correct voltage, but there is still no response from the computer.
If it's internal I'd verify your firmware is actually enabling it, theres usually a register for 'soft connect' or something like that that you should be using.
I've been trying to wrap my head around how it'd be simpler, and it still strikes me as more complicated. For example, how do you daisy chain shift registers so you only use 3 pins on the mcu?
For example, how do you daisy chain shift registers so you only use 3 pins on the mcu?
I'm not sure how easily you would route a full 108 keysThe schematic I have in my head groups keys with registers. Say, QWER-TASDF are all wired to one SR positioned somewhere in the middle of the group which is then wired to the main data lines. Then there's TYUI-GHJK group, etc... Shouldn't be too messy as it only requires about 3 global buses.
And it's already been done, by YT =) https://geekhack.org/index.php?topic=67713Great, this is exactly what I was looking for, thanks. Seems like there was a working concept at the very least. Are there any functioning boards built on that PCB?
Holy cow it actually works! Already have things I want to do with the next iteration. I still have a lot to learn, but making something that actually functions is pretty addicting :)
In the photo below, the topmost board is a hand wired prototype, the middle one is a populated and flashed PCB version, and a naked PCB (one of the three I ordered from OSHPark) is on bottom.Show Image(http://uploads.tapatalk-cdn.com/20161028/4080e5c638091ce525a2dc2a633d4eee.jpg)
Sure, for which component? I used the library from the GH60 board, which helped out quite a bit.Holy cow it actually works! Already have things I want to do with the next iteration. I still have a lot to learn, but making something that actually functions is pretty addicting :)
In the photo below, the topmost board is a hand wired prototype, the middle one is a populated and flashed PCB version, and a naked PCB (one of the three I ordered from OSHPark) is on bottom.Show Image(http://uploads.tapatalk-cdn.com/20161028/4080e5c638091ce525a2dc2a633d4eee.jpg)
Hello can you tell me how big are your soldering padsShow Image(http://image.prntscr.com/image/87f3a09f174044bc98bb4553822a236d.png)
Thank you
Sure, for which component? I used the library from the GH60 board, which helped out quite a bit.Holy cow it actually works! Already have things I want to do with the next iteration. I still have a lot to learn, but making something that actually functions is pretty addicting :)
In the photo below, the topmost board is a hand wired prototype, the middle one is a populated and flashed PCB version, and a naked PCB (one of the three I ordered from OSHPark) is on bottom.Show Image(http://uploads.tapatalk-cdn.com/20161028/4080e5c638091ce525a2dc2a633d4eee.jpg)
Hello can you tell me how big are your soldering padsShow Image(http://image.prntscr.com/image/87f3a09f174044bc98bb4553822a236d.png)
Thank you
Having never designed a PCB nor keyboard, could I get a sanity check here? Any input or feedback is appreciated. I think I'm quickly approaching it being ready to send to fabrication.Are VCC and GND pins for P8 Trackpoint connector swapped? CLK and DATA lines should be pulled-up, the capacitor direction is opposit and the RESET pin is active HIGH. So it seems VCC and GND are swapped on P8.
Not even really sure what to ask about. It's a pretty straightforward board that I made complicated by making it split-able, adding built in support for a Trackpoint and lots of SK6812 LEDs.
Main project URL: https://easyeda.com/TyeEasyEDA/Boomerang_Keyboard-a2d4e41a4fbf4da490f883c4b93fd55c (https://easyeda.com/TyeEasyEDA/Boomerang_Keyboard-a2d4e41a4fbf4da490f883c4b93fd55c)
Are VCC and GND pins for P8 Trackpoint connector swapped? CLK and DATA lines should be pulled-up, the capacitor direction is opposit and the RESET pin is active HIGH. So it seems VCC and GND are swapped on P8.Yikes. Yes, those were swapped. Fixed. Thank you!
Yikes. Yes, those were swapped. Fixed. Thank you!Hi, Tye
I do have a few specific questions that I'm still confused about:
1. I am especially uncertain if the resistors are set up correctly connected to the IO Expander on the left half.
2. Are the diodes in the right direction, considering that the board is split?
3. On the Ergodox, I see that most builds recommend that a capacitor is added to the left side at the IO Expander. What pins would I connect that to in this build?
2: Direction of diodes in the key matrix depends on MCU firmware. In your case, you have to read COL value while chaing ROW level. Some people connects diodes to ROW wise if they choose hand wiring. It is easier to connect output line horizontally while most keyboard have straight row of keys.Thank you. So for a PCB split board, I think I'm okay.
3: Decoupling/bypass capacitor should be placed near each VCC pins of ICs. If they has coupled GND pins with VCC pins, place a capacitor near both pins. In genral, 100nF (0.1uF) capacitor is used for such case. It reduces noise on power line or helps to make power line stable. You have dozen of LEDs on the board, so if you tern on many at the same time, the power source would be unstable.Please see other notes/questions below related to this.
- You have 1000uF capacitor on VBUS (5V) line but USB specification recommend capacitance up to 10uF on VBUS line for bus powred devices. They saids if capacitance is quite large, pins on USB connector would be melt by rush current when you connect plug.This seemed weird to me too. It was suggested in a private message that I do this. It is from the suggestions here: https://learn.adafruit.com/adafruit-neopixel-uberguide/power .
- You can prepare additional pattern for spare capacitor on left side which can be soldered if your circuit is not stable enough.I added a empty C4 cap between pins 1 and 11 on the IO expander. I also added a .1uF to help clean the signal. Is this what you mean?
- I have never used SK6812. Its datasheet recommend bypass capacitor on each SK6812 on typical circuit.I will have to look into this more.
Hi! One question. I've looked at the schematics of dhcabinian. What is the sense of having this capacitor near the USB connector? AFAIK a capacitor stabilizes a VCC signal near an IC, but the USB connector is a passive component, why having a capacitor there?It is used to increase response of power line if power source is placed far away from the circuit. The capacitor works like a power tank for the local circuit. It is placed near the connector or near important circuit which consume much power. In general, USB cable is longer than local traces in the circuit, so it is recommended to put near the USB connector.
(https://puu.sh/slTUT/5dac7b640c.png) (https://puu.sh/slTUT/5dac7b640c.png)
It seems EPS32 modules needs 204mA at start up and it does not work with simple USB connection.Alright, but I still don't understand why it has to be placed close to the USB connector? Could be placed anywhere else, no?
Alright, but I still don't understand why it has to be placed close to the USB connector? Could be placed anywhere else, no?
Hey yall.
So I am starting on my first full PCB design.
I was originally going to spend the time and look at putting an atmega 32u4 right on the board but for now, I am just going to design one that uses the teensy LC.
can anyone take a look at my schematic and see if anything looks wrong?
(Attachment Link)
thank you all..
I am basically taking a keycool 84 layout but seperating the function row from the numbers.
1. Well obviously don't populate more than one switch per diode.So it just takes to connect them electrically and populate the matrix as if the secondary key isn't there. Correct?
You can do that matrix style as well.Interesting, but since I have enough pads on my controller, I'll go for indivual connections for the time being.
Or with extra chips, like expanders or shift registers.That's way beyond my electronics knowledge. I'm no engineer but a mere hobbist.
3. It's commonly done the other way around, cathode to controller. I think that is more of historical reasons where chips had greater capacity to sink than source current. The Teensy should have symmetric sink/source capabilities according to the datasheet.By the looks of your statement, I guess it's safe to connect pad to anode then, but I'll follow your suggestion and go for the cathode. It's still unclear to me where to connect the other end of the LED.
4. Totally depends on the current you want. If you are running at 5V and you want the LED to drop 2.2V you need to drop 2.8V over the resistor. After that apply Ohm's law and get the required resistance. With 150Ω you get 2.8V/150Ω=~20mA. That's probably going to be blinding, but within spec for the LED. If you use controller pins with PWM for the LEDs you can adjust the intensity (duty cycle) for them through software. Another reason to use dedicated IO pins for LEDs rather than expansions.Good, because I don't know where to start with expansions. The LEDs I have are rated for 20 mAh and they are going beneath a windowed cap anyway, so I guess I should be safe with that.
There, perhaps that came out in a harsh tone. If so it wasn't on purpose. I like to help =)Actually your tone sounded more like straightforward than harsh and I do appreciate your patience, explainations and the time you're wasting for me.
"If you never ask you won't have any answers"
I would suggest going for a 500-1000Ω resistor. The 20mA is likely the maximum the LED can withstand, and a lower current will give your LEDs better life expectancy. Also, the LED is going to be blinding. For example VE-A went with 1k if I remember correctly. PWM is also an option to make it less blinding, as bpiphany already suggested.4. Totally depends on the current you want. If you are running at 5V and you want the LED to drop 2.2V you need to drop 2.8V over the resistor. After that apply Ohm's law and get the required resistance. With 150Ω you get 2.8V/150Ω=~20mA. That's probably going to be blinding, but within spec for the LED. If you use controller pins with PWM for the LEDs you can adjust the intensity (duty cycle) for them through software. Another reason to use dedicated IO pins for LEDs rather than expansions.Good, because I don't know where to start with expansions. The LEDs I have are rated for 20 mAh and they are going beneath a windowed cap anyway, so I guess I should be safe with that.
I would suggest going for a 500-1000Ω resistor. The 20mA is likely the maximum the LED can withstand, and a lower current will give your LEDs better life expectancy. Also, the LED is going to be blinding. For example VE-A went with 1k if I remember correctly. PWM is also an option to make it less blinding, as bpiphany already suggested.Noted. Much obliged.
The other pin one the LED goes to ground or VCC, depending on the orientation of the LED. Ie. if the anode is connected to the MCU, the cathode is connected to ground, and if the cathode is connected to MCU, you should connect the anode to VCC.I was missing this very difference. Thank you very much.
Do you intend to use Those BKSP and JIS keys toghether? They are in the same row/col and would be mutually exclusive. If they are two different mounting options for the same key you don't need the extra diode, just put the switches in parallel. (Unless, of course, you are using switches with built in diodes.)Yes, I'm splitting the 2u Backspace into two 1u keys (JIS is one), so I'd better be moving BSKP to Row 0:Col 13 then.
The LEDs won't be on while you're scanning the matrix. That is a very small percentage of the time, so that won't matter much.So they basically turn off everytime I press a key? That's gonna be weird.
LEDs and resistors go in series. One end of the resistor connects to one end of the LED. Nothing in between and nothing more connected there.What if I move the LEDs to totally new row? If they are going to, say, Row 6:Col 0, 1 and 2, will I still be experiencing what stated before?
Other than that it may actually work. You'll have a more interesting firmware to write, and you really should test that out in a breadboard or something.
Edit: Actually since you're only using one row for the LEDs anyway. If this works, and I believe it should (test it), you could reuse the Col,4,5,6-pins for the LEDs, and simply connect the cathodes directly to GND. If you were utilizing more parts of the matrix for LEDs you'd need to multiplex them by use of the Row-pins.
The way it would work is you have three states for the Col-pins. When the LED is turned off the pin is tri-stated (removed from the circuit). To turn the LED on you drive the pin high. And when you scan that particular Col-pin you drive it low (which also turns the LED off).
In a matrix like this with more LEDs, using Row-pins for the cathodes, you'd switch the Row-pin from pull-up input to output low to activate the LEDs in that row.
That is not weird. This allows you to share row xor column wires for both key matrix scanning and LED brightness control. The LEDs will be blinking but you are scanning keyboard with frequency of at least 200 Hz (which is on the low side for a matrix scanning). You will not see the blinking no matter how good your eyes are.The LEDs won't be on while you're scanning the matrix. That is a very small percentage of the time, so that won't matter much.So they basically turn off everytime I press a key? That's gonna be weird.
That makes it much better. Thank you fine sir.That is not weird. This allows you to share row xor column wires for both key matrix scanning and LED brightness control. The LEDs will be blinking but you are scanning keyboard with frequency of at least 200 Hz (which is on the low side for a matrix scanning). You will not see the blinking no matter how good your eyes are.The LEDs won't be on while you're scanning the matrix. That is a very small percentage of the time, so that won't matter much.So they basically turn off everytime I press a key? That's gonna be weird.
my current keyboard has a light sensor which adjusts LED brightness based on the illuminance.Witchcraft.
Yeah, move BKSP to Row0.Done.
I would use separate pins for each LED.
We had some thought experiment way back on how to double purpose the matrix for full individual back lighting. Although probably possible, I don't think that led anywhere...Something like this should work. May be the row selection block needs to be a bit more complicated if common 5V tolerant pins are not also tolerant in output mode. My guess is that they are but I'm not sure.
Sure should, but I would move the LEDs to PB5,6,7. Then you will have them on OC1A,B,C which are the compare output pins for timer 1 interrupts. That way you can "effortlessly" PWM them, when you get to that skill level ;)Whoa, amazing. I love that you're saying when rather than if ever.
Where is a good source to get a PCB made in Europe? Like ExpressPCB or EasyEDA.
I would aim to use the same matrix for connecting both switches LEDs if possible. I don't remember which transistors are capable of what and which way around they work... But something like this would perhaps work.
I don't know if the row pins will be pulled low enough with two diode drops. But configured with pull-up resistors they should shut off the transistor and scan the matrix. If they are switched to low outputs they can sink the row of LEDs through the transistor. The diode protects the input pin from the LED current.
The column pins work like before with tri-stating.
I really don't know. I just had the idea =)
(Attachment Link)
one resistor per switch? heavy...
Edit: why is PB4 set to input with its internal pull up resistor disabled in the firmware?
Edit: why is PB4 set to input with its internal pull up resistor disabled in the firmware?
That is how you tri-state a pin. It could have had the pull-up activated, but that would draw some (very small) current for no good reason. The VCC solder jumper is connected per default, and it would be pretty bad to set PB4 as a low output. So staying as far away from that as possible =)
To answer just your last question, the first design I did don't have any LEDs, so I left out the transistor (and everything else of course) to control them. It worked fine :)The confirmation I needed. Thank you.
More questions for you gentlemen.
First, would you please check if my schematic would work?Show Image(http://i.imgur.com/cVKXcBv.png)
Particularly: I've read I need a pull-up resistor on the reset switch and, by looking at the Teensy's schematic, it's placed between ground and PE2 which works as Hardware Bootloader Activator. Will this work or I have to move the resistor to the reset switch directly? The datasheet reads that PE2 (HWB) has an internal pull-up resistor, isn't that enough for the purpose?
Secondly: The AREF pin is, as for the datasheet, the analog reference pin (input) for the A/D Converter. Since I'm very unlikely to do any analog-digital conversion, is it safe to leave it unconnected?
Lastly: the Satan GH60, which is unless I'm wrong a rebrand of the GH60 rev. A, mounts a ME9926 triode transistor that, to my understanding, is used for backlighting. Since I'm not using such feature, am I safe to assume that I can leave it out of the PCB?
Thanks.
Just a note on your decoupling. The VCC pins can all be connected to VCC, but then the caps go to ground. You have all the VCC pins going through a capacitor before going to the voltage rail. Strange stuff may happen with this.Thanks sir, does it look any better now?
Thanks sir, does it look any better now?Show Image(http://i.imgur.com/sg8r8yc.png)
the keyswitch footprint is rotated 90 degrees. Why?To allow the usage of Costar stabilizer. I assume it applies to any vertical key, namely numpad plus and enter.
I have the UCAP go to ground and UVCC and VBUS go to the voltage rail.Like this?
do I understand it right: otherwise, the Costar wire would collide with the keyswitch house? In this area here I marked red... (Attachment Link)I don't have any evidence but I'm pretty much sure that you described the issue perfectly. Also, I believe one can't use in-switch LEDs with Costar stabilizers or, perhaps, 2x3x4mm ones.
I have the UCAP go to ground and UVCC and VBUS go to the voltage rail.Like this?Show Image(http://i.imgur.com/ORaX4bE.png)
Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
Cool. That looks like a fun project. What language are you developing in? How have you found the Gerber format to work with? I was also planning to export a Gerber file. Are you building everything from scratch, or are you using some sort of engine for designing the components and exporting the final files?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
Hi swill and everybody. I'm new to this thread too, and to geekhack and to the mechanical keyboard scene. I'm pretty blown away by all the great stuff going on here. I am working on my own keyboard project and, like you, I have ended up working on software to generate drawings instead of using CAD tools. Your plate builder was definitely an inspiration to me!
I spent some time trying to learn KiCad, but it drove me crazy with its terrible interface. And so much of the layout of a keyboard PCB is just begging for automation, I decided just to learn about the Gerber format and develop some code to generate my PCB artwork directly from keyboard-layout-editor data. I was also inspired by the work at http://pcbmode.com.
For my project, the keyboard controller is not going to be on the same board as the key switch matrix, so that simplifies things quite a bit for me. Also, I have no interest in LEDs, which also simplifies my problem. I am trying to avoid the general trace routing problem altogether by sticking to a simple design with columns on the front and rows on the back. Right now I am basically cloning the TrueFox layout. It's not exactly the layout I want, but it is close, and I can get the keycaps for it, so it's a good start. The obvious matrix would be 16 columns by 5 rows, but that is an inefficient use of 21 GPIO. So the most interesting thing that I think I am doing is using an 8x10 matrix where the columns are sort of folded in half and there are two matrix rows per physical row of keys. Also, I am using copper pours for the rows and columns, which makes it easier to embed a key module without worrying about routing traces.
I have a long way to go, but maybe this image of my work in progress can help explain where I am going with it.
(Attachment Link)
Sorry if that is hard to read. My code is a broken refactoring mess right now and that is the only image I have around to share. This is my first post and I'm a noob with forum software, so I hope the image shows up...
-JR
ok how many layers are you wanting to use?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
So right now I don't have anything, but I do have an idea of the things I will need. I don't have modules built yet for switch and led layouts. I will likely do SMD diodes and resistors (for LEDs, when I support them). Ideally, I would build a standard footprint I use for every switch and use it everywhere. That will make things easier from the dev side. I have not talked to MOZ or Melvang about this yet, but I basically want to use something like a simplified Enabler PCB as the base switch component. I know through hole is less daunting for builders, but I think most people are capable of soldering SMD (I was without much practice). I think it is probably important to support SMD because it makes it easier to automate pick and place of components. If people end up running small group buys based on the output, I think it gets us one step closer to a fully automated process.
The controller is a bit of a different story. I would ideally like to give people options, but I have to start somewhere. The ones that are on my radar would be something like; the SMD footprint for an ATMEGA32U4 (or similar), through hole pin set for the teensy (or similar).
My goal is to help enable builders and people with ideas to make it happen, so I am trying to solve the lowest common denominator with the most value to start with. Then we go from there...
To me, the auto routing is the biggest blind spot for me. I know it is possible, but I also know it is non-trivial, so I have to get comfortable with how I am going to solve that before I get to deep into the weeds on some of the other pieces. With the builder right now, I have the capability to draw vector files (svg+) and I already have the location of all the switches. It would not be hard for me to start with a drill hole output, or even draw essentially the enabler at every switch location and just not route it. Obviously not an end game solution, but it is a start. It gets me to the point of being able to produce something of value. With that as a starting point, I may be able to output as KiCad and people could manually route the pcb.
Anyway, this is longer than I was planning to write. There is a lot of ground I have to cover before I get to an end game solution, but I think there is probably a lot of value in some of the baby steps. :)
ok how many layers are you wanting to use?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
So right now I don't have anything, but I do have an idea of the things I will need. I don't have modules built yet for switch and led layouts. I will likely do SMD diodes and resistors (for LEDs, when I support them). Ideally, I would build a standard footprint I use for every switch and use it everywhere. That will make things easier from the dev side. I have not talked to MOZ or Melvang about this yet, but I basically want to use something like a simplified Enabler PCB as the base switch component. I know through hole is less daunting for builders, but I think most people are capable of soldering SMD (I was without much practice). I think it is probably important to support SMD because it makes it easier to automate pick and place of components. If people end up running small group buys based on the output, I think it gets us one step closer to a fully automated process.
The controller is a bit of a different story. I would ideally like to give people options, but I have to start somewhere. The ones that are on my radar would be something like; the SMD footprint for an ATMEGA32U4 (or similar), through hole pin set for the teensy (or similar).
My goal is to help enable builders and people with ideas to make it happen, so I am trying to solve the lowest common denominator with the most value to start with. Then we go from there...
To me, the auto routing is the biggest blind spot for me. I know it is possible, but I also know it is non-trivial, so I have to get comfortable with how I am going to solve that before I get to deep into the weeds on some of the other pieces. With the builder right now, I have the capability to draw vector files (svg+) and I already have the location of all the switches. It would not be hard for me to start with a drill hole output, or even draw essentially the enabler at every switch location and just not route it. Obviously not an end game solution, but it is a start. It gets me to the point of being able to produce something of value. With that as a starting point, I may be able to output as KiCad and people could manually route the pcb.
Anyway, this is longer than I was planning to write. There is a lot of ground I have to cover before I get to an end game solution, but I think there is probably a lot of value in some of the baby steps. :)
i would make the switch with diodes and everything a module for the switch
the issue i see is the matrix and getting a schematic from the layout and making sure that they are wired correctly in a schematic
ok what cad software are you using for this?ok how many layers are you wanting to use?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
So right now I don't have anything, but I do have an idea of the things I will need. I don't have modules built yet for switch and led layouts. I will likely do SMD diodes and resistors (for LEDs, when I support them). Ideally, I would build a standard footprint I use for every switch and use it everywhere. That will make things easier from the dev side. I have not talked to MOZ or Melvang about this yet, but I basically want to use something like a simplified Enabler PCB as the base switch component. I know through hole is less daunting for builders, but I think most people are capable of soldering SMD (I was without much practice). I think it is probably important to support SMD because it makes it easier to automate pick and place of components. If people end up running small group buys based on the output, I think it gets us one step closer to a fully automated process.
The controller is a bit of a different story. I would ideally like to give people options, but I have to start somewhere. The ones that are on my radar would be something like; the SMD footprint for an ATMEGA32U4 (or similar), through hole pin set for the teensy (or similar).
My goal is to help enable builders and people with ideas to make it happen, so I am trying to solve the lowest common denominator with the most value to start with. Then we go from there...
To me, the auto routing is the biggest blind spot for me. I know it is possible, but I also know it is non-trivial, so I have to get comfortable with how I am going to solve that before I get to deep into the weeds on some of the other pieces. With the builder right now, I have the capability to draw vector files (svg+) and I already have the location of all the switches. It would not be hard for me to start with a drill hole output, or even draw essentially the enabler at every switch location and just not route it. Obviously not an end game solution, but it is a start. It gets me to the point of being able to produce something of value. With that as a starting point, I may be able to output as KiCad and people could manually route the pcb.
Anyway, this is longer than I was planning to write. There is a lot of ground I have to cover before I get to an end game solution, but I think there is probably a lot of value in some of the baby steps. :)
i would make the switch with diodes and everything a module for the switch
the issue i see is the matrix and getting a schematic from the layout and making sure that they are wired correctly in a schematic
Yes. I have to have a way to verify the wiring works as expected.
Right now I am planning to use 2 layers.
Right now, I am not. I have basically built my own cad engine from scratch in Golang because everything I found was bloated and not friendly to be automated.ok what cad software are you using for this?ok how many layers are you wanting to use?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
So right now I don't have anything, but I do have an idea of the things I will need. I don't have modules built yet for switch and led layouts. I will likely do SMD diodes and resistors (for LEDs, when I support them). Ideally, I would build a standard footprint I use for every switch and use it everywhere. That will make things easier from the dev side. I have not talked to MOZ or Melvang about this yet, but I basically want to use something like a simplified Enabler PCB as the base switch component. I know through hole is less daunting for builders, but I think most people are capable of soldering SMD (I was without much practice). I think it is probably important to support SMD because it makes it easier to automate pick and place of components. If people end up running small group buys based on the output, I think it gets us one step closer to a fully automated process.
The controller is a bit of a different story. I would ideally like to give people options, but I have to start somewhere. The ones that are on my radar would be something like; the SMD footprint for an ATMEGA32U4 (or similar), through hole pin set for the teensy (or similar).
My goal is to help enable builders and people with ideas to make it happen, so I am trying to solve the lowest common denominator with the most value to start with. Then we go from there...
To me, the auto routing is the biggest blind spot for me. I know it is possible, but I also know it is non-trivial, so I have to get comfortable with how I am going to solve that before I get to deep into the weeds on some of the other pieces. With the builder right now, I have the capability to draw vector files (svg+) and I already have the location of all the switches. It would not be hard for me to start with a drill hole output, or even draw essentially the enabler at every switch location and just not route it. Obviously not an end game solution, but it is a start. It gets me to the point of being able to produce something of value. With that as a starting point, I may be able to output as KiCad and people could manually route the pcb.
Anyway, this is longer than I was planning to write. There is a lot of ground I have to cover before I get to an end game solution, but I think there is probably a lot of value in some of the baby steps. :)
i would make the switch with diodes and everything a module for the switch
the issue i see is the matrix and getting a schematic from the layout and making sure that they are wired correctly in a schematic
Yes. I have to have a way to verify the wiring works as expected.
Right now I am planning to use 2 layers.
you should take a look at the kicad apiRight now, I am not. I have basically built my own cad engine from scratch in Golang because everything I found was bloated and not friendly to be automated.ok what cad software are you using for this?ok how many layers are you wanting to use?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
So right now I don't have anything, but I do have an idea of the things I will need. I don't have modules built yet for switch and led layouts. I will likely do SMD diodes and resistors (for LEDs, when I support them). Ideally, I would build a standard footprint I use for every switch and use it everywhere. That will make things easier from the dev side. I have not talked to MOZ or Melvang about this yet, but I basically want to use something like a simplified Enabler PCB as the base switch component. I know through hole is less daunting for builders, but I think most people are capable of soldering SMD (I was without much practice). I think it is probably important to support SMD because it makes it easier to automate pick and place of components. If people end up running small group buys based on the output, I think it gets us one step closer to a fully automated process.
The controller is a bit of a different story. I would ideally like to give people options, but I have to start somewhere. The ones that are on my radar would be something like; the SMD footprint for an ATMEGA32U4 (or similar), through hole pin set for the teensy (or similar).
My goal is to help enable builders and people with ideas to make it happen, so I am trying to solve the lowest common denominator with the most value to start with. Then we go from there...
To me, the auto routing is the biggest blind spot for me. I know it is possible, but I also know it is non-trivial, so I have to get comfortable with how I am going to solve that before I get to deep into the weeds on some of the other pieces. With the builder right now, I have the capability to draw vector files (svg+) and I already have the location of all the switches. It would not be hard for me to start with a drill hole output, or even draw essentially the enabler at every switch location and just not route it. Obviously not an end game solution, but it is a start. It gets me to the point of being able to produce something of value. With that as a starting point, I may be able to output as KiCad and people could manually route the pcb.
Anyway, this is longer than I was planning to write. There is a lot of ground I have to cover before I get to an end game solution, but I think there is probably a lot of value in some of the baby steps. :)
i would make the switch with diodes and everything a module for the switch
the issue i see is the matrix and getting a schematic from the layout and making sure that they are wired correctly in a schematic
Yes. I have to have a way to verify the wiring works as expected.
Right now I am planning to use 2 layers.
For the electrical stuff I will probably have to find an engine I can work with. Ideally open source, or at least free, which I can package with my deployments. Do you have suggestions on this front?
Yes. I think that is probably my best bet. Thanks. :)you should take a look at the kicad apiRight now, I am not. I have basically built my own cad engine from scratch in Golang because everything I found was bloated and not friendly to be automated.ok what cad software are you using for this?ok how many layers are you wanting to use?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.ok so what are you going to use as a controller diodes and other components?
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
do you have pcb models for different switch types?
led holes?
So right now I don't have anything, but I do have an idea of the things I will need. I don't have modules built yet for switch and led layouts. I will likely do SMD diodes and resistors (for LEDs, when I support them). Ideally, I would build a standard footprint I use for every switch and use it everywhere. That will make things easier from the dev side. I have not talked to MOZ or Melvang about this yet, but I basically want to use something like a simplified Enabler PCB as the base switch component. I know through hole is less daunting for builders, but I think most people are capable of soldering SMD (I was without much practice). I think it is probably important to support SMD because it makes it easier to automate pick and place of components. If people end up running small group buys based on the output, I think it gets us one step closer to a fully automated process.
The controller is a bit of a different story. I would ideally like to give people options, but I have to start somewhere. The ones that are on my radar would be something like; the SMD footprint for an ATMEGA32U4 (or similar), through hole pin set for the teensy (or similar).
My goal is to help enable builders and people with ideas to make it happen, so I am trying to solve the lowest common denominator with the most value to start with. Then we go from there...
To me, the auto routing is the biggest blind spot for me. I know it is possible, but I also know it is non-trivial, so I have to get comfortable with how I am going to solve that before I get to deep into the weeds on some of the other pieces. With the builder right now, I have the capability to draw vector files (svg+) and I already have the location of all the switches. It would not be hard for me to start with a drill hole output, or even draw essentially the enabler at every switch location and just not route it. Obviously not an end game solution, but it is a start. It gets me to the point of being able to produce something of value. With that as a starting point, I may be able to output as KiCad and people could manually route the pcb.
Anyway, this is longer than I was planning to write. There is a lot of ground I have to cover before I get to an end game solution, but I think there is probably a lot of value in some of the baby steps. :)
i would make the switch with diodes and everything a module for the switch
the issue i see is the matrix and getting a schematic from the layout and making sure that they are wired correctly in a schematic
Yes. I have to have a way to verify the wiring works as expected.
Right now I am planning to use 2 layers.
For the electrical stuff I will probably have to find an engine I can work with. Ideally open source, or at least free, which I can package with my deployments. Do you have suggestions on this front?
Cool. That looks like a fun project. What language are you developing in? How have you found the Gerber format to work with? I was also planning to export a Gerber file. Are you building everything from scratch, or are you using some sort of engine for designing the components and exporting the final files?Hey all. I am new to this thread. I have not touched anything on the electrical side of building keyboards, and have only built boards based on PCBs designed by others.
I am the developer behind http://builder.swillkb.com (http://builder.swillkb.com). Ironically, I started it because I was not confident in my cad skills and thought I should automate the plate layout. Now it does quite a bit more than I was expecting when I started, but I have always had the pipe dream of being able to produce a PCB that goes with the layout specified.
The biggest hurdle I think I am going to have with this is the auto routing for the pcb. I am only just starting to look into what I would need to do to even get something primitive built.
So my question is. What algorithms should I be researching, and what auto routing systems are best suited to designing keyboards. I know the following exist, but not much beyond that.
Maze router,
Line probe router,
Channel router,
Area routers,
Switchbox routing
Given my current skill level, I will probably have to spend a couple months just learning stuff. I would not expect to actually have anything written for about 6 months and really, who knows at that point.
If anyone has resources you can share that you think would be required reading for me, please share a link. If you have ideas or suggestions, please let me know as well.
Thanks for the help everyone. Happy new year. If you have not checked out the builder recently, you guys may be interested in the new custom polygon features I finally finished adding to the builder over the holidays.
Hi swill and everybody. I'm new to this thread too, and to geekhack and to the mechanical keyboard scene. I'm pretty blown away by all the great stuff going on here. I am working on my own keyboard project and, like you, I have ended up working on software to generate drawings instead of using CAD tools. Your plate builder was definitely an inspiration to me!
I spent some time trying to learn KiCad, but it drove me crazy with its terrible interface. And so much of the layout of a keyboard PCB is just begging for automation, I decided just to learn about the Gerber format and develop some code to generate my PCB artwork directly from keyboard-layout-editor data. I was also inspired by the work at http://pcbmode.com.
For my project, the keyboard controller is not going to be on the same board as the key switch matrix, so that simplifies things quite a bit for me. Also, I have no interest in LEDs, which also simplifies my problem. I am trying to avoid the general trace routing problem altogether by sticking to a simple design with columns on the front and rows on the back. Right now I am basically cloning the TrueFox layout. It's not exactly the layout I want, but it is close, and I can get the keycaps for it, so it's a good start. The obvious matrix would be 16 columns by 5 rows, but that is an inefficient use of 21 GPIO. So the most interesting thing that I think I am doing is using an 8x10 matrix where the columns are sort of folded in half and there are two matrix rows per physical row of keys. Also, I am using copper pours for the rows and columns, which makes it easier to embed a key module without worrying about routing traces.
I have a long way to go, but maybe this image of my work in progress can help explain where I am going with it.
(Attachment Link)
Sorry if that is hard to read. My code is a broken refactoring mess right now and that is the only image I have around to share. This is my first post and I'm a noob with forum software, so I hope the image shows up...
-JR
Cool. That looks like a fun project. What language are you developing in? How have you found the Gerber format to work with? I was also planning to export a Gerber file. Are you building everything from scratch, or are you using some sort of engine for designing the components and exporting the final files?
I am working in Python and I'm writing everything from scratch. I don't know of any libraries for building circuits with code, other than the scripting interfaces for things like Eagle and KiCad, and I decided I didn't want to get tangled up with those. After I get the key switch PCB finished, I will have to decide what to do about my controller board. Will my code be functional enough to use for that? I plan to prototype a controller on a breadboard first, so maybe I will try Fritzing for that board.
Gerber has been enjoyable. I am not writing any Gerber output yet, but I am building all of my internal data structures based on the Gerber file structure, so I expect the final output to be a simple process. The format has some entertaining terminology quirks because of its history as a CAM format for old photo plotters, but basically it is a simple vector graphics drawing format. The documentation is very good I think.
If you can output the center point of each switch that would make placing the switches and other components a lot easier as kicads placement allows for direct input of the XY location value of each component. I always do it the harder way and get a spreadsheet going and math and 19.05+19.05 and 19.05/4 ugh brain hurts just thinking about it.Cool. That looks like a fun project. What language are you developing in? How have you found the Gerber format to work with? I was also planning to export a Gerber file. Are you building everything from scratch, or are you using some sort of engine for designing the components and exporting the final files?
I am working in Python and I'm writing everything from scratch. I don't know of any libraries for building circuits with code, other than the scripting interfaces for things like Eagle and KiCad, and I decided I didn't want to get tangled up with those. After I get the key switch PCB finished, I will have to decide what to do about my controller board. Will my code be functional enough to use for that? I plan to prototype a controller on a breadboard first, so maybe I will try Fritzing for that board.
Gerber has been enjoyable. I am not writing any Gerber output yet, but I am building all of my internal data structures based on the Gerber file structure, so I expect the final output to be a simple process. The format has some entertaining terminology quirks because of its history as a CAM format for old photo plotters, but basically it is a simple vector graphics drawing format. The documentation is very good I think.
I did the original builder (https://github.com/swill/kb_builder) in Python (and FreeCAD), and I got sick of dealing with the crap of a cad software, so I just started from scratch in Golang.
I was chatting with some guys on the kicad IRC, and they basically recommended that I just output to whatever file format I want and skip kicad all together if I want to automate anything. I had a look at the kicad "api" and its not really an API. It is basically a swig wrapper around the C++ code, so that's not really a good option for me. I could embed the C++ code directly into golang, but I think I am probably going to start by just building from scratch.
My code already works natively with the svg format and I have a pretty good set of polygon features now too. I think I will start by doing svg to Gerber. I see that pcbmode already has that feature, so I can probably understand the conversion from that. Thanks for the link.
This is going to be an interesting project.
BTW, I like your idea for the 8x10 matrix, that's a good idea. Not doing a controller on the board is smart to start with to reduce complexity. Are you just going to do something like a teensy header pin layout in through hole?
I like your project and approach. I think our projects have a lot in common. :)
I've been reading fellow users' schematics and it looks like that AREF actually requires a 0.1µF capacitor.
Other than that, a resistor is provided to the reset pin, no matter if the HWB has one on its own already.
If both statements are true, I should be good with the following schematic.
Can anyone confirm?
TIA.
I am working in Python and I'm writing everything from scratch. I don't know of any libraries for building circuits with code, other than the scripting interfaces for things like Eagle and KiCad, and I decided I didn't want to get tangled up with those. After I get the key switch PCB finished, I will have to decide what to do about my controller board. Will my code be functional enough to use for that? I plan to prototype a controller on a breadboard first, so maybe I will try Fritzing for that board.
Gerber has been enjoyable. I am not writing any Gerber output yet, but I am building all of my internal data structures based on the Gerber file structure, so I expect the final output to be a simple process. The format has some entertaining terminology quirks because of its history as a CAM format for old photo plotters, but basically it is a simple vector graphics drawing format. The documentation is very good I think.
I did the original builder (https://github.com/swill/kb_builder) in Python (and FreeCAD), and I got sick of dealing with the crap of a cad software, so I just started from scratch in Golang.
I was chatting with some guys on the kicad IRC, and they basically recommended that I just output to whatever file format I want and skip kicad all together if I want to automate anything. I had a look at the kicad "api" and its not really an API. It is basically a swig wrapper around the C++ code, so that's not really a good option for me. I could embed the C++ code directly into golang, but I think I am probably going to start by just building from scratch.
My code already works natively with the svg format and I have a pretty good set of polygon features now too. I think I will start by doing svg to Gerber. I see that pcbmode already has that feature, so I can probably understand the conversion from that. Thanks for the link.
This is going to be an interesting project.
BTW, I like your idea for the 8x10 matrix, that's a good idea. Not doing a controller on the board is smart to start with to reduce complexity. Are you just going to do something like a teensy header pin layout in through hole?
I like your project and approach. I think our projects have a lot in common. :)
The capacitor on AREF is optional. If you're not going to do any analog sensing you really don't need it. It doesn't hurt in any way to put it there either. Just leave the pin floating (unconnected) if you don't put a capacitor there.Noted. I'm inclined towards leaving it floating then.
The HWB pin decides what happens when the chip is reset. If it is tied to GND the bootloader starts, if high execution of the firmware starts. It however is a bit dangerous connecting an IO-pin directly to one of the power rails, hence you use a resistor in series. This resistor has got nothing to do with the one on the reset pin. HWB is pretty much just another IO-pin along the rest.That makes sense, thanks. Although, out of sheer curiosity, what do you mean by "bit dangerous"? Would the absence of a resistor fry the IC?
The resistor on the reset pin is a pull-up resistor. It ensures that reset is tied to VCC (much the same way as HWB to GND), but in this case you also have a switch to short the pin out directly to GND. You actually don't need that resistor either as there is an internal pull-up resistor on the reset pin (as well as all other IO-pins).Is the internal pull-up resistor strong enough for this purpose? I've read they are a bit weak and I would certainly better be safe than sorry and put an external resitor.
Also, I don't know if it has been mentioned, but the value for the capacitor on the crystal depends on the specific crystal you use. You need to figure out the correct value, and then see if it works. Which it probably will, but if not some experimentation may be needed. I wouldn't worry much about it not working though, it probably will.I'm using a 16MHz crystal with two 10pF electrolytic capacitors because it's the same setup of the Teensy 2.0. I know nothing of crystals, I don't know wheter to choose one or another, nor how to calculate the capacitors' values for it. If you could suggest some reading about it, I would appreciate it.
I'm using a 16MHz crystal with two 10pF electrolytic capacitors because it's the same setup of the Teensy 2.0. I know nothing of crystals, I don't know wheter to choose one or another, nor how to calculate the capacitors' values for it. If you could suggest some reading about it, I would appreciate it.Here (http://www.st.com/content/ccc/resource/technical/document/application_note/c6/eb/5e/11/e3/69/43/eb/CD00221665.pdf/files/CD00221665.pdf/jcr:content/translations/en.CD00221665.pdf) is an example what everything should be considered to have your crystal just right. Unfortunately it is not for ATmega32u4 but the approach is the same and maybe you can find an application note for ATmega32u4 too. If you find it then post it here :)
The HWB pin decides what happens when the chip is reset. If it is tied to GND the bootloader starts, if high execution of the firmware starts. It however is a bit dangerous connecting an IO-pin directly to one of the power rails, hence you use a resistor in series. This resistor has got nothing to do with the one on the reset pin. HWB is pretty much just another IO-pin along the rest.That makes sense, thanks. Although, out of sheer curiosity, what do you mean by "bit dangerous"? Would the absence of a resistor fry the IC?
The resistor on the reset pin is a pull-up resistor. It ensures that reset is tied to VCC (much the same way as HWB to GND), but in this case you also have a switch to short the pin out directly to GND. You actually don't need that resistor either as there is an internal pull-up resistor on the reset pin (as well as all other IO-pins).Is the internal pull-up resistor strong enough for this purpose? I've read they are a bit weak and I would certainly better be safe than sorry and put an external resitor.
Here (http://www.st.com/content/ccc/resource/technical/document/application_note/c6/eb/5e/11/e3/69/43/eb/CD00221665.pdf/files/CD00221665.pdf/jcr:content/translations/en.CD00221665.pdf) is an example what everything should be considered to have your crystal just right.
I've found this design guide (https://www.google.se/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0ahUKEwiQ6OarrKjRAhWHDiwKHSLGBPgQFgglMAI&url=http%3A%2F%2Fwww.atmel.com%2Fimages%2Fatmel-2521-avr-hardware-design-considerations_applicationnote_avr042.pdf&usg=AFQjCNGve3LdduPw0u8S-eeZIAlw1ISV9A&sig2=IbCGP51m3unTYj6FlDvUqA) for Atmel. Section 5 is about crystals.Thanks both for the links.
There are many 16 MHz crystals and they required different capacitors and some of them also an resistor when paired with a particular MCU. If you do not have the parts for your crystal right then it will probably work but may have imprecise frequency or the crystal may fail sooner (if you e.g. overdrive it).Would you recommend any to buy?
Got it. Thanks.It could if you accidentally drive the pin as an output opposite to the level which it is connected to. As an input there is virtually no current flowing through the resistor and the pin sees the voltage level on the other side of the resistor anyway.The HWB pin decides what happens when the chip is reset. If it is tied to GND the bootloader starts, if high execution of the firmware starts. It however is a bit dangerous connecting an IO-pin directly to one of the power rails, hence you use a resistor in series. This resistor has got nothing to do with the one on the reset pin. HWB is pretty much just another IO-pin along the rest.That makes sense, thanks. Although, out of sheer curiosity, what do you mean by "bit dangerous"? Would the absence of a resistor fry the IC?
I'll leave the resistor out then.The resistor on the reset pin is a pull-up resistor. It ensures that reset is tied to VCC (much the same way as HWB to GND), but in this case you also have a switch to short the pin out directly to GND. You actually don't need that resistor either as there is an internal pull-up resistor on the reset pin (as well as all other IO-pins).Is the internal pull-up resistor strong enough for this purpose? I've read they are a bit weak and I would certainly better be safe than sorry and put an external resitor.
I've never used any extra pull-up for the reset. The Teensies don't either, and I've never heard of anyone having troubles with it. You're probably more probable to screw it up by connecting extra stuff (which i have seen), rather than just using it as it was intended to.
Haha, yeah it sounds like both of us would rather spend six months writing our own software than six weeks learning to use ugly software. No offense to any KiCad fans out there, but, ugh.
My project isn't actually a PC keyboard. I am making an all-in-one style computer around Raspberry Pi. So under the keyboard, I'll have the RasPi "motherboard" plus a secondary interface board that will have the keyboard controller as well as some additional interface circuitry, like joystick connectors and maybe a secondary SD card slot. I'm going for an old school home computer type unit of the 80's. So the keyboard PCB itself will just have a header connector for connecting to the interface board. I am making everything through-hole for easy soldering and because I want it to be something you can open up and look at and understand and tinker with. So, kinda retro. I think I will be able to use a 28 pin DIP ATmega328P for the controller. Basically an Arduino. It will talk to the RaspPi over I2C or SPI.
To be on the cautious side you can keep the resistor footprint, and just not populate it. Then you have the option to add a resistor if you run into trouble.Great idea. I guess I need some sort of jumping wire or 0 Ohm resistor in this case, don't I?
To be on the cautious side you can keep the resistor footprint, and just not populate it. Then you have the option to add a resistor if you run into trouble.Great idea. I guess I need some sort of jumping wire or 0 Ohm resistor in this case, don't I?
Would you recommend any to buy?Sorry I do not. I'm not using ATmega in my keyboards.
No, that would be really bad =D Ask yourself; What would happen if I close that reset switch with a jumper in place of the resistor?.. Just leave it empty.Right. It feels like sometimes I don't think.
I'm not using ATmega in my keyboards.Do you mind if I ask what do you use then? I was wondering about alternative controllers.
One board to rule them all, routed and ready for any occasion ;)
https://geekhack.org/index.php?topic=38414.msg757373#msg757373
What do you thing does it look good? I am planning on etching this PCB by myself with UV process ;D
https://github.com/ruiqimao/keyboard-pcb-guide#setting-upIt is indeed, but I have a question about a specific part of this tutorial.
A guy on r/MK did this and it is really nice. https://www.reddit.com/r/MechanicalKeyboards/comments/5nzpd2/guide_how_to_make_your_own_keyboard_pcb/
...receive the current before the capacitor making the decoupling effect minimal or non existant at all.
So would you recommend connecting all the power pins to each other? Underneath the IC maybe?...receive the current before the capacitor making the decoupling effect minimal or non existant at all.
Nah, that doesn't matter. I think you should see the pin as sitting at a certain voltage level. When the pin consumes charge the voltage drops if there is not enough supply coming through. All traces have some impedance (stopping power to currents/current changes). Long traces more so than short traces. To make sure the voltage on the pins doesn't drop when it eats away on those electrons (especially in high spree short bursts) you want a nice buffer real close by, within grabbing distance. If the electron passes by you on their way into the buffer or not doesn't really matter, it just needs to be close.
Hi everyone,
I'm looking at getting some feedback on my PCB and schematic design that I've been working on. The PCB was laid out by using http://keyboard-layout-editor.com (http://keyboard-layout-editor.com) and http://kalerator.clueboard.co/ (http://kalerator.clueboard.co/).
I had submitted my schematic on the site a week or so ago for some feedback and have made some adjustments based on the feedback I had gotten. I've attached images of the schematic and PCB at the bottom of the post.
I ended up modifying the AlpsCherry library for Eagle that I grabbed off of GitHub to have SMD LED's instead of the through hole ones that were there by default. I was looking at using these LEDs: link (http://www.digikey.com/product-detail/en/lite-on-inc/LTST-C191KRKT/160-1447-1-ND/386836)
Are those typically the surface mount LEDs that people use, or am I looking at the wrong ones? I'm looking at just having a single color on the board at this time.
I'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout and how I should go about connecting the LEDs to the board. I currently have 3 i/o pins that are not being used on the board. I was thinking about using one of the i/o pins to control the LED's with the use of a switching FET, but wasn't sure if that was the right approach.
SchematicShow Image(http://i.imgur.com/ivkjg2W.png)
Microcontroller on PCBShow Image(http://i.imgur.com/1VaFdz2.png)
Full PCBShow Image(http://i.imgur.com/1qJQK3U.png)
What do you thing does it look good? I am planning on etching this PCB by myself with UV process ;D
It looks alright, it looks auto-routed.. You could clean up a few wacky vias around the Teensy. With a little bit of effort you could probably straighten a few more things out by re-arranging some more. But on the other hand it will surely work, and time can be spent better =) If you etch at home you may want to increase the trace widths to add some extra margin.
If you're not etching a double sided board you may also want to try to move more of the traces to the same side. I would put all traces around the Teensy on the bottom. Otherwise it will be hard to solder (on a single sided board).The long straight horizontal traces would be easily made from jumper wires, if on the back.. I can't say straight that it's feasible to "reverse" the layers like this, that would take some more experimenting.Silly me, jumpers can of course be placed anywhere =P Also drilling PCB laminates is a b****, and you need to be very accurate for the switches to sit straight. And you need really good alignment if you're doing a double sided board. But hey you'll be really pleased with yourself once you finish =D
To save etchant you can also add copper fills, just make sure they are connected to something (GND preferably) and not floating free. That probably wouldn't impede functionality much in this case, but it's considered bad practice..
I'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout
Quote from: krownedk1ngI'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout
You probably want to increase the GND zone clearance. It may be just fine, but it looks really tight, especially since you've used a lot more clearance for everything else.
Where are your decoupling capacitors? They should be right up as close as possible to the 5V pins, one per pin preferably.
Those traces are NSFW ugh.Quote from: krownedk1ngI'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout
You probably want to increase the GND zone clearance. It may be just fine, but it looks really tight, especially since you've used a lot more clearance for everything else.
Where are your decoupling capacitors? They should be right up as close as possible to the 5V pins, one per pin preferably.
I had them connected near the USB port before the 0.5A fuse. I changed up my schematic to have them now be located after the fuse.
New IC layoutMoreShow Image(http://i.imgur.com/G5wVZaN.png)
I also set the GND plane isolation to 0.012" [initially set at .005"]
Let me know what you think.
Those traces are NSFW ugh.Quote from: krownedk1ngI'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout
You probably want to increase the GND zone clearance. It may be just fine, but it looks really tight, especially since you've used a lot more clearance for everything else.
Where are your decoupling capacitors? They should be right up as close as possible to the 5V pins, one per pin preferably.
I had them connected near the USB port before the 0.5A fuse. I changed up my schematic to have them now be located after the fuse.
New IC layoutMoreShow Image(http://i.imgur.com/G5wVZaN.png)
I also set the GND plane isolation to 0.012" [initially set at .005"]
Let me know what you think.
sent from my chess board
I was trying to say the looked really good and neat. Ignore meThose traces are NSFW ugh.Quote from: krownedk1ngI'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout
You probably want to increase the GND zone clearance. It may be just fine, but it looks really tight, especially since you've used a lot more clearance for everything else.
Where are your decoupling capacitors? They should be right up as close as possible to the 5V pins, one per pin preferably.
I had them connected near the USB port before the 0.5A fuse. I changed up my schematic to have them now be located after the fuse.
New IC layoutMoreShow Image(http://i.imgur.com/G5wVZaN.png)
I also set the GND plane isolation to 0.012" [initially set at .005"]
Let me know what you think.
sent from my chess board
Anything in particular that doesn't look right with the traces?
I was trying to say the looked really good and neat. Ignore meThose traces are NSFW ugh.Quote from: krownedk1ngI'd appreciate it if someone could give me feedback on if I should adjust anything on the PCB layout
You probably want to increase the GND zone clearance. It may be just fine, but it looks really tight, especially since you've used a lot more clearance for everything else.
Where are your decoupling capacitors? They should be right up as close as possible to the 5V pins, one per pin preferably.
I had them connected near the USB port before the 0.5A fuse. I changed up my schematic to have them now be located after the fuse.
New IC layoutMoreShow Image(http://i.imgur.com/G5wVZaN.png)
I also set the GND plane isolation to 0.012" [initially set at .005"]
Let me know what you think.
sent from my chess board
Anything in particular that doesn't look right with the traces?
sent from my chess board
If I want to use a Teensy 2.0 instead of a SMD, how would I connect a mini USB on my PCB to a Teensy 2.0?Predispose a USB connector and a header with 5 pads on your PCB, cut a USB mini cable on the type-A end and solder it to the header, finally connect the Mini-B end to the Teensy.
I apologize if this is a really stupid question, but I've been searching for a couple weeks and haven't found an answer. This is the biggest thing holding me back from a custom PCB design.You may want to ask u/wootpatoot on Reddit, he made a PCB with a TRRS jack. He could probably give you a footprint.
Is there a good KiCad footprint somewhere for a TRRS jack (and a corresponding part number to make sure I get the right one)?
Are there USB C 3.1 through hole KiCad footprints that work with something like this (http://www.digikey.com/product-detail/en/mill-max-manufacturing-corp/898-43-024-90-310000/ED1391CT-ND/5213140)?Like this (https://github.com/manisteinn/usb-type-c-kicad-lib)?
I already downloaded that, they're SMD, not through hole. Thank you anyway.Are there USB C 3.1 through hole KiCad footprints that work with something like this (http://www.digikey.com/product-detail/en/mill-max-manufacturing-corp/898-43-024-90-310000/ED1391CT-ND/5213140)?Like this (https://github.com/manisteinn/usb-type-c-kicad-lib)?
Does anyone current links for Kicad to the MX switch and the teensy 2.0 boards? I've downloaded a couple of libs and mods files most of them 2-3 years old and haven't had much luck making it from the Eeschema to PCBnew in Kicad. Its highly likely I'm doing something wrong, but I'd like to at least verify that I have the right/current parts installed to tinker on this software.On Reddit, search up The Keebrary.
I have a silly question but I rather be safe than sorry.
What's the correct wiring sequence?
MCU - Crystal - Capacitors or MCU - Capacitors - Crystal?
There's no reference design for the MCU in question?The MCU is our earnest friend ATMega32u4, I have seen different approaches for this, even forking the trace from the MCU pins equally to crystal and capacitors, yet I'm unsure about the correct way to do it, if it even matters.
I usually follow the schematic, putting caps after the crystal.That was my same thought, although the design guides then states the following:
The load XTAL-IN capacitor should be placed first and closest to the XTAL-IN pin and groundI guess I'll do this way and cross my fingers.
What thickness of copper should I get for my PCB? Is there an advantage to get 3 ounces over 1 ounce?
I am unsure of how to go about connecting the shield.
For the USB shield there seem to be as many different recommendations as there are possible ways to combine resistor/capacitor/inductor networks or directly tie it to GND or floating. It's hard to tell what to use when/where/why.
Hi and welcome back,I am unsure of how to go about connecting the shield.For the USB shield there seem to be as many different recommendations as there are possible ways to combine resistor/capacitor/inductor networks or directly tie it to GND or floating. It's hard to tell what to use when/where/why.
Also, your EasyEDA link is broken, it points to their logo.
Will this work for the ATMEGA32U4 instead of using Capacitors and a crystal.You do need capacitors for either crystal and ceramic resonator. Read this (http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf) from chapter 6.2 on.
Also, what fuses should I use for USB 2.0?Check the previous link at chapter 28.2. There's no fuse bits to set for USB (as far as I can read).
What if I use a ceramic resonator with capacitors built in?That could work, yet many prefer using crystals over ceramic resonators for the latter tend to be less precise. I'm not really an expert in that regard, so I just follow general recommendations.
Is this right?I'm not sure if the pull-up on the reset pin is necessary, though even should it be so it won't break anything.
Will this work for the ATMEGA32U4 instead of using Capacitors and a crystal. https://www.digikey.com/product-detail/en/murata-electronics-north-america/CSTCE16M0V13L99-R0/490-7851-1-ND/4380182That might work, though it is difficult for me to see the point of it. Crystal and two caps will cost less and has been proven to work well with the µC you have chosen.
Also, does anyone know if the datasheet has the PCB footprint drawing flipped or flipped and rotated? Also, are the pins shorted?
Can I use a surface mount Atmega32U4 in lieu of a Teensy 2.0 in a custom design I'm working on?You can surely do, but the MCU alone won't suffice. You can read the whole thread (trust me, it won't take much) to see how other users accomplished that. Also, the datasheet (http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf) is your friend.
Which Atmega should I use?Either ATMega32u4 and AT90USB1286 (found on Teensy++ 2.0) are supported by TMK.
Do I need to get anything else?A SPI programmer (http://www.fischl.de/usbasp/) helps for most MCUs are blank and you need to flash the bootloader yourself. Some come already flashed but, the ones I found, they cost unreasonably more.
Will it retain all the important functionality of the Teensy 2.0., e.g. compatibility with TMK or QMK (I don't know the difference between these) firmware?Not quite. You won't be able to use the TeensyLoader because the HalfKey bootloader is proprietary and not public. However, Grendel (https://deskthority.net/workshop-f7/bootloaders-t7608.html#p153776) wrote a bootloader compatible with the TeensyLoader, you can ask him for the source.
is this the same chip as is on the Teensy 2.0: https://www.digikey.com/product-detail/en/microchip-technology/ATMEGA32U4-AUR/ATMEGA32U4-AURCT-ND/3440960Same chip, different form factor. The pins on the MU variant (https://cdn.sos.sk/productdata/11/91/69/119169/Zbo_119169.jpg) (the one found on the Teensy) are only exposed on the bottom side of the chip. The pins on the AU variant (https://cdn.sparkfun.com//assets/parts/6/7/0/1/11181-02.jpg) (the one you linked) are accessible from the sides which takes a bit more room but they are definitely easier to solder.
Can I use a surface mount Atmega32U4 in lieu of a Teensy 2.0 in a custom design I'm working on?You can surely do, but the MCU alone won't suffice. You can read the whole thread (trust me, it won't take much) to see how other users accomplished that. Also, the datasheet (http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf) is your friend
I'm having trouble understanding what else I need. There are a lot of surface mount components that I don't understand the purpose of on the Teensy. The basic idea here, I guess, is to replicate a (the necessary parts of) a Teensy on the PCB.Sure, replicating the Teensy is a good way to start. Its schematic (https://www.pjrc.com/teensy/schematic2.gif) will greatly help you in the process.
I am reading this thread, and researching stuff on my own, but I could definitely use direction, and would greatly appreciate it. I'm working on this on my own of course, but I'm nonetheless flailing about. I've never done this before.Here are two ([1] (https://easyeda.com/feather/32u4_Breakout_Board-kR31nl5Oa) [2] (https://easyeda.com/Selina/Atmega32U4_Breakout_Board-pX975E0YW)) ATMega32u4 breakout boards that you can examine to get an idea.
So, supposing I use the surface mount atmega, I need to put a bootloader on it and program it. What software can I use to program it?avrdude (http://www.nongnu.org/avrdude/) to flash the bootloader, then, depending on the bootloader you choose, there's a number of different softwares for flashing firmwares, namely FLIP (http://www.atmel.com/tools/flip.aspx) and dfu-programmer (https://dfu-programmer.github.io/).
I'm having trouble understanding what else I need. There are a lot of surface mount components that I don't understand the purpose of on the Teensy. The basic idea here, I guess, is to replicate a (the necessary parts of) a Teensy on the PCB.Sure, replicating the Teensy is a good way to start. Its schematic (https://www.pjrc.com/teensy/schematic2.gif) will greatly help you in the process.
Okay, but is it the best approach? Is there a simple approach?There's no absolute best or simple approach. There are best and simple approaches to different situations. It really depends on your layout.
Slapping an Atmega 32u4 on a PCB and wiring rows and columns to it won't just work, right?Right.
So what other components does it need to function and where do they go?The datasheet will tell you everything you need to know but, since most users have already gone through that and PCB design, you'll find most of those informations spread out in this thread (and others).
what are the functions of the components? What do I need to include and what do I not need to include?Different componets do different things. Capacitors, for example, store energy for the MCU. You need to include what the datasheet suggests. Again, call me pedantic, but sticking to the design rules is enough to start with.
Let's say I've figured the above out. Supposing I've attached a USB connector and plugged it into my computer, what would happen? Naturally having done no programming to the microcontroller I don't expect my computer to realize I've plugged a keyboard in and have everything work. So what do I need to do at this point? My presumption is install the bootloader first. This is accomplished with AVRdude, but apparently bootloader choice effects things? Which bootloader should I choose?Correct. Nothing will happen because the MCU is blank. Without firmware and bootloader, your board is a nice paperweight. So, you start flashing a bootloader and the choise in that case is yours. There are many and most are listed here (https://deskthority.net/workshop-f7/bootloaders-t7608.html). This guide (https://deskthority.net/wiki/Flashing_bootloaders_on_AVR) will explain you how to flash.
Now that I've flashed the bootloader onto the MC, I have to actually program it. I'd probably do this with FLIP. I've tried to use dfu-programmer before and could make zero sense out of it. But god knows I'll probably have the same luck with FLIP. Anyway, I generate a QMK or TMK firmware on a layout editor, i.e. produce the .hex file, and program it.Correct.
Where does Grendel come in? Is his bootloader necessary?No, any other bootloader will do just fine. It was a mere example.
I think 'R' means reel package instead of tray. They also come with bootloader probably.
I'm now thinking about using the ATMEGA32U2, is this right? It says to connect AVCC to VCC through a low-pass filter, but I think I got it wrong. Could someone check this?
Also, what type of header should I use for the 6 pin ISPAVR breakout? Should I connect the RST pin to the header before the pullup resistor or before the pullup resistor?
Maybe the bootloader comes only with ATmega and not with ATxmega.All the ATMegas I got so far came in blank. I guess it up to the vendor.
Parts using external XTAL clock are pre-programed with a default USB bootloader
Didn't we have this discussion recently?.. From the 32U4 datasheetI'll take this one for good then. I must have missed something.QuoteParts using external XTAL clock are pre-programed with a default USB bootloader
The 500 or so AVRs I've ordered surely came with one. Except the RC ones I had to get when the world was out of the regular...
For a keyboard do I need the analog comparators? So, I put a cap on each VCC, and then connect all three of them before the cap? I know I don't need a pull up on reset, but can't the MCU reset by accident a few times without it? I'm just wondering what is the ISP header for? Also, should I connect the shield to the ground, or should I just not connect the shield?I think 'R' means reel package instead of tray. They also come with bootloader probably.
My mistake, it's RC they are called, ATmega32U4RC-AU rather than just ATmega32U4-AU. The suffix -AU is for TQFP, -MU is for QFN. The RC variants have the fuse set from factory to use the internal oscillator. They can be changed back to use an external crystal, but then you need to flash a bootloader (if you want one).I'm now thinking about using the ATMEGA32U2, is this right? It says to connect AVCC to VCC through a low-pass filter, but I think I got it wrong. Could someone check this?
Also, what type of header should I use for the 6 pin ISPAVR breakout? Should I connect the RST pin to the header before the pullup resistor or before the pullup resistor?
If you aren't going to use the analog comparators you can just connect AVCC straight to VCC. You want to connect VCC and AVCC to UVCC as well.
You don't need a pull-up on RESET. You don't need the "filter" on the Shield, and you probably don't need the ISP header either.
See the controller part of this for a ATmega32u2 schematic
https://deskthority.net/wiki/File:Costar_Replacement_Controllers_Schematics.PNG
For a keyboard do I need the analog comparators? So, I put a cap on each VCC, and then connect all three of them before the cap? I know I don't need a pull up on reset, but can't the MCU reset by accident a few times without it? I'm just wondering what is the ISP header for? Also, should I connect the shield to the ground, or should I just not connect the shield?
Excuse my terrible writing. Also, I was looking through the datasheet, and it says it's highly recommended to put a 10µF capacitor on the VBUS line, should I do that, or should I use a 1µF capacitor? It's on page 189.
how big should the actual pad to solder onto be in diameter if the drill is 1.5mm?I use a 100 mil diameter pad with a 60 mil hole and it's large enough to be comfortable to solder.
Guys, for the the Cherry MX switch footprint, I understand how big the drill should be for the two pins, but how big should the actual pad to solder onto be in diameter if the drill is 1.5mm?Does not really matter, space on pcb vs. ease of soldering. Take your pick. I have used dia 1,5mm holes with 2mm pad.
A question for you gentlemen: I've read that crystals (oscillators mostly) should be kept outside ground planes. What's your opinion about this? Will ground planes really significantly interfere with crystals? For instance, I'm using 16 MHz through-hole crystals with a ATMega32u4 (how original).
Can someone tell me the exact dimensions of a cherry MX footprint?For the copper pad, I use a 100 mil diameter with a 60 mil hole. All the other specifics are in the attached image.
Can someone tell me the exact dimensions of a cherry MX footprint?For the copper pad, I use a 100 mil diameter with a 60 mil hole. All the other specifics are in the attached image.
(Attachment Link)
100 mm diameter pad is ENORMOUS.It is, but I said mil, not millimeter. A mil is a thousandth of an inch.
100 mm diameter pad is ENORMOUS.It is, but I said mil, not millimeter. A mil is a thousanth of an inch.
Hey guys, TalkingTree referred me over here from an isolated post asking for help following the same tutorial I see a lot of beginners here referencing (https://github.com/ruiqimao/keyboard-pcb-guide).
He had recommended I add a 6 pin ISP to flash the atmega32u4, since it looks like more often than not they come blank. I can just direct wire all of the pins between the header and the controller right?
I also wanted to ask after a few noticeable differences between some user's schematics I am curious about, hoping to get some context:I think(not sure) USB spec requires 10uF at a maximum for capacitance on Vbus 10uF for peripherals but most of any abitrary value cap will work in fact. you don't have to be careful much you can change the cap easily even if it has problem.
The tutorial advises this:
"add decoupling capacitors for VCC ... and one 4.7uF capacitor for UVcc"
(Attachment)
I don't see anyone else including a 7.4uF cap, and I am curious why the author of the tut recommends this
and:Some of SMD crystals has case terminal pin and grounding it is known as good and common practice in general.
"add a GND symbol to represent ground, and connect everything"
(Attachment)
I don't see anyone else using crystals with ground connecting them, what was the thought process here?
In my experience, m32u4 comes with a set of bit fuses different from what's commonly used, hence I implemented a SPI on my boards, but hasu surely knows better.Hey guys, TalkingTree referred me over here from an isolated post asking for help following the same tutorial I see a lot of beginners here referencing (https://github.com/ruiqimao/keyboard-pcb-guide).While having ISP header is good practice for development and prototype you can safely omit it if you choose proper variant of the chip. You just should avoid ATmega32u4RC, which is configured for internal RC oscillator, not for external xtal. Other variants should come with USB bootloader.
He had recommended I add a 6 pin ISP to flash the atmega32u4, since it looks like more often than not they come blank. I can just direct wire all of the pins between the header and the controller right?
I don't see anyone else using crystals with ground connecting them, what was the thought process here?Most SMD crystals have four pins as you can see here (http://en3img.allhaving.com/upload/2640/o/14_7_smd_crystal_1.jpg). Usually the odd ones are for the crystal pins and the even ones are for ground, but always check the manufacturer's datasheet.
And is there any reason the default 6 pin isp is designed like this? With the pins in the schematic box? With a break on the left side of the box?That break is to match the connector (http://www.atmel.com/webdoc/avrdragon/images/image11.jpg). You can use a different standard but label your header accordingly.
(Attachment Link)
Can I use Fritzing to design a 60% PCB? All diodes will be through-hole, no LEDs.You
Does it matter which key in a column I connect the trace back to the controller? Does each column need to connect back to the controller on the same row?No to both questions.
And do I need to connect any of the ground pads on resistors/xtal/buttons to any of the ground pins on the controller?You can use ground planes but I prefer to route ground traces anyway, but I guess it's just me. If you don't use ground planes then yes, you have to connect ground pads to ground pins of the controller and to the USB connector's ground.
And do I need to connect any of the ground pads on resistors/xtal/buttons to any of the ground pins on the controller?You can use ground planes but I prefer to route ground traces anyway, but I guess it's just me. If you don't use ground planes then yes, you have to connect ground pads to ground pins of the controller and to the USB connector's ground.
Youcanshould use any software you're the most comfortable with. I personally tried with Fritzing to no avail and ended up feeling great with EasyEDA (https://easyeda.com). Also check komar's OP for some info about Kicad.
The tutorial has us use a ground plane, do I need to do anything to connect ground pads/pins to that plane?No.
Ended up with more vias than probably looks good, but I figure it's less of an issue for grounds.It is recommended to avoid vias for USB traces and capacitors, other than those, you could use as many as you want.
I would love to have one or two people look over it for me, but I'm unsure what the best way to go about that is..?Either posting pictures of particular areas you want to be checked, or share the entire project, if you're comfortable with that.
Ended up with more vias than probably looks good, but I figure it's less of an issue for grounds.It is recommended to avoid vias for USB traces and capacitors, other than those, you could use as many as you want.
Either posting pictures of particular areas you want to be checked, or share the entire project, if you're comfortable with that.
I was wondering if I could get some advice and/or critiques on this (https://github.com/Feraphic/Attache) before I send it over to EasyEDA to be manufactured. I won't pretend that I have much of an idea of what I'm doing, and I'm sure the design isn't very elegant or efficient, but I don't mind as long as it works since I'm really only doing this for personal use.Hi, it looks 14, 34, 44 and 24 pins of MCU are not connected to the power source in your schematic.
Can someone tell me the exact dimensions of a cherry MX footprint? No diode or LED. What size through-hole do I need for the metal leads? How big (diameter) should the copper pad be? What diameter through-hole do I need for the plastic pin in the middle of the bottom of the switches (the one that goes through the PCB, for stability I imagine)?
I can't find these dimensions anywhere.
I was wondering if I could get some advice and/or critiques on this (https://github.com/Feraphic/Attache) before I send it over to EasyEDA to be manufactured. I won't pretend that I have much of an idea of what I'm doing, and I'm sure the design isn't very elegant or efficient, but I don't mind as long as it works since I'm really only doing this for personal use.Hi, it looks 14, 34, 44 and 24 pins of MCU are not connected to the power source in your schematic.
the resistors between the usb and the MCU should prob be closer to the USB, though in a low speed application like a keyboard it prob won't matter nearly as much.
the resistor and cap ground you go there should be fine.
I guess I was under the mistaken impression that this resistor was meant to stop EMI from entering the device, therefor, placing it near the USB connectors made sense.
Looking through some papers online it isn't too much of an issue except for people using parallel terminations.
http://www.ultracad.com/mentor/mentor%20termination%20placement.pdf (http://www.ultracad.com/mentor/mentor%20termination%20placement.pdf)
I guess I was under the mistaken impression that this resistor was meant to stop EMI from entering the device, therefor, placing it near the USB connectors made sense.
Looking through some papers online it isn't too much of an issue except for people using parallel terminations.
http://www.ultracad.com/mentor/mentor%20termination%20placement.pdf (http://www.ultracad.com/mentor/mentor%20termination%20placement.pdf)
Thanks for clarifying.
So simple practice for us hobbyists is:
ESD/EMI protection deivces should be placed near USB receptacle while termination(impedance matcning) resistors should be placed near controller.
We already know empirically that it doesn't matter very much for keyboards, though, this simple design guide will be still helpful for us.
I couldn't find good reference for placement of termination resistors but these docs imply it.
EFM32 USB Hardware Design Guide p.5
https://www.silabs.com/documents/public/application-notes/AN0046.pdf
Atmel High Speed USB Design Guidelines p.3
http://www.atmel.com/images/doc7633.pdf
Do I need to connect two pads with traces if they're already overlapping each other, or is that just redundant?It's redundant because they are already connected, but it doesn't harm to trace a wire.
Trying to layout my first PCB.
I am doing a very small layout; 26 keys
Going with a 16mm design so the switches will be very close together and using cut-down keycap and/or custom cap.
Planning on using a pro-microShow Image(http://i.imgur.com/z3RXJD7.png)
Installed Kicad and Eagle this evening then started thinking there is probably an easier way than doing everything from scratch... So here I am.
The layout is going to be the similar to a 16MM Edward or a shrunk down Gherkin only the bottom row will be offset 50% and 4 of the keys in the bottom row will be removed.
I can find gerber files for the gherkin and the 16mm Edward but no kicad/eagle project files.
I can create a layout with the keyboard-layout-editor with the layout I want but the wrong switch spacing then try to use kacelerator... Which doesn't seem to be working properly with Eagle 7.6 or I have to hack something to actually get the scr to run to generate the initial schematic and board.
... I found the gh60 kicad project files ... I could use this as a starting point and then reduce it to my intended design.
I could start with a blank slate and work from tutorials and try to build the design from scratch using the other gerbers and kicad projest as reference.
My object is to end with a working PCB for my custom keyboard rather than learn everything there is to know about creating PCBs. (So quick and easy rather than an educational event)
What is the easy way to get to end of project on this?
thanks,
T
Does it matter which way caps/resistors are attached? Do they have polarity?Resistors and ceramic capacitors (https://www.vishay.com/images/product-images/pt-large/45006-pt-large.jpg) don't, electrolytic capacitors (https://i.stack.imgur.com/sVEDF.jpg) are polarized.
Two key ATTINY85 Osu/Macropad I designed :)That looks cool. What are you using it for?Show Image(https://i.imgur.com/yunCFtX.png)
Two key ATTINY85 Osu/Macropad I designed :)That looks cool. What are you using it for?Show Image(https://i.imgur.com/yunCFtX.png)
Hi, guys! I'm bulding my own ergodox for school project as an innovative kbd layout. So, I found all sources of IC's version of ergodox. I have question - if I'll order PCBs and then will solder all the components, will there be an option to flash the keyboard via usb? Or I'll need some kind of programming device for microcontrollers?You will need a programmer, at least for the first time. I think.
So, PCB have some direct controller outputs. Will I have possibility with this pins?Hi, guys! I'm bulding my own ergodox for school project as an innovative kbd layout. So, I found all sources of IC's version of ergodox. I have question - if I'll order PCBs and then will solder all the components, will there be an option to flash the keyboard via usb? Or I'll need some kind of programming device for microcontrollers?You will need a programmer, at least for the first time. I think.
I've no experience with ergodox, but I think you will need to have connection to the MISO, MOSI, SCK, RESET, VCC and GNDSo, PCB have some direct controller outputs. Will I have possibility with this pins?Hi, guys! I'm bulding my own ergodox for school project as an innovative kbd layout. So, I found all sources of IC's version of ergodox. I have question - if I'll order PCBs and then will solder all the components, will there be an option to flash the keyboard via usb? Or I'll need some kind of programming device for microcontrollers?You will need a programmer, at least for the first time. I think.
I've no experience with ergodox, but I think you will need to have connection to the MISO, MOSI, SCK, RESET, VCC and GNDSo, PCB have some direct controller outputs. Will I have possibility with this pins?Hi, guys! I'm bulding my own ergodox for school project as an innovative kbd layout. So, I found all sources of IC's version of ergodox. I have question - if I'll order PCBs and then will solder all the components, will there be an option to flash the keyboard via usb? Or I'll need some kind of programming device for microcontrollers?You will need a programmer, at least for the first time. I think.
I've seen this on quite a few PCBs but I need some help understanding how it works.
Those are supposed to be stepped and regular caps lock so they share the same diode.
If the two switch pads are overlapped, how is this not shorting?
What do you use for staring at PCB's when working on them.
That was so obvious that I feel dumb. Thank you so much for your clarification.I've seen this on quite a few PCBs but I need some help understanding how it works.
Those are supposed to be stepped and regular caps lock so they share the same diode.
If the two switch pads are overlapped, how is this not shorting?
The diode is probably connected to both the outer pads and the middle pad to the "other side" of the matrix. If the switch pins are A and B, current flows from A-B in one position and B-A in the other, the switch really doesn't care.
... and thanks for the help...So... ALPS or MX?Show Image(https://i.imgur.com/Zsk1peE.jpg?1)
V1 is slowly becoming something.
... and thanks for the help...So... ALPS or MX?Show Image(https://i.imgur.com/Zsk1peE.jpg?1)
V1 is slowly becoming something.
Does anyone know where I can find a footprint for SMK 2nd gen switches (https://deskthority.net/wiki/SMK_second_generation)?These gentlemen (https://deskthority.net/group-buys-f50/bleach60-aruz-and-smk-compatible-60-t16384.html) made a 60% PCB for those switches, they are likely to have what you're looking for.
I have a bunch of those switches incoming but I want to be able to start the PCB design before they arrive.
Does anyone know where I can find a footprint for SMK 2nd gen switches (https://deskthority.net/wiki/SMK_second_generation)?These gentlemen (https://deskthority.net/group-buys-f50/bleach60-aruz-and-smk-compatible-60-t16384.html) made a 60% PCB for those switches, they are likely to have what you're looking for.
I have a bunch of those switches incoming but I want to be able to start the PCB design before they arrive.
Does anyone know where I can find a footprint for SMK 2nd gen switches (https://deskthority.net/wiki/SMK_second_generation)?These gentlemen (https://deskthority.net/group-buys-f50/bleach60-aruz-and-smk-compatible-60-t16384.html) made a 60% PCB for those switches, they are likely to have what you're looking for.
I have a bunch of those switches incoming but I want to be able to start the PCB design before they arrive.
sorry sir i want to ask about the atmega32u4
i look the datasheet and there is two variant atmega32u4 and atmega32u4RC
what should i choice?
thanks
3. No, how would that work? You tell them over the serial protocol what intensity to be.Yes, I get that, but would you choose a PWM pin over another PWM or any pin will do as long as it's PWM? (sorry for being redundant).
4. Not too much or you'll break the 10µF limit in the USB specification (remember to add in anything the rest of the board/controller has as well).Noted. I guess 0.1uF, as found in some diagrams, could work, then.
5. Do you need to be able to disconnect them completely? Otherwise just tell them to not glow.I'm thinking to solder them on the board so they won't be disconnected but simply off.
If you need to supply more current it seems like you can use a separate supply for the LEDs. Make sure the LEDs and the controller share GND though as that is indicated in the datasheet I found from Adafruit. It's a bit unclear what will happen if you put 5V data into the Din pin when there is no supply power applied. The datasheet isn't very well written/translated.I'm not really fond of separate power supply, so I could drop the underglow idea, but I guess a mere three SK6812 as status indicators shouldn't cause any issue.
How many LEDs are you planning to use? Only the indicators? In that case you shouldn't run into any problems at all. 100×0.1µF is 10µF for a ~full keyboard back lit.Either only two or three indicators or, at best, a dozen on the backside for the underglow.
Use any IO-pin for IO, PWM if you need PWM =)Oh, now I get what you mean. Thanks.
how are DIP switches integrated with the PCB.Unless you have desire to use physical DIP switches, you might wanna use QMK's virtual DIP switches functionality.
how are DIP switches integrated with the PCB.Unless you have desire to use physical DIP switches, you might wanna use QMK's virtual DIP switches functionality.
This is my first time trying to design a keyboard PCB, but I have some experience doing small circuits before. I just want to do a bit of a sanity check and see if I've done any easy traps for beginners. I've tried to make all the capacitors close as can be for any VCC pins, as well as keeping every thing short and neat as possible too. I've also done all the placements according to the plate builder's DXF drawing, then aligning centres on both Eagle CAD and Fusion360.You should avoid tracks under the crystal, even the another layer of the board. It might make your system unstable by the unstable clock or some noise.Show Image(https://i.imgur.com/YMG70yL.png)
And you should avoid vias on the USB traces. It doesn't mean it's not gonna work but it's recommended to avoid that nonetheless.This is my first time trying to design a keyboard PCB, but I have some experience doing small circuits before. I just want to do a bit of a sanity check and see if I've done any easy traps for beginners. I've tried to make all the capacitors close as can be for any VCC pins, as well as keeping every thing short and neat as possible too. I've also done all the placements according to the plate builder's DXF drawing, then aligning centres on both Eagle CAD and Fusion360.You should avoid tracks under the crystal, even the another layer of the board. It might make your system unstable by the unstable clock or some noise.Show Image(https://i.imgur.com/YMG70yL.png)
Hey guys, does anyone know where I can find a 7u spacebar footprint for KiCAD?
Hey guys, does anyone know where I can find a 7u spacebar footprint for KiCAD?
ai03 (https://github.com/ai03-2725/MX_Alps_Hybrid.pretty) has hybrid footprints but you can try out all of these - here (https://kbwiki.ai03.me/books/pcb-design/page/list-of-kicad-keyboard-parts-libraries)
Edit: Actually, I got one more question for you guys. I'm trying to build an ortho board that fits in a 60% case. Is there an easy way to figure out where the USB port and mounting holes have to go?
I can connect Rows/Columns to any Port pin on the Atmega? (PB, PB, PD, PE and PF?)Sure, as long as you configure your firmware accordingly.
I can connect Rows/Columns to any Port pin on the Atmega? (PB, PB, PD, PE and PF?)Sure, as long as you configure your firmware accordingly.
Can anyone explain in better wording what this means (from the ATMEGA32U4 datasheet):It is my understanding that PE2/HWB is only used during a reset routine but it requires a pull down resistor (and I've seen both 1 and 10 KOhm here), meaning that you can actually use it as GPIO, if you can live with the resistor. What I get from this is that you'd better use it as a output pin, with something that already requires a 1 or 10 KOhm resistor, say a LED, rather than as input for it might eventually trigger the reset routine. Someone please correct me if I'm wrong.
• HWB – Port E, Bit 2
HWB allows to execute the bootloader section after reset when tied to ground during external
reset pulse. The HWB mode of this pin is active only when the HWBE fuse is enable. During normal
operation (excluded Reset), this pin acts as a general purpose I/O.
I just... don't understand what it's telling me. Basically, can I actually use this pin, and not tie it to ground, but still get to the bootloader with the physical reset switch for reprogramming, like I've been doing for the last ~5 years? :)
Well, I would be careful with putting LED on HWB in series with the original pull down resistor. Forward voltage of LEDs is typically more than 0.9V. It is not a big deal though since LEDs conduct some current even below the forward voltage. But if you are unlucky and some interference kicks in then you may not enter the bootloader when you wanted to. If that happens then you would just press the reset button again and again untill the bootloader is entered. You should eventually get there.Great explaination, as always. Thanks vvp.
After the MCU boots, there is no problem using HWB pin for GPIO (whether input or output ... it does not really matter). The rest of the circuit just cannot mind the pull down resistor there. Most of the time it does not matter. It only increases the power consumption a tiny bit. I used HWB as GPIO myself. It works without any problems (if the rest of the circuit does not mind the pull down there).
E.g. if your keyboard matrix scanning works with pull downs and shortening through switches to the Vcc (instead of to GND as it is common) then you can perfectly use HWB pin as one of the keyboard matrix scanning pins. You would need the pull down there anyway. This is one of the cases when HWB use does not even increase the power consumption.
In other cases, when the ideal circuit does not use pull up nor pull down then you often can add a pull down. In such a case it only increases the power consumption a bit. If the rest of the circuit requires a pull up there then you course you cannot use HWB pin (and keep the boot loader on reset feature).
Which micro-controller do you recommend to use more the atmega32u4 or the AT90USB1286 for my keyboard pcb and why?Depends on your needs. Both controllers are widely supported by the most popular firmwares around so you don't have to write any code yourself (aside for config, matrix and keymaps).
is there any different things needed to set up the AT90USB1286 in the schematic/PCBDifferent things from the m32u4 you mean?
Yes from the 32u4Which micro-controller do you recommend to use more the atmega32u4 or the AT90USB1286 for my keyboard pcb and why?Depends on your needs. Both controllers are widely supported by the most popular firmwares around so you don't have to write any code yourself (aside for config, matrix and keymaps).is there any different things needed to set up the AT90USB1286 in the schematic/PCBDifferent things from the m32u4 you mean?
When in doubt, datasheets are your friends. In my experience, they pretty much need the same discrete components to run, you can check the schematics of the Teensy 2.0 (https://www.pjrc.com/teensy/schematic2.gif) and the Teensy++ 2.0 (https://www.pjrc.com/teensy/schematic2pp.gif).Yes from the 32u4Which micro-controller do you recommend to use more the atmega32u4 or the AT90USB1286 for my keyboard pcb and why?Depends on your needs. Both controllers are widely supported by the most popular firmwares around so you don't have to write any code yourself (aside for config, matrix and keymaps).is there any different things needed to set up the AT90USB1286 in the schematic/PCBDifferent things from the m32u4 you mean?
Thank you for your help I think as I don't need the extra pins of the at90 illngo with the atmega32u4 as it's half the priceYou're welcome, and I honestly believe a m32u4 is enough for most things.
Deffiently plenty for a 40% as well as the tkl I am working onThank you for your help I think as I don't need the extra pins of the at90 illngo with the atmega32u4 as it's half the priceYou're welcome, and I honestly believe a m32u4 is enough for most things.
Do consider that you can design a 11 * 11 matrix out of it for a total of 121 inputs, or even a 12 * 12, if you don't need LEDs.
That's pretty much my approach here (https://geekhack.org/index.php?topic=92962.0).
I can just grab the default M2 screw holes from the Kicad's basic mounting hole library and that should be fine yeah?In the ISO metric screw thread standard, the number in the screw size matches the maximum diameter allowed. So basically, for a M2 screw, you just need a 2mm hole.
Alright PCB and components ordered! Wish me luck guys!!
Trying to find out if I can run a 6x15 matrix of an atmega32u4 qfp44. I have this crazy keyboard idea in mind, but no space running a controller board. Figured I'd integrate everything.I made a 11*11 matrix with three dedicated LED indicators out of a m32u4. It's opensource for you to have a look (link (https://geekhack.org/index.php?topic=92962.0)).
If the above is too big of a matrix for the atmega32u4, what would be the maximum matrix size I can run with this chip?
Just arrived! Looks beautiful! No idea if it's going to work, I don't even know when I'm going to have a minute to solder all the components, but it looks beautiful at least!Where did you order your PCB? Also, which github guide were you following?
Just arrived! Looks beautiful! No idea if it's going to work, I don't even know when I'm going to have a minute to solder all the components, but it looks beautiful at least!Where did you order your PCB? Also, which github guide were you following?
TIA!
It may work but you better connect all vcc/avcc pins to power source. I had a problem without giving avcc(44) power when programming flash(I can't remember it was ISP or USB bootloader), IIRC.
Asumming the mcu is ATMega32u4 note that pin 44 is actually AVCC, not VCC and I think it is not connected internally, also pin 2 is UVCC. Not ciritical for you design in fact, though, you may want to check datasheet for next interation.
When any ratsnest lines are drawn in the CAD as your pic shows it means that you don't finish routing tracks yet. And DRC must be always your good friend, you would receive waring for the unconnected pads from it in this case.
i am currently designing a pcb similar to the atreus. But I don't know how to tilt the parts in the KiCad pcb design software.
Thanks in advance
thank youi am currently designing a pcb similar to the atreus. But I don't know how to tilt the parts in the KiCad pcb design software.
Thanks in advance
If you use 'e' to edit the footprint you want rotated, you can select the 'other' radial menu and input the degrees of rotation you need. For example you can get an angled rotation with a value of 450
How much space do I need to leave between each individual switch ?i am currently designing a pcb similar to the atreus. But I don't know how to tilt the parts in the KiCad pcb design software.
Thanks in advance
If you use 'e' to edit the footprint you want rotated, you can select the 'other' radial menu and input the degrees of rotation you need. For example you can get an angled rotation with a value of 450
How much space do I need to leave between each individual switch ?Depends on the switch size. 1u are 19.05mm (0.75'') away from each other.
When I change the space to 19.05mm between the individual switches they aren't aligned properly anymore.I believe it's a sofware limitation. Try putting them in a column then select all of them and rotate them to your liking.
I can only rotate a group by 90 degrees.When I change the space to 19.05mm between the individual switches they aren't aligned properly anymore.I believe it's a sofware limitation. Try putting them in a column then select all of them and rotate them to your liking.
I can only rotate a group by 90 degrees.When I change the space to 19.05mm between the individual switches they aren't aligned properly anymore.I believe it's a sofware limitation. Try putting them in a column then select all of them and rotate them to your liking.
Are they connected in your schematic?yes they are.
Are you on the correct copper layer? Not trying to cross the trace connecting pad 2 to the diode?Are they connected in your schematic?yes they are.
https://imgur.com/a/ZLW0qIl
no. I am not crossing the diode trace.Are you on the correct copper layer? Not trying to cross the trace connecting pad 2 to the diode?Are they connected in your schematic?yes they are.
https://imgur.com/a/ZLW0qIl
no. I am not crossing the diode trace.
Didn't change the layer while connecting the switches
crystal_FA238-TSX3225Design-wise they are interchangeable since both are 3225 form factor
Crystal_SMD_SeikoEpson_FA238-4pin_3.2x2.5mm_HandSoldering
There are differences between the two, for example: (https://i.imgur.com/zzTUxxS.png) - here you can see there is 2 GND pads and that he has connected them, whereas in the crystal I'm using: (https://i.imgur.com/zAXujtS.png) - there is only 1 GND pad, the other is unlabelled. Should I try connect pads 3 and 4 anyway?I've never seen a four pads SMD crystal with only one ground pad. Probably you could simply reassign the pads yourself, although know that, usually, odd pads are connected to capacitors and MCU and even pads are tied to ground.
Design-wise they are interchangeable since both are 3225 form factor
I've never seen a four pads SMD crystal with only one ground pad. Probably you could simply reassign the pads yourself, although know that, usually, odd pads are connected to capacitors and MCU and even pads are tied to ground.
So I would be safe using the same crystal as is used in the guide, I won't have any problem finding a compatible part when I start buying the components?Yes, you should have no problem as long as your routing is correct.
Yes, you should have no problem as long as your routing is correct.
The footprints with "handsoldering" in the name generally just have larger pads, sticking further out to make it easier to get to them with an iron. A 3225 crystal package can be a bit tricky to solder with an iron.
Someone mentioned using a hot air gun, do you think it would be worth picking up one for this?I bought myself a cheap Baku 858D which seems to be one of a million rebrands, all with the same model name, and it's a game changer for soldering and desoldering crystals and other SMD components.
I bought myself a cheap Baku 858D which seems to be one of a million rebrands, all with the same model name, and it's a game changer for soldering and desoldering crystals and other SMD components.
I bought myself a cheap Baku 858D which seems to be one of a million rebrands, all with the same model name, and it's a game changer for soldering and desoldering crystals and other SMD components.
I'll definitely pick one up so, thanks for the recommnedation. My dad will likely find use for it even if I only end up using it once.
For some reason, I cant connect the rows and columns to the microcontroller. Moreover, I think I have made a lot of mistakes regarding the microcontroller in general.
These are my project files: https://drive.google.com/open?id=1wRREWIURsWbvziVsqD6W3SwTGTq49Xcd
If someone would like to look at it I would be very thankful. But I don't want to steal your free time.
Thanks in advance!
Progress so far on getting my board all soldered up! still have diodes to go but all of the other components are done. Really enjoy soldering SMD more than through-hole.Clean soldering, very well done indeed. And I second the feeling on SMD soldering.
I have connected them in the schematics but I still can't connect them in pcbnew.For some reason, I cant connect the rows and columns to the microcontroller. Moreover, I think I have made a lot of mistakes regarding the microcontroller in general.
These are my project files: https://drive.google.com/open?id=1wRREWIURsWbvziVsqD6W3SwTGTq49Xcd
If someone would like to look at it I would be very thankful. But I don't want to steal your free time.
Thanks in advance!
None of your rows or columns on the schematic are connected to the MC. Get those connected and you shouldn't have any troubles. The way I found this out was by turning on your ratsnest and noticing that none of your MC's port pins had connections to any of the switches.
I would recommend spacing out all of your caps and resistors away from the MC, you have a beautiful chunk of space down there to work with, no reason to clump everything together like that, plus soldering will be easier if you give yourself some breathing room. Once you start routing traces you will be happy to have space to manuever everything. I will attach a pic of my MC diagram and you can see how much space I ended up needing, but for a few more switches.
I also want to offer the trace connecting k24 to k29 can be moved down to below R1 and save you from needing to via the trace, while it shouldn't make a performance difference, it will look a lot better!
I have connected them in the schematics but I still can't connect them in pcbnew.For some reason, I cant connect the rows and columns to the microcontroller. Moreover, I think I have made a lot of mistakes regarding the microcontroller in general.
These are my project files: https://drive.google.com/open?id=1wRREWIURsWbvziVsqD6W3SwTGTq49Xcd
If someone would like to look at it I would be very thankful. But I don't want to steal your free time.
Thanks in advance!
None of your rows or columns on the schematic are connected to the MC. Get those connected and you shouldn't have any troubles. The way I found this out was by turning on your ratsnest and noticing that none of your MC's port pins had connections to any of the switches.
I would recommend spacing out all of your caps and resistors away from the MC, you have a beautiful chunk of space down there to work with, no reason to clump everything together like that, plus soldering will be easier if you give yourself some breathing room. Once you start routing traces you will be happy to have space to manuever everything. I will attach a pic of my MC diagram and you can see how much space I ended up needing, but for a few more switches.
I also want to offer the trace connecting k24 to k29 can be moved down to below R1 and save you from needing to via the trace, while it shouldn't make a performance difference, it will look a lot better!
https://drive.google.com/open?id=1oQObxESNTSqrpTEbo2OHkQGIb1yoV09a
I got everything soldered on, but I can't seem to get my pc to recognize that anything is plugged in. What is the best place to start troubleshooting?drivers?
I connected everything but the control tool shows all kind of mistakes, including some switches that I clearly connected.You should solve all DRC errors before sending the design to a manufacturer in general.
I got everything soldered on, but I can't seem to get my pc to recognize that anything is plugged in. What is the best place to start troubleshooting?drivers?
https://imgur.com/a/uIfOVEGAre you sure about the pads numbering? In my experience odd and even pads should be on a diagonal rather than side by side.
no I am not sure. Thankshttps://imgur.com/a/uIfOVEGAre you sure about the pads numbering? In my experience odd and even pads should be on a diagonal rather than side by side.
Double check your crystal's datasheet or post it so we can look into it together. If you get the crystal wrong, the board is guaranteed not to work.no I am not sure. Thankshttps://imgur.com/a/uIfOVEGAre you sure about the pads numbering? In my experience odd and even pads should be on a diagonal rather than side by side.
Jup I have to change them :blank:Double check your crystal's datasheet or post it so we can look into it together. If you get the crystal wrong, the board is guaranteed not to work.no I am not sure. Thankshttps://imgur.com/a/uIfOVEGAre you sure about the pads numbering? In my experience odd and even pads should be on a diagonal rather than side by side.
Jup I have to change them :blank:Double check your crystal's datasheet or post it so we can look into it together. If you get the crystal wrong, the board is guaranteed not to work.no I am not sure. Thankshttps://imgur.com/a/uIfOVEGAre you sure about the pads numbering? In my experience odd and even pads should be on a diagonal rather than side by side.
https://imgur.com/a/iWvz7fI
wow thanksJup I have to change them :blank:Double check your crystal's datasheet or post it so we can look into it together. If you get the crystal wrong, the board is guaranteed not to work.no I am not sure. Thankshttps://imgur.com/a/uIfOVEGAre you sure about the pads numbering? In my experience odd and even pads should be on a diagonal rather than side by side.
https://imgur.com/a/iWvz7fI
Are you following ruiqimao's github tutorial? the crystal he uses in the tut doesn't appear to be in any of the libraries he links. I found it in this library: https://github.com/s-light/Crystals_Oscillators_SMD.pretty/
with the new crystal, it doesn't let me draw the internal pad connections
with the new crystal, it doesn't let me draw the internal pad connectionsRemember to connect them in the schematic first.
I updated the schematic. If I utilize the highlight net tool in pcbnew it shows me that they should be connected. As soon as I connect them the connection disappears.with the new crystal, it doesn't let me draw the internal pad connectionsRemember to connect them in the schematic first.
I updated the schematic. If I utilize the highlight net tool in pcbnew it shows me that they should be connected. As soon as I connect them the connection disappears.
https://imgur.com/a/2AFCPeO
Yup the grounds. Thanks a lot for all the support. This community is amazing!I updated the schematic. If I utilize the highlight net tool in pcbnew it shows me that they should be connected. As soon as I connect them the connection disappears.
https://imgur.com/a/2AFCPeO
Is it the xtal grounds you're trying to connect? Shoot me a link to the files and I'll take a look, the trace you're trying to lay might be coming to close to other pads and it's not letting you lay it. I'll play around with it and see if I can ident the problem
Yup the grounds.
wow. thank you.Yup the grounds.
I am able to get it to connect, but I have to zigzag the trace a little bit. I highlighted the trace I got to work in yellow, the blue arrow points to where I had to zigzag it a little bit so it wasn't too close to pads 1 or 2 (red X's). It has to be a minimum distance from the pads, I suspect it was giving you trouble because you were trying to route too close to them. There should be dialogue at the bottom of the screen that shows error messages in red when something isn't working (attachment 2). It can be easy to miss and goes away when you click somewhere else.
Let us know if that works.
wow. thank you.
it drove me crazy ;)
_ODIN_ put a mark on the silkscreen where your XTAL pad 1 is, it will help you remember the correct orientation in the soldering stage.
Oh, nice to know. Thanks._ODIN_ put a mark on the silkscreen where your XTAL pad 1 is, it will help you remember the correct orientation in the soldering stage.
They are actually 180" rotationally symmetric.
Hi guys, back with another question. I'm following ruiqimao's tutorial (https://github.com/ruiqimao/keyboard-pcb-guide).Put a ground plane under your pcb and start the test again. It is mentioned in the tutorial
Firstly, my usb footprint (https://i.imgur.com/BrxmgHZ.png) differs from the one in the tutorial (https://i.imgur.com/Y9KTO1S.png) in that there are 2 green GND pads at the top. I wired it exactly as in the tut, ignoring the extra pads, but DRC lists these (https://i.imgur.com/cOfrgj7.png) unconnected pads. I connected all four GND pad 6's together like this (https://i.imgur.com/HLQANAr.png) and that took care of the errors.
Secondly, my C7, C8, & C5 footprints (https://i.imgur.com/6wV2uaQ.png) appear identical to those in the tut (https://i.imgur.com/Bhc63NY.png) but I'm also getting an unconnected pads error (https://i.imgur.com/KczkRlA.png) between C7 GND and U1 pad 5. I wired C7's GND pad to the micro controller's pad 43 GND like so (https://i.imgur.com/CoXzzIY.png), and that took care of this error.
But are these solutions okay? I have little knowledge of electronics/pcb's prior to this project so I really don't know. I'm kinda assuming the GND's just need to be connected.
Hi guys, back with another question. I'm following ruiqimao's tutorial (https://github.com/ruiqimao/keyboard-pcb-guide).Put a ground plane under your pcb and start the test again. It is mentioned in the tutorial
Firstly, my usb footprint (https://i.imgur.com/BrxmgHZ.png) differs from the one in the tutorial (https://i.imgur.com/Y9KTO1S.png) in that there are 2 green GND pads at the top. I wired it exactly as in the tut, ignoring the extra pads, but DRC lists these (https://i.imgur.com/cOfrgj7.png) unconnected pads. I connected all four GND pad 6's together like this (https://i.imgur.com/HLQANAr.png) and that took care of the errors.
Secondly, my C7, C8, & C5 footprints (https://i.imgur.com/6wV2uaQ.png) appear identical to those in the tut (https://i.imgur.com/Bhc63NY.png) but I'm also getting an unconnected pads error (https://i.imgur.com/KczkRlA.png) between C7 GND and U1 pad 5. I wired C7's GND pad to the micro controller's pad 43 GND like so (https://i.imgur.com/CoXzzIY.png), and that took care of this error.
But are these solutions okay? I have little knowledge of electronics/pcb's prior to this project so I really don't know. I'm kinda assuming the GND's just need to be connected.
I do have the ground planes (https://i.imgur.com/Ab3qdQw.png) set up, as per the tutorial. However I did end up with (https://i.imgur.com/LoOXiUy.png) more large red areas which I assume are 'missing ground planes' than he has in the tutorial (https://camo.githubusercontent.com/d6f5e0289cb60fb3cf121c5c4df234401a7613cd/68747470733a2f2f7075752e73682f746c5236492f623439643838376631362e706e67), which I was not sure what to do with.
Those red areas you see show that you have ground plane on one side of the board, but not the other. The trick to getting the ground plane over to the other side is to do via stitching. I followed https://forum.kicad.info/t/protip-nicer-via-stitching/1103 (https://forum.kicad.info/t/protip-nicer-via-stitching/1103) to do my via stitching.
Those red areas you see show that you have ground plane on one side of the board, but not the other. The trick to getting the ground plane over to the other side is to do via stitching. I followed https://forum.kicad.info/t/protip-nicer-via-stitching/1103 (https://forum.kicad.info/t/protip-nicer-via-stitching/1103) to do my via stitching.
Thanks! That actually worked out great https://i.imgur.com/qB1Fjyp.png
Okay I think this design is about ready to be scrutinised. Would someone be willing to have a look over my kicad files and point out any mistakes/errors? They're available here (https://github.com/evindarling/Ergowing-PCB).Hi,
Okay I think this design is about ready to be scrutinised. Would someone be willing to have a look over my kicad files and point out any mistakes/errors? They're available here (https://github.com/evindarling/Ergowing-PCB).
I would recommend not running USB through vias where you can help it, and avoid 'T' junctions for your traces, you don't want hard 90deg angles.
Hi,
- It is hard to solder through hole diodes under the switches. But it is OK if your switch having hole which allows you to put a diode on the case of the switch.
- In your design rules, you have 0.6 mm via dia and 0.4 mm via drill. This means 0.1 mm annular ring of via. I suppose you to make larger annular ring to match the design rule of the PCB manufacturer which you have choosen.
- If you want to make reference of some parts clear, place references away from pads and vias.
Hey, does anyone have an SMK 2nd gen footprint on hand? I sent out a couple PMs to people selling SMK boards and haven't heard back yet, so I figured I'd ask here
Designing a 39 key board using the new Kailh Chocs, similar to the Planck but 10 keys wide instead of 12. First complex design in Eagle so I thought I'd better upload it here to see if anyone can spot something I've done wrong. I know I've wasted space by mounting the Arduino Pro Micro behind and not underneath the keys, but wanted a pen tray so got space in the case and it made laying traces a whole lot easier. Will add mounting holes and a ground plane but just want to check that my progress so far is all good.
Edit: Here's the parts library for Eagle with the Kailh Choc in: https://github.com/skullydazed/clueboard_eagle
Aref is optional altogether if you're not doing analog readings. I believe you should leave it unconnected if not used.
You need a 1uF cap on Ucap.
It's recommended to put the 22Ω resistors close to the pins.
It's recommended to have one 100nF cap close to each VCC pin, it's probably also advisable to have some bulkier capacitances close to the chip, as well as a big bulk capacitor over the VCC to GND pins. You should keep the total capacitance below 10uF to comply with the USB spec.
Decoupling is a complicated subject, and you are most probably better off overkilling it.
But by the way, since we’re using a Teensy controller, why not using the lastest? I saw a Teensy 3.6 somewhere and it had even more pins that the Teensy 2.0++. Would it also be overkill for a keyboard and be more expensive that it should be? Because it seems that nobody is using these newer version of Teensy.Not so many people designs full size keyboard which requires many pins. If you design such PCB, you can put MCU on your board directly. No need to put external board.
Thank you once again for such a detailed response. I do have the 1uF capacitor on UCAP and will remove the on AREF, but other than than does everything look good? When you say VCC, does that only include just the pins 14 and 34 or the UVCC, VBUS and AVCC pins too?
hello guys, do you know where to get the kicad footprint of this component? http://www.kailhswitch.com/uploads/201815927/PG151101S11.pdf
Thank you once again for such a detailed response. I do have the 1μF capacitor on UCAP and will remove the on AREF, but other than than does everything look good? When you say VCC, does that only include just the pins 14 and 34 or the UVCC, VBUS and AVCC pins too?
Slow response, but the answer improved from it I believe =) When you are doing a simple design powered through USB with 5V IO everything VCC is the same. There are some different scenarios in the chapter " USB Module Powering Options" in the datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/doc7799.pdf
Hoping to order a prototype within the next few days, but I'd like to run it by someone first.
Schematic and BOM:Show Image(https://i.imgur.com/7vDeZj7.png)Show Image(https://i.imgur.com/FTGlLA2.png)
I know it's bad practice but I didn't put the switch matrix in the schematic because it was constantly changing up until the end and I didn't want to bother editing the schematic after every little change. I'll be better about this in the future, I promise.
Full board pics:Show Image(https://i.imgur.com/Gb5WjHn.png)Show Image(https://i.imgur.com/nfRvL2e.png)
This PCB is going to be used for a few different projects involving Omron B3G-S and KPT switches. The outermost pins in these switches are connected internally, so it's easy to go row2col and keep it (mostly) on one layer. I originally had it wired col2row until I opened up my FK-555 and noticed this pattern on its PCB.
MCU pics:Show Image(https://i.imgur.com/rW2VvxH.png)Show Image(https://i.imgur.com/q3HIOMg.png)
I only just realized as I was making this post that I forgot to connect the bottom left VCC pin to the rest of the VCC pins. That aside, I have a few questions.
Does it matter which VCC pin is connected to the USB port since they're all connected anyway? I have mine connected to uVCC but a lot of boards I've seen have it connected to VBUS.
I have a ground plane on each layer, connected together by the mounting holes. Are those enough, or should I add some via stitches elsewhere?
How should I go about connecting the isolated copper islands under the MCU and by C1 and C4/R3? I have a via on each section just to mark and identify which ones need to be connected, but beyond that I'm not sure. And of course, if anything else needs to be changed, I'm all ears.
it might be the software you're using but I don't see the 2 other pins (2 and 4) on the quartz going to GND?
Hi everyone,
I'm trying to design a pcb with atmega32u4 by following the pcb design guide on github. Got some pcbs made.
Soldered 4-5 of them but all have the same problem.
When it connected to PC (Windows 10), it recognised as 32u4 and detected by Atmel flip as well. However, after it plugged in for around 15mins, it disconnected by itself. It continue failed to be recognized after I reconnect it.
It happened with or without firmware flashed-in. I checked all pins are not shorted.
I set all trace to width to 6.30mil(0.16mm) and realised the VCC trace width is too thin after I sent the file to the manufacturer, could this be the problem?
Here is the schematic and PCB. Please help. :(
(Attachment Link)
(Attachment Link)
and it seems like your bypass caps ground is not connected to anything
(Attachment Link)BTW. I see quite a few junctions between rows and columns in that matrix. (I suppose you would have spotted and corrected those yourself by now, but anyway...)
Hi everyone,
I'm trying to design a pcb with atmega32u4 by following the pcb design guide on github. Got some pcbs made.
Soldered 4-5 of them but all have the same problem.
When it connected to PC (Windows 10), it recognised as 32u4 and detected by Atmel flip as well. However, after it plugged in for around 15mins, it disconnected by itself. It continue failed to be recognized after I reconnect it.
It happened with or without firmware flashed-in. I checked all pins are not shorted.
I set all trace to width to 6.30mil(0.16mm) and realised the VCC trace width is too thin after I sent the file to the manufacturer, could this be the problem?
Here is the schematic and PCB. Please help. :(
(Attachment Link)
(Attachment Link)
Your decoupling caps are in a nice row, miles away from the micro-controller.
Traces are too thin as you said.
No ground plane, ground is horrible as well, and it seems like your bypass caps ground is not connected to anything
and it seems like your bypass caps ground is not connected to anything
Good spotted, I didn't catch that. Which also would mean the oscillator caps are not connected to GND either. The oscillator circuit layout in whole is questionable as well I'd say.
It's hard not to sound harsh about it, but did you read up anything at all on circuit design?
Hi,
I am trying to design my own split mechanical keyboard. For reference purpose, I am depending upon the design of Ergodox from github repository https://github.com/Ergodox-io/ErgoDox
Please find here the Teensy in the circuit diagram.
(Attachment Link)
Does anyone know why PB4 of Teensy is connected to Vcc and why PD6 is connected to ground?
If these are unused pins like PC7, PD4, PD5, PD7 and PE6, then they should not be connected anywhere else.
+ Attachments and other options
Verification:
Thanks.
Hi,
I am trying to design my own split mechanical keyboard. For reference purpose, I am depending upon the design of Ergodox from github repository https://github.com/Ergodox-io/ErgoDox
Please find here the Teensy in the circuit diagram.
(Attachment Link)
Does anyone know why PB4 of Teensy is connected to Vcc and why PD6 is connected to ground?
If these are unused pins like PC7, PD4, PD5, PD7 and PE6, then they should not be connected anywhere else.
+ Attachments and other options
Verification:
Thanks.
I looked at the Teensy 2.0 circuit (attached below) and found that D6 is connected to an LED and 1K Resistor and then connected to ground. This may be the reason about PD6 in Ergodox circuit shown as connected to ground.
Does this mean PD6 is effectively not available for either row or column purpose in a keyboard?
(Attachment Link)
Hi,
I am trying to design my own split mechanical keyboard. For reference purpose, I am depending upon the design of Ergodox from github repository https://github.com/Ergodox-io/ErgoDox
Please find here the Teensy in the circuit diagram.
(Attachment Link)
Does anyone know why PB4 of Teensy is connected to Vcc and why PD6 is connected to ground?
If these are unused pins like PC7, PD4, PD5, PD7 and PE6, then they should not be connected anywhere else.
Thanks.
Bizarre reasons! Reason enough? ;) =D
Ok, so that was my doing. And the explanation is probably not super easy to think up on your own. It has to do with the flip-ability of the PCB. There's no reason to connect PB4 to VCC (or PD6 tp GND), and you probably should avoid to. The reason is that the pads doubles as VCC/GND pads for a decoupling capacitor for the IO expander.
So it was mostly a technicality to get it into KiCAD.
Hi,
I'm currently trying to build my own full size keyboard with a custom layout. After reading through the whole thread (I actually just made an account so subscribe to this thread ^-^) I still have some questions:
- I've read that you should not place traces below the oscillator and surround it by a ground plane. Is that only specific to that layer or should I keep the traces on all layers away from the crystal?
- I want to use a ceramic resonator. Do these even have the same issues with interference as crystals?
- Originally I wanted to add LED backlighting but now I'm unsure: At >100 LEDs in parallel, drawing 20mA each, thats more than 2A (and therefore more than the 500/900mA USB provides and way more than the 20/100mA the Atmega32u4 can drain). What are the tricks to get low power LED backlighting?
Thanks a lot.
Hey everyone!
I've just stumbled on this thread via google search, and I've got to say reading through it has been massively helpful. Lots of good information here!
Well, I would be careful with putting LED on HWB in series with the original pull down resistor. Forward voltage of LEDs is typically more than 0.9V. It is not a big deal though since LEDs conduct some current even below the forward voltage. But if you are unlucky and some interference kicks in then you may not enter the bootloader when you wanted to. If that happens then you would just press the reset button again and again untill the bootloader is entered. You should eventually get there.Hi Guys,
After the MCU boots, there is no problem using HWB pin for GPIO (whether input or output ... it does not really matter). The rest of the circuit just cannot mind the pull down resistor there. Most of the time it does not matter. It only increases the power consumption a tiny bit. I used HWB as GPIO myself. It works without any problems (if the rest of the circuit does not mind the pull down there).
E.g. if your keyboard matrix scanning works with pull downs and shortening through switches to the Vcc (instead of to GND as it is common) then you can perfectly use HWB pin as one of the keyboard matrix scanning pins. You would need the pull down there anyway. This is one of the cases when HWB use does not even increase the power consumption.
In other cases, when the ideal circuit does not use pull up nor pull down then you often can add a pull down. In such a case it only increases the power consumption a bit. If the rest of the circuit requires a pull up there then you course you cannot use HWB pin (and keep the boot loader on reset feature).
I've been working on a pcb replacement for AEK and AEK II keyboards...
Show Image(https://www.dropbox.com/s/0e406qdkz979zaj/IMG_0697.jpeg?raw=1)
The first PCB I ever designed! It's for a theatre lighting control keyboard.
It's iteration 1 of (probably) many. Currently this PCB only contains the keyboard matrix — the rows and the columns end in headers that I'll connect to my Teensy using wires. I have more ambitions, including RGB LEDs, but those will have to wait for future boards. I realised that I was biting off more than I could chew trying to do all the things on my v1, so I wanted to get something that worked first!
Would that fit into a console of some kind? A compartment/case?
Also quite interested to know what kind of work you do, Amy.
Would that fit into a console of some kind? A compartment/case?
Also quite interested to know what kind of work you do, Amy.
I have an enclosure that looks like this. It'll hold the keyboard-y bit, plus a tiny computer and some DMX output hardware, a couple of small LCD displays, etc.Show Image(https://www.dropbox.com/s/7g9vdcv7yk5kr9w/1456WL1BKBU.jpg?raw=1)
As for work, for my day job I work for Facebook as a software engineer. This is a side project/hobby :)
hi all, how do you guys decide which micro controller to use in your custom keyboard?I choose one that already has QMK support and has the number of pins needed for the keyboard matrix and periferals (rgb leds or such).
I'm in the same boat as No_Joke and could use some help looking at a design. I honestly have no idea what I'm doing and just learning along the way.
Based off of the Fullsize Custom PCB FIlco Compatible - SaikouType 110 (NKBM-ST110r2) by null but a left handed version. Messed around with Freeroute a bit but
honestly just need some input as to whether the design is correct. Still some aspects I don't understand, like the USB implementation, as there is one connection
with no net. It has a schematic symbol but no footprint.
Hope the Github thing was done correctly.
https://github.com/Tedfs3/104LH_v3.3 (https://github.com/Tedfs3/104LH_v3.3)
why not do this? tbh, if it was me i'd keep the usb lines straight, and put the port on the left hand side. those crystal lines seem quite long, you could rotate the mcu 90 degrees anticlockwise and have the crystal up top.
Generally the more capacitors you use the better.I've added "the missing" capacitor.
all pins are safe to use. mosi etc are for isp programming which requires them to be isolated. This isn't an issue in keyboard matrixes because each unpressed switch on a row or column isolates the connection, and the programming speed is slow enough that capacitance is not an issue either, like it could be on a usb bus. So just run each isp pin to a header, doesn't even have to be the 2x3 header atmel recommends as you will probably be just fine with the default bootloader and never use it.I've added the header; may remove it later if it complicates the manufacturing of the board* (or use regular vias instead).
I think some pcbs route the vcc under the mcu to make routing easier. it will work, but not best practice as there's some rf magic lore that says mcus should have a ground plane underneath, with a load of vias to wick the heat away to the other side of the pcb.I had a +5V zone below (after the 10uF capacitor) to power all the +5V pins (through their +5V/GND capacitors)... I've replaced it with a trace, set the zone to be GND, and gruyèred the area.
segment errors tend to result from a broken line. I bet if you use a different usb footprint you will avoid that error.As you said, I used a different USB footprint and the error dissapeared!
your pcb looks to be of excellent quality and well laid out. all i would do is add an isp header but it's not needed either as you can just solder straight to the switch contacts.Woah! Thanks!!! I wasn't expecting that! :-O
Hi (again)! And thank you very much for your feedback, gipetto :)Check alps64 by hasu. I like the atmega32u2.
It seems that JLCPCB has no stock of the ATMEGA32U4... so I've tried to use ATMEGA32U2 instead. The problem is all the guides I've been following use an U4 and, as I have very little knowledge of electronics, reading the U2 datasheets didn't help.
I've removed a capacitor (the U2 has one less VCC pin than the U4)... but I really don't know what I'm doing.
Does anyone has an schematic of a simple keyboard using the U2? Namely: values (for capacitors and resistances), crystal, should I still connect a resistance to the HWB pin? Does the RESET pin requires a resistance? Etc.
Or would it be better to wait for JLCPCB to re-stock the U4?
Thanks!
vbus is missing a 10uf decoupling cap and from what i can see you have only one one mcu pin wired up. check out other keyboard schematics, uvcc, avcc, vcc should all be connected to the usb port
I'd still appreciate a clear answer on the 10uf cap issue though. Is it necessary? Recommended? Max of 10uf? 10uf cap specifically needed on that line? I'm very lost on that particular issue.
Hi guys, I spent a few hours today learning KiCAD and making a schematic and then a PCB. I've ran a DRC and everything appears to be fine, and I've checked in the 3D viewer and it looks great. I uploaded to JLCPCB and it also looks fine there, but I would love if someone who knows what they're doing could check it for me before I buy some PCBs and find out I forgot something important lol. Additionally, I would love some help making the edge cut/border, as I can't figure out how to do rounded corners and am not certain if I did it right.
tl;dr: Can I have help with edge cuts, and is my PCB otherwise ready to be sent to JLC? Thanks!
Link with gerber file zip and KiCAD_PCB file, hopefully this is enough:
https://drive.google.com/file/d/15saIauaqHZDdibvOiQnLP2Bm9QKa6A7r/view?usp=sharing
https://drive.google.com/file/d/14sWQL_ujHY77a7lsjta9pp-V5MFkGECz/view?usp=sharing
Alps stabs go on the plate, but I'll check my switches, thanks.Hi guys, I spent a few hours today learning KiCAD and making a schematic and then a PCB. I've ran a DRC and everything appears to be fine, and I've checked in the 3D viewer and it looks great. I uploaded to JLCPCB and it also looks fine there, but I would love if someone who knows what they're doing could check it for me before I buy some PCBs and find out I forgot something important lol. Additionally, I would love some help making the edge cut/border, as I can't figure out how to do rounded corners and am not certain if I did it right.
tl;dr: Can I have help with edge cuts, and is my PCB otherwise ready to be sent to JLC? Thanks!
Link with gerber file zip and KiCAD_PCB file, hopefully this is enough:
https://drive.google.com/file/d/15saIauaqHZDdibvOiQnLP2Bm9QKa6A7r/view?usp=sharing
https://drive.google.com/file/d/14sWQL_ujHY77a7lsjta9pp-V5MFkGECz/view?usp=sharing
from what i can see only half your switch contacts are routed. I'm not familiar with alps and I don't know what is your strategy for stabilizers.
All switches are in the center of the keycap (except for some legacy things like stepped capslock, 6u spacebars with off-center stem).
You can easily calculate the distance between the centers (i.e. switch stem position) of two adjacent keys:
If you have a 1u next to a 1.25u (u = key units, which is multiples of 19.05mm):
1u/2 + 1.25u/2
= (19.05mm*1)/2 + (19.05mm*1.25)/2
= 21.43125mm.
it looks functional but i'd place all the diodes in the same direction to avoid confusion over polarity.
there's no real benefit to having one diode per switch, apart from tidiness or diagnosing faults without a pcb file.
that's fine. there's no real benefit to having one diode per switch, apart from tidiness or diagnosing faults without a pcb file. mostly you're trying to avoid faults in component assembly. you ran traces between two arduino pins in a few places. there is a chance of a solder bridge with that so it would be better if you could reconfigure the pinout to avoid crossing over to the inaccessible header side of the arduino.
there's no real benefit to having one diode per switch, apart from tidiness or diagnosing faults without a pcb file.
ghosting?
sorry i meant. to say there's no real benefit to having each switches diode located nearby to the switch.
I normally put the sides on the underside of the PCB within the boundary of the switch it's attached to. That keeps things nice and neat. That wouldn't work with through hole diodes though.
For the zones: just place a via in a non filled area, so that front and backside are connected.I normally put the sides on the underside of the PCB within the boundary of the switch it's attached to. That keeps things nice and neat. That wouldn't work with through hole diodes though.
I originally put them there, I put all the traces in and it was neat, but I realised it wouldn't fit and had to redo all the traces. How I have it currently, only a basic soldering iron, solder, a screwdriver, and pliers are needed to assemble it. I'm happy to have the hybrid ones that allow for SMD and TH diodes but I'd rather not have to deal with those tiny SMD diodes.
I have finished wiring all the traces. Not as messy as I thought it might be but I think it could be better.
Front:
(Attachment Link)
Back:
(Attachment Link)
I'm not sure if the filled zones are important at all. They are set to ground on both sides of the board and the only thing that uses them is the reset switch, which could just have a trace running to it anyway. With where the traces run on the front they create large gaps which don't look great. What should I do with them?
For the zones: just place a via in a non filled area, so that front and backside are connected.
I don't know if ground planes add any noise immunity or EMI benefits, but commercial boards don't seem to have any.I think that is because switch contact "ringing" is much bigger when compared to ground/power plate shielding. One already needs to debounce because of switches and that takes care of EMI disturbances too. So they save copper by not using ground/power plates.
As long as you are not using hundreds of vias you don't need to think twice about it. Relative to the size of the board it is nothing.I initially saw vias as something that should be minimised as most of them can be removed with some clever placement of traces. The original design only had one via. But yeah it doesn't really matter that much.
I don't know if ground planes add any noise immunity or EMI benefits, but commercial boards don't seem to have any.I think that is because switch contact "ringing" is much bigger when compared to ground/power plate shielding. One already needs to debounce because of switches and that takes care of EMI disturbances too. So they save copper by not using ground/power plates.
Whether you should pour planes or not all over the board I can't really say. I recon it uses more etchant, but on the other hand I'm certain the copper will in turn be recycled by the board house, to their benefit is my guess.
good day, gh. where do PWR_FLAG connects? I am trying to redo this schematics in easyeda hoping that i can understand it better ...You need power symbol for power line such as VBUS and VOUT of the regulator. Then connect PWR_FLAG to the lines like for GND.
You need power symbol for power line such as VBUS and VOUT of the regulator. Then connect PWR_FLAG to the lines like for GND.
thanks, hanya. follow up question...in the schematics i posted, PWR_FLAG is directly connected to GND. i think they should not be directly connected? should i disconnect it instead? apologies for my ignorance.It is OK, you can connect where you want. I sometimes connect like that and put them near the corner of the sheet. Since the flags needs only by KiCAD.
It is OK, you can connect where you want. I sometimes connect like that and put them near the corner of the sheet. Since the flags needs only by KiCAD.
Hello everyone - I'm pretty new to PCB design, but I wanted to try my hand at adding full backspace capability to the Arisu PCB by FateNozomi. I ran through a few tutorials from ai03, and given that the change was relatively minor went for it.you missed out on the diode. it needs to be adjusted since its too close to the stabilizer hole
I would really appreciate it if someone with more experience would take a quick look and let me know if it looks alright, or if there is a better approach before I have PCBs cut.
I forked the original files and created a public repo on Github. You can find them here: https://github.com/andygunn/arisu-pcb-1.1-fb (https://github.com/andygunn/arisu-pcb-1.1-fb)
You can see the change here in the render:
I really appreciate it! Geekhack has been a great place to learn about all of this, thanks to you all.
you missed out on the diode. it needs to be adjusted since its too close to the stabilizer hole
Hi, I've nearly finished my PCB, but I noticed something odd.Show Image(https://i.imgur.com/COVorBY.png)
Looking at the gerber view of pcbway, it shows 2 sets of drill. Is this a problem or is it normal?
More images:MoreShow Image(https://i.imgur.com/b2qqIiv.png)Show Image(https://i.imgur.com/bwSxaUx.png)
This is normal, one set is plated holes, one set is non-plated holes :D
I put a silkscreen decal on one side of the pcb, it covers most of the pcb. I'm not sure if it will cause any issues, it isn't covering any solder pads but it does cover a lot of plated holes. Will this cause issues with the holes?Try "Subtract soldermask from silkscreen" option to plot gerber file. Then check the resulting gerber file with its viewer.
Try "Subtract soldermask from silkscreen" option to plot gerber file. Then check the resulting gerber file with its viewer.
So I'm using ai03's guide and noticed there's a problem with the USB. I get the message "Processing courtyard of “random-keyboard-parts:Molex-0548190589”: Unable to find segment with an endpoint of (162,58 mm, 18,998 mm)" . I found one post saying to switch out the USB footprint. Does anyone know of any USB footprints to use? I also looked into a usb type C HRO TYPE-C-31-M-12 but not sure what the rest of the pins do besides the ground, power, D-, D+. I'm a noob if it isn't already clear so any help is appreciated. Thanks in advance!The ai03 guide have a section that deals with how to implement USB-C: https://wiki.ai03.com/books/pcb-design/page/usb-type-c