SMD Solder Paste Stencil Creation with Silhouette Cameo

I made some additional details in a long YouTube movie:

This is far from the first blog post on this, but I wanted to write down exactly what I did to get this working on Windows 7, 64-bit with as little fussing as possible.

1. Buy Silhouette Cameo [NOTE: The v1 I used is no longer available. I’ve heard the V2 with latest firmware does work OK]

2. Decide on material. I originally used the Transparency Film but it’s a little thick, so instead ended up finding that you can buy 3 Mil drafting file individually from art stores.

3. Install USB drivers from CD that came with system – this seems to be required, as installing the software from the website alone wasn’t enough. If you need them I’ve mirrored a copy here: silhoutte_cameo_drivers.

4. Plug in Cameo device. Check if it appears as a printer:

If it DOES NOT, screw around with drivers. For me it appeared as “USB Printer Support” for a while, you’ve got to try updating the drivers and forcing it to use the ones from the CD it seems. Eventually you should have success.

5. Share the Cameo device under “Printer Properties”:


6. Install gerbv

7. Install pstoedit 64-bit or pstoedit 32-bit as appropriate

8. Install Ghostscript 64-bit or Ghostscript 32-bit as appropriate

9. Download copy of gerber2graphtec repo, unzip it somewhere. I’ve linked to my fork of the repo which contains some extra stuff, so if you want the original check the gerber2graphtec pmonta repo

10. Run the GUI. You’ll need to modify paths probably, or at least version numbers. Set the folder share option to match your computer name / printer share:


11. If you haven’t loaded the Cameo before, basically check out the booklet that came with it. Set the cutting depth to ‘1’ on the blade and shove it into the machine. Peel back the blue sheet off the ‘cutting mat’, and stick the transparency to the mat.

12. Load a test gerber, convert it (check the output of the command line doesn’t have errors), and send onward! For me things ‘just worked’.

13. You can use the generate test square feature I added to generated the test pattern. Forces increase from 1 to 30 as it draws the squares.

Rigol DP832 Review

The majority of the review is available in movie format:

I purchased a Rigol DP832 power supply from RAE Electronics (local supplier). I had a chance to play around with it and wanted to leave a bit of a review.

To begin, I also bought some useful accessories. I got them from Digikey, and here are the part numbers:

  • Test Leads: Ponoma B-24-x, where x changes for color
  • Aligator Clips: Digikey 461-1208-ND
  • Minigrabbers: Ponoma 4723-0 / 4723-2

I think those are the most useful accessories to get. Buy at least 4 supply cables, maybe more as if you want to have +/- supplies it’s nice to have a colour for ‘0v’.

I ended up making a GUI, which is available at: :


PicoScope 2204A Review


I’ve been spending some time with a low-cost PicoScope device, and wanted to give a review in case you’re looking at one. To begin with, you can check out my Circuit Cellar Articles about selecting a scope.

There’s also a video version of this:

Introducing the 2200 Range

PicoTech’s 2200 range is a compact oscilloscope, if you want all the details check out The PicoTech Website. Presumably you’re interested in my hands-on experience instead though, so I won’t duplicate everything there.

Continue reading PicoScope 2204A Review

PicoScope 5000 (5444) Review

If you check out my older blog post, you’ll see a very detailed review of the PicoScope 6000 series device. I also had a chance to use a 5000 series device, specifically the 5444.

The 5444 is a 4-channel scope with a built-in AWG. The sample rate is up to 1 GS/s in ‘normal’ mode, but you can use something called Equivalent Time Sampling (ETS) to boost that up to 10 GS/s in specific cases.

Continue reading PicoScope 5000 (5444) Review

Making a USB-HID Keyboard Encoder Board for PicoScope

Ever wanted to control something from a knobby-looking USB peripheral? In this example I wanted to control the PicoScope software from a bunch of encoders mounted on a USB peripheral:

Continue reading Making a USB-HID Keyboard Encoder Board for PicoScope

PicoScope 6000 (6403D) Review & Comparison

This is an *EXTREMELY* long post, but there is a ton of ground I want to cover. I hope you find it useful if you are seriously considering purchasing an oscilloscope.

Looking for a medium-cost scope? There’s lots of options out there, and I’m going to concentrate on the Picoscope 6000 series for this review, specifically the 6403D. This device has 350 MHz analog BW and 5 GS/s max sample rate on a single channel, which can be boosted with Equvilant Time Sampling (ETS) to 50 GS/s on *all* channels. Anyway I wanted to give you something more than the normal ‘press reviews’. I’ve spent a ton of time doing this review & hope you find it useful.

Hardware, Box, First Impressions

The scope comes in a nice plastic carrying case, and includes a power adapter with plugs for everything (even Australia!). It’s always nice having somewhere to store your equipment when it’s not out on the desk.

The scope itself feels very solid – like you could hit someone with it & do some substantial damage. It’s connected via USB 3.0 (or 2.0 if your computer isn’t fully equipped) & has it’s own power brick. The high-end FPGA, ADC, etc in these devices are well beyond what you can do over USB power! What IS very nice is the device powers down when disconnected from USB, so you don’t need a power switch or anything.

Here’s a marketing shot of the scope stolen from (sorry PicoTech I’ll remove this if you want!). You should definitely check out all the details of the scope at & click through to the various pages, as I won’t be covering all the features the scope has.

One of the biggest hardware improvements in this scope is the probes. Scope probes have long bothered me for how useless they are on real boards. Well the probes with the PS6000 series are beautiful. They are much smaller, AND have a spring-loaded replaceable tip. I’ve been using similar tips on my DMM & love them. In particular you can get good solid connections on SMD parts, and even break through the soldermask on vias, letting you probe BGAs with ease:

There’s a pretty good article on EDN’s Website covering these probes actually… or almost these probes, that article is by Agilent but the probes look identical. I even made a little review video to show you probing directly into vias:

The replaceable tips are 5/$10 for the solid tips, or 5/$30 for the spring-loaded ones. So you won’t even feel bad about possibly damaging your fancy probe tip. They do give you a few spares to get going. There is also special adapters to fit from 0.5mm, 0.65mm, 0.8mm, 1.0mm, and 1.27mm SMD leads without slipping, although unfortunately these are not included. You’ve got to order the accessory kit TA065 for $65 to get that (along with some other tools, such as improved grounding).

Software Information

First off – a complaint I see is people don’t like there is no physical knobs, since it’s a PC-based scope. I’ve always like PC-based scopes more, as I spend longer trying to enter complex things via the front panel, or get specific offset voltages entered in. Anyway as a proof of concept to appease those knob-lovers, I made this cool multi-knob USB board, it uses a Teensy++ 2.0 or AT90USBKEY + some encoders. The USB part is about $25, and encoders about $2/each. I’ll put up full details on another page (note to self: todo), but here’s a video of it:

One thing you’ll quickly appreciate in the software is the ability of having multiple ‘viewports’. So you can configure one window with 2 channels, 1 window with a FFT, 1 window with math channels, etc. You’re really only limited by screen space. Compared to dealing with a small scope display where you’ve got to use some offset feature to stop things from overlapping, this is 100x better. I’ve always liked PC scopes for this reason particularly, and never understood why people wanted a physical scope with a small screen.

Talking about FFTs, one cool feature is you can have WAY longer FFT lengths than anybody else is offering. The Rigol as mentioned is very limited, even Agilent is somewhat more limited. Do you care? Here’s a little video showing the difference:

You can download a ‘demo’ version of the software too, so play around with that. Some of the features are a little ‘hidden’ the first time you use it I feel like… look for small arrows which means you can click on things and get a bunch more options. But once you’ve figure it out you are basically good to go! Here’s some tips/examples:

Testing some Specific Features

Equivalent Time Sampling (ETS)

In ETS mode you are combining many passes of the waveform with a slight phase offset. PicoScope claims to get 50GS/s on 2+ channels, and when I’m on 1 channel I see up to 200GS/s(!) but I don’t see that actually specified anywhere, so it might be beta.

Even though the analog BW is only 350MHz, the amazing thing you can do is super-high resolution phase measurements. Check your clock is properly in phase with the data line for example, but all sorts of things are possible. At 50 GS/s you’ve got 20pS resolution…. that’s enough you can see several mm difference in propagation time on a PCB trace. Check out this demo:

Very cool! If you’re doing high-speed PCB ‘stuff’ you’ll undoubtedly find a use for ETS. The fact you’re able to do it on multiple channels is critical, as you really care about the phase difference with all these tests. So you can setup the system to measure the ‘baseline’ phase difference, then do things like vary temperature/voltage etc to see how the phase difference changes.

Frequency Response

Alright… so the analog BW is 350MHz on my device, but how high can you push it? Well I decided to find out… here’s me going from 10MHz-1000MHz (limit of my signal generator):

If you see the review for the 5000 series on you can also see how I’m using ETS to view a higher-frequency waveform than you’d expect.


The PicoScope has some pretty nice triggering features. It’s unfortunately missing the digital pattern matching, such as triggering on a specific I2C or serial byte pattern. Alas if you really need it you can always program a FPGA to do this (I’ve got some generic code to do so). But the ability of using window triggering is fairly handy, as the following video shows, which also uses the ETS mode:

Serial Decoding

I’ve got a LogicPort for most of my logic analysis needs, which includes all sorts of nice protocol-level decoding. It doesn’t help a lot when I’m running into analog issues, so I know from experience having this in the scope will be great. This way you can see where issues are if you’re having flakey connections, without having to do a lot of guessing when the data is just 1 or 0 as in the logic analyzer.

Anyway the PicoScope includes all the decoding modules by default, which is wonderful. The hardware scopes all charge you for each module it seems. Here’s a little video showing the decoder in action:

The overlay onto the waveform is very handy for seeing where issues are cropping up, and definitely plays into the entire reason you want decoding of digital protocols on an analog scope (to see where things went wrong!).

Arbitrary Waveform Generator

The AWG feature gives you access to a bunch of the expected waveforms, along with some more exotic ones such as a white noise, very handy for communications testing. But the Arbitrary in AWG means you can do *ANY* waveform. One cool feature you’ll immediately find a use for as an embedded engineer is the ability to take a waveform on one channel then play it back, but with small tweaks to the time or voltage. Makes it much easier to check what sort of limits your serial (or other) protocols will work under… here’s a little video example:

API Programming Mode

Probably one of the biggest features of this device is the ability to use it as a high-speed analog front-end. The inputs are switchable to 50 ohms, making it play nicely with the rest of your hardware / test equipment.

Then you can do all sorts of high-speed data transfer, and it even supports streaming mode via USB (including USB 3.0)! Don’t forget you’ve got the ability to input an external clock reference so you can synchronize it to some other timebase. You might need an external PLL device to ‘fix’ the frequency to be within the allowed range of the PicoScope, but that’s not a serious problem, something like the CDCE906 PLL chip would work even.

Anyway I’ve started a Python interface too, since I love Python :-) Here’s a little demo:

The code is at .

Comparison to Other Tools

Comparison to Agilent/Tektronix Low-Cost Scopes

Both Agilent & Tektronix have a new line of low-cost scopes, and you can read my comparison to the Rigol below which covers a lot of the same ground. The problems with always needing to pay for additional features is basically the same.

The Agilent X-2000/X-3000/X-4000 stiff you on memory depth – the most expensive models have only 4MPts. The Textronik are slightly better, but you’re still looking at 20MPts tops. The Rigol is better, and the PicoScope has insanely larger buffers. You also get some nice segmenting support on the PicoScope to catch different events back-to-back, so you don’t just have to capture one big hunk of data. Some of the hardware scopes do support segmenting, some make you pay for it, so be sure to look at the specific one you are interested in.

One feature which is currently missing from the PicoScope software is a nice running-average of a certain number of waveforms. For example average the last 100 traces together… you can average all traces, which just requires a ‘stop/go’ command to clear the buffer, but I always find a running average easier. All other low-cost scopes (Agilent, Textronik, Rigol) I’ve looked into have this feature.

The Agilent X-3000 series has 64Kpts on the FFT if you need to do frequency domain analysis. It’s probably enough for most users – the PicoScope can have way more (up to 1/2 the memory), see my earlier video for details. The Rigol one is tiny though… 2Kpts isn’t so good if you want to look at a lot of spectrum.

Comparison to a Real Spectrum Analyzer

The idea of taking the FFT of the input & how a spectrum analyzer works is very different. A spectrum analyzer effectively sweeps a filter across the bandwidth of interest, and measures power. The FFT takes a time-domain representation, and uses a FFT to convert to the frequency domain. There’s a few caveats with this method, primarily that you’ll get some errors due to the digitizing of the waveform. You also have to have a proper ‘window’ around the waveform. The window solves a simple problem: a ‘perfect’ sine wave (e.g. only the single frequency component) would require a infinite-length time-domain representation. Obviously we can’t do this, so we need to ‘window’ are finite-length time domain representation.

As the spectrum analyzer is directly measuring the spectrum, it doesn’t have these issues. Anyway on with the example. I’m using a 10 MHz signal from a good signal generator, and connected this to a real Agilent spectrum analyzer. Here’s what the results look like:


One of the nice features is the 50-ohm inputs help properly terminate the output of the signal generator. The same signal measuring using the PicoScope with a FFT looks like this:


It’s fairly close, but not exactly the same. You’ll probably still need a SA for some tasks, but you can get a pretty good idea about harmonics with just your scope. The large bandwidth (350MHz) is a huge plus for practical tasks, combined with the ability to zoom in on a small portion of the bandwidth thanks to a large number of points in the FFT.

Comparison to Another Agilent Scope

I also had a 4GS/s, 600MHz analog BW Agilent MSO54831D to compare with. The first test I did was use a splitter that should have good phase matching (e.g. for high-speed RF) & fed a 15MHz sine wave into all 4 channels. Then in software I did 3 math measurements: Channel A-B, C-D, and A-B. The results are shown below, with the idea being to see how closely matched all the channels are when the input is the same:


Compare to the same thing being done with a PicoScope device:


Note in the picoscope waveform I’ve also shown the input waveform, which I turned off as it cluttered the Agilent one too much. The results seem pretty good – I don’t know how accurate my splitter was, so can’t know with certainty how much noise one ‘should’ see. But the Agilent & PicoScope were tested with the exact same physical setup, so we can compare between them. It appears the 6403C is at least as good & perhaps better than the Agilent (vertical scales on math channel the same). Both have similar specs from the sheets, so it’s a good test of the fidelity in the analog front-end.

The other test I did was with a 30MHz square wave (the fastest signal generator I had that could generate a square wave – everything higher was sine only). Here’s what it looks like on the Agilent, terminated into 50 ohms. I had left averaging of 16 traces on so this waveform is a little cleaner than a raw capture:


On the PicoScope, without averaging, and again a 50-ohm termination:


You can see everything looks pretty similar.

Comparison to Rigol

Now a quick word to other options: probably the Rigol DS4034 is the closest, which has 350 MHz analog BW and 4 GS/s. The price is similar ($4300 for Rigol, $4942 for PicoScope 6403C). If you want the protocol decoders on the Rigol which the PicoScope already has for free, that will cost you an extra $2700. This section will be comparing the DS4034 & 6403C by the spec sheets. Right away the 6403C gives you the faster sampling of 5 GS/s on 1 channel. Both the Rigol & PicoScope linearly scale down with more channels (e.g. 1GS/s @ 4 channels on the Rigol, 1.25GS/s @ 4 channels on the PicoScope).

The Rigol has a smaller memory, of 140Mpts, compared to 512Mpoints. At high sample rates this can be fairly important… at the max sample rate this corresponds to 35mS vs. 102mS of signal recorded. This makes the assumption the scopes can use the total memory at the fastest possible sample rate – something which may have limitations! Be wary of other low-cost scopes with even smaller sample buffers (like below 500kPts)…. you do run into them, so always check the specs.

The Rigol spec sheet is a little misleading IMHO on ADC type, which is never a good first sign. For example they list the resolution as 12 bits, with the condition the timebase is sufficiently large. They only mention what I assume is the true 8-bit ADC resolution later down in the ‘vertical resolution’ section. The PicoScope spec sheet does seem to more explicitly make clear that you’ve got an 8-bit ADC, which can have software enhancement to 12 bits via filtering.

The vertical scale is better on Rigol than the PicoScope, as the Rigol goes down to +/-5mV full-scale compared to +/-50mV full-scale. BUT the Rigol spec sheet doesn’t mention front-end noise. Without an idea on noise this is pretty meaningless – even on very good scopes (e.g. Agilent) that have lower ranges, it’s easy to introduce noise via your measurement setup. You’re better off buying/building an amplifier to put right at the measurement point, and use a larger scale input.

Both 6403C & Rigol let you synchronize the internal sampling clock to an external clock, although the 6403C has a larger range of allowed frequencies it will synchronize to. The 6403C only seems to let you do this via the API – e.g. not using the provided PC software. However I think 95% of people using this feature would be using the API anyway… for example if you’re doing Software Defined Radio (SDR) and using the 6403C as the front-end, you’ll definitely want this feature.

The triggering the Rigol has some additional options, such as pattern triggering, I2C, serial, etc. This could be very handy in real life, and the 6403C doesn’t have this. They both feature a bunch of other fairly advanced modes (window, pulse width, etc). NOTE: I’m not clear from the Rigol manual if you need to have the I2C, serial module etc which adds considerable cost for getting the triggering ability.

The 6403C has an Equivalent Time Sampling (ETS) mode, which lets you boost up to 50 GS/s. This means you’ve got 20pS resolution on the time samples, something which the Rigol device is missing. There’s a bunch of caveats about the waveform you are measuring must be stable, but it does have some pretty useful applications. If you want to check phase alignment of two clocks, especially over say varying voltage and frequency of the DUT, this is a quick way to do so.

The channel isolation is listed in different units. For the PicoScope this is claimed as 1:1000, which would be 60dB. For the Rigol it’s 40dB, which would be a 1:100 ratio (assuming measuring it using voltage). So theoretically, if you’ve got a 5V signal on the Rigol, up to 50mV of it would leak into the next channel, compared to 5mV on the PicoScope. I haven’t verified either of these claims though. The 1:100 ratio is the same as the X-3000 series from Agilent.

A few other points: both the PicoScope & the Rigol device have an FFT mode. The Rigol’s FFT is limited to using 2048 points, which will be very low horizontal resolution. Part of the problem with an FFT is you have no ‘center frequency’ like with a spectrum analyzer. You are ALWAYS starting at 0Hz… so if you want to look up something at 100MHz, you’ve got to have almost the full spectrum visible, then zoom in on 100MHz. So 2048 points is fine for low-frequency stuff… but if you want to get detail about higher-frequency? Not so good.

Whilst the Rigol does (claim to) come with nice I2C, SPI, etc triggering, it doesn’t actually decode those protocols for you. You’ve got to buy add-ons for protocols you want… even the simple UART one is $500. The I2C/SPI combo is another $500. CAN is $500. If you want FLEXRAY it breaks the pattern at $1200. As mentioned all those protocol decoders come in the PicoScope software, and they seem to be always updating it, so your device is future-proof. You can check the release notes at to see what sort of things get added… I notice they recently added a LIN decoder for example. I’m sure if Rigol comes up with one it will be…. $500.

Closing Remarks

Hopefully you’ve found this review helpful – I hope to continually update it with new example measurements & comparisons. I’ve tried to include details I hadn’t seen anywhere, and that reflected the type of questions I had when looking at a scope.


  1. Very fast sample rate, combined with insanely fast ETS mode gives you ability to do all sorts of useful measurements, including e.g. phase tests.
  2. Huge FFT length – handy for real-world scenarios where you want high frequency resolution. Again remember your FFT always starts at 0 (unlike a spectrum analyzer) & spans at least until your frequency of interest.
  3. Huge buffer size
  4. API Provided, Python library in-progress for super-simple scripting
  5. Decodes most serial protocols without needing to purchase add-ons.
  6. Provided scope probes are excellent – spring loaded tips & narrower tips let you probe vias directly.
  7. USB 3.0 for very fast transfer speed
  8. Carrying case provided.


  1. USB Ground connected to scope probe ground – should be careful not to have voltage difference between them, or I doubt your scope will be happy. The ‘real’ scopes I’ve tested seem to have all their probe grounds connected to Earth (based on two Agilent ones). So I don’t list this as a ‘con’ for the PicoScope, as it’s basically the same issue.


  1. Cannot trigger on serial protocols
  2. Software seems to be missing ‘standard’ feature of average last N traces together in real-time. (NB: This is supposed to be added shortly)


Quit wasting time debugging USB: Using TotalPhase Triggers


This blog post might seem commercial… but I have no connection to TotalPhase. I’ve used their Beagle 480 USB analyser for some time, and before that have used a variety of other solutions (mostly SW-based), so have some idea what other options are out there.

It’s worth noting that they seem to give free updates forever. When I first used the Beagle 480 it could dissect mass storage & HID I think. Since then they’ve added almost every class possible… hell you can even do stuff like sniff a USB-Ethernet device, and pass the frames to Wireshark for IP-layer decoding. Total Phase has added tons of features in the last 4-5 years I’ve used this device, and they’ve all been freely available and usable with my device.

So why do I think other debuggers are a waste of time? Simply: the ability to trigger in/out of the device. Check out this video for more:

Continue reading Quit wasting time debugging USB: Using TotalPhase Triggers

Getting started with GIT Revision Control

Revision Control is the most critical part of any project involving files. Otherwise you end up with tons of directories, and naming schemes like “report_final2_june.docx” along with 20 other copies.

This is best described in this 20-min clip. Sorry it’s a little long, but there is a fair amount to cover:

You can download the slide set:
Slide Set
For your reading pleasure, here are the highlights. I’ve linked to the exact moments of interest in the video rather than retype stuff I describe in the video.

What is GIT

Git is a revision control manager. Briefly, it lets you see how things changed and track those changes. Even better, it lets you do tasks like create a “branch” of the source code. You can switch back and forth between branches to deal with issues like wanting to rewrite sections of the code, while still being able to get back to the last good ‘release’ copy.
Show Me Branching

Getting stated on Your Computer

You can use GIT on any folder! It’s dead simple to do, and handy even if you will never commit things to the web. Doing so requires a few steps:

  1. Create a repository locally Show Me
  2. Commit initial fileShow Me
  3. Commit changes Show Me
  4. Do other stuff (branching, merging, etc) Show Me

Using Real Repositories

To use real remote repositories, you need a server to host them. I recommend or . provides more storage, more users for free, and unlimited project sizes for university-based projects. Both are pretty cheap for commercial projects.

You want to configure a SSH key. Doing so requires four steps:

  1. Generate the key Show Me
  2. Set the key up on assembla/bitbucket Show Me
  3. Set the key up on git Show Me
  4. Set the key up to always be loaded Show Me