Sorting Resistors With 3D Printing And A PIC

If you aren’t old enough to remember programming FORTRAN on punched cards, you might be surprised that while a standard card had 80 characters, FORTRAN programs only used 72 characters per card. The reason for this was simple: keypunches could automatically put a sequence number in the last 8 characters. Why do you care? If you drop your box of cards walking across the quad, you can use a machine to sort on those last 8 characters and put the deck back in the right order.

These days, that’s not a real problem. However, we have spilled one of those little parts boxes — you know the ones with the little trays. We aren’t likely to separate out the resistors again. Instead, we’ll just treasure hunt for the value we want when we need one.

[Brian Gross], [Nathan Lambert], and [Alex Parkhurst] are a bit more industrious. For their final project in [Bruce Land’s] class at Cornell, they built a 3D-printed resistor sorting machine. A PIC processor feeds a resistor from a hopper, measures it, and places it in the correct bin, based on its value. Who doesn’t want that? You can see a video demonstration, below.

At first, it appears the device uses a rotary encoder as an input device. However, it isn’t an encoder. It is a 10-turn potentiometer. This is simple to read but causes some unique processing. For navigating the LCD, for example, the PIC looks at the rate of change of the pot value. However, if it sees the pot go to the end of travel, it moves the navigation fully in that direction.

We thought it would be cool to marry this with an OpenCV resistor reader to also identify out of spec or mismarked resistors. There’s actually a few phone apps that can do that with varying degrees of success.

Thanks to [Bruce] for the tip, and for launching so many young engineers.

20 thoughts on “Sorting Resistors With 3D Printing And A PIC

  1. >you might be surprised that while a standard card had 80 characters, FORTRAN programs only used 72 characters per card.

    No, you would not be the slightest bit surprised. You knew it, deeply and viscerally and quite early on.

  2. Typically if a card was being punched by a user, such as on an IBM 029 machine, those last 8 columns would not be punched, because you KNEW you were going to be editing your program, and unless you felt like re-punching cards to renumber them, they were left unpunched.

    Once a program was complete, and assuming you had sufficient rights on the machine, you could request your deck be re-punched on the machine attached to the mainframe.

    Usually what we did while working on cards was to draw a diagonal stripe across the top edge of the cards to indicate order. This was necessary because if you were going to drop cards, it would always happen just as you were taking your final program up to the operator window to submit it…

    Georgia Tech, Cyber 6600 and Cyber 74, many many years ago.

    Using the same basic hardware they’ve done, they could turn it into an optical sorter. That’d be a good entry into a machine vision project.

    1. Yeah we did the diagonals too but we also used sequence numbers. The numbers didn’t have to be unique because only the sorters read them and they would gladly sort two cards with the same sequence number together. It was only a problem if a duplicated seq # got out of order and then reversed when you sorted.

      We had keypunchers, but we also had a punch we’d use to do onesy’s. There is a nostalgic but long read from my Alma Matter about the programmers who didn’t use the sequence columns: — around page 12.

      We also had several programs that would take a deck and repunch the sequence numbers as you liked. I think an MFCM could do that, too, with the right plugboards but I would not swear to it. On the other hand, no worse than paper tape where you would overpunch NULs and glue pieces in. I don’t miss those days.

  3. Cyber 6400 and family for me. Never used those 8 columns. As was said, they would become screwed up due to edits almost immediately anyhow. Sometimes decks got worn and needed to be duplicated, that might be a time to add those sequence numbers, but by and large those 8 reserved columns were wasted.

    It was a common conjecture that it could be one of the best things ever if the deck got dropped and hopelessly scrambled. Then you could start over clean with a much better idea about the problem you were working on. Version 2 would be cleaner and better.

    I mostly treasure hunt for resistors. I find that just leaving them on old PCB’s and hunting on boards for components to desolder is often the most time effective way (or at least one of my sources of parts).

  4. If we can get these guys together with the guys who made the Pick And Place Machine For Candy we might have something.

    Specifically, what I want is to toss my huge box of unsorted TH resistors on a table, have the pick and place machine identify the body (because the leads can be anywhere), read the colors and drop the resistor in an appropriate bin.

    Of course I realize that it’s literally (and I mean literally) cheaper to throw them all away and buy new resistors already sorted but where’s the hack in that?

  5. Cool project! But it wouldn’t work for me as I store resistors with bent legs used on breadboards in the same container as the straight and unused ones. Before I read the article I thought it was done using a camera, reading the color coding, then sorting. Wouldn’t it be great if you could throw the breadboard project ‘waste’ into a sorter and find them back in your storage for use when you need it? Including jumper wires and modules, transistors, ICs, diodes, coils, caps etc.
    Luckily I can identify all E-12 5% resistors and some E-96 or 1% ones on sight and sort it manually. I’ve recently sorted my dump box where I keep the resistors used on breadboards, about 200-250 of them. Took me the better part of 15 mins to do it :)
    I use a very old, 30+ years I reckon, storage box made out of tempex. It’s stacked with each decade of values grouped on one layer. I’ve been keeping it topped up for that long too. I’ve added a separate box with 1-8.2 ohms since that wasn’t included. My father introduced me to electronics when I was 10 years old and began learning the color system.

  6. IBM system3.. 96 column cards.
    Not that I ever programed on it, that would be my dad.

    I was in the first freshman class at Georgia Tech to not punch cards. However, the JCL errors had not yet been updated. Many of my classmates were confused by the message ‘invalid control card’ on the vt100.

    1. I actually spent some time working on a System 3 Model 12. What was funny is that I never physically saw any of those cards. We had a 3742 that worked as a “keypunch” but “punched” 8 inch diskettes. Then a 3740 (single unit) was our “card reader.” So the keypunchers would code a disk and then it would be put in the reader and away we went.

      All RPG II and by today’s standards wouldn’t make a cheap cell phone. We had the Selectric terminal. Apparently, most people didn’t get that because it slowed the computer down, but we didn’t know that. I still remember that if an I/O device was not ready, the two 7 segment displays (not LED, if I recall) would show Oy — I’ll let you make up your own joke.

      We had a lady who could do 10 key on the 3742 so fast it would lock out the mechanism and she could even do full typing and sometimes lock it which the IBM reps were amazed at because they’d never seen anyone go that fast. The machines made an awful clicking noise which I always assumed was some part of the mechanics. One day the lady told me the IBM rep was on his way out to replace the clicker on her workstation. I asked what was wrong with it. She said it was nothing. The machine worked fine, but the clicker had stopped making noise. I rolled my eyes assuming she was out of her mind. Turns out, so many of the keypunch operators trained on the 029 and similar that they needed a loud noise to feel like they were doing something. So, indeed, there was a little clicker mechanism that just make clicks as a form of feedback to the operator and had no other purpose.

      1. I can believe that, I’ve done data entry. Big batches of paper documents, entered into a computer at a phenomenal rate of knots. They even have national contests apparently, for speed. I got up to about 25,000 keys per hour, about 7 per second, with decent accuracy. One or two of the women there could do twice that, born of years of experience.

        It’s an experience not quite like ordinary typing, there’s definitely a rhythm to it, it’s partly muscle memory, and partly subconscious operations in the brain that you’re only partly aware of. Turning yourself into a machine. We didn’t have a clicker, they were just cheap PCs running software, but I can understand that if you’d learned to do it with a clicker, you’d need one as part of the process. Rhythm is important, eyes and fingers end up working faster than the brain.

  7. It’s a pity that from a economic point of view, buying a new set of resistors is cheaper than printing this contraption and sorting them out. I would put them in one big drawer and use them as a backup for when it’s saturdaynight and the piece should be finished by mondaymorning. browsing through a bundle of resistors with the right color code is not that hard.

  8. I learned COBOL on a green-screen terminal, but still you never use the first 7 columns (and I think a * in 8 for “comment”, or maybe it was 9). And now I know why! Thanks!

    It’s kind of weird for a language to be dependent on a long-obsolete data storage format, but if it’s going to be any language it’d be COBOL. And FORTRAN too I suppose. Mind there’s probably Visual COBOL now, or some such nightmare.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.