When building PCBs with small Surface Mount components, it helps to be able to view the board with some magnification. This is useful for both the actual placing and soldering of components, and for inspection of the board after the fact.
So I’ve purchased a not-quite-bottom-of-the-line scope with a built in screen. I’ve previously played about with a USB-based microscope – essentially a webcam with a magnifying lense – and the result was mostly bad. The biggest problem with the USB scopes is latency: when an object under the lense is moved it takes a fraction of a second before the on-screen object moves accordingly. This quickly gets annoying, especially if the object in question is a soldering iron tip or component you are trying to position.
Here it is on my desk:
The image quality is pretty amazing for the price. Perhaps surprisingly the zoom level is fixed, beyond what is possible to achieve moving the microscope up and down on its stand. It does have digital zoom, but this is a worthless gimmick really. In terms of zoom level, at minimum distance a clear image can be obtained where the view is approximately 8 mm of the target object wide, which is pretty much perfect for the kind of use I want to put it to. Needless to say, there is no observable latency.
It also has a micro SD card slot, and can save (and view) images and videos to it:
This image is 1920×1080 pixels and is of a 1206 resistor. You can even see the texture of the part. The only downside with the scope is the user interface. The buttons have markings on them which do not match what the scope does. But this is a minor niggle really. All in all I’m very pleased with this little addition to my bench, which should make the construction of SMT PCBs much easier.
Next up, I’ve completed the design of the schematic, and the PCB routing, of a keyboard controller board. MINI000‘s IO board contains an RJ10 connector for attaching an external keyboard. This keyboard was originally going to to housed in a 3D printed box, but for now I think I will satisfy myself with mounting it to some acrylic. This keyboard will initially be used with the MINI000 + IO board combination, but will eventually be used with the MAXI000, which will use the same signalling and connector.
The actual keyboard is the same as the one used in MAXI09; an Amiga 600 keyboard. Code wise, the microcontroller will run almost identical software to the one in the MAXI09 board. The schematic is very similar to the relevant section of the MAXI09 schematic:
The main differences are the addition of a power LED, the RJ10 connector, and the IDC header. Unlike the MAXI09 board, the IDC header is necessary because the AVR (and all other parts) are surface mount. With the MAXI09 board I could extract the PLCC44 ATMega8515 (PDF) to reprogram it. To try to save some space, the programmer header is a 6 pin IDC header instead of the 10 pin ones I normally use.
Here is the PCB design:
This proved to be a nice gentle introduction into designing SMT boards; I’m pleased I didn’t jump in and do something really complicated right away, like the MAXI000 board!
It is a 2 layer board, the first 2 layer board I’ve designed in quite a while. The board has pours on both sides, the component side, for the ground connections and the reverse for Vcc. In both cases the pour itself is not sufficient to connect up each pad and traces are also needed. The display of the filled pour is turned off in the picture above.
Working on SMT boards is strange after working with through-hole for so long. I’m keeping things simple (and tidy) by mounting all components on one side, and I’ve found that my usual approach of having up and down traces on one side of the board with left and right traces on the reverse side does not work. Instead most traces stay on the component side, with the back side reserved for “hopping” over traces on the front side. I’m unsure how well this approach will work with more complicated boards, but I’ll find out soon enough.
The resistors, capacitors and LEDs are all 1206 size, ie. 120mil by 60mil or 3.2mm by 1.7mm. This is a large by current standards but, as I found out with the practice board, nice to work with. It also happens to be the size of some parts I bought a few years ago but have yet to actually use in any projects.
The ATMega8515 is in Thin Quad Flat Pack (TQFP). The IC has 44 pins (the same as the IC in PLCC) which are on a pitch of 0.8mm, so not tiny but still almost half the 1.27mm pitch of a PLCC part, assuming it was soldered directly to the PCB instead of socketted. This will be the trickiest part, on this board, to solder.
For consistency the reset push button and the 8Mhz can oscillator are SMT. I’ve left all external connectors, like the IDC header and the RJ10 as through-hole for two reasons:
- Robustness : SMT connectors are not as sturdy as their through-hole parts and can rip up traces if used incorrectly.
- Cost : I have these connectors to hand already.
One question I need answered concerns whether it is good design to place vias inside pads. This would eliminate the short traces adjacent to some pads, but I’ve read that it’s usually considered bad practice.
The obligatory 3D rendering:
As usual, I’ve not been able to find the 3D models for some parts. Since the same missing parts come up every now and then, I might find the time to learn how to make them myself; it might make an interesting diversion.
Finally, I’ve designed the schematic, such as it is, and PCB for a 72 pin SIMM breadboard adapter. This adapter will allow me to attach a 72 pin SIMM to the MINI000 board (without the IO board attached) and will allow me to experiment with implementing a DRAM controller in MINI000’s CPLD. This design, once perfected, can then be used in the MAXI0000 board.
72 pin SIMMs are essentially little PCBs for holding DRAM ICs and a small amount of glue circuitry. The DRAMs are arranged so the databus is 32bits wide, but with some trickery it should be possible to use them in a 16bit system without any wasted addresses.
Here is the schematic for the breadboard adapter:
The 72 pin SIMM symbol, and footprint, were both borrowed from the Kiss68030 project.
Whilst it would have been perfectly possibly to simply route all 72 pins to PCB pins for attaching to the breadboard, it made sense to avoid some pointless wiring by, for example, tying together the Vcc and GND connections.
The other thing the adapter does is connect up both halves of the 32bit wide databus. Since /CAS0 to /CAS3 are used to select individual bytes it should be possible to select which half of the 32bit wide databus is used using these signals. Since /CAS0 will not be selected together with /CAS2 (and likewise for /CAS1 and /CAS3) no conflict should result.
PRD0 to PRD3 are used for 3.3V operation so should not be required.
The exact details of how the DRAM controller will actually operate are a little vague at the moment, but hopefully this adapter, and the MNI000 board, will allow me to experiment and achieve a working solution.
Here is the, trivial, PCB design:
The width of the adapter board pins is 600mils, the same as a “wide body” DIP IC.
Both the keyboard controller board and the SIMM adapter board have been ordered from allpcb.com and are on there way as I type this.
Another thing that is on its way to me is a mouser.com order. This is for a few outstanding parts for these two PCBs – the SIMM sockets and other parts which are hard to obtain from ebay – and some needed parts for the future MAXI000 board, a board I intend to start drawing up the schematic for soon…