Useful Small PCB Work holder

I was watching a YouTube video series about removing and replacing a BGA IC and the talented technician was using a really useful looking PCB holder. You’ll see the PCB holder at 3:50 into the YouTube video link below. The video is in Vietnamese but that doesn’t really matter as you can clearly understand what he is doing. Unfortunately, my first BGA removal was a failure because I was a bit too eager to lift the chip, applied too much pressure and lifted several BGA traces on the PCB. I fear that the board is ruined beyond recovery. I should have first practiced on a junk board.

I purchased one of these useful little PCB holder via eBay and it arrived yesterday – see my photo below. It seems well made and I definitely believe that it will be as useful as in the video. The base is a painted steel and the vise parts are plated but show machining marks so they may be machined rather than cast, which is a good thing. The base measures 12cm x 8cm. I purchased mine for $3.41-USD (including shipping) from eBay seller “94racing-us“. It was delivered in twelve days from order.  Domestic delivery is often slower than that  and this came across the globe from China.


PCB Holder – Empty and loaded with a PCB


Posted in Uncategorized | Leave a comment

Linux Associate file icon and application

I could not get association of a file icon, mime type and application to work satisfactorily. There are numerous how-tos on the Internet but all are incomplete or wrong. The greatest help, for me, was the ARCH Linux Default applications help page. It helped more than any other, but wasn’t all of what I needed. BTW, I couldn’t get the icon to work in the .local directory so I had to put it into ‘/usr/share/icons/Mint-X/mimetypes/scalable/’ in my Mint 17.2 system.

Anyway, I wrote up a cheat sheet for me using the freerouting java program as my example. Here it is:

Example - add file icon and application for freerouting in ~/bin

Place inkscape created icon.svg in:

In ~/.local/share/mime/packages/ place application-x-specctra-dsn.xml:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="">
  <mime-type type="application/x-specctra-dsn">
    <glob pattern="*.dsn"/>
    <glob pattern="*.DSN"/>
    <comment>SPECCTRA DSN for autorouters</comment>
    <icon name="application-x-specctra-dsn"/>

In ~/.local/share/applications/ place file freerouter.desktop
[Desktop Entry]
Comment=freerouter Autorouter for pcb

sudo gtk-update-icon-cache /usr/share/icons/Mint-X/
sudo update-desktop-database

NOTE: In this example "/home/username/bin/freerouting" is a shell command:
java -jar /home/username/bin/FreeRouting/fr.jar

It executes a java program<span 				data-mce-type="bookmark" 				id="mce_SELREST_start" 				data-mce-style="overflow:hidden;line-height:0" 				style="overflow:hidden;line-height:0" 			></span>
Posted in Uncategorized | Leave a comment

SMD Temperature / Humidity Sensor

I made a Printed Circuit Board (PCB) for a project that I have been working on that a temperature and humidity sensor. My initial PCB had mostly Surface Mount Devices (SMD) parts but three parts were discrete through-hole parts. Through-hole parts are a problem for Pick-aNd-Place (PNP) production, so they should to be replaced by SMD parts, whenever possible – see Design for manufacturability (DFM).

One discrete part that I was using was the Chinese made DH22 Temperature & Humidity sensor module, readily available on eBay and elsewhere.


Fig 1: DHT22 Temp/Humidity Sensor Module

The DH22 works fine but being discrete, it had to go. The sensor IC that I selected is the Silicon Labs Si7006.  The Si7006 interfaces via two-wire I2C. The final target controller chip is my personal favorite, the Atmel/Microchip Attiny85. However, I have a good bit of experimentation to do before it will be ready for the Attiny85. Until then, I am experimenting with the Arduino NANO. I don’t plan on integrating the Si7006 into my total PCB design until it is working to my satisfaction. Consequentially, I designed a small prototype board (~10X13mm) that I can plug into a breadboard. The schematic for the Si7006 prototype board is shown in Fig. 2, below. The layout of the resultant PCB is shown in Fig 3, below.


Fig. 2: Prototype Schematic


Fig 3: Prototype PCB Layout

Today I tested the Si7006 in a breadboard with an Arduino NANO using a test program (Si7006Example) that is part of the thingTronics Si7006 Arduino Library.  See Fig 4, below. At first it only partially worked – it started, read the serial number and firmware number but reading the temperature and humidity failed. After some research, I changed the read mode from the default “No Hold Master Mode” to “Hold Master Mode” and it immediately started working. Actually, I also unsoldered the original 10k resistors and replaced them with 4.7k resistors, also due to an interesting article that I read about the Si7006’s pull-up resistors (I’ve lost the link, sorry).


Fig 4: Breadboard with Si6006 Prototype Board

With the read mode changed to “Hold Master Mode” the Si7006 prototype board worked correctly. See serial output in Fig 5, below.


Fig 6: Serial output of Si7006 Test Program

Next, I need to try interfacing to a resource limited Attiny85 using the TinyWireM library. I expect this to be a challenge.

Posted in Electronics, hardware | Leave a comment

All SMD Radio Transmitter

In a current personal(1), i.e., not for sale or distribution, project I have been using a Chinese ASK radio transmitter module – the STX-882, which I posted about back in February of this year. The STX-882 works well BUT being a module, it is a through-hole device and my goal is for my current project to be 100% Surface Mount Technology (SMT). While  this project will not be manufactured for sale, I am curious as to what such a device would cost IF it were turn-key manufactured and what the final cost would be. It appears that the cost would be greatly reduced if there are no through-hole devices. Through-hole devices in a low volume product cause a two step manufacturing process where the board is assembled using Pick aNd Place (PNP) fabrication but must be finished by hand. As a result, I needed to replace the three through-hole parts in my design with SMD parts. One part, a large capacitor, I will replace with several, smaller capacity SMD capacitors. However, two modules, a Temperature/Humidity sensor and the aforementioned STX-882 433.92MHz RF transmitter module would need to be replaced with SMT designs that would be incorporated on the same board.

I decided to build three small personal prototype boards solely to test my design and fabrication. To replace the 433.92MHz transmitter I selected Microchip’s MICRF113YM6 single-chip ASK Transmitter IC. Quick calculation indicates an ERP of -10.005 dBW with a λ/4 antenna. Transmission time is a few milliseconds. Utilizing a slightly modified version of their reference design I used pcb-rnd PCB design software to design a small prototype board which I then had made by OSHPark. This board was designed VERY quickly – I didn’t spend over 30 minutes designing the schematic and laying out the board. Such is the case with pcb-rnd, which was forked from geda PCB in order to add a number of innovative features.


Fig 1: 433.92MHz Prototype Board Design


Fig 2:  Prototype Board pcb-rnd view

Today, I broke out my 858D hot air workstation and built up one of the prototype RF Transmitter boards. Next I cranked up a breadboard’ed test receiver for this project and on a transmit breadboard for this project I switched out its STX-882 transmitter and substituted my newly designed board. See Fig 3, below.


Fig 3: New Prototype Substituted for STX-882

To my great joy, the instant that I powered it up error free data was being delivered over 433.92MHz. Refer to Fig 4, below, and you’ll see the received temperature and humidity data. Also, Fig 4 is a spectrum scan while the radio periodically transmitted data (once per minute). The measured frequency is 433.916 – not quite the 433.92 expected but certainly well within tolerance. I’ll accept it because I didn’t use precision parts for C5 and L2. They are 10% tolerance parts.


Fig 4: Data received from Prototype RF Module.


Fig 5: Spectrum Scan

Now I’ll move on to testing my prototype temperature/Humidity sensor module. More on that later.

1. This is a personal use home-built device (not kit-constructed) that is assembled in a quantity of five or less. BTW – this odd verbiage is in case anyone from the FCC reads this post.

Posted in Arduino, Electronics, hardware, PCB Etching | Tagged , , , , , | 1 Comment

Chinese SOIC-8 test clips for in-Circuit Programming – Part 2

Last April I wrote about the cheap Chinese SOIC-8 test clips. In that post I primarily discussed the wiring – specifically that, as wired, it isn’t useful for in-circuit programming of the ATTiny85 SMD SOIC-8W chip. Ultimately, I rewired the clip so that it would work correctly for the ATTiny85 SMD SOIC-8W chip. I went on to use the chip quite successfully, programming a number of ATTiny85 SMD SOIC-8W chips while in-circuit. I was thinking that this cheap Chinese test clip was pretty good until today. I had extreme difficulty getting it to program in-circuit on one board and this was right after a good program on another board. Since one board programmed successfully I assumed that the second board had a problem and, after a lot of investigative work ended up tearing the board apart piece by piece when the problem was actually in the test clip.

With further, magnified, investigation (see photos below)  I discovered that (1) the clip rode too high on the chip; (2) slight variation in chip profile made some chips fail when others would work; (3) the culprit was the clip’s retention spurs – little extensions of the plastic part of the clip that are intended to grasp the IC around its base and hold the clip firmly in place with good contact to pin connection. The plastic is simply too soft for the retention spurs to survive very long – I probably used it less than a dozen times before it failed.

I thought that a better brand of test clip might not have this problem but, after reading THIS ARTICLE and also THIS ARTICLE, it seems that it is a universal problem and that the brand-name clips are no better. I am going to be forced to abandon in-circuit programming using a SOIC-8 test clip and, instead, I’ll design in a programming connector. A 10 or even 6 pin ISP connector is too large for my boards so I may just put in some plated-through holes for pogo pin connection and create a custom programmer cable with the pogo pins secured in a small PCB. TAG-CONNECT cables and pads are one solution but I think that I’ll probably just roll my own.

UPDATE: On eBay (seller pingf123) I found and interesting pogo pin adapter for SOIC-8 chips. Unfortunately, its pins are at 5.08mm which is designed for a standard SOIC-8 (SOIC-8-N) and the ATTiny84 SMD package uses a SOIC-8-W (wide) package and this adapter’s pins will not clear the case – so, no good for the ATTiny85.  I’ve been wondering if I can 3D print my own pogo-pin adapter? Hmmm – I’ll ponder on that while I wait for my new 3D Build-One printer to arrive. I’ve retired my old OneUp printer as it was getting too loose for good prints.

For new designs TINDIE has a pretty neat little Tiny AVR-ISP pogo-pin programming adapter. Also, the solution by Geppetto Electronics on TINDIE looks good. Also, in kit form is the solution by SparkFun – their $10US ISP Pogo Adapter looks like another good solution.

UPDATE: to the UPDATE: I was unwilling to wait for the most economical solution – I purchased both a custom version of pingf123’s pogo pin adapter for SOIC-8 chips mentioned above and Geppetto’s TINDE AVR ISP Pogo Adapter kit solution above. Both are good quality solutions – pingf123‘s solution is good when no ISP pad is available and when there is a ISP-type pad Geppetto Electronics on TINDIE does the job.

P.S.: pingf123 posted a comment – he made me his adapter at the custom spacing of 7.4mm.  See comment section.

Clip Close-ups

Close-ups of Test Clip on ATtiny85V-10MUR

Posted in Arduino, Electronics | Tagged , , , , | 4 Comments

Macrofab Pick and Place (PnP) – musings

I have been doing some PCB SMT design using pcb-rnd with a goal of trying a board assembly shop.  I’ll do a few prototypes but that is all. Macrofab has enough recommendations for prototype quantities that I have been concentrating on it. Pcb-rnd is a spin-off from geda pcb. Geda pcb has stagnated, not dead but somewhat stagnate, so an interested team created pcb-rnd in order to accomplish some significant new features while maintaining backward compatibility to geda pcb. There are numerous YouTube videos about Macrofab HERE.

It turns out that PnP assembly is tricky as there are NO real industry standards. I’ve tested centroid/xyrs part placement files with several fab houses and each wants a different file format. Likewise each fab company has other peculiarities in its required x/y measurement origin, nomenclature and unit of measure. Additionally, their documentation for “their” format is typically scant to none, ScreamingCircuits being an exception as they have significant documentation. I have been helping Tibor Palinkas (Igor2), the Lead Developer of the pcb-rnd project, on getting pcb-rnd to export a xyrs file that Macrofab can correctly read. It was a challenge but we are finished and pcb-rnd correctly produces a centroid file that has correct rotation and size values although the CSV file will need some column/row tweaking as it is a generic format and Macrofab is not flexible on column/row arrangement. I do my manipulation in a Makefile.

With square/rectangle boards pcb-rnd uses the implicit Pick and Place (P&P) origin of 0;0 at the lower left corner. Pnp-rnd handles the origin used by XYRS with odd shaped boards with a special dot on any layer of the board – a “PnP-Mark”.  The PnP-Mark dot is created by drawing a short line and then drag&drop move the endpoint of the unselected mark line to its other endpoint – this will result in a 0 long line, which looks like a filled circle. Next select the mark, drag&drop move it to the lower left corner of the outline box relative to the outline’s line centerlines, as shown in Figure 2, below. With the mark still selected, press ctrl+e and click on the “add attribute” button in the property editor. Type in “pnp-origin” in the “Attribute key” and “yes” in the “Attribute value” field (see Fig 3 below); click ok and close the property editor. Finally, export the Gerber and xy files.

For the record:

  • Macrofab measures x/y placement, in mils, based on the lower left corner of the board or, if present, the lower left corner of the outline centerline. For an example of the proper position, see Figure 2, below. Placement is looking through the board (think X-ray). NOTE that Macrofab uses bounding box measurement so if your board is an odd shape, for example wider at the top than the bottom, the lower-left corner will be that of the bounding box and not necessarily that of the board’s outline. See Figure 1 “Bounding Box PCB Example” below.
  • Macrofab requires the part dimensions, in mils, of the part’s Rotation-0 orientation regardless of the rotation of particular placement. So, a part, measured Rotation-0 orientation, of XSize 366.27, YSize 237.17 would use the same value when in Rotation 90, etc.
  • Macrofab rotation is based upon Dual inline chips being oriented at 0 (zero) rotation with pin one on the upper left. Two pin and single inline components are oriented at 0 (zero) rotation with pin one to the left. See figure below. Also, rotation for the bottom is the same but with the board flipped, bottom now facing you.
  • Macrofab requires the XYRS file be TAB delimited with columns in a fixed order, meaning a heading row is ignored and, in fact, creates a problem if present. The order is: Designator, X-Loc, Y-Loc, Rotation, Side, Type, Xsize, Ysize, Value ,Footprint, Populate, MPN

BTW – some may wonder why I use pcb-rnd or geda pcb instead of kicad (I avoid non-open-source software). I have tried kicad enough to know that it is a very capable product – but – it is too monolithic for me. I prefer the Lunux/Unix approach of a tool-suite, which geda pcb and pcb-rnd provide. I have a history with geda pcb, having used it for years – I know it and therefore find it easy to use. That said, for a newcomer that has never before used pcb layout software, I would recommend kicad.

Image Credit: ScreamingCircuits


Fig 1: Bounding Box PCB Example


Fig 2: PnP-Mark re Outline Centerline


Fig 3: PnP Mark Example

Posted in Electronics, PCB Etching | Tagged , , , , , | 2 Comments

COB Removal – Fail !

I have some  PCBs with a Chip-On-Board (COB) chip that I was curious about. A website stated that this COB contained a QX5252F chip but it was not stated how this was determined. I didn’t really believe it and decided that I would sacrifice the board to see if the chip had any markings. I planned on examining the chip with my grandfather’s microscope – he was a medical doctor.

I used Kai Bader’s YouTube video as a guide for COB exposure using an SMD Hot-Air rework station, It worked like a charm and exposed the chip under the COB Goop – EXCEPT that my chip didn’t stay on the board like Kai Bader’s. My, smaller than expected, chip came off of the board, embedded within a piece of goop. I could only see the bottom of the chip. I reheated the piece of goop and tried to pop the chip out of the goop – FAIL – the fragile chip broke into hopelessly useless fragments. See the photo below.

I may try another COB exposure but first I’ll practice on some other boards. Hey, it was my first try at this!


COB Exposure Attempt – FAIL

Posted in Electronics | Tagged | Leave a comment

Caveat Emptor – SOIC8/SOP8 test clips

My mistake may benefit you if you are into budget surface mount PCB creation.

I recently purchased an 8-pin  test clip for SOP8/SOIC8 surface mounted chips. My goal was to use my USBasp programmer to flash in-circuit ATTINY85-20SU chips. I hastily, too hastily, purchased a Chinese SOIC8/SOP8 test clip similar to the shown in Figure 1, below.  This was a mistake and I am largely to fault, although the minimal documentation provided by the eBay seller didn’t help. In any case, closer examination of the photo would have convinced me that it wouldn’t do what I wanted – at least not easily.


Fig. 1: Chinese SOIC8/SOP8 Test Clip.

The only way that I could use this test clip as delivered would be to insert the included header PCB into a breadboard, also find a way to plug my USBasp programmer into the breadboard (not so easy without a second header PCB) and use jumper wires to connect the two in a usable way. I didn’t want such a kluge and decided to try and salvage what I could from what was delivered.

There were three problems: (1) The 10-pin IDC ribbon connector is wired straight through, i.e., IDC connector pin 1  to test clip pin 1, IDC connector pin 2  to test clip pin 2, etc. The ATTINY85-20SU is not wired that way; (2) the ribbon cable has two wires cut off right by the IDC ribbon connector and I needed pin 9 (MISO); (3) the ribbon cable is soldered to the pins on the test clip and sealed with shrink-wrap, making replacement with a new cable difficult.

First, I soldered and removed the existing cable and then, using a scrounged 10-wire ribbon cable, I soldered and shrink-wrapped the new cable to the test clip with the wires in the correct places. I also put a larger piece of shrink wrap around the wire nest to try and make it a bit less fragile. Fragility is my concern because my scrounged ribbon cable had solid, not stranded, wire.

In any case, it works. Figure 2 shows my completed OIC8/SOP8 test clip just after I finished flashing the ATTINY85-20SU on the little purple PCB.

BTW – these OIC8/SOP8 test clips are available on eBay all by themselves in case you’d like to inexpensively do your own OIC8/SOP8 in-circuit programming. The clip itself is decently made and does the job. It makes good pin connections and grips the chip firmly with little plastic teeth. It is not a Pomona 5250 but it also is not 20+ dollars.


Fig. 2:  Reworked SOIC8/SOP8 Test Clip for In-Circuit Programming

P.S.: Look carefully at my purple PCB and you’ll notice that I’ve shorted the ATTINY85-20SU’s pins 7 & 8 to fix my design error. I laid out this board in about 30-minutes (I forget what my rush was) and ran Vcc to pin 7 instead of 8, where it belonged.




Posted in computer, Electronics, hardware, Test Equipment | 1 Comment

CE012 Step-Up Boost – What’s Inside?

I am getting ready to design a circuit using the ME2108A Step-Up voltage converter, but first I wanted to closely examine the CE012 Voltage converter that I recently posted about – HERE. Since Canton Electronic’s  CE012 module performed so well I figured that it wouldn’t hurt to examine it closely since their design seemed different from the chip manufacturer’s examples.

Last year, I purchased a ICStation LC100-A High Precision Digital Inductance Capacitance meter on eBay. There are several versions of the LC100 being sold with some physical variation, mostly in pushbutton switch placement, but mine matches the functionality of the user manual for one of the different ones, so I suspect that they are all copies of each other. They are very inexpensive (under $20USD) yet perform admirably with about a 10% tolerance. It does have one fault – the alligator clips are too large and difficult to work with.

I used a hot-air rework station, also a fairly recent purchase, to take apart one of the CE012 Voltage Converter modules. Next, I used the LC100 to measure the inductive and capacitance components. Of particular interest were two totally unmarked SMD capacitors. Once again, the LC100 did its job! I have included photos of the inductor being tested. It is marked “220”. It is listed as a 22uH inductor with a SFOP4521 footprint – but I wanted to measure it to be sure.

The two capacitors measured 12uF and seem similar to Kemet C1210C126K8PACTU.  I believe them to be size EIA1210/METRIC3225. The module has one DO-214 packaged 1A Schottky diode, type SS14.  Of course it has a ME2108A Step-Up convertor, as described in my previous post. Last, there is the inductor, which is shown in the photos below. So, that’s it – five components plus the PCB.

After tracing out the CE012’s design, which was vastly easier with the components removed, I discovered that it is the same as the chip manufacturer’s first example titled “For use Built-in Transistor”. The apparent difference was just that the CE102 parallels two SMD 12uF capacitors to obtain 24uF. The components vary from the chip manufacturer’s example. The example uses a 47uF capacitor and a 47uH inductor while the CE102 uses a 24uF combined capacitor and a 22uH inductor. BTW, I found that additional filtering capacitance is required on the output, especially with the 5V version, which is rather saw-tooth looking. The 3V output is fairly smooth. I used a 1,000uF electrolytic but a lesser value would probably suffice and a tantalum may be a better choice. The schematic of the CE102 is shown in Figure 1, below.


Fig. 1: Schematic CE102 by Canton-Power

Okay, the images below show the CE102’s inductor under test with the LC100-A Digital Inductance Capacitance meter. Click on the image to enlarge it.


Posted in Electronics, hardware, Test Equipment | Tagged , , , | Leave a comment

Manchester for Arduino

There are several Manchester Coding libraries for Arduino wireless transfer (See, I have gotten two of them to work satisfactorily for communicating a single byte of data. Both the “Mchr3k” library “” and cano64’s library “” worked for singly byte transfers but I needed more than one byte. The libraries of both Mchr3k and cano64 claim support array transfer but I could never get cano64’s to work. However, I was successful with Mchr3k’s transmitArray() and beginReceiveArray().

void transmitArray(uint8_t numBytes, uint8_t *data);

void beginReceiveArray(uint8_t maxBytes, uint8_t *data);

Getting Mchr3k’s code to work was a bit exasperating but ultimately successful. Mchr3k’s minimal documentation is focused on the single byte transfer. Array transfer is mostly ignored in the documentation. As a result, it was not obvious, to me at least, that the first byte in the array MUST be the array size. I had incorrectly expected the array size to be internally added and stripped such that the library would deliver an unmolested data array. I didn’t want to store the array size in my array but it was unavoidable. This was NOT the case I eventually discovered that the first byte in the array MUST be set to the array size by the coder and Bingo – it started working. Before I discovered this, the first byte of my array just happened to be a zero and that did not work at all – requesting to send zero bytes has exactly that result!

Posted in Arduino, Programming, software | 10 Comments