Introduction: Adding Custom Graphics to EAGLE PCB Layouts

The objective of this instructable is to show you how to add custom graphics to a PCB using EAGLE Layout Editor. You might want to add a logo or your website address to an electronics PCB that you have created. I found out that the process of adding images to a PCB was not trivial or obvious. In order to save everyone some time, I have listed out the process.

This is Hans Scharler, I am a web designer at ioBridge. I wanted to touch up a few PCBs that we were prototyping for fun. As with most people just starting out with using EAGLE PCB, I learned by following the "Beginning Embedded Electronics" tutorials over at SparkFun. One of the example projects shows you how to make an FT232RL USB-to-Serial Breakout PCB. I followed the tutorials and eventually learned my way around EAGLE to layout PCBs.

For this instructable you will need an installed copy of EAGLE and a PCB Layout that you want to add some graphics to. I am using SparkFun's FT232RL USB-to-Serial Breakout PCB (EAGLE Files) for example purposes.

Step 1: Create Graphics for Your PCB Layout

The hard part might be creating the graphics that you want to use on your PCB silkscreen. The bulk of my time trying to figure this out was trying to find the right combination of sizes and colors of the bitmap for my graphics. I searched around forums and websites trying to find some right answers. Hopefully it will be easier for you.

Most PCBs are small. The graphics will look much bigger on your computer screen than they will look on your PCB. Most PCB silkscreen is white. On your computer screen you want the artwork color to be black.

Create a large size bitmap (BMP) with a size of 2000x2000 at least. 

Add your artwork by either pasting it in or creating it new on the canvas. Make sure the color mode is set to grayscale or monotone. If you have some existing artwork, just overlay the artwork with black. That's what I did with our logo. In EAGLE we will be only importing one color.

To gauge the appropriate size, use 175 pt font on the artwork. When this gets added to the actual silkscreen the size will be around a 1/4" high. You can experiment with the size depending on how much room your logo or artwork needs to take up vs. the size allotment on your PCB. From my experience, every 175 pt high font is about 1/4" on the printed circuit board.

Remember if it looks big on your computer screen, then you are probably doing things right so far. On my attached screenshot, I am zoomed out to 33% and it still looks big.

Save the final design as a bitmap (BMP) at 8-bits at the most.

Step 2: Run Import_bmp.ulp in EAGLE PCB Layout Editor

Open up your PCB layout in EAGLE

Select File and Run... from the menu

Select import-bmp.ulp from the ULP directory of EAGLE and click Open

Step 3: Select the Bitmap to Import Into EAGLE

Select the bitmap (BMP) file that you want to import and click Open

Note: EAGLE never remembers where you saved your artwork, so get used to clicking around everytime you import bitmaps

Step 4: Select Colors to Import

At this point in the process, you need to select the colors that you want to import. You can import 16 colors, but you only want to import one color. Every color imported will go on new layers in EAGLE.

Click on No scan

Check the box over the color black and click OK

Step 5: Configure Import Options and Click OK

There are a lot of option on the settings dialog. Here are the settings that worked consistently for me.

Format: Scaled
Unit: Mil
Scale Factor: 0.5
Start Layer: 21

Click OK to continue

Step 6: Run the Generated Import Script

You are almost done!

This import-bmp.ulp that you are running has been generating a script. At this point you can run the script to import the bitmap into EAGLE.

Click run script

Be patient, older machines will take a moment to process.

Step 7: Move and Rotate Graphics

If everything worked, you will have your artwork on the silkscreen layer (tPlace - 21). Move the graphics to the appropriate spot on the PCB. If the sizing is way off you will have to go back and adjust the bitmap that you started with.

Make sure you save all of that hard work!

Whew, you're finished importing graphics into EAGLE. Easy, right? I hope this tutorial helps you through the process. Let us know how it works for you.

PS. I don't recommend actually getting the FT232RL Breakout PCB manufactured. I think later in the SparkFun tutorial, they mention there is small mistake in the design. They show how to fix it if you keep reading the tutorial.

Comments

author
gentry made it!(author)2010-10-17

No matter how small I make my image, I keep getting the message:
  /Users/gentry/koko5.bmp: Too many pixels y direction
  Anzahl der Pixel in Y zu gross

My bitmap is only 160 x 120 at this point.  (I first tried with a 2000 x 2000 image).

Any idea what's going on?

Thanks!

author
stefblog made it!(author)2016-03-11

Got the same issue. I tried everything from very small to very large. I'm on a mac.

author
gentry made it!(author)2016-03-11

Re-saving the bitmap file using ToyViewer (still available in the Mac App store) worked for me. I was starting (and failing) with an 8-bit BMP I had saved from Seashore.app, and I think I got the same results with an 8-bit BMP saved from GIMP.app. I did finally get it to work!

author
mwilhelm made it!(author)2011-05-23

hi, did you find a solution to this?
i have the same problem!!

author
centerblack made it!(author)2012-01-24

After saving a BMP file using Pixelmator on OS X, I also had this issue. I finally solved it by downloading another application 'ToyViewer' and simply re-saving the bitmap file.

author
gentry made it!(author)2012-01-26

Excellent, that (ToyViewer) worked for me too. I had also tried 8-bit BMP, but that didn't seem to help.

author
iobridge made it!(author)2010-10-17

When you are saving the bitmap are you selecting an 8-bit BMP?

author
E+QuayeI made it!(author)2016-02-15

Where can I run the Ulp? It keeps telling me I can't run it in the package. Where is the command line? Does the Ulp work in eagle lite?

author
FourthDr made it!(author)2015-04-30

How about an update for eagle 7.2? This method does not work on small PCB's (1 square inch or less), I can't get this to work for PCB's sent to OSHpark. Something about the resolution being too high. How would I place a small logo of my own similar to the Sparkfun flame on a small PCB and have it work? So far no method I have tried works on small PCB's.

author
TomekW made it!(author)2015-03-16

Thanks, great job !!

author
n0th1n6 made it!(author)2015-01-01

since you are using the "scaled" option, just calculate the scale factor so that you will always get the accurate size you needed. First, measure the available space in your pcb. Say for example you have 10mm x 10mm and your bitmap is 2000px X 2000px. Divide 10mm by 2000px, you'll get .005 scale factor.

author
ted99tw made it!(author)2014-11-17

Thanks for the great tutorial!!

螢幕快照 2014-11-17 下午8.19.31.png
author
Ugifer made it!(author)2014-10-16

Thanks very much for this - I know it's now quite old but I found this yesterday and it worked excellently - along with the tip to use only 200dpi. I'm sending my board to iteadstudio rather than OSHpark but I wanted to be sure it would work so I used 200dpi for them too. Hopefully the resulting board will feature in an 'ible soon. I'll post a link if so.

One additional tip - you don't need to put your graphics in layer 21. Just import it into layer 200 as proposed (so you can select it and manipulate it easily but turning off other layers). Then, when you load your CAM job to produce your gerber files, add layer 200 to the layers used for the top (or bottom) silk screen.

I added a bmp to layer 200 and wanted it in the same place on the top and bottom silks, so I included it in both layers in the CAM job. It will be mirrored in the bottom layer but that didn't matter in this case.

Thanks again.

Ugi

author
hpb made it!(author)2013-11-24

Awesome tutorial! Thanks! :) Just a quick note - some PCB manufacturers such as the popular OSH Park use a 200 dpi printer for silkscreens. Make sure when you run the bitmap import ULP, select DPI and then enter 200. The image size is usually calculated this way - calculcate the size of the logo you'd want. Since you know the exact dimensions of the board anyway this is easy. Multiply that number by 200 (since the printing resolution is 200 dpi) and that should give you the image size in pixels.

author
Qtechknow made it!(author)2013-01-21

I have a bitmap file on a Mac (used ToyViewer to create), and it is just black and white. When I use the import bitmap script, however, it gives me an odd choice of 256 colors, and it goes off of the screen. Any help???

author
jeeep made it!(author)2012-12-20

Has anyone had any luck using this method then successfully uploading it to OSH Park? I have had no luck getting a bmp to turn into a silkscreen layer; their site seems to ignore the bmp (placed on correct layer).

author
liudr made it!(author)2012-12-20

Thank you so much! I had some Japanese texts for silk screen and had to export into graphics and then used your tutorial to get everything in EAGLE. I can't read Japanese but everything looks the same as the source!

author
joerice01 made it!(author)2012-09-16

This works great for me up until moving and rotating the graphic. It seems like when i go to move it only the individual lines are moved. Is there away to group the whole image together and then move it or is there something i'm doing wrong?

Cheers

author
quatch made it!(author)2012-12-12

Suggestions for a easy import:
1) Import to layer 200 or so (somewhere empty).
2) use the layers button to turn off all other layers
3) use the group tool to select the whole image
4) now you can select the move tool, right click on the image and click move group
5) then you can turn on the other layers, and it will still be the active group, so you can right click to move it around.
6) select the change tool to change to tsilk or wherever you want it to end.
7) right click on the image and change:group. It'll still remember what the group is.
8) Win!

author
jeff-o made it!(author)2012-07-14

Two quick tips that I learned the hard way:

1. Make absolutely sure that the image you're working with is actually black, and there is nothing in the background. Otherwise, Eagle gets confused and things don't render properly.

2. Eagle will place the logo right at the origin, and will draw it on top of the board. This makes it very hard to pick up and place where you want it! Before running the script, move your entire board up or over from the origin. Eagle will draw the logo in blank space, making it easy to group-select and move where you want.


This works well for one-offs, but I do recommend making a library of your graphics instead. This makes it much easier to move logos and stuff around just by grabbing their origin, rather than constantly group-selecting the logo (and everything beneath it!)

author
bigthump made it!(author)2012-04-16

So I tried this and it worked great, but I had a lot of issues separating the logo bits out from the other layer 21 stuff (like some others have voiced).

At one point I tried putting it on layer 200 and just moving it as a group to layer 21 after I had it positioned, but that was a pain too.

So what I did is to create a library in Eagle, import the graphic into some packages (I have one each for .5, .75 and 1 scaling). Then I created a "created by..." (or blank probably works) schematic symbol and created devices for each logo size.

Now I can simply add the logo directly to the board from the library and move it around as a group from a single origin. Super easy!

Thanks for this instructable!

author
duncan_a made it!(author)2011-04-09

It worked, I have a nice graphic imported and it's down in the bottom left hand corner of the PCB...

Unfortunately it is on the top of other items on layer 21, across a mounting hole and will be beneath components when the board is populated.

It absolutely refuses to be moved (or deleted)...

I'm fairly sure I followed the instructions 'to the letter' but I am new to Eagle. As I spent almost three days routing this board, I'm hoping somebody knows a simple solution to the problem.

Thanks

author
irelandmc made it!(author)2010-11-08

I have been trying to find some information on how to do this for weeks! Thank you for the great instructable! Worked like a charm!

author
rmdorsey made it!(author)2010-10-03

Marvelous job IOBridge. I got it working the first time through!

author
iobridge made it!(author)2010-10-03

Cool!

author
CODIY made it!(author)2010-08-09

Thank you for putting this instructable up. I messed with several different ways of getting logos onto boards, and usually ended up drawing them (for QR codes, anyway) in Eagle. This is much, much simpler!

author
profpat made it!(author)2010-07-19

thanks, will try out this one on my newer board designs....

author
itburnswhenithink made it!(author)2010-07-16

Nice tutorial. I would recommend creating a new package for the logo. That way you can add it to your PCB layout without having to repeat this process every time.

author
Spydamonky made it!(author)2010-07-11

this may seen like a stupid question to you pros out there, but how do you set the outline of the board??

author
ansc made it!(author)2010-07-11

You draw a wire of width "0" to the layer 20 (dimension) for your desired board outline. Or you move the existing outline-wires to your desired outline.

author
Spydamonky made it!(author)2010-07-14

Ahhhh thnx man

author
amando96 made it!(author)2010-07-13

I usually just edit the pdf, but i rarely add logos

author
iobridge made it!(author)2010-07-13

Do you make your own PCBs? If not, where do you get them made?

author
amando96 made it!(author)2010-07-13

Yes, very easy to make, and unlike what it's been said, it's NOT more expensive that getting them made by batch PCB, olimex, etc. I'm setting up a tutorial soon, very detailed.

author
rhoaste made it!(author)2010-07-13

The import of graphics is clumsy and unfriendly (by design) in my opinion. It's a pity Cadsoft haven't got a more flexible way to manipulate fonts and graphics. It's the one thing I think would be a considerable improvement for Eagle.

author
jeff-o made it!(author)2010-07-12

Thanks for this. I figured there was an easy way to add graphics, but I didn't realize it was this easy!

author
E_MAN made it!(author)2010-07-11

Cool!! I will try to add graphics to my PCB designs today. Thanks :D