The RepRaps we built used all custom electronics for the motor controllers, sensors, ADC, and heater control. The orginal RepRap used 4 L298 H-Bridge chips to control the stepper motors. This setup also used the RaspberryPi Model B which only had a 26 pin header which caused the changes for controlling H-Bridge chips which require four control pins per motor. To cut down on pins we used a 2 not gate chips (also called Hex inverters - TI 7404).

Another challenge using the RaspberryPi is it's lack of built-in analog to digital converter (ADC). So it lacks the analog I/O pins the Arduinos have. In order to measure temperature of the extruder and heated bed of the RepRap, we must read an analog value over the thermistor sensor for each heater. The first implementation used a 555 timer chips (we had a bunch of them) setup in multi-vibrator mode with the thermistor setup in the so the output pulse varied as the temperature varied. We the used the GPIO on the Pi to read the high pulse time of these 555 timers and used that to calculate the temperature. This was fairly accurate but lacked the precission we needed to get good readings especially at the high temperatures needed to melt PLA.

We eventually ditched the 555 timer circuit and decided to use seperate ADC chip to handle the readings. We used the standard MCP3008 10 bit ADC chip because it was available in the DIP package that we could use in a standard breadboard and there was existing Python libraries to read the values. We setup a simple voltage divider for both the extruder and heated bed 10K Ohm NFC thermistors with 1K Ohm resistors. This gave a much better readings even at the 200 degree C range. At this point we were done with the prototyping stage and went to fully a soldered board.
With the move to a soldered board and the availability of the new PiRinter3D software some further changes were made. Now Raspberry Pis all come with 40 pin headers which allowed for more GPIO pins. We no longer need to use not gate chips and could use a GPIO pin for each input of the H Bridges. This allowed for half stepping the motors where before we had to use full stepping. We also replaced the orginal TIP3055 Darlington Pair NPN Transistors that we used to trigger the heaters with IRF1540NPBF Mosfet transistors. The darlingtons worked but still required about 15mA of output current per pin which is right at the limit of the RaspberryPi's GPIOs. The mosfets had much better current limits and of course require almost no current from the GPIO, we tried several different ones before finding on that had low internal resistance (VGS) and was fully open at 3.3V.

Most RepRaps today use Ramps contoller boards that plug into an Arduino Mega. We would like to design a hat for the RaspberryPi that will in turn connect with a Ramps board. As much as we like building our on controller boards the Ramps boards have everything we need an are quite afordable these days. This will also allow people with those setups to switch over to the PiRinter3D RaspberryPi setup.