Added PrintrBoard Rev. F Support to Repetier Firmware

My Fork:
Pull Request (Accepted):

I’m not sure why this hasn’t been done yet, but here you go, World. My fork of Repetier Firmware, complete with PrintrBoard Rev. F digital trimpot support. Additional M-Codes in support of the digital trimpot are implemented (using PrintrBot’s Rev. F fork of Marlin as a reference guide):

  • M907 – Set digital Trimpot using axis codes
    Accepts S[0..100] to set ALL channel outputs to a percentage of maximum-allowed value. Also accepts X, Y, Z, and E values from 0 through 100 to set each axis to a percentage of maximum-allowed value.  note that S must be an integer; whereas X, Y, Z, and E may accept float (decimal) values.
  • M908 – Set Digital Trimpot Manually
    Requires P[0-4] to specify Stepper Channel (X, Y, Z, and E respectively), and S[0..3520] to set the DAC channel value. 3520 corresponds to 1.76 Volts out on the DAC Channel — which itself corresponds to a maximum of 2.0 Amps of output on the Stepper Driver. (See the datasheets for an explanation if you must).
  • M909 – Display MCP4728 Values
    Displays the EEPROM-Saved Values and the Current Runtime Values for X, Y, Z, and Extruder.
  • M910 – Commit to EEPROM
    Saves the “Runtime Values” to the digital pot’s EEPROM. Upon subsequent starts, the EEPROM is read back by Repetier to get the startup values. Note also: If you use M910 to save to EEPROM, and replace Repetier Firmware with something else (that may not have support for the MCP4728 trimpot), the values in EEPROM will continue to be used by the MCP4728 on startup — you just lose Repetier Firmware’s ability to change or refine the digital trimpot if you go this route.

With this firmware in place, there’s no reason to waste your time and energy on earlier PrintrBoard revisions — unless you managed to pick one up at a great price, of course.

For $99 and change via PrintrBot’s website, the PrintrBoard Rev. F is a decent piece of hardware for small hobby-grade 3D Printers, and with the digital trimpot onboard, there’s less chance of amateur mistakes with tuning the trimpots and burning out the stepper driver chips.

Drop me a private message if you happen to need additional (paid professional) help in building Repetier Firmware for your board or device.


Wanted: PrintrBoard F5 “Makers”

Any Electronics Makers in the CNC/3D Printer space wanna split a PrintrBoard Rev. F5 pcb run via ? Drop me a note – I only need 1 out of the 3-part minimum. Cost of the board run is about $105 or so (checked by uploading the board source code on GitHub) , split 3 ways comes out to under $35 for the bare PCB.

I haven’t yet priced out the DigiKey BOM to go along with it, but the spreadsheet says it’s around $25 in parts.

If not enough interest, I may just complete all 3 boards and sell off the extra 2 completed to pay for my 1 board.. but that’s a heck of a lot of pick n’ place (by hand!) for under $100 in return apiece, so.. not really interested in taking that route if I can avoid it. Doing a single board is tedious enough. :-7


[Won’t Carry] OpenBuilds’ Router Spindle Mount

SMH, I really have to question some of the “Engineering” that’s been going into OpenBuilds’ more recent offerings.  Don’t even get me started on their C-Channel products. I will not be carrying this product in Hawaii — at least not until it’s been proven and well reviewed by others — and would only process this item as a special order if a Kama’aina neighbor insists on trying it out.

Even then, I’d highly recommend using this spindle mount in pairs.

Truth be told, I’d say you would be much better off going with one of the custom-built, Third-Party mounts by chrisclub1 on Ebay — if only because it uses two plates (an upper and a lower) to secure the router to the Z-Axis gantry.

Sure, the OpenBuilds’ bracket design is cheap at $30 a pop, but with a single-point (albeit somewhat thick) mounting position, it’d be a dice-roll on whether a single bracket will really hold up in a real-world application. Used in pairs, though, it could be a great, cost-effective option at around $60 for the pair.

JSON-Arduino Library, Updated

Yes, it’s been a couple of years since I last touched the code.  The json-arduino library has recently been refreshed with a more recent version of the Jasmine JSON library, and I have closed out a few issues that have reported the library doesn’t function properly on certain specific devices. The fix is to avoid using malloc(), and instead use calloc() for buffer allocation. Furthermore, since an Arduino is running in a loop anyway, it makes little sense to free() and [m/c]alloc() the block all over again with each loop iteration as I had presented an earlier version of the Demonstration Application.

The resulting code, when compiled, is still small enough to fit onto a DigiSpark (ATTINY85), but when you combine the JSON library and another Communications library (USB Serial, or the funky DigiSpark USB “Serial”), it’s very doubtful you’d get anything useful to operate on the ATTINY85 anymore. About the only way to squeeze any more out of a DigiSpark is to eliminate the boot loader.

In fact, I’ve pretty much given up on the DigiSpark as far as “Connectivity” goes, and will just use them in Wearable devices or “prank” USB devices that wreak havoc on a victim’s keyboard or mouse.

If you want a REALLY useful device for fun and profit, do yourself a favor and head on over to and pick up a Teensy++ device. You’re welcome. 😉

3D Printer – Status Update

Well, THAT escalated quickly.

The 3D printer I picked up was assembled beautifully — except that it was assembled in a manner that’s completely inverted (mirror-image) from the way it was intended to have been built. I only noticed this after reflashing the firmware, and configuring the Home switches with typical values. For a moment, I was wondering why some axes needed to be inverted in unexpected ways.

Z-Axis “Skipping Steps” Problem, Solved
As it turns out, the original onboard firmware had a high travel-speed configured for the Z Axis homing cycle, which prevented the machine from determining the Home position on the Z-axis.

Since this is a software (well, firmware) issue, and all other aspects of the mechanicals and electronics were flawless, it made sense to correct the problem and upgrade the firmware at the same time. To do so, I grabbed the source code for Repetier-Firmware 0.92 — which is the latest n’ greatest at the time of this writing — and it completely resolved the Z-axis “skipping steps” issue.

Inverted (Mirror-Imaged) Hardware Build
Anyway, so this “Inverted Build” issue isn’t an overwhelmingly huge problem. Y and Z axes are fully operational as intended, but we’ll have to configure the firmware to expect the X home switch to exist on the MAXIMUM end of travel, whereas it normally exists on the MINIMUM end of travel. Now, we just need to be EXTRA careful about setting the maximum travel distances so when X is at 0, it lands at our intended position on the heated plate.

In Summary
Considering this assembled printer kit was sold via CraigsList at a price I couldn’t refuse, and only one quirk needs to be worked around, I’m pretty happy with how this project is turning out. ‘Already have Repetier Firmware compiling and flashing fine, and after another hour or so, I should have all of the speeds and feeds calibrated. On the plus side, I have a really good excuse to crack it all apart and reassemble with Loctite Blue as I wanted to do, anyway. :-)

Much more to come, once this printer is operational. Hope to be printing parts for a new Delta 3D printer; and once that’s done, I’ll reassemble this kit with the proper orientation (and Loctite Blue) to get it ready to service others at a nearby Public Library someday.