A while back I bought a semi assembled Anycubic Kossel Linear Plus 3d printer from a Tesla engineer down in the bay area. He was selling it pretty cheap because it had just become a project he couldn’t finish while working 80 hour weeks (WTF, Tesla?!). I completed the build but could just never really get reliable prints from the thing – I’d often have issues with what looked like one of the stepper drivers losing a lot of steps and the effector drifting off to the side.
The stock configuration came with the “Trigorilla” motherboard which is a perfectly fine atmega based board, but doesn’t have support directly for TMC2209 stepper drivers from Trinamic. One of the things that bugged me about the hardware on this printer was that the screws for the endstop switches just barely rubbed on the belts, and, uh, no thanks. The endstops also basically took up about half an inch of possible travel – that could be more build area.
I ran into what was either a bug with Marlin or an issue with the SKR V1.4 Turbo board wherein the three tower motors (some people still call them X, Y, Z, but I’ve also seen Alpha, Beta, Gamma, which makes more sense) would run just fine but the extruder motor wouldn’t turn. The most I could get would be the motor being enabled which caused it to get a hold current, but then it just wouldn’t move. I kinda have in to cargo cult ways and just changed that driver to an A4988 from the old setup. A4988’s still a perfectly fine driver with microstepping, it just isn’t as quiet and doesn’t have the missed step detection, which didn’t matter to me for the extruder which doesn’t have to be an absolute position sort of system.
Now what to do with all this horror pasta?! As soon as I get it up and printing I’m gonna make a little box for the controller.
The bracket it’s on is reused from the stock setup which had the controller right under the heated bed! I didn’t like that. I think that was inherited from the early Anycubic Kossel delta printers which originally came out without the heated bed – that came out as a later option. Mine has the glass bed which I put the build plate sticker on (…why?) – I’ll probably strip that off later as I’m a believer in the magic of the glue stick. All hail the glue stick.
I can’t figure out if it’s actually possible to do Marlin’s delta calibration without a leveling probe. I tried using the delta calibration menus and just didn’t get anywhere. A probe is on order and I’m going to get some spiral wrap or split loom and Velcro for all that… aaaargh!
The Printrbot Simple Metal was a really cool design. It’s a Cartesian 3d printer built like a brick house by Printrbot out of Lincoln, California, who went out of business facing powerful competition from a lot of low-cost Chinese printers but recently decided to get going again. One of my coworkers had one that had an old version of Marlin on it (1.0.0?!) and I wanted to update it to improve on some features and add support for a heat bed.
It was available with or without a heated bed, and even if you didn’t have one, it can still be added easily using a stick on heater mat/thermistor like this. The connectors are present on the Printrboard controller for it. One cool thing about the Printrboard: it has two big beefy mosfets onboard, and the DC in connector just mates straight to a standard ATX12V connector on a PC power supply. All you’d need to do to power the Printrbot is go to the ATX motherboard connector on the supply and jumper the small green wire to one of the black grounds to make it auto start. On Rev. D boards, this was a 4 pin; on Rev. F, it’s 6 pin.
There is a solder jumperable pad, supplied OPEN, for USBPWR 5V. This will allow the board to power up from the USB host it’s plugged into. Don’t jumper this unless you have a very good reason to for your configuration. An onboard switching regulator will supply +5V to the components onboard once +12V is input to the ATX12V connector.
This is based on the RevF board, as that just happens to be what landed on my bench. Printers using the RevD are not uncommon too, apparently.
Steppers: The board supplies four Allegro A4982 stepper drivers, an improved version of the A4988. These do not have a heatsink on them like a lot of newer boards do, but I haven’t seen them get hot either. It certainly won’t hurt to add some stick-on sinks if you want. The datasheet suggests that the lion’s share of the chip’s thermal dissipation goes out the bottom though. The driver type in Marlin should be left on A4988 as the I/O behavior is identical.
Microstepping IS supported on this board – you will find a small solderable jumper pad next to each driver. If you solder bridge that entire pad, you will get 1/8 microstepping. On this particular printer, all four are un-jumpered and microstepping is not used. On a printer that was NOT built like a brick house, this would lead to it having a very loud sound about it. On the Simple Metal… it just sounds smooth and sweet. Don’t forget to change your steps per unit if you bridge the microstep pads! The VRef voltage that sets the stepper motor current comes off a DAC, making the motor current adjustable in software. I haven’t experimented with this yet or found any reason to move it off defaults – the motors and drivers stay cool and I am not experiencing any skipped steps, even when making the printer SCREAM at 150mm/sec! (it will DO IT with the stock hotend and not skip any steps, but you will lose detail. Dang.)
Updating Firmware: Before updating, if you’re doing this on an already functional machine, get your EEPROM settings with M503 and copy them into a text file. Otherwise you’ll wind up with defaults that may or may not be correct.
The CPU and serial interface: Another cool thing about the Printrboard: Unlike many ATMega based 3d printer controllers that came out at that time, the ATMega AT90USB1286 has native USB support. This will prove to be a double edged sword but won’t stop you from having fun with this board, read on. A Marlin build bug may show up when you’re trying to build as a result of this unique platform target. This is currently fixed in the nightly “bugfix” branch, so start from that if you are compiling Marlin yourself.
There is a “BOOT” jumper next to the chip. If you jump this and press the reset button, the chip will come up in DFU mode. It comes stock with a bootloader from Atmel that supports their FLIP utility for programming under Windows. (Todo: figure out what tools would be needed for this on other platforms.)
Dealing with Windows Being A Stupid Doodiehead As Usual: To program this chip, download Atmel FLIP and install it. On Windows 10 64-bit, get the version with the JRE included (as documented here). Tip the Printrbot over on its side and place a jumper cap on the BOOT pins, then press the reset button. You should see Windows detect the AT90USB in DFU mode— however, it may not properly install the driver. Open FLIP and click the USB cable icon in the toolbar, then choose USB connection. If you receive a message about a missing DLL, close FLIP again, and go into Device Manager. Right click the DFU device that’s showing up with a warning icon and choose Update Driver, then manually choose the location. The driver will have been dropped in C:\Program Files(x86)\Atmel\Flip [version]\usb. It should install ok, then Flip is ready to use.
To flash a file with Flip, go to File > Load Hex File. Click the USB plug icon and select USB connection. It should identify the AT90USB1286 if the chip’s already up in DFU mode. By default the options on the left will all be checked except Blank Check. That works fine… make sure it’s set to write out the Flash space and not the EEPROM space (the button in the top center toggles this), then click start at the lower left. It’ll take about 15 seconds to complete. IN THEORY, you should be able to reset out and run the newly programmed application in the chip with the button at lower right, but that doesn’t work for me – probably because the BOOT jumper is still set and it just loops back into DFU. Pull the jumper and press reset, and Windows should detect the
I have provided two compiled versions here at the end, one for printers with a heated bed and one for those without. The version for printers without a heatbed bed will work fine on those that do, you just won’t be able to heat the bed. The other way around, I suspect, would make it refuse to work with a MINTEMP error being thrown.
Building Marlin: I used PlatformIO and the Build Marlin addon tool. You can also use the Arduino IDE after installing Teensyduino. (Board type will be Teensyduino++ 2.0!). My configuration files are at the end of this post; my changes were mostly to invert the inductive probe output behavior (which MAY have been different for Rev. D boards!) and to add bilinear bed leveling with a 16 point probe. I tried using the new Unified Bed Leveling architecture but it caused the code size to exceed available memory. Bilinear is working fine on the machine here, so I’m just using it 🙂
Yes, you can buy that funky UBIS hotend and parts for it. The distance between the nozzle and probe center-to-center is 25MM, I’ve checked this and included it in the configuration file.
I have a sneaky suspicion that the example configurations for Marlin 2.0 just haven’t been touched since shortly before/after(?) Printrbot blinked out of existence and the example was only built and tested for the Rev. D Printrboard. A bit of searching around online suggests that the big change between D and F was the addition of a buffer transistor for the input from the inductive probe, which was prone to damage on Rev. D. If you have Rev. D, the stock config should be fine, but I think the buffer basically inverts the input. The way to tell will be to try homing the printer with G28. If the Z axis rises, pauses, then rises again, but never comes back down, use M119 to test the endstop input states. If the Z axis is not at the bottom and the LED on the proximity sensor is out, it should not say TRIGGERED for the Z endstop. Place a metal object under the probe so its light comes on and check again, it should say TRIGGERED. If you get the opposite behavior, you will need to toggle that state. The relevant lines are #define Z_MAX_ENDSTOP_INVERTING and #define Z_MIN_PROBE_ENDSTOP_INVERTING. These must match or it will toss an error on compilation.
Verification and Final Settings: Once you have the firmware loaded and running, open your terminal of choice. You can use Pronterface, the G-Code terminal in Octoprint, RepetierHost, whatever works.
Send M115 to get the firmware version.
If you previously had an older version of Marlin installed, send M502 then M500 to load the defaults from the firmware to the EEPROM space and save them. If this printer had an LCD (it CAN be added!) it would prompt you to do this from the front panel on first boot.
PID autotune: I usually start the fan first with M106 S255. This may not be necessary but I find it helps on some platforms.
Start the tuning routine with M303 S215 C8 U1
(8 cycles to 215 degrees C, and the U1 flag will save the values to RAM)
M500 to save the results to EEPROM for later use
Bed leveling: If you have a heatbed, heat it first to a normal use temperature (say, 50C for PLA) and let it stabilize a minute before continuing. The hotend temp won’t matter for now as it’s not going to affect the inductive probe.
(this will auto home all three axes)
(a magical dance will begin)
If you already have a working Z probe offset value from your old settings, enter it now
M851 Z-0.7 this will vary by your printer and build surface
Once G29 is done, it will output a small table of the measurement values. Save the results with M500. Re-home with G28
Test the Z height by heating the hotend to a normal use temperature, placing a sheet of paper on the bed and sending G0 Z0. It should kinda just grab it. If you need to adjust it, check these instructions.
If your extruder is stock, well…. for the FIRST TIME EVER… and that is to say I have literally NEVER seen any other Chinese printer I’ve worked with factory calibrated correctly…. YOUR E-STEPS ARE PROBABLY CORRECT!!! See, this was why you paid extra for a Printrbot. Thing’s hardcore. If you want to verify/calibrate, go here. Otherwise it should Just Work.
If you have Rev. D and these binaries don’t let the printer home right, let me know – I don’t have that version to test on and I’m curious about that probe behavior…
Gingy would like to remind you every time is the right time for petting your feline assistants.
The cool looking radar is sadly no longer in use. Anyway, as for the title, we’d been having issues with the big transmitter here for months and it just wouldn’t run on all three cabinets. Its intermediate power amp had been giving issues on one cabinet and our other engineers had been over the manual and talking with tech support for months, it just wouldn’t make wattage.
Finally the solution was to not trust the manual. It said the arbitrary “IPA Gain” number was supposed to be between 100 and 450. It was set on 100 and that led to only 9 watts drive to the IOT tube — 150 was needed. The solution in the end was … set the gain to about 520 or so. Amusingly, it only raised up from 9 watts once I went past 420.
420 blaze it
One of the other engineers had this Printrbot Simple Metal that he hadn’t gotten working so I took it back to play with it through the boring Thanksgiving morning shift. Despite it being a SOLID chonker, the carriage plate was bent up causing the hotend to hang at a weird angle, and some screws were loose or incorrect, so I fixed that and got it extruding. The only thing I wasn’t able to do which bugs me was to get a bootloader onto the Printrboard in there and load it with a newer version of Marlin supporting mesh bed leveling. This one is old and appears to take no parameters to G29 – it probes only three points. Weird. I couldn’t get Atmel’s FLIP utility to work and had issues with building Marlin for that particular cpu — it seems like you either have to use the toolchain for the Teensyduino++ or use PlatformIO, neither of which wanted to cooperate. Thus, it remains on old firmware.
Behold, my poor hacked on Ender-3. I had bought a clone of the Micro Swiss hotend (I believe off Amazon) so I could print PETG and other high temp materials without PFTE tubing damage issues. I’d also had issues back then with getting the PTFE tubing to seal against the nozzle so I figured this setup would be great!
Unfortunately, I bought… the lowest caliber of dumpshit.
In what I thought was just desperately throwing parts at my printing issues, which led to “missing layer” kind of faults everywhere, I bought this titanium heat break from TH3D. It works with all the other stock hotend parts, which I’d saved in a box of bits. Turns out that’s exactly what I needed… So here’s what I replaced.
I’m not actually sure what kind of metal this was made of to be honest or if it was even advertised as titanium, stainless, —???
All I can say though is I suspect it’s way too thermally conductive. I had to print hotter than I expected on this machine and the PID tuning values were WILDLY different after changing the heat break. Previously, with the same filament, this temp tower was just starting to print acceptably at the lowest floor which is 230C; now the lower floor is string city, which makes a lot more sense for PLA. Oh, and no missed layers either.
What the deuce? Now the skirt lifts and I get all sorts of unhappy noises from the extruder??
It was about at this point that I grabbed the top of the effector and shook it very gently and it rocked about like a pendulum. I looked and saw that all three linear guides on the towers were not moving, so I grabbed my hex keys and started going around to all the bolts. I found a couple loose by about a whole turn. Now there’s a peculiar offset so I ran the DELTA_CALIBRATE again…
Will I ever get the FORBIDDEN CURSED OBJECT to print? Stay tuned for either a post of blissful success or me giving up and printing it ass over teakettle on breakaway supports.
When configuring Klipper to run your delta printer, always set the option silly_cat: true in the config file.
Here, daddy, let me confirm those delta arm and tower measurements for you! That’s one fang, two fangs…..
She likes the feel of the cog belt against her face.
Object has exceeded build area! Harmlessly. Huh.
In keeping with my brother’s Pusheen-based naming convention for the prototyping lab apparatus at the lab he works in at FIU…. this printer is Deltasheen.
For another example of that, here’s a
SheenTel. My idea is actually to have a row of these Pusheens at our studios that light up in a soft green or blue during normal operation, but if one of the Nautel transmitters sends an SNMP alert, the station’s corresponding Pusheen will blink amber or red.
I was getting so annoyed with my printer repeatedly losing its build plate surface… This Malyan M200 / Monoprice Select Mini V2 originally came with a black sticker on the build plate which I replaced with a piece of PEI sheet held down with 3M 468MP adhesive.
Two spectacular failures later, I decided to try covering the aluminum plate with painter’s tape. This was a common technique dating back to very early experiments with 3D printing, and I figured it’d probably just fallen out of favor because PEI sheets or BuildTak or whatever were just better.
Several completely successful prints later….
I’m convinced this is the way to go.
The only odd part I guess is that the tape doesn’t appear to last for more than one print, but that’s fine. The print sticks to it well but pops off when it’s done. Now I just need to adjust my slicer settings a little (see the gaps where the infill didn’t hit the perimeter?)
Guess I’ll be keeping blue tape around from now on!
My brother, who runs a fabrication lab at FIU, reports that it’s specifically 3M blue painter’s tape – other brands don’t have a top surface that adheres to the melted plastic and the printer will just pull a “drag spaghetti around in circles” dance.
Cassie approves because now, instead of me wasting time scraping little bits of plastic off the PEI sheet, I just pop the print off, replace the bed with three new strips of tape, then go back to petting her.
I was getting progressively weirder leveling on the last couple of prints I ran on my Monoprice Select Mini V2…
The original BuildTak clone sticker on the build plate failed, and actually managed to kill a nozzle when it did by snagging on it, so it was subsequently YEETed into the nearest trash receptacle and replaced with a PEI sheet. Now, that PEI sheet I got came with a big sheet of 3M 468MP adhesive transfer film which I used to apply it to the bed after cleaning it up and scraping off some stubborn bits of the stock sticker… You can see the PEI sheet here after it’d been sanded a few times to improve adhesion with some regrettable no name eBay PLA filament.
It worked great until I found a print I ran today twisted up like a funhouse mirror, the adhesive under the build plate all bubbled and torn, and the PEI raised up and warped on one side as if it tried to rise like dough.
And suddenly it dawned on me, like every time I see someone’s photos of their printer on the Facebook group, they have binder clips on the edge of the glass or PEI bed. Oh gee, I wonder why, could it be that this method of fastening it Just Works without any complications whatsoever (as long as you don’t place them where they obstruct moving parts and, thus, find themselves YOTE into space?)
Yeah. Worked perfectly, though I think I might do it with four clips next time to avoid the PEI sheet lifting and warping the print (not sure if it’s actually doing this — the first layer showed no signs of leveling issues, so it may just be perfectly fine).
Speaking of Monoprice printers…. My Mini Delta decided to inexplicably spring back to life when given a very old SD card with the Marlin firmware build! I was about to rewire the whole thing to a RAMPS board, but now the stock controller came back. Flippin’ weird.
I now have an Anycubic Kossel Linear Plus that’s waiting for me to figure out how the heck to set the delta parameters on as well.