Quad Stepper Controller
![IMAG0222.jpg](/proxy/?url=https://content.instructables.com/F06/I9VJ/GMQ2KRMU/F06I9VJGMQ2KRMU.jpg&filename=IMAG0222.jpg)
This project started last year, there was an article Popular Science about a college professor that made a "3D printer." I remember thinking to myself "holy crap... I want one." Of course at that time $2300 was a lot of money for a high school student to shell out for a hobby. From then my goal has been to eventually have my own 3D printer.
After some research I came across the RepRap project and decided it would the most cost effective route. I like making my own electronics and I was expecting the MakerBot Store to start offering the motor controller PCB's again, but they never did. So I set out to create my own motor controller board. I wanted 4-axis stepper control, power regulation, parallel port connectivity (in case a CNC router became more important) and opto-isolated I/O's all one board.
This instructable follows the steps I used in order to create my Quad Stepper Controller.
Why a 3-D printer ?
- because they're awesome, they can create something from the ground up. This something can take almost any form that will fit inside of the printable area. All the 3-D printer requires is plastic filament and a design. Currently I am planning on building a RepRap Mendel, buying it piece by piece in order to avoid knowing the full price :)
What will I print ?
- everything; the ability to print almost anything your imagination comes up with is priceless. Some of the things I might print could be enclosures, mounting hardware, tool holders, prototyped parts and of course RepRap parts to name a few.
After some research I came across the RepRap project and decided it would the most cost effective route. I like making my own electronics and I was expecting the MakerBot Store to start offering the motor controller PCB's again, but they never did. So I set out to create my own motor controller board. I wanted 4-axis stepper control, power regulation, parallel port connectivity (in case a CNC router became more important) and opto-isolated I/O's all one board.
This instructable follows the steps I used in order to create my Quad Stepper Controller.
Why a 3-D printer ?
- because they're awesome, they can create something from the ground up. This something can take almost any form that will fit inside of the printable area. All the 3-D printer requires is plastic filament and a design. Currently I am planning on building a RepRap Mendel, buying it piece by piece in order to avoid knowing the full price :)
What will I print ?
- everything; the ability to print almost anything your imagination comes up with is priceless. Some of the things I might print could be enclosures, mounting hardware, tool holders, prototyped parts and of course RepRap parts to name a few.
Schematic Design
![schematic.jpg](/proxy/?url=https://content.instructables.com/FLG/MIZS/GMQ2LKCY/FLGMIZSGMQ2LKCY.jpg&filename=schematic.jpg)
The RepRap design calls for 3-axis motor control in addition to a stepper motor to extrude molten plastic, so I require 4 stepper motor controllers. I decided to use a combination of the schematic from Sparkfun's EasyDriver and MakerBot's Stepper Motor Controller v2.2? (no longer available).
The driver design is based around Allegro's A3982 DMOS Stepper Motor Driver with Translator, unfortunately this is is surface mount so prototyping will be more difficult. The circuit also contains support components including voltage regulator, filtering capacitors and protection components. The A3982 is a constant current motor driver which means it can drive a variety of stepper motors.
The other half of the circuit contains opto-isolators. The goal of this half was to provide protected I/O's to the parallel port just in case I happened to loose interest in a 3D printer and decide to build a CNC router.
Warning: If you decide to use the schematic provided, you may have to re-design the opto-isolator circuit. Two (possibly more) of the opto-couplers are stuck on. Have not been able to troubleshoot the issue yet.
The driver design is based around Allegro's A3982 DMOS Stepper Motor Driver with Translator, unfortunately this is is surface mount so prototyping will be more difficult. The circuit also contains support components including voltage regulator, filtering capacitors and protection components. The A3982 is a constant current motor driver which means it can drive a variety of stepper motors.
The other half of the circuit contains opto-isolators. The goal of this half was to provide protected I/O's to the parallel port just in case I happened to loose interest in a 3D printer and decide to build a CNC router.
Warning: If you decide to use the schematic provided, you may have to re-design the opto-isolator circuit. Two (possibly more) of the opto-couplers are stuck on. Have not been able to troubleshoot the issue yet.
Ordering Parts
![parts.jpg](/proxy/?url=https://content.instructables.com/FKR/31XF/GN4CZQW6/FKR31XFGN4CZQW6.jpg&filename=parts.jpg)
Why order parts before designing a PCB? Well I find it helps me make decisions about how the board should be designed if I have the parts in front of me. For example I would have had no idea what size board to make if I didn't have the enclosure to measure. Here are the parts I ordered, in addition I may have also used things that were laying around like a barrel power connector, fan, PTC fuse, scrap wire and misc hardware. (Digikey part numbers)
1 - HM891-ND - enclosure
1 - CR379-ND - finger gaurd
7 - 425-2177-5-ND - optocoupler
1 - ED90054-ND- 28 pin socket
10 - 455-2266-ND - male JST connector
10 - 455-2247-ND - female JST connector
10 - 455-2219-ND - male 3 pin JST connector
10 - 455-2250-ND - female R/A JST connector
100 - 455-2261-1-ND - JST pins
4 -WM1352-ND - female motor connector
4 - WM23701-ND - male motor connector
20- WM3112CT-ND - motor connector pins
4 - 620-1299-1-ND - allegro A3982 stepper drivers
1 - RJHSE-5385-ND - RJ45
20 - 399-1249-1-ND - 100nf cap (1206)
10 - 399-1221-1-ND - 1nf cap (1206)
10 - 399-1251-1-ND - .22uf (1206)
5 - PCE3754CT-ND - 100 uf cap
4 - 3362P-103LF-ND - 10K trimmer 1/4 inch
30 - P10KECT-ND - 10K resistor (1206)
30 - P1.0KECT-ND - 1K resistor (1206)
10 - CSRN20.25FICT-ND - .25 ohm resistor
10 - P2.7KECT-ND - 2.7K ohm resistor (1206)
10 - P470ECT-ND - 470 ohm resistor (1206)
10 - P150ECT-ND - 150 ohm resistor (1206)
1 - 497-7255-1-ND - 5v regulator
5 - MMBT3904FSCT-ND - NPN transistor sot 23
1 - L717SDB25P-ND - DB25 connector
20 - 160-1169-1-ND - green LEDs (1206)
1 -EG1526-ND - thin switch
Also solder paste
1 - HM891-ND - enclosure
1 - CR379-ND - finger gaurd
7 - 425-2177-5-ND - optocoupler
1 - ED90054-ND- 28 pin socket
10 - 455-2266-ND - male JST connector
10 - 455-2247-ND - female JST connector
10 - 455-2219-ND - male 3 pin JST connector
10 - 455-2250-ND - female R/A JST connector
100 - 455-2261-1-ND - JST pins
4 -WM1352-ND - female motor connector
4 - WM23701-ND - male motor connector
20- WM3112CT-ND - motor connector pins
4 - 620-1299-1-ND - allegro A3982 stepper drivers
1 - RJHSE-5385-ND - RJ45
20 - 399-1249-1-ND - 100nf cap (1206)
10 - 399-1221-1-ND - 1nf cap (1206)
10 - 399-1251-1-ND - .22uf (1206)
5 - PCE3754CT-ND - 100 uf cap
4 - 3362P-103LF-ND - 10K trimmer 1/4 inch
30 - P10KECT-ND - 10K resistor (1206)
30 - P1.0KECT-ND - 1K resistor (1206)
10 - CSRN20.25FICT-ND - .25 ohm resistor
10 - P2.7KECT-ND - 2.7K ohm resistor (1206)
10 - P470ECT-ND - 470 ohm resistor (1206)
10 - P150ECT-ND - 150 ohm resistor (1206)
1 - 497-7255-1-ND - 5v regulator
5 - MMBT3904FSCT-ND - NPN transistor sot 23
1 - L717SDB25P-ND - DB25 connector
20 - 160-1169-1-ND - green LEDs (1206)
1 -EG1526-ND - thin switch
Board Layout
![board.jpg](/proxy/?url=https://content.instructables.com/FC9/ZHJG/GMIGGGRT/FC9ZHJGGMIGGGRT.jpg&filename=board.jpg)
The board layout was definitely the most time consuming part of this project, in all about a month of evenings. The majority of the setbacks had to do with cramming four stepper controllers and protection circuits onto a board smaller than 4" X 3".
- First, if you have an enclosure in mind measure the available board area inside. Unfortunately Eagle CAD limits the size of the board to 3.2" X 4" so if your enclosure is larger you will have wasted/empty space inside. In my case, the aluminum enclosure I chose was built with channels for the board to slide into; about 2.9" X 3.54"
- Second, this design is based on a two layer board, there can only be so many intersections in one area. I chose to space the Allegro stepper controllers evenly under the fan. The fan itself had to be mounted directly onto the PCB so it could all be slid into place.
- Finally, If you are designing your own board; be sure to triple and quadruple check your layout before sending out to a fabrication service. Eagle makes it easier but more time consuming with their DRC (design rule check) to check for design errors. I decided to use Sparkfun's Batch PCB, the directions are well documented on Sparkfun's website and countless instructables.
- First, if you have an enclosure in mind measure the available board area inside. Unfortunately Eagle CAD limits the size of the board to 3.2" X 4" so if your enclosure is larger you will have wasted/empty space inside. In my case, the aluminum enclosure I chose was built with channels for the board to slide into; about 2.9" X 3.54"
- Second, this design is based on a two layer board, there can only be so many intersections in one area. I chose to space the Allegro stepper controllers evenly under the fan. The fan itself had to be mounted directly onto the PCB so it could all be slid into place.
- Finally, If you are designing your own board; be sure to triple and quadruple check your layout before sending out to a fabrication service. Eagle makes it easier but more time consuming with their DRC (design rule check) to check for design errors. I decided to use Sparkfun's Batch PCB, the directions are well documented on Sparkfun's website and countless instructables.
Solder It
![IMAG0194.jpg](/proxy/?url=https://content.instructables.com/FVF/W13W/GMQ2KRPY/FVFW13WGMQ2KRPY.jpg&filename=IMAG0194.jpg)
![IMAG0161.jpg](/proxy/?url=https://content.instructables.com/FZ9/TV4C/GMIGGG6G/FZ9TV4CGMIGGG6G.jpg&filename=IMAG0161.jpg)
![IMAG0160.jpg](/proxy/?url=https://content.instructables.com/FG8/AVH4/GMQ2KRO3/FG8AVH4GMQ2KRO3.jpg&filename=IMAG0160.jpg)
In three to four weeks you will receive a beautiful custom PCB to which you will need to solder parts to. There are many different ways to go about doing so, but I chose the slower hot air rework method.
- First, test your solder paste; observe how it flows and how hot it must be to turn shiny. IC's take some practice too much paste and pins will be soldered together, too little and they wont make good contact.
- Second, paste, place and solder in small groups from smallest to largest components onto the PCB. If you are using another method such as skillet reflow or a heatgun all of the components can be soldered at one time.
- Finally, this is optional but you may want to test individual circuits before they get tied to other components. This can only be done during the soldering process.
- First, test your solder paste; observe how it flows and how hot it must be to turn shiny. IC's take some practice too much paste and pins will be soldered together, too little and they wont make good contact.
- Second, paste, place and solder in small groups from smallest to largest components onto the PCB. If you are using another method such as skillet reflow or a heatgun all of the components can be soldered at one time.
- Finally, this is optional but you may want to test individual circuits before they get tied to other components. This can only be done during the soldering process.
Board Extras
![IMAG0184.jpg](/proxy/?url=https://content.instructables.com/F2R/JMUF/GMQ2KRP3/F2RJMUFGMQ2KRP3.jpg&filename=IMAG0184.jpg)
![IMAG0173.jpg](/proxy/?url=https://content.instructables.com/FRB/QAQE/GMQ2LK6R/FRBQAQEGMQ2LK6R.jpg&filename=IMAG0173.jpg)
![IMAG0170.jpg](/proxy/?url=https://content.instructables.com/FQR/70UQ/GMQ2LK6P/FQR70UQGMQ2LK6P.jpg&filename=IMAG0170.jpg)
![IMAG0174.jpg](/proxy/?url=https://content.instructables.com/FOA/PXWE/GMQ2KROM/FOAPXWEGMQ2KROM.jpg&filename=IMAG0174.jpg)
![IMAG0185.jpg](/proxy/?url=https://content.instructables.com/FMG/EG0P/GMQ2LK71/FMGEG0PGMQ2LK71.jpg&filename=IMAG0185.jpg)
Because this is a two layer board there are some really crammed copper intersections, higher current carrying wires were made thin to accommodate all of the connections. To solve problems this may have caused; I designed exposed power source pads to solder reinforcing wires to. (seen in the first picture) The only negative effect is the aesthetics of the board design, this can be solved with a four of more layer board.
Cutting Holes
![IMAG0166.jpg](/proxy/?url=https://content.instructables.com/F27/5TP8/GMQ2KROC/F275TP8GMQ2KROC.jpg&filename=IMAG0166.jpg)
![IMAG0167.jpg](/proxy/?url=https://content.instructables.com/F3F/GDM1/GMIGGG6T/F3FGDM1GMIGGG6T.jpg&filename=IMAG0167.jpg)
![IMAG0191.jpg](/proxy/?url=https://content.instructables.com/F1Y/BS38/GMQ2LK73/F1YBS38GMQ2LK73.jpg&filename=IMAG0191.jpg)
![IMAG0186.jpg](/proxy/?url=https://content.instructables.com/FID/NSWP/GMQ2KRPB/FIDNSWPGMQ2KRPB.jpg&filename=IMAG0186.jpg)
Holes are needed for the Fan, connections to the motors, sensors, power and computer.
- Fan, I used an adjustable fly cutter for the fan hole. Dangerous but effective, the hole was then covered with a finger guard.
- Motor connectors/sensors, luckily the end pannels are made of plastic and easy to file by hand.
- Computer/power/switch, these connections are also on a plastic end and can be filed by hand.
- Various screws, were drilled and tapped for the finger guard and PCB securing.
- Fan, I used an adjustable fly cutter for the fan hole. Dangerous but effective, the hole was then covered with a finger guard.
- Motor connectors/sensors, luckily the end pannels are made of plastic and easy to file by hand.
- Computer/power/switch, these connections are also on a plastic end and can be filed by hand.
- Various screws, were drilled and tapped for the finger guard and PCB securing.
Testing
![IMAG0162.jpg](/proxy/?url=https://content.instructables.com/F0A/QW9M/GMIGGG6H/F0AQW9MGMIGGG6H.jpg&filename=IMAG0162.jpg)
![IMAG0163.jpg](/proxy/?url=https://content.instructables.com/F8I/NOWF/GMQ2KRO8/F8INOWFGMQ2KRO8.jpg&filename=IMAG0163.jpg)
![IMAG0222.jpg](/proxy/?url=https://content.instructables.com/F06/I9VJ/GMQ2KRMU/F06I9VJGMQ2KRMU.jpg&filename=IMAG0222.jpg)
![IMAG0187.jpg](/proxy/?url=https://content.instructables.com/FSP/QTAW/GMQ2KRPD/FSPQTAWGMQ2KRPD.jpg&filename=IMAG0187.jpg)
![IMAG0181.jpg](/proxy/?url=https://content.instructables.com/F1M/QDF6/GMQ2LK70/F1MQDF6GMQ2LK70.jpg&filename=IMAG0181.jpg)
![IMAG0190.jpg](/proxy/?url=https://content.instructables.com/F3D/YLGC/GMQ2KRPO/F3DYLGCGMQ2KRPO.jpg&filename=IMAG0190.jpg)