(this project is currently in progress)
We (a group of Pomona College Physics students) are finishing a RepRap Mendel that was begun in Fall 2010. In testing the electronics, we found that there was something wrong with the extruder board. Some pin-by-pin troubleshooting led us to believe that the problem was a bad connection between the clock and ground. Re-soldering that fixed the problem, but we soon ran into another one: bad serial communication with the motherboard. Rather than troubleshoot something far beyond my level, I thought it would be instructive to try building new electronics to bypass the extruder board entirely.
My original idea was to use the motherboard to drive the extruder motor with a stepper driver board, and use extra pins to get the temperature data and power the extruder block heater directly. Armed with my rudimentary knowledge of Arduino gleaned over a few weeks of Electronics class, I naively imagined that all I would have to do was hunt through the firmware and find wherever it calls some function to tell the heater "turn on" through the serial connection, and substitute this with turning on a digital pin hooked up to a MOSFET; likewise for receiving temperature data. A slightly closer look at the firmware (we are using Teacup at the moment) showed that the problem would not be nearly so easy.
I abandoned the firmware-modifying approach, and decided to try to create a simple version of the extruder board with an Arduino Uno (Atmega 328) that I have handy. I did not have the A3949SLBT H-bridges used in the original extruder board, but I had more standard SN754410 dual H-bridge ICs. Being new at this, I started out just learning how to use H-bridges to power a stepper, using a setup essentially the same as Arduino's Motorknob example:
After learning the basics of stepper control with the stepper library, I proceeded to attach this circuit to the Nema 17 used on our Mendel to drive the extruder:
The SN754410 seemed to be able to handle the current draw of the Nema 17, so I decided to go ahead and add the remaining components:
Unfortunately, I did not realize until this point that the RS485 connection requires a special IC known as a differential bus transceiver, which I did not have on hand.
Because I was doing this as a project for an electronics class, I made a nicer version of the circuit on perfboard before being able to test functionality:
Testing awaits arrival of an SN75176A.