10 posts

Altium Tips and Tricks

At work I decided to make a list of Altium tips and tricks for people who are new to the awkward legacy cluster that is Altium. I figured I might as well put it here as well. I’ll continue to add to it as I think of more useful things.

PCB Layout

  • Press the “~” key while routing to open up a useful menu
  • Press “Shift+w” while routing to open a quick width change menu
  • Press Tab while routing to open a useful menu
  • Click on a trace and click Tab to select the whole strand in that layer, Tab again to select the strand including other layers
  • PCB inspector: useful side panel for setting properties of one or multiple components at the same time, go the View->Workspace Panels->PCB->PCB Inspector
  • To select a bunch of objects of similar type, use the “Find Similar Objects..” option in the right click menu
  • Use the “L” key to switch between layers while routing (only if you can go to another layers without using a via (like from a throughole).
  • Use the “+” and “-” keys to switch between layers using a via
  • “Shift+s” cycles between single layer mode
  • “Ctrl+m” brings up a measuring tool that does not act like an object
  • To route multiple connections at the same time, shift click all the starting points (pads or tracks) and select the “Interactively Route Multiple Connections” button to start routing
  • “Ctrl+left click” highlights objects of the same net


  • Hold down ctrl while moving something to avoid carrying wires around with it


  • For complicated board shapes, instead of manually drawing out a Polygon Pour, just select the border of your PCB (should be a keepout line) and go to Tools->Convert->Create Polygon from Selected Primitives. This will create a polygon on the current layer, which you then can select and define to your needs.
  • Copy and paste is weird in Altium, to copy, select the thing, use ctr+c (you should then see crosshairs on your mouse), then left click in open space
  • Usually it is easier to draw a board shape with the line and arc tools first, then convert it into a board: first draw the shape (preferably in the Keepout layer) then select all the primitives making up the shape, then go to Design->Board Shape->Define from selected objects
  • While routing you sometimes want to use multiple vias to go between layers, Altium will sometimes delete these vias, to prevent this just right click on a trace with the same net and go to the Net Actions->Properties… option, then in the pop-up menu, de-check the “Remove Loops” box.

OnoESC Case Mock-up

I did a mock-up of a potential case design.

I also made some small changes to the design such as a cutout USB connector (for ruggedness and smaller vertical profile) and the addition of a NTC thermistor next to the FETs.

Anakin Drone Frame

I recently got the Sky-Hero Anakin drone frame kit. I was looking for something unique and one that came with a cover, surprisingly on Hobby King at least, there weren’t many options.

The frame was awkward to assemble, took a few hours of fanangling before I was satisfied. The side arms look like they are meant to pop off during a crash instead of breaking.

It turns out to be a very nice frame for $59. I’ll be using it to test the OnoESC as well as my custom flight controller. I’ll update as I make progress on the build.

Interest in OnoESC

If you are interested in purchasing an OnoESC, kindly submit your email here so I can get an idea of how many I plan on making.

I will not send any email to you until product launch, subscribe to my blog if you wish to receive development updates.


The OnoESC

OnoESC : 32-bit 30A 3S Sensor-less Brush-less Motor Controller

The OnoESC is a 30A 3S sensor-less brush-less motor controller that is Arduino Zero compatible. I was searching for a low-cost opensource quad-copter-style ESC for a while and none turned up, so I decided this could be a good project to start.

I plan to make a 4-in-1 version in as well as a 4S version.

Current specs:

  • Atmel ARM M0+ 48MHz microcontroller (ATSAMD21G18A-AU)
  • 30 amps continous, >80 amps peak (TPN3R704PL,L1Q) (probably over-kill)
  • Proper bridge drivers (LM5109BSD/NOPB) (may switch)
  • 2 to 3S (6.6V to 12.6V)
  • Current monitoring (with the ACS711KEXLT-31AB-T)
  • Various control methods; PWM, I2C, Serial, USB, OneShot
  • ~$10 BOM @1000
  • 3.3V DC-DC converter
  • 20mm x 43mm PCB

StandiT Hackability

Our StandiT legs are much more than a motor in an aluminum tube. Each circuit board includes its own Atmega328P micro-controller running at 16 MHz, 2-phase optical encoder, isolated serial port, current sensor, a shunting relay for dynamic braking of the motor, and a single capacitive touch interface. Even more, we have made sure all the electronics are fully Arduino compatible for easy hacking.

The boards can be accessed just by popping off the top adapter. There is a 10-position connector that breaks out the ICSP and UART pins of the micro-controller. We will be selling the programmer after we ship the Kickstarter orders on our website, but we will also provide information on building one yourself.


Each leg has two 4-pin circular connector cables for communications and power, allowing users to chain up to six legs together. In the future we will provide kits that could allow as many legs as you want, as long as you can power it. Hackers and makers can achieve more than six legs with some small modifications to the wiring setup.


Advanced makers can replace the top adapters by removing 3 screws, and the rubber feet are just friction fit.

Overall, StandiT legs are a competitive general linear actuator, allowing users to create anything; from a driving simulation chair, to a giant spider robot. Each leg is 100 lb load rated at a max speed of 1.6”/s, while the cost is only $79.

You can visit our Kickstarter @ 

Makerbot Replicator 2X – ABS Juice

The Makerbot Replicator 2X is a low cost ($2500) enclosed, heated bed, dual extruder, 3D printer. The enclosed chamber and heated bed allows it to handle ABS plastic, which is pretty rare right now. PLA (most common 3D printer filament) does not support much weight and does not like being outside (in high or low temperatures), so it is a no-go for robotics applications. However, ABS is prone to more nozzle clogging and warping, meaning a higher ratio of failed prints. I have created a category of posts that will go over a few things I have learned over a year on how to print perfect ABS parts.


ABS Juice20150703_095545

ABS Juice (or slurry) is just a bottle of failed prints mixed with acetone. The idea of ABS Juice is to create more adhesion between your printed part and the printer bed, this will prevent warping, however, some parts may be almost impossible to peel off. The mixture ratio I found to work best is about 2 parts acetone to 1 part ABS, just make sure the end product is still a liquid. All you need is a can of REAL acetone (not fingernail polish remover) and some polypropylene squeeze bottles, some other plastics will work as well. A great way to see if a plastic will breakdown or dissolve on contact with a chemical is this page.

Make sure the HBP (Heated build plate) is at room temperature, if the juice is applied while the HBP is hot, the acetone will vaporize causing bubbles and ruining adhesion. You now want to drip some juice on the build plate and use Q-Tips or cardboard to create a thin, slightly rough surface of ABS. It is important to cover the surface where the part will be printed, but not apply too much to cause an extruder collision or make it impossible for the part to come off. It is also important to have the kapton sheet applied to the HBP, the aluminum build plate surface will not adhere properly to the juice.


Surface of HBP after ABS Juice is applied, note a very thin and messy layer, this is what it should look like.

How it works

The ABS juice works because, on a microscopic level, the kapton sheet is very porous. When you pour the juice in its liquid state, the molecules fit into these pours, when the juice dries it has a nice hold on the sheet. When the ABS comes out of the extruder and bonds to dried juice, the forces caused by changing temperatures in the part that usually cause warping are much smaller than the force required to release the bond between the kapton and the juice. Without the juice, the ABS coming out of the extruder is too solid to sink into the pours of the kapton, so the force required to hold the part to the kapton can be lower than the forces cause by varied plastic temperatures.

SMD Storage


Storing SMD resistors and capacitors will always be a problem until we eventually integrate all passives in ICs or the PCB itself. Until now, I have been storing the little crumbs in the Digi-key and Mouser bags they come in, I would use what I needed on the PCB and put the rest back in and tape it closed. The hundreds of bags I have accumulated over the years have ended up in cardboard boxes laying variously around the office. When I need a part and don’t have time to wait for shipping (which is why I bother saving these little 1/10 cent things) I have to spend 10+ minutes searching through the boxes. I decided a week ago I really needed to change my “system” and set up a proper storage arrangement. I was very excited to come across these little boxes on Adafruit. I immediately ordered 4 10-packs ($3.95 each!) and this wonderful label maker from Amazon for $19. Five annoying hours later, I had compressed 90% of my parts into a few common values. I even had enough to throw some ICs and LEDs I use into them. I am very satisfied of the quality of these boxes, I have dropped a few with 0402 parts and none fell out. The boxes have a spring-loaded lid and snap together very easily.

My end goal is to never have to order a fairly common passive component ever again (and reduce the complexity of setting up a BOM for a low-volume run).





Integrating the Arduino Zero

20150702_164728Arduino has allowed countless amounts of people to build anything they imagine. Not only engineers, but artists and 8 year-olds as well. For me, Arduino has provided a fairly reliable way to quickly iterate my projects, letting me skip over the hard part, and just wack an Atmega328 (or a few) onto every design. Luckily for my design strategy, Arduino has released a few more boards such as the Mega, Due, Leonardo, and now Zero, that have allowed everyone to use more advanced processors in their designs without having to put much effort into the software.

Just to note, I am completely self-taught in engineering. If something I say is pure garbage, try telling me in a non-aggressive way. This is purely to help people with similar problems that I run into.

So now let’s get to the newly released and extremely confusing Arduino Zero. The Arduino Zero brings us an 32-bit ARM M0+, a low-cost, low-power, and low-range processor. However, at 48MHz and having plenty of peripherals such as a 10-bit DAC and 12-bit ADCs, many robots could be built with this thing.

The first thing I wanted to do after getting my Arduino Zero (from  CC, not ORG) was to see how easy it was to start using the SAMD21 in my designs. After playing around with it for a while (and being amazed of the lack of information available) I’m pretty sure the debugging IC on board is useless and I’m also pretty sure the only reason it is there is because Atmel has teamed up with them on this one (taking the same design from the Atmel SAMD21 Xplained Pro dev board). If you already have an Atmel ICE, it makes the EDBG irrelevant.

Anyways, I was having problems uploading through the native SAM USB port and could only upload through the EDBG. I then noticed the SRL guys  had an “Arduino M0”, which is the Arduino Zero without the EDBG. Refusing to buy that from them, I proceeded to wack on a SWD connector (annoying this wasn’t populated) for the SAM and attempted to upload the Arduino M0’s bootloader so I could completely ignore the EDBG. I downloaded Arduino SRLs IDE and tried to push the bootloader with my ICE, but I kept getting strange errors. I then booted up Atmel Studio and tried to manually upload the bootloader but the file was in binary format instead if hex (Atmel Studio does not like binary files) so I just converted it using this guy. Atmel Studio liked the file and uploaded no problem. I was then able to upload code using SRLs IDE.

I am still trying to find a way to use the real Arduino IDE instead, but no success yet. Regardless, it works and I should be able to spin a custom board now. More on that later.