I have to fix a number of my PCBs. Some that are currently broken, I need for my JAMMA adapter project. It’s been holding things up more that I like.
While I’ve been working on these I decided to spend a day on creating various stickers for RAM, ROM and CPUs that can be stuck on the chip and will list label each pin for easy probing.
I managed to whip this out quick. I works but maybe an online repository with a number of these that people can use is the way to go. I may consider it when I have some free time.
In the mean time, this code Python code takes in your pin list, the chip size and your printer DPI settings and generates an image of the correct size that can be printed on a label printer.
from PIL import Image, ImageDraw, ImageFont import os class ICPins: def __init__(self, name, pins, package): self.name = name self.pins = pins self.package = package # DIP body widths are .25" (standard) and .5" (wide) self.width = .5 # DIP leg spacing is .1" self.pinspacing = .1 self.padx = 5 self.pady = 5 self.dpi = 300 self.fontsize = 12 def to_img(self): filename = self.name + ".png" # calculate sizes based on input and DPI y = self.pady x = self.padx if (self.package == "DIP"): pinspacing = int(self.pinspacing * self.dpi) width = int(self.width * self.dpi) #fontsize = int(self.pinspacing * 72) - 1 fontsize = self.fontsize sizex = width + (self.padx * 2) sizey = int((len(self.pins) * pinspacing) // 2 + self.pady * 2) fnt = ImageFont.truetype('arial.ttf', fontsize) print(sizex, sizey, pinspacing, fontsize, fnt.getsize('A')[0], fnt.getsize('A')[1]) # create image image = Image.new(mode = "RGB", size = (sizex, sizey), color = "white") draw = ImageDraw.Draw(image) # draw pins leftpins = self.pins[:len(self.pins)//2] rightpins = self.pins[len(self.pins)//2:] for pin in leftpins: draw.text((x,y), pin, font=fnt, fill=(0,0,0)) y = y + pinspacing x = x + width y = y - pinspacing for pin in rightpins: w, h = fnt.getsize(pin) draw.text((x - w - self.padx, y), pin, font=fnt, fill=(0,0,0)) y = y - pinspacing shape = [(0, 0), (sizex - 1, sizey - 1)] draw.rectangle(shape, outline = "black") # save file image.save(filename) # show file os.system(filename) pins = ["A11", "A12", "A13", "A14", "A15", "CLK", "D4", "D3", "D5", "D6", "VCC", "D2", "D7", "D0", "D1", "/INT", "/NMI", "/HALT", "/MREQ", "/IRQ", "/RD", "/WR", "/BUSACK", "/WAIT", "/BUSRQ", "/RST", "/M1", "/REFSH", "GD", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10"] ic = ICPins("Z80", pins, "DIP") ic.to_img()
Here’s an image that was generated from the above Z80 definition.
I hope this can come in handy to someone. If you would like to see this as a web tool, let me know and I can probably make this a repository of pinouts for the common ICs and maybe even allow you to add and create your own stickers.