Raspberry Pi boards (or any of the many similar boards) are handy to leave at odd places to talk to the network and collect data, control things, or do whatever other tasks you need a tiny fanless computer to do. Of course, any time you have a computer on a network, you are inviting hackers (and not our kind of hackers) to break in.
We recently looked at how to tunnel ssh using a reverse proxy via Pagekite so you can connect to a Pi even through firewalls and at dynamic IP addresses. How do you stop a bad guy from trying to log in repeatedly until they have access? This can work on any Linux machine, but for this tutorial I’ll use Raspberry Pi as the example device. In all cases, knowing how to set up adequate ssh security is paramount for anything you drop onto a network.
For the next post in the Creating A PCB series, we’re going to continue our explorations of Eagle. In Part 1, I went over how to create a part from scratch in Eagle. In Part 2, we used this part to create the small example board from the Introduction.
This time around I’ll be going over Design Rule Check (DRC) — or making sure your board house can actually fabricate what you’ve designed. I’ll also be covering the creation of Gerber files (so you can get the PCB fabbed anywhere you want), and putting real art into the silkscreen and soldermask layers of your boards.
The idea behind this series is to explore different EDA suites and PCB design tools by designing the same circuit in each. You can check out the rest of the posts in this series right here.
Fearless makers are conquering ever more fields of engineering and science, finding out that curiosity and common sense is all it takes to tackle any DIY project. Great things can be accomplished, and nothing is rocket science. Except for rocket science of course, and we’re not afraid of that either. Soldering, welding, 3D printing, and the fine art of laminating composites are skills that cannot be unlearned once mastered. Unfortunately, neither can the long-term damage caused by fumes, toxic gasses and heavy metals. Take a moment, read the material safety datasheets, and incorporate the following, simple practices and gears into your projects.
In the last (and first) post in this series, we took a look at Eagle. Specifically, we learned how to create a custom part in Eagle. Our goal isn’t just to make our own parts in Eagle, we want to make schematics, boards, and eventually solder a few PCBs.
The board we’ll be making, like all of the boards made in this Creating A PCB In Everything series, is the Nanite Wesley, a small USB development platform based on the ATtiny85. This board has less than a dozen parts, most of which are through-hole. This is the simplest PCB I can imagine that has sufficient complexity to demonstrate how to make a board.
With that said, let’s get onto the second part of our Eagle tutorial and lay out our circuit board.
For the first in a series of posts describing how to make a PCB, we’re going with Eagle. Eagle CAD has been around since the days of DOS, and has received numerous updates over the years. Until KiCad started getting good a few years ago, Eagle CAD was the de facto standard PCB design software for hobbyist projects. Sparkfun uses it, Adafruit uses it, and Dangerous Prototypes uses it. The reason for Eagle’s dominance in a market where people don’t want to pay for software is the free, non-commercial and educational licenses. These free licenses give you the ability to build a board big enough and complex enough for 90% of hobbyist projects.
Of course, it should be mentioned that Eagle was recently acquired by Autodesk. The free licenses will remain, and right now, it seems obvious Eagle will become Autodesk’s pro-level circuit and board design software.
Personally, I learned PCB design on Eagle. After a few years, I quickly learned how limited even the professional version of Eagle was. At that point, the only option was to learn KiCad. Now that Eagle is in the hands of Autodesk, and I am very confident Eagle is about to get really, really good, I no longer have the desire to learn KiCad.
With the introduction out of the way, let’s get down to making a PCB in Eagle.
A few years ago, I wrote a few columns titled Making A Thing. These columns were a tutorial of sorts for several different 3D modeling programs. This column wasn’t meant to be a complete guide to modeling an object in OpenSCAD or SolidWorks, it was just step-by-step instructions on how to make one specific thing with one specific piece of software.
More than a few people in the Hackaday community found this column useful or at the very least an interesting pedagogical device. When starting out with any kind of productivity software, you don’t need to know how to do everything, you just need to know how to do the most common tasks.
Since the Making A Thing column was so popular, I felt it was time to revive this idea with another design task we often face. As you have already guessed, we’re going to be making printed circuit boards. Continuing the unique tutorial format created in the previous iteration of this column, Making a PCB will build one specific circuit in multiple EDA suites.
The entire concept of demonstrating how to build one thing in a specific software package necessitates a model thing. Before I even begin writing the first Making A PCB column, I need to design something that’s sufficiently complex but still relatively simple, and something that’s hopefully somewhat useful. Breakout boards are extremely simple, perhaps too much. In the course of these programs, I’ll need to demonstrate how to make a part in each specific software suite, so fewer pins are better.
Lacking any creativity of my own, I’ve settled on a very small ATtiny85 Arduino derivative from Tim a.k.a. [cpldcpu]. Tim’s Nanite 85 is an exceptionally small Arduino-compatible board based on the ATtiny85, complete with a USB port, LED, and a few pins of I/O. It’s simple but sufficiently complex to give an introduction to a PCB design suite.
I’m not going to outright copy Tim’s Nanite 85, though. It’s much clearer if parts aren’t stacked on top of each other, and I’d like to give myself a little breathing room on the layout. I’ve redesigned the circuit of the Nanite 85 to use mostly through-hole parts on a slightly larger board. I’m calling my version the Nanite Wesley, and if you get that reference, thumbs up for you.
Is this how a board should be laid out? No, absolutely not. I could probably do this as a single-layer board. This is a very inefficient layout, and I like rounded corners on my boards. It’s good enough, though, and it works. This is meant to be a tutorial on how to use a PCB design package, not a tutorial on how to design a PCB. Your criticisms in this regard are noted and ignored.
What These Tutorials Will Consist Of
You cannot use a PCB design package until you know how to make a part. Yes, Eagle has wonderful libraries for almost everything you can imagine, KiCad has plenty of parts on the Internet, and if you’re using a cloud-based PCB software, almost everything will be provided for you. If you make a PCB, eventually you’ll have to make your own part, though, and each tutorial will begin with making a DIP-8 ATtiny85. Everything else on this board is a jellybean part. Either way, the process of making a part and package for a Zener is the same as making one for a microcontroller.
The next part of the tutorial will consist of schematic capture. This means placing the parts in the schematic, drawing wires between the pins and pads, and naming them. From there, it’s time to actually make a board, and this means dropping the parts down, putting traces between all the pins, doing the board outline, pouring copper, and mechanical considerations.
With the schematic and board designed, it will be time to send it off to a fab house. For Eagle and KiCad, this is easy; OSHpark accepts Eagle .brd and KiCad .pcb files, but this is cheating. We’re going to use CAM to generate real Gerber files. If you make enough PCBs, you’ll have to learn it eventually.
Caveats and Poor Design
There are a lot of things that go into making a ‘proper’ PCB, including isolation, direct traces to decoupling capacitors, making sure pixies don’t go around sharp corners and a thousand other items that won’t be discussed in these tutorials. There’s a reason I won’t be discussing this. This is a guide on how to use a PCB design tool, not how to design a PCB.
What else should I do?
As you can probably guess from the schematic above, the first PCB software I’m going to cover is Eagle. KiCad is on the list, as is Fritzing, Altium CircuitMaker, and OrCAD. In the interests of putting PCB design in a historical context, I have a copy of AutoTRAX and an old DOS machine. I’ll also be covering a few of the cloud-only design tools such as Upverter.
That’s enough software suites to get started, but as with the Making A Thing series, I’m going to be looking for suggestions from the peanut gallery. I can’t change the circuit I’m making, as that’s the entire point of this series, but I am looking for suggestions on other tools to cover. What else can I do? Want me to grab a piece of copper clad board, sticker overlays, and some photostatic film? I can do that. Are you at a web-based EDA startup, and want some free advertising? Leave a note in the comments.
Thanks to our efforts to slowly improve the backend of Hackaday, you’ll be able to access all the Making A PCB In Everything posts from the series list below.
Practically any combination of motor and gearbox can be mathematically arranged to fit all sorts of problems. You could lift a crane with a pager motor, it just might take a few hundred years. However, figuring out exactly what ratio you need can feel bit backwards the first time you have to do it.
A gear is nothing more than a clever way to make two circles rotate in concert with each other as if they were perfectly joined at their circumferences. Rather than relying on the friction between two rotating disks in contact, the designer instead relies on the strength of a gear tooth as the factor limiting the amount of torque that can be applied to the gear.
Everything is in gearing is neatly proportional. As long as your point of reference is correct, and some other stuff. Uh, it gets easier with practice.
Now as my physics professors taught me to do, let’s skip the semantics and spare ourselves some pedantics. Let us assume that all gears have a constant velocity when you’ve averaged it all out. Sure there is a perceptible difference between a perfect involute and a primitive lantern gear, but for the sake of discussion it doesn’t matter at all. Especially if you’re just going to 3D print the thing. Let’s say that they’re sitting on perfect bearings and friction isn’t a thing unless we make it so. Also we’ll go ahead and make them perfectly aligned, depthed, and toleranced.
Typically, a gearbox is used for two things. You have a smaller torque that you’d like to make into a bigger one or you have one rotational velocity that you’d like to exchange for another. Typically torque is represented with a capital or lowercase Tau (Ττ) and rotational velocity likes to have a lowercase omega (ω). It also doesn’t matter at all; it just makes your equations look cooler.
Now a lot of tutorials like to start with the idea of rolling a smaller circle against a bigger one. If the smaller circle is a third as large as the big one, it will take three rotations of the small circle to make the big one rotate twice. However, it is my opinion that thinking it in terms of the force applied allows a designer to think about the gearing more effectively.
If the friction between the two surfaces of the circle is perfect, then any force applied tangentially to one of the circles will result in a perfectly perpendicular and equal force to the other circle at the point of contact between the two. Midway through writing the preceding sentence I began to understand why textbooks are so abstruse, so I also drew a picture. This results in two equations.
Now, when you have a force perpendicular to the line drawn to describe the radius, the equation for torque becomes really simple.
Multiply the length of the “lever arm”, “radius”, etc. by the force to get the preceding equations. Make sure to include the units.
You should end up force-unit * length-unit. Since I usually work in smaller gears I like to use N * mm. American websites typically use oz-in to rate motors. It is technically ozf-in (ounce-force), but the US customary system has a fetish for obtuseness.
We can make some observations. The smaller gear always sees less torque at its center. This initially seemed a bit counter-intuitive to me. If I’m using a cheater bar to turn a bolt the longer I make the bar the more torque I can put on the bolt. So if I touch the outside of a really large gear I should be seeing a ton of torque at the center of a small gear rotating along with it. However, as we mentioned before, any torque applied on the outside of the larger gear is seen equal and tangential on the smaller. It’s as if you’re touching the outside of the small gear. The torque has to be smaller.
This is why you have to pedal so much harder when the rear sprocket on a bicycle gets smaller. Each time you make the sprocket smaller you shrink the torque input into the wheel. If the perpendicular output where the wheel hits the ground is <input from the small gear> / <radius of the wheel> then it’s obvious why this happens.
It’s also important to note that any time you increase the torque, the speed of the gears slow by the same proportion. If you need 60 N*m out of a motor that can give 20 N*m and you use a 3:1 gearbox to do it. If the motor previously ran at 30 rpm it’s now running at 10 rpm.
Let’s jump right into an example. Let’s say you want to make a device that automatically lifts your window blinds. You’ve got some junk and a 3D printer.
Now you’ve taken a spring scale and pulled until the shutter moves and you know you need 10 lbs. of pull to get the blinds to pull up. To make it easy on yourself you multiply this number by two so you know you need exactly 20 lbs of force to pull the curtain up. Then to make it really easy on yourself convert it all to Newtons. It’s approximately 90 N.
Now you don’t really care how fast the blinds pull up, but you go ahead and pull them up yourself. You get the feeling that the blinds won’t appreciate being lifted faster than the whole range in two seconds. You personally don’t care if takes ten seconds to, but you’d like it not to take too long.
You also measure the length of string pulled out to raise the blinds. It’s 1.2 meters.
Lastly, you only have one spare power supply and a matching motor left in your entire laboratory after you followed the advice in a Hackaday article. Cursing the day the author was born, you sullenly write down the last specifications. You’ve got one of those cheap GM9 gear motors. 5 V, 66 rpm, and 300 N*mm. You damn him as you think fondly of your mountain of windshield washer motors and 80 lb server rack power supplies that you tossed out.
To start with, you do some experiments with a pulley. You arbitrarily pick, 3D print, and find that a 100 mm in diameter pulley seems to wind it up nicely by hand. By the end of the winding the outside diameter of the string is 110 mm. So you use the torque equations above. You find that at the end of the rotation, if you attach the motor directly, there is only 5.45 N of force being applied to the string. Not nearly enough.
So, since you know everything is more or less proportional, you divide 90 N / 5.45 N, and arrive at an answer of 17. So, at a minimum for every turn of the pulley you need 17 turns of the motor to get the torque needed.
That would be okay, but it messes with our other specification. At a 17:1 ratio, it will take our 66 rpm motor pretty close to a minute to wind the blinds up.
This is a moment for some pondering. Make a coffee. Maybe go write a relaxing comment to a Hackaday writer listing their various flaws, perceived and true, in excruciating detail.
What if you wound the string up on a closet rod? Those are only about 30 mm in diameter. You take a bit of rod and wind it up. It seems to work and since it’s wider the string only ends up adding 5 mm to the final diameter. You rework the calculation and find that in this case you only need a ratio of 6! Yes.
Now some of you who have done this before are likely gnashing your teeth, or more likely already down in the comments. Unfortunately it’s all proportional. While you only need a ratio of 6:1 now, nearly a third. You also need to rotate the pulley approximately three times as much to pull the same length of cord.
Sometimes you can’t win. In this case the only solution is to order a new motor. You look online for a bit and realize that one of the 12 V motors you threw away last week would work perfectly for this. You wouldn’t even need a gear box. You could attach it straight to the pulley. You look around your perfectly clean and orderly garage and feel empty.
However, just for fun you build a 6:1 gearbox anyway. It’s a hack after all.
Cover photo of the hilariously complicated Do Nothing Machine credit to the Joe Martin Foundation.