Showing posts with label 3D Printing. Show all posts
Showing posts with label 3D Printing. Show all posts

Sunday, July 17, 2016

3D Printing Redux

It's been quite some time since my last post! Shortly after my last 3D printer update, I completed the machine and began testing and tweaking. The machine worked, but overall performance wasn't up to my standards. I spent some time revisiting the design, and ultimately decided to tear it down and begin anew with higher quality components.

I designed a new printer, also a cubic foot H-bot, using OpenBuild's V-slot aluminum extrusion. The extrusion and accessories are fairly low cost, easy to work with, and high performing. Additionally, I decided to complete an overhaul of the electronics. I switched out the Printrboard for a Duet 0.8.5. This controller provides significantly more features than the Printrboard, such as native dual nozzle support, network control (similar to OctoPrint), and 24v power. Also, the DC powered 12" silicone heater was replaced with an AC version and a heatsinked solid state relay.

Additional electronic changes included use of the E3D PT100 temp sensor+board for the hotend, and the differential IR sensor for auto bed leveling. There were some hardships in getting the PT100 sensor functioning, since the E3D amplifier boards were designed for 5v electronics. To make things even more difficult, the Duet 0.8.5 did not have any software support for PT100 sensors (DC42 has since added some functionality).

At the time of writing this post, I completed the project about 9 months previously. There's still some work to be done on the printer for getting the second nozzle operating and watercooling the hotend. For now, enjoy some pictures of the build process!

Frame nearly finished at this stage. The black panels are a textured 1/4" HDPE called StarBoard. Cheap and robust!



Solid state relay and matching heatsink. Absolutely critical for keeping the relay functioning.

Electronics are in a compartment underneath the print area. Includes SSR and 24v power supply on the left with the Duet and 12v+5v power supply on the right.

The first powered test with all critical to function pieces wired. It works!

A 1/4" polycarbonate shell forms covers all sides but the front to limit temperature fluctuations in the build area. Eventually the enclosure will seal to prevent warping; but the hotend will need to be watercooled.

I printed a calibration cube before this to check basic functionality, then threw the iconic octopus on it. Finished it like a champ!

Thursday, January 8, 2015

3D Printer Mini-Update


Today I spent some time in the shop milling out some aluminum parts for the printer. The Shapeoko 2 made quick work of the two parts, taking about 40 minutes and 15 minutes for the large and small plates, respectively. The aluminum plates form a pulley mount for the H-gantry system, and will be substantially more rigid than their plastic counterparts. I'll have to make another plate assembly and hotend mount before I'm able to test out the parts.

For milling 6061 aluminum on the Shapeoko 2, I'm using:

  • DeWalt DW660 Cutting Tool
  • 1/8" 2 flute carbide endmill
  • 400 mm/s feed, 60 mm/s plunge, 0.2 mm depth per pass

Saturday, December 6, 2014

3D Printer Buildlog #5

At long last, the 3D printer project is beginning to come to a finish! Recent progress has been excellent, and a number of hardware and software problems have been tackled. Most notably, I completely reversed course on servo based automatic bed leveling and switched to a force sensing resistor (FSR) system.

Force sensing resistors are fantastic little devices which change resistance as a force is applied to the sensing area. They're fairly cost effective at around $5/ea too! Why'd I change from the mechanical switch mounted to the servo? Reliability. Once I began testing the servo leveling system, I found the results to be too erratic for my purposes. Additionally, the servo occupied a large amount of space near the hotend, sacrificing print volume.

The new system utilizes four FSR sensors, one under each corner of the build plate. Since FSRs don't work well between two flat surfaces, a felt floor pad is placed between each sensor and the bed. When leveling, the tip of the hotend contacts the build plate. The pressure applied to the plate drops the resistance in the sensors, which is detected by an ATtiny85 microcontroller. The ATtiny85 loops a simple rolling average filter, which outputs a signal to an NPN transistor that triggers the Printrboard endstop. An LED is simultaneously lit when the endstop is triggered for debugging purposes. See the circuit diagram below for details. Code and pictures will be posted to Github in the next update. The ATtiny85 was flashed with an Arduino Uno following the guide by High-Low Tech.


The potential fire hazard that was the former heated bed relay has also been replaced with a "Beefcake" relay from SparkFun. I would have preferred a quality solid state relay, but this will do.

Moving forward, my next tasks will be to tune and improve some of the mechanical aspects of the printer. The motor mounts for the H-gantry aren't as rigid as they could be, and the build platform has some wobbles that will likely affect printing. Once I begin doing some print tests, I'll need to check if racking is still an issue. If so, I will be switching to a CoreXY style belt arrangement. Now that I have the Shapeoko mill, any critical parts can now be cut in 6061 aluminum. That comes with its own set of challenges, which will be discussed another time!

Sunday, July 6, 2014

3D Printer Mini-Update

This project is still alive! The printer was coming together nicely until I had to pack it up in preparation for graduation. I've since resumed work and the final bits and pieces are all falling into place.

The highlights of the past week:

  • All wiring has been completed. This includes connectors for ease of maintenance, heatshrink to prevent shorts, zip-ties to bundle groups together, and braided PET sleeving on exposed wiring for cosmetic purposes.
  • The Z smooth rods are now adequately anchored at the bottom. In conjunction with the mid plate, the rods are now completely stable. This was a critical improvement as the long Z axis would significantly amplify any error due to rod wiggle.
  • Auto bed leveling functions as intended! Some of the software configuration took longer than expected due to inconsistencies in documentation. I suspect when ABL was incorporated into Marlin, some things were tweaked and the material I referenced was longer up to date.
Challenges of the past week:
  • The printed ABS mounts I made to carry the Y-axis linear rail were not rigid enough to counter the racking forces introduced by the H-gantry. This resulted in a few mm of error every time the Y-axis changed direction. Printing like this would result in parts skewed at a 45 degree angle. Options to correct this include switching to the "CoreXY" system, or creating a new, more rigid mount. I chose to go with the latter by making a mount from angle iron and flat steel bar. This does add some weight to the carriage, we'll see how that translates into performance soon...
  • While tightening the belts for a test, I snapped off the belt mount. I've since changed the model to have much stronger supports, and was able to get the part printed locally.

Saturday, May 3, 2014

3D Printer Buildlog #4

Most of the hardware is assembled at this point so I've been focusing on configuring Marlin and testing out several components! Configuring Marlin for ABL was more difficult than I expected. I had originally planned to have the servo control pin on the EXP2 header pin 11 to keep all the standard connections open. However, something wasn't right with the pwm signal so I reverted to the E-stop connection. This may have been related to the fan-pwm issue. A few other tweaks were necessary to get the servo to quit twitching, I'm listing my changes here in case someone else needs help setting up auto bed leveling on a Printrboard!

configuration.h
334 - #define ENABLE_AUTO_BED_LEVELING
400 - #define PROBE_SERVO_DEACTIVATION_DELAY 500
694 - #define NUM_SERVOS 1
701 - #define SERVO_ENDSTOPS {-1, -1, 1}
702 - #define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 90,0}

pins.h
1573 - #define FAN_PIN            -1 // -1 disables fan to fix PWM (Default 16)
Insert the following somewhere after 1545 and before 1574
#ifdef NUM_SERVOS
#define SERVO0_PIN 37               // This corresponds with the E-stop pin closest EXP1 header
#endif

The arrow on the diagram below shows the location of pin 37 on the E-stop connector. This pin should be connected to the servo's control pin. Do not use the other pins to power the servo! The Printrboard cannot provide enough power to run most servos. Instead, power your servo externally. Using an ATX power supply is useful here, since the common voltages (5v/12v) are readily available.

 

To test the servo, send an M280 command which will look something like this: M280 P0 S0
The number following P refers to which servo is being addressed, while the number following S refers to the angle the servo should move to. M280 P0 S45 will move servo 0 to an angle of 45 degrees. Keep in mind that the servo indexing starts at 0!

Another important issue I'd like to bring attention to is the power requirements for large heated beds. I'm using one of the QU-BD 12" silicone heaters which states it can draw up to 20 amps from a 12 volt source. This is quite a bit of power for a Printrboard, too much in fact! To fix this, I wired a simple relay to switch the current. However, the wire I was using between the psu and relay was too thin to handle the current, and could've started a fire. The wiring in question was a 4 pin molex connector from Sparkfun, which looks like 22 gauge. 18 or 16 might be more appropriate and wiring in parallel on the PSU side would help make this a whole lot safer!