Make a Polar 3D Printer (Spinning Bed)

by DavidF6 in Workshop > 3D Printing

420 Views, 3 Favorites, 0 Comments

Make a Polar 3D Printer (Spinning Bed)

IMG_8010.jpg
This Printer Has A Spinning Bed

One lesser known kind of 3D printer is a polar 3D printer. These printers utilize polar/cylindrical coordinates. That means instead of X,Y,Z coordinates, the bed spins and you have a radius, an angle, and a Z coordinate. Polar printers have a lot of potential. Traditional bed slingers have to move back and forth and stop and start which limits the speeds and introduces vibrations. With polar printers, the bed can just spin around and around continuously in the same direction. Just think about how amazing and smooth printing out a vase on such a spinning machine would be!

However, polar printers also have their own unique challenges. Particularly, printing right at the middle of the bed (at the origin) is an issue. Around and through this spot even a small cartesian movement can require a MASSIVE change in angle in the bed. This results in major spikes in acceleration (and subsequent unpleasant grinding noises as the belt/motor fails to move the bed).

I converted an Ender 2 Pro to be a polar printer. This guide walks through all the hardware and software steps to do that as well as provides a post-slicing code that changes the speeds of the g-code produced by Cura to allow it to be printed through the origin.

I feel the core of this project is fairly tame, but it is still rough around the edges, and once you stray too far from the path, the bugs will quickly find you. That combined with my less-than-perfect instruction writing skills leads me to classify this at the intermediate skill level.

Areas That Can Be Improved

  1. I've tested the post slicer code on single layer prints and vases with a single bottom layer. I have yet to try it with a print that has multiple layers at the origin.
  2. I attempted to print multiple objects at once with one object at the center using the post slicer code. The print failed due to layer shifting.
  3. The speeds of the code can be cranked up.
  4. I fear that the bed stepper motor is near the limits of what it can do and will soon need to be replaced to achieve higher speeds.
  5. It's been a challenge to get good bed leveling and adhesion.

Supplies

The Shopping

  1. Ender 2 Pro
  2. Slip ring
  3. Aluminum extrusions: need 4 as in this package; technically 3 can be smaller than 250 mm, but one will need to be 250 mm if you use an Ender 3 power supply
  4. Aluminum extrusion corner connectors
  5. Aluminum extrusion T-nuts: should be able to get away with the nuts in the corner kit, but I preferred these)
  6. PLA
  7. Heated bed: there's room on the Ender 2 for a much larger bed than this one, but as this project was a step in the unknown for me, I went with a smaller, more manageable bed
  8. Build plate
  9. Thermistor: just need one for the bed; in theory you could take the one from the Ender 2 square bed, but I elected to get a pack
  10. Ball bearing
  11. Belt
  12. Kapton tape
  13. Springs: need between 3x and 6x 0.7x7.5x20mm springs. These springs along with the bolts and nuts on the three lines below are for the bed leveling "arms." You can have between 3 and 6 arms supporting the bed. I've had issues with bed leveling and have gone back and forth on how many bed arms I have. Three arms have some trouble (at least initially) holding the weight of the bed and bow down a bit. With 6 arms, it felt like there were too many wheels to work with. It's an area to experiment with.
  14. 3x-6x M3x25 countersunk bolts
  15. 2xM3x8mm bolts: for EACH bed arm (X-piece); so between 6 and 12 bolts total
  16. 3x-6x M3 nuts: for bed leveling wheels
  17. 1xM4x6
  18. 4xM3x8: for bed stepper
  19. 4xM5x10: for the two prints sandwiching the bearing; can't remember what I used but these should work
  20. heat shrink
  21. adhesive foam sheet: I got some foam from Hobby Lobby to pad the 'feet' of prints
  22. one optional item: the wires connecting the bed to the mainboard run through a print. This means once you solder the wires to the hotbed, you can't ever remove that print without cutting the wires, so an optional item are some connectors for the two hotbed wires and the two thermistor wires so you can disconnect the hotbed if you want


Optional Power Supply Upgrade: You can technically get away with the Ender 2 power supply, but I worried it wasn't up to the task of handling the bigger, circular bed, so I replaced it with an Ender 3 power supply.

  1. Ender 3 PSU: make sure you get an Ender 3 PSU with an XT connector and some wire
  2. Crimping connectors (just one male & female connector pair and maybe a fork connector needed I think)
  3. 2x M4x8mm

If you use the Ender 2 power supply, you'll need 2x M4 bolts to mount the Ender 2 PS Connector parts to the power supply. Unfortunately, I don't remember what length they were. Just a heads up...

This project uses Klipper, so you'll need a raspberry pi and all supporting hardware.


The Printed Parts

  1. 2040 Holder
  2. Back Extrusion Spacer
  3. Basic Extrusion Spacer
  4. Bearing Sandwich Bottom
  5. Bearing Sandwich Top
  6. 4x Bearing-Extrusion Corner
  7. Belt Cover
  8. Extrusion Bracket
  9. Extrusion End Cap
  10. 3x-6x Leveling Wheel
  11. Slip Ring Holder
  12. Stepper Motor Holder
  13. Stepper Spacer
  14. 3x-6x X-piece

If you're using the Ender 2 power supply: 2x Ender 2 PS Connector

If you're using the Ender 3 power supply: 1x Ender 3 PSU Bracket-short and 1x Ender 3 PSU Bracket


You will need a soldering iron with a large tip to be able to transfer enough heat to solder the wires to large pads of the bed. You'll also need a hot glue gun.

Printing and Disassembly

IMG_2956.jpg
IMG_2952.jpg
IMG_3022.jpg
  1. Print the parts. For the Bearing Sandwich Top, I threaded the slip ring wires through the part and then soldered them to the bed. This means that the wires will need to be cut if I ever need to replace that part. You can go this route with the existing part or you can make the center hole in the Bearing Sandwich Top bigger so something like an XT60 connector can move through it so you can disconnect the bed.
  2. Take the bed as well as the 2040 extrusion holding the bed off the Ender 2. Take everything off the 2040 extrusion. It will be reused.
  3. Remove the tool tray from the side of the Ender 2.
  4. Cut a hole in the printer (see picture)


If you're using the Ender 2 power supply, it will need to be rotated 180 degrees so the power switch and plug are accessible (see picture). Disconnect the power wires from the main board. The third ground wire isn't long enough, so you'll have to cut it. Then mount the power supply to the aluminum extrusion in the base using two Ender 2 PS Connector parts. You'll need 2x M5x8mm bolts from the Aluminum Extrusion Corner Bracket Kit and supporting T nuts to mount the prints to the underside of the aluminum extrusion (see picture). You'll also need 2x M4 bolts to mount the prints to the power supply. I don't remember the length. Just make sure the length isn't long enough to where the bolt is hitting any of the internal components of the power supply!


If you're using the Ender 3 power supply, just remove the Ender 2 power supply.

Base Assembly

IMG_2952 2.jpg
Screenshot 2024-10-12 at 11.12.57 PM.jpg
IMG_2960.jpeg

To hopefully make things clearer, from now on, the 2040 extrusion in the base of the printer (see picture) will be referred to as the short 2040 extrusion, and the old y-axis 2040 extrusion that was removed from the printer will be referred to as the long 2040 extrusion.

  1. Slide a T nut into the top groove of the long 2040 extrusion for later for the Extrusion Bracket part.
  2. Mount the 2040 Holder to the end of the short 2040 extrusion (see photo). I believe I used the existing bolts in the 2040 extrusion, but I'm not sure.
  3. Stick the Holder in the hole in the printer.
  4. Slide the long 2040 extrusion through the Slip Ring Holder and the 2040 Holder. Secure everything together with M5x8 bolts from the corner piece kit (all M5x8 bolts used in this project come from that kit).
  5. Slide the slip ring in the Slip Ring Holder and mount with the M4x6mm. I also wrapped the first couple inches of the wires in the rotating top part of the slip ring in a generous amount of electrical tape to give them an extra layer of protection against fraying.
  6. Connect the black and red wires from the bottom/stationary part of the slip ring to the hotbed screw terminals on the mainboard.
  7. Cut the end connector plus a bit of wire off a thermistor, slide on the heat shrink, and solder the connector to the other two slip ring wires. then plug it in to the bed thermistor spot of mainboard.
  8. Attach adhesive foam to the 'feet' of the 2040 Holder

Ball Bearing Assembly

IMG_2968.jpeg
IMG_2972.jpeg
IMG_8010 2.jpg
IMG_8063.jpg
IMG_8064.jpg
Screenshot 2024-10-13 at 12.05.36 AM.png
IMG_8066.jpg
  1. The channel lips of the Bearing-Extrusion Corners are a tight fit, which is what you want, but if they are really hard to slide in the aluminum channels, it will make assembling everything a challenge. If they're too stiff, take the parts one a time and slide their extrusion channel parts up and down in the extrusions until they slide easily.
  2. Remove the feet from the ball bearing
  3. Take the four Bearing-Extrusion Corners, the ball bearing, and the four extrusions and put them together.
  4. Designate an extrusion as the front extrusion. Slide on two T nuts to the top channel of the front extrusion for later for the Belt Cover.
  5. Mount everything together with four aluminum corner parts and supporting bolts and nuts
  6. Slide on the Stepper Motor Holder (and T nuts for it) to the front channel of the front extrusion but don't secure it.
  7. Loosely attach the Basic Extrusion Spacer to the bottom of the 2020 extrusion with an M5x8 bolt and nut in the position/orientation shown in the picture. Ignore the orientation of the Spacer in the picture in Step 2!
  8. Loosely attach the Back Extrusion Spacer to the bottom of the 2020 extrusion with an M5x8 bolt and nut in the position/orientation shown in the picture.
  9. Loosely attach the Extrusion Bracket to the side channel of the 2020 extrusion with 2 M5x8 bolts and nuts. See picture for location.
  10. Sandwich the ball bearing in the Sandwich Top and Bottom parts. Bolt them together with 4xM5x10mm bolts.
  11. Thread the 'rotating' wires from the top of the slip ring through the center hole in the Sandwich Top, and seat the whole ball bearing assembly on top of the slip ring while lining up both Extrusion Spacers with the top channel in the long 2040 extrusion. I used some hot glue to connect the slip ring rotating top to the Sandwich Top. I was concerned that if the slip ring wasn't glued to the Sandwich Top, it could lead to some chafing and fraying of the wires.
  12. Mount the whole ball bearing assembly to the base by bolting the Extrusion Spacers and Extrusion Bracket to the 2040 extrusions with M5x8 bolts and nuts. The Extrusion Bracket will use the T nut from Step 2.1.

If using the Ender 3 power supply:

  1. Attach the End Cap to 2020 extrusion with M5x8 bolt and nut (see picture).
  2. Slide the PSU Bracket-short and the PSU Bracket on the Ender 3 power supply (see picture for the order) and secure with 2xM4x8 bolts (those bolts should work, but check that the bolts aren't hitting anything in the power supply).
  3. Mount the Brackets to the back 2020 extrusion of the ball bearing assembly with M5x8 bolts and nuts. You might have to slide the long 2040 extrusion forward so it's not hitting the power supply.
  4. Connect the wires to the mainboard; I also connected the grounding wire from the printer to the appropriate terminal in the power supply using male/female crimping connectors and a fork connector (I think).

Installing the Bed

IMG_7880.jpg
IMG_8010.jpg
  1. Slide on heat shrink and then solder the thermistor to THE SAME TWO slip ring wires you selected earlier to connect the slip ring to the thermistor spot on the mainboard.
  2. Put the belt into the channel in the Sandwich Top. I don't remember which belt of the variety pack I used. You'll want to check the belt is the right length by temporarily putting the old y stepper motor in its print/spot and seeing how the belt fits.
  3. Mount the X-pieces to the holes in the Sandwich Top with 2xM3x8 bolts for each X-piece.
  4. Press M3 bolts into the Leveling Wheels
  5. Solder the bed slip ring wires to the bed. Cover the electrical connections with Kapton tape.
  6. Tape the thermistor to the bottom of the bed with Kapton tape. I stole the insulation from the bottom of the Ender 2 bed and covered the thermistor with it, taping everything down with Kapton tape.
  7. Use the wheels, M3x25 bolts, and springs to mount the bed
  8. Place the Stepper Spacer on top of the old y stepper motor so it'll be between the stepper motor and the Stepper Motor Holder. Insert the stepper motor into the Stepper Motor Holder. As you're inserting it, with a hooking motion, seat the belt in the stepper motor's pulley. Mount the stepper to the Holder with 4xM3x8 bolts.
  9. Tighten the belt by moving the Motor Holder left along the 2020 extrusion channel. Then secure the Motor Holder to the extrusion with M5x8 bolts and the T nuts from earlier.
  10. Mount the Belt Cover with M5x8 bolts and the T nuts from earlier.
  11. Plug in the stepper motor. There is no longer a y end stop, so it can be removed.
  12. Test the thermistor reads the correct temperature and that the hotbed can heat up.

Calibration and Printer Config

IMG_7826.jpg
  1. Find the center of the bed and mark it with a sharpie. Determine (through moving the hotend) the length from the radius arm end stop to the center.
  2. Loosen the two bolts holding the Extrusion Bracket to the bearing assembly. Also loosen the bolts holding the long 2040 extrusion to the 2040 Holder so the whole bed assembly can move in what used to be the Y direction. Move the bed back/forward in the Y direction until the center of the bed is lined up with the hotend nozzle. If things aren't aligned, you'll get a hole in your prints because there will be a small area the hotend can never reach (see picture).
  3. Use the attached file as the printer config file in Klipper. Change the stepper_arm limits to match your measurements from step 1. The new bed assembly is at a different height from the old bed, so Z limits will also change.
  4. Level the bed. This will probably include moving the Z limit switch. I also had to resort to adding some aluminum foil pieces between the build plate and the heated bed at the center to lift it up there.

Downloads

Cura Setup

  1. In Cura, create a new printer profile with an circular (elliptic) build plate shape that matches the printer's dimensions.
  2. Replace the start and end gcode with the attached files. The start gcode file prints a prime arc at the edge of the bed instead of a prime line. The end gcode file doesnt try to move the nozzle back. It just moves it up. I'm still new to gcode. These files work, but I imagine they could be cleaner/better, so it wouldn't hurt to look them over before using.

A word of warning: I've only tested the heated bed up to 60°C, so before going to higher temperatures, you'll want to check that the mainboard and slip ring can handle the currents.

Post Slicing Code

IMG_2492.jpg

As I said in the intro, one problem with polar printers is printing at the origin. A small cartesian movement around the origin results in massive changes in the polar angle. My solution was to create a python code that takes the gcode Cura generates and modifies it. It will change the speeds of the gcode and slow down a movement depending on how close it comes to the origin. It also splits a movement that is very close to the origin into three movements where the part of the movement that is close to the origin is changed to be SUPER slow. Finally, any movement directly through the origin gets split into a movement to the origin, then a series of movements to rotate the bed 180°, and then a movement away. Apologies in advance. The code is messy.

  1. Download the post slicing code and set it up in a directory/folder. You might have to install some libraries as well.
  2. Download the single layer test print
  3. Put the stl at the center of the bed in Cura
  4. Slice it
  5. Save the generated gcode to the same directory as the post processing code. Either change the gcode name to be test.gcode or change the name in the python code to match (line at the very bottom of the python file).
  6. Run the post slicing code. You'll have to close the plots for the code to finish.
  7. Upload the processed gcode file to Klipper. You can also put it into Cura before you send it to the printer to see it in Cura and make sure it looks good.
  8. Print it

You want the lines to be straight and there to not be a hole in the middle. If the printer has too violent of accelerations and/or belt grinding/slipping, lower the values at the start of the code. See the picture to see what the values do.

End

IMG_8041.jpg

Hoping this was helpful and you haven't started a fire you didn't want. Happy printing!