Looks real good Ron. Some pointers on how you go about deciding the position fro the Teensy and then running those tracks would be immensely helpful.
Ok; I'll try. This is not completely set in stone, but here are the steps I used to get to the incomplete layout attached. (OBTW, The latest layout is attached.)
PHASE ONE: THE SWITCH LAYOUT:
1. Start with a switch footprint in a .75x.75" outer boundary, and an inner .55x.55' boundary marked as well.
2. Place a diode and a resistor between the inner and outer perimeter.
3. Add row and column traces (and LED signal and ground traces, if applicable), and run them to the edge of the outer boundary.
4. Replicate the initial cell into a short row to see how it fits together. Return to Step 2 until they fit together properly.
5. Take another switch foot print (as used in Step 1) and place it anywhere in the test row to find problems. Return to Step 2 until there are no problems.
6. Take PCB-mount stabilizer patterns and place them in the test row to find problems. Return to Step 2 until there are no problems.
7. Take the resulting product of the iteration process, and use it as a base cell for PCB layout. NOTE: Sometimes the resulting base cell contains two switches. This is typically the case when there are multiple places with optional 2x switch positions, like a numpad area.
8. Carefully lay out the first row of switch positions. Check for problems, and probably go all the way back to Step 2.
9. Lay out the rest of the rows EXCEPT THE BOTTOM ROW. Check for problems, and possibly go all the way back to Step 2.
10. Lay out the bottom row. Check carefully for shorts and pads inside of holes. Avoid stabilizer keep-away zones.
11. Publish the draft layout to get member feedback. Iterate Steps 8-11 as needed until consensus or approval is obtained.
12. Publish the "final" switch layout and announce that no more input will be welcomed EXCEPT problems identified with the layout.
Now you have the board, populated by switch cells and extra mounting positions.
PHASE TWO: BASELINE TRACES AND CONTROLLER:
1. Connect the row, column, and LED traces where stagger has left gaps. Do this carefully to avoid shorts and gaps.
2. Identify any peculiarities with the matrix, and adjust the rows and columns to fix this problem.
EXAMPLE: On the JD45, the upper-right switch is physically in Row 1, Column 13. But it would be the only switch in Column 13, which would be a waste of a pin. So, In this case, I ended Row 1 with Column 12, and re-assigned physical R1C13 to electrical Row 4, Column 12. This is a slight hassle in layout and firmware, but it means that the PCB remains electrically a 12x4 grid, which will reduce pin count and possibly allow re-use of the JD40 firmware.
3. Find a place where the Teensy will fit around the switch positions. Avoid as many passives as possible, as they will be buried. Also, take care to avoid blocking traces from switch pads that can't be moved. On this layout, that meant ensuring that Teensy pins B3, B7, and D0 are offset to allow the LED leads for switch 2,12 to escape between the Teensy's pads. NOTE: Don't forget to mirror the Teensy so it is in the proper orientation on the opposite side of the PCB from the switches!
This step requires trial and error, and typically I get it wrong for the first few passes. Also, it may need to be moved once I try to connect row, column, and LED traces.
I try to keep the Teensy as far up the PCB as I can, to go with
the natural slope of the keyboard. A surface-mount controller can fit under the spacebar or over the arrow-cluster, but not so much the Teensy, unless you are willing to have a very tall keyboard. For the JD45, I placed it over switch 2,12 because that position had the fewest components in the way.
PHASE THREE: SIGNAL TRACES
- Ron | samwisekoiSig auto-typed by my GH36 LH keypad.