As it is nearly time for the annual hectic GenCon event scheduling frenzy, I have updated my schedule-planning script. The latest version of the script is available here.
A stand-alone application version of the program is available here.
This script is a utility I wrote in Python to help in the complex process of searching through the 9000+ individual events in the GenCon event catalog and finding the optimal mix of things to do at the convention. Like to the Highprogrammer search tool, this script can search through the event catalog and filter events by time, type, organizer, system, age, etc. Unlike the highprogrammer tool, this script runs completely on your own computer (once it downloads the catalog from the GenCon site) so you don't need to worry about Highprogrammer going down. But it also does a lot more.
In addition to the event search function, this script also has a schedule optimization mode. After running a search on the event list and finding an event that interests you, you can add that event to a wish list and assign a priority rank to it. Once you have gathered a selection of events you might want to attend, the schedule optimization function will run through every possible combination of events to determine the best possible convention schedule for you. The search tool is also smart enough to recognize that many of the events at GenCon are run at multiple timeslots throughout the weekend. You simply specify that you'd like to attend an event and the schedule optimizer will pick the best slot for you to attend considering other possible conflicting events.
The script also has a function to guide you through the registration process, filling out your online wishlist with events as determined by your optimal schedule and all the less-optimal schedules yo might fall back on if you don't get tickets to your highest-ranking events. This function is still somewhat experimental, but does seem to work.
For this year I've vastly improved the code that digests the raw event list files. It should be a lot more robust to GenCon suddenly deciding to change their catalog format again. I have also greatly improved the search algorithm, it can now process complex search queries like "Find any pathfinder by paizo on thursday or friday not before noon". The schedule optimizer also now has a set of user-tweakable rules for things like minimum hours of sleep per night and maximum contiguous hours of gaming without a break.
Now for the downsides. This is a script, not a stand-alone application. You will need to download and install Python 2.7 (not 3.x!) for this to run. The code is not terribly well optimized, some of the functions are quite slow. Updating the event catalog from the GenCon website in particular takes forever. The interface is a command-line text interface, there's no GUI or anything friendly like that, but there are some built-in help functions to tell you how to use it.
The first time you run the script, it will automatically connect to the GenCon site and download the event catalog. At the time of this writing, that catalog does not exist yet, so the script will fail and quit. I am at the moment assuming that GenCon will be putting this year's event list in the same place as last year's and storing it in a similar format. If they don't, I'll be updating this script shortly after the catalog becomes available.
Update: As of the evening of May 8th, the event catalog is live, and my script is successfully downloading and processing it.
Friday, May 3, 2013
Sunday, October 28, 2012
Drew's Rostock: Small parts
I have two ultrabright white LEDs mounted to the top plate, pointed at the pinch wheel interface in the extruder drive. This helps me see if the filament tube is slipping out of the clamp, if the filament is stripped, and makes it easier to watch the rotation of the filament drive motor shaft to see if the motor is skipping. Admittedly the LEDs aren't very bright compared to the room LEDs and it's hard to see them at all in this shot, but they do make it easier to see into the extruder mechanism. Also, you can see several more cable clamps holding the wires to the print head here.
My experimental filament spool holder for those one-pound cable bundles that don't come on reels. It collapseable to fit inside the filament bundle, then unfolds to grab the filament and hold it in place, then turns smoothly on bearings as the filament unspools into the printer. At least, in theory. In practice it's a pain to get aligned and put together, and I'm going to redesign it when I have a chance.
So far, my printer is quite bad at printing overhangs. The filament stays molten for a long time after coming out of the nozzle, and if there isn't solid plastic underneath it tends to sag and deform all over. Part of the problem is that there isn't much airflow at the end of the print head to cool and harden the plastic after it's extruded. The three little 20mm fans don't make much airflow, and what they make isn't well-directed at the nozzle. Here I'm experimenting with a shroud to try and channel air a bit better around the hot end. It's helping some, but it's still pretty bad - can't print the cube gear parts without turning the speed way down.
It's functional, but I'm not happy with the aesthetics. The module is off-center, required in order to clear the corner do the power supply, and I had to cut off part of the plywood print bed support plate, which ruins the pleasing hexagonal symmetry of the design. I'm probably going to redesign this to look better eventually, but I'm just happy to have it working for now.
The best feature of the control console design - it's hinged open to flip open forwards, giving me full access to the RAMPS board without having to disassemble anything. You can see the nifty new heat sinks I've installed on the stepper driver motors here, and the great big cooling fan to blow air directly on them. With this setup I can check all the connectors, measure heat sink temperature, and adjust the stepper motor current limits while the printer is running. It's been helpful with troubleshooting, especially with adjusting the extruder motor driver current to be just right.
Friday, October 19, 2012
Drew's Rostock: The quest for perfect prints continued.
First layer adhesion seems to be the key to getting a good print out of this printer. If the first layer sticks evenly and consistently, and stays stuck during the print, the print usually comes out well. If the corners detach, they tend to curl upwards, deforming the part, and in the worst case interfering with the movement of the print head. When a delta printer skips a step, it doesn't just shift the layers above the skipped point sideways as it would in a normal printer. A skipped step on a Rostock printer both shifts and rotates the layers above the skip, often resulting in the head crashing into the print again resulting in more skips and a completely ruined part.
My printer was not printing well. The plastic was not wanting to stick to the bed unless I brought the hot end down to the point where it was nearly touching the bed, forcing the plastic to smear out and flatten against the glass. I was also having real problems with strings trailing from the nozzle whenever the plastic stopped extruding for a moment, which would sometimes yank the plastic free from the bed as the print head completed a line and moved to another spot on the first layer. This was a real problem when trying to print multiple small parts in an array, the printer would lay down the first layer of one part and then yank it off the bed as it went to print the next.
One tip I'd read on the message lists was to paint the borosilicate glass with a diluted mixture of PVA glue in water.
This almost worked too well - parts became very difficult to remove, to the point where I was worried about damaging the glass when trying to get the parts off.
I could adjust the effective print height and platform level, to try and get that magic first layer height where the parts would stick reliably but not be impossible to remove. Here I came up against the real problem. My printer was acting as if the print bed wasn't flat. If I adjusted for proper print height in the center, the edges of any print larger than a few inches wide would peel right off the bed. If I tried to adjust so that the edges adhered properly, the center would be smashed so far down against the bed that the filament drive would stall and strip the filament when it tried to print. The distortion wasn't consistent, either, being worse in some directions than others along the bed.
I knew that my borosilicate glass bed wasn't bowed. The problem was that the head itself wasn't staying level as it moved across the bed. I was also seeing some unusual dimensional inaccuracies, where parts were unevenly larger or smaller than they were supposed to be in different directions.
My printer's frame was off. The wooden frame I had built was very solid, but the positioning of the rails wasn't as precise as it should have been. A delta-style printer requires that the rails be aligned within a millimeter, or you'd see the kind of print distortions I'd been seeing. Unfortunately, my wooden frame had no way to adjust the positioning of the rails, as they were solidly screwed in place to the wooden frame.
As I had been building the printer, I had been designing an updated set of parts with various improvements. I had also been working on an alternate frame design, using threaded rods to connect the three rails in a way where it would be possible to precisely adjust the position of the rails relative to each other.
With my printer working just barely well enough, I printed an all new set of structural parts.
What had originally been simple blocks to anchor the motor mount screws to the rails became fairly complex structural blocks. 3/8 threaded rods anchor the three blocks to each other, and allowed me to very carefully adjust the positions of the rails to be exactly where they were supposed to be. I also moved the bolts supporting the print bed from the motor mounts to the lower end mounts, so that adjusting the belt tension didn't also tilt the print bed.
Since the rails were no longer mounted straight to the wooden sides, I also printed feet which were slid onto the threaded rods and screwed into the printer base. Even though the wooden frame was not redundant, I was still using it to mount secondary structural parts.
I have designed new motor mount blocks, but haven't printed them yet. The old ones will still work for now. I have slightly changed around the way the bolts connecting the motor mounts to the base blocks work, so that they can be adjusted from the top instead of the bottom now. It's still fairly difficult to adjust the belt tension, I have to maneuver a small screwdriver alongside the belt in just the right way to reach the head of the tensioning screw buried inside the block, but it was nearly impossible to do so when the screws were adjusted from below.
The top ends of the rails also had new blocks printed, connected by threaded rods to allow them to be carefully adjusted as well. I have also designed pockets for the upper end travel limit switches, with channels inside for the various wires and cables to the top end of the printer.
In the process of this complete structural overhaul, I've also replaced the printed plastic connecting rods with rods made from RC truck ball ends joined by carbon fiber tubes.
These are much lighter and more rigid than the plastic ones. The rod ends are much smoother than the printed ones, but do have a little bit of looseness to them that translates to some free play in the head position. I'm not completely happy about that.
With the structural redesign I've moved the rails all in by an inch from their previous position. They aren't anchored to the wooden side panels any more, anchored only at the tops and bottoms. To keep the geometry of the delta platform the same, I have also redesigned the carriages and head.
The new carriages are much smaller, yet lighter weight and more rigid than the old ones. The new carriage is a three-part assembly. Side plates hold the V-groove roller bearings, now supported on both sides of the bearing with a complete thru bolt. The center section clamps to the timing belt and also holds the adjustable screw that presses the limit switch. There are a total of four threaded rods through the assembly, including the annoyingly hard to find M3 threaded rod that goes through the two rod ends.
With the rails moved away from the side plates, the carriage structures can now wrap completely around the rails. There's a lot of careful adjustment of the nuts required to get the pressure on the bearings just right, to the point where the carriages roll smoothly but are completely rigid against rotation or sideways motion.
I've redesigned the head too, moving the rod ends a bit closer to the enter, but also massively simplifying the structure, reducing the number of parts and making it a lot easier to assemble and adjust the filament tube clamp.
The three tiny cooling fans are now more directly aimed at the hot end barrel now, no longer having to have the airflow routed through holes in the wooden J-head mounting plate. The LEDs are also now mounted directly in the head structure instead of dangling on their leads.
Finally, while I had everything taken apart, I added some insulation - a layer of foil and some strips of fiberglass under the heated PCB. It seems to help the bed get to the right temperature and stay there, and probably helps keep the bed heat away from the electronics in the base.
With the new structural design, the movement if the head seems to be exactly where it should be. I finally have proper adhesion of the print over the entire area of the bed that the nozzle can reach, and object dimensions seem to be correct. Still to do - proper mounting of the power supply and RAMPS board, and some way to support the filament reel.
My printer was not printing well. The plastic was not wanting to stick to the bed unless I brought the hot end down to the point where it was nearly touching the bed, forcing the plastic to smear out and flatten against the glass. I was also having real problems with strings trailing from the nozzle whenever the plastic stopped extruding for a moment, which would sometimes yank the plastic free from the bed as the print head completed a line and moved to another spot on the first layer. This was a real problem when trying to print multiple small parts in an array, the printer would lay down the first layer of one part and then yank it off the bed as it went to print the next.
One tip I'd read on the message lists was to paint the borosilicate glass with a diluted mixture of PVA glue in water.
This almost worked too well - parts became very difficult to remove, to the point where I was worried about damaging the glass when trying to get the parts off.
I could adjust the effective print height and platform level, to try and get that magic first layer height where the parts would stick reliably but not be impossible to remove. Here I came up against the real problem. My printer was acting as if the print bed wasn't flat. If I adjusted for proper print height in the center, the edges of any print larger than a few inches wide would peel right off the bed. If I tried to adjust so that the edges adhered properly, the center would be smashed so far down against the bed that the filament drive would stall and strip the filament when it tried to print. The distortion wasn't consistent, either, being worse in some directions than others along the bed.
I knew that my borosilicate glass bed wasn't bowed. The problem was that the head itself wasn't staying level as it moved across the bed. I was also seeing some unusual dimensional inaccuracies, where parts were unevenly larger or smaller than they were supposed to be in different directions.
My printer's frame was off. The wooden frame I had built was very solid, but the positioning of the rails wasn't as precise as it should have been. A delta-style printer requires that the rails be aligned within a millimeter, or you'd see the kind of print distortions I'd been seeing. Unfortunately, my wooden frame had no way to adjust the positioning of the rails, as they were solidly screwed in place to the wooden frame.
As I had been building the printer, I had been designing an updated set of parts with various improvements. I had also been working on an alternate frame design, using threaded rods to connect the three rails in a way where it would be possible to precisely adjust the position of the rails relative to each other.
With my printer working just barely well enough, I printed an all new set of structural parts.
What had originally been simple blocks to anchor the motor mount screws to the rails became fairly complex structural blocks. 3/8 threaded rods anchor the three blocks to each other, and allowed me to very carefully adjust the positions of the rails to be exactly where they were supposed to be. I also moved the bolts supporting the print bed from the motor mounts to the lower end mounts, so that adjusting the belt tension didn't also tilt the print bed.
Since the rails were no longer mounted straight to the wooden sides, I also printed feet which were slid onto the threaded rods and screwed into the printer base. Even though the wooden frame was not redundant, I was still using it to mount secondary structural parts.
I have designed new motor mount blocks, but haven't printed them yet. The old ones will still work for now. I have slightly changed around the way the bolts connecting the motor mounts to the base blocks work, so that they can be adjusted from the top instead of the bottom now. It's still fairly difficult to adjust the belt tension, I have to maneuver a small screwdriver alongside the belt in just the right way to reach the head of the tensioning screw buried inside the block, but it was nearly impossible to do so when the screws were adjusted from below.
The top ends of the rails also had new blocks printed, connected by threaded rods to allow them to be carefully adjusted as well. I have also designed pockets for the upper end travel limit switches, with channels inside for the various wires and cables to the top end of the printer.
In the process of this complete structural overhaul, I've also replaced the printed plastic connecting rods with rods made from RC truck ball ends joined by carbon fiber tubes.
These are much lighter and more rigid than the plastic ones. The rod ends are much smoother than the printed ones, but do have a little bit of looseness to them that translates to some free play in the head position. I'm not completely happy about that.
With the structural redesign I've moved the rails all in by an inch from their previous position. They aren't anchored to the wooden side panels any more, anchored only at the tops and bottoms. To keep the geometry of the delta platform the same, I have also redesigned the carriages and head.
The new carriages are much smaller, yet lighter weight and more rigid than the old ones. The new carriage is a three-part assembly. Side plates hold the V-groove roller bearings, now supported on both sides of the bearing with a complete thru bolt. The center section clamps to the timing belt and also holds the adjustable screw that presses the limit switch. There are a total of four threaded rods through the assembly, including the annoyingly hard to find M3 threaded rod that goes through the two rod ends.
With the rails moved away from the side plates, the carriage structures can now wrap completely around the rails. There's a lot of careful adjustment of the nuts required to get the pressure on the bearings just right, to the point where the carriages roll smoothly but are completely rigid against rotation or sideways motion.
I've redesigned the head too, moving the rod ends a bit closer to the enter, but also massively simplifying the structure, reducing the number of parts and making it a lot easier to assemble and adjust the filament tube clamp.
The three tiny cooling fans are now more directly aimed at the hot end barrel now, no longer having to have the airflow routed through holes in the wooden J-head mounting plate. The LEDs are also now mounted directly in the head structure instead of dangling on their leads.
Finally, while I had everything taken apart, I added some insulation - a layer of foil and some strips of fiberglass under the heated PCB. It seems to help the bed get to the right temperature and stay there, and probably helps keep the bed heat away from the electronics in the base.
With the new structural design, the movement if the head seems to be exactly where it should be. I finally have proper adhesion of the print over the entire area of the bed that the nozzle can reach, and object dimensions seem to be correct. Still to do - proper mounting of the power supply and RAMPS board, and some way to support the filament reel.
Sunday, October 7, 2012
Drew's Rostock: The long quest for a successfull print.
With a working extruder, and after MakerFaire a reel of black 1.75mm PLA filament, it's time to try printing. So I drew up a standard 20mm calibration cube in AutoCad, sliced the stl into Gcode with Slic3r, and sent it to the printer in Pronterface.
It was, of course, an absolutely terrible print. The block was spongey, with severe filament starvation, wavy and not even the correct size. About what you'd expect of the first print of a scratch-built printer of a novel design. I was just happy that it was printing at all.
The filament starvation was the first thing I tackled. I noticed that starting about a minute into the print, the extruder motor would start stuttering, jerking back slightly about once a second. ON a tip from the Deltabot message group I tried turning down the motor current. There turned out to be a very narrow range where the extruder would work properly - too little current and it would stall, too much and it the stepper driver would cut out in thermal shutdown. Keeping a large fan pointed straight at the driver board was mandatory. I suspect my extruder might be a bit tight, taking more force to push the filament than it really should, or maybe it's the tightly coiled Bowden tube that's doing it.
The second calibration cube I printed was at least solid, but still had problems. It was somewhat undersized, had bizarrely wavy sides, and a top that was concave and significantly upturned at the corners. During bed-leveling tests I had noticed that my printer was acting as if the bed was bowed - the print head had more clearance over the bed in the center than at the sides. I was fairly certain that my print bed - a sheet of borosilicate glass clamped to the heater with binder clips - wasn't actually bowed downwards, so I suspected something was wrong with my geometry.
When I had originally printed the six connecting rods, I hadn't checked to make sure their length was correct. I removed and measured them one at a time. Sure enough, all six of them were a few millimeters shorter than they were supposed to be. I found I could mostly fix their length by slightly unscrewing the threaded rod holding the two halves of each rod together. It wasn't quite ideal since I was still limited by pitch on the screw threads in how closely I could get the length to the required 250mm. I am planning on replacing these rods with carbon-fiber ones eventually.
That fixed some of the distortion. The test prints were still somewhat wavy and undersized. At this point I switched to using a hexagon, designed to be exactly an inch across from flat to flat, with a three-eights hole through the center. The part as printed was about 0.95" across, and had somewhat wavy sides. The hole through the center was about 0.3" across, and distinctly oval.
While fixing the connecting rods, I had noticed that the carriages weren't very tight. Whether through inaccurate measurement on my part or poor accuracy on the part of the Makerbot I had printed on the parts on, the V-groove roller bearings weren't pressing against the Makerslide rail rightly enough. The carriages were actually shifting back and forth slightly as the printer ran, which translated directly to positional error of the print head.
I really didn't want to print any more parts at work to replace these without trying to fix the ones I had first. I tried clamping the sides of one of the carriages with a big old C-clamp I had to press the bearings closer together.
This worked as far as eliminating the slack in the bearings - I was easily able to adjust the clamp to the point where the carriage rolled up and down smoothly but was rock-solid against rotation or sideways movement. Obviously, I couldn't print with the clamp on there, it interfered with the movement of the rods and was really, really heavy. I also didn't have three clamps like that. I considered removing the carriages and bending them over heat to permanently reshape them, but then noticed that there was just enough room between the bearings, Makerslide, and belt, for a small threaded rod.
One trip to the hardware store, some cutting and drilling, and I had tie-rods that didn't interfere with the carriage movement yet held the bearings firmly against the slides. It's not pretty but it works. I have already redesigned the carriages to have adjustable bearing pressure, and will be printing out a complete new set of parts with that feature eventually, but this mod will get me printing for now.
With the tie-rods on he carriages my one-inch test print measured about 0.97". The test block also had upturned corners and blobbing which suggested that too much plastic was being delivered - or rather, the head wasn't moving as far as it should for the amount of plastic being printed.
There didn't seem to be any looseness in any part of the mechanism, and even when I printed the test hex at agonizingly low speed the size was still off. Furthermore, careful tests with commanding the head to move a known distance and measuring the actual distance moved suggested that something was wrong with the actual geometry of the printer. A bit of measurement suggested that my Makerslide rails weren't located exactly right. The wooden frame I'd built didn't have any way to adjust the rail position, unfortunately. That will be something I correct in the next version, but I really wanted to get this one working without having to do a complete rebuild.
I took a look at the software instead. The modified Marlin software has a handful of added settings describing the overall geometry of the delta platform. One of these - DELTA_SMOOTH_ROD_OFFSET - described how far the drive axis were from the center of the print area. With some trial and error I determined that if I changed this from the standard 175 to 178, the objects I printed would be within half a percent of their correct size. That's good enough for now, but I still need to design a way to make fine adjustments to the rail positions.
When printing the test blocks, I had noticed strange, consistent wavy patterns on the sides of the blocks. Turning the printer speed down below 30mm/sec eliminated them. Initially I though that this was due to flex in the plastic rods, and expected it to go away when I replaced them with carbon-fiber ones. While testing some larger prints and gradually increasing the speed, I noticed that when printing long straight lines the print head was actually stuttering, slowing down for a fraction of a second at certain spots, which was causing the wavy spots to appear as the plastic would be delivered unevenly across the line.
I had read on the Deltabot message group that other people had seen this too. The modified Marlin firmware chops straight lines up into many small segments, since the amount of movement required on each axis is constantly changing as the head moves across the platform. At higher speeds this can overwhelm the buffer which the firmware uses to plan moves, resulting in momentary pauses in the movement as the firmware struggles to keep up. Changing a setting - BLOCK_BUFFER_SIZE - in the firmware from 16 to 64 fixed that problem.
The printer head seemed to be able to move in long straight lines accurately at a high speed now. The next hurdle was getting proper adhesion to the print bed. I found on larger prints that if any part of the print didn't stick to the bed properly, it would curl upwards as the part printed. Eventually this would cause the head to jam against the part, causing one or two of the drive motors to skip a step, which would completely ruin the part.
When you have a motor skip a step on a delta printer, it doesn't just shift the layers above the skip sideways like it will on a normal cartesian machine. It can result in the layers above the skip being shifted and tilted, making for some very strange-looking ruined parts.
One thing that helped is keeping the bed clean. Any skin oil on the bed can result in failure to adhere. I have very oily skin, so I've been cleaning the print bed with windex before every print.
Adjusting the bed height is critical. The Rostock lets you adjust the bed level by turning the small screws on the tops of the carriages which press the upper travel limit switches. This also seems to shift the center point of the print area, since you're effectively rotating the print volume around the home position. I also have adjustable screws at the corners of the print bed which let me independently adjust the bed level and height.
The J-head seems to be very prone to making long, fine threads during a pause in extrusion. Cleaning the hot end before every print seems to help. I tried adding a silicone wiper and setting the printer to wipe the head before each print, but that seemed to hurt more than it helped.
Despite all this, I'm having trouble getting consistent height across the entire bed. The printer is still acting as if the bed isn't properly flat, with parts of the print being too high and not adhering, and parts being so smashed down that the extruder stalls when trying to print the base level. I think there are still alignment issues with the printer geometry, uneven placement of the Makerslide rails and uneven rod lengths, so I'll be running more tests to identify and fix those problems.
At the moment, the printer seems to work at least as well as the Makerbot Thingomatic at work, with a much higher top speed but adhesion problems with any part more than a few inches across. I still have more work to do to get it working properly over the entire 200mm build area.
It was, of course, an absolutely terrible print. The block was spongey, with severe filament starvation, wavy and not even the correct size. About what you'd expect of the first print of a scratch-built printer of a novel design. I was just happy that it was printing at all.
The filament starvation was the first thing I tackled. I noticed that starting about a minute into the print, the extruder motor would start stuttering, jerking back slightly about once a second. ON a tip from the Deltabot message group I tried turning down the motor current. There turned out to be a very narrow range where the extruder would work properly - too little current and it would stall, too much and it the stepper driver would cut out in thermal shutdown. Keeping a large fan pointed straight at the driver board was mandatory. I suspect my extruder might be a bit tight, taking more force to push the filament than it really should, or maybe it's the tightly coiled Bowden tube that's doing it.
The second calibration cube I printed was at least solid, but still had problems. It was somewhat undersized, had bizarrely wavy sides, and a top that was concave and significantly upturned at the corners. During bed-leveling tests I had noticed that my printer was acting as if the bed was bowed - the print head had more clearance over the bed in the center than at the sides. I was fairly certain that my print bed - a sheet of borosilicate glass clamped to the heater with binder clips - wasn't actually bowed downwards, so I suspected something was wrong with my geometry.
When I had originally printed the six connecting rods, I hadn't checked to make sure their length was correct. I removed and measured them one at a time. Sure enough, all six of them were a few millimeters shorter than they were supposed to be. I found I could mostly fix their length by slightly unscrewing the threaded rod holding the two halves of each rod together. It wasn't quite ideal since I was still limited by pitch on the screw threads in how closely I could get the length to the required 250mm. I am planning on replacing these rods with carbon-fiber ones eventually.
That fixed some of the distortion. The test prints were still somewhat wavy and undersized. At this point I switched to using a hexagon, designed to be exactly an inch across from flat to flat, with a three-eights hole through the center. The part as printed was about 0.95" across, and had somewhat wavy sides. The hole through the center was about 0.3" across, and distinctly oval.
While fixing the connecting rods, I had noticed that the carriages weren't very tight. Whether through inaccurate measurement on my part or poor accuracy on the part of the Makerbot I had printed on the parts on, the V-groove roller bearings weren't pressing against the Makerslide rail rightly enough. The carriages were actually shifting back and forth slightly as the printer ran, which translated directly to positional error of the print head.
I really didn't want to print any more parts at work to replace these without trying to fix the ones I had first. I tried clamping the sides of one of the carriages with a big old C-clamp I had to press the bearings closer together.
This worked as far as eliminating the slack in the bearings - I was easily able to adjust the clamp to the point where the carriage rolled up and down smoothly but was rock-solid against rotation or sideways movement. Obviously, I couldn't print with the clamp on there, it interfered with the movement of the rods and was really, really heavy. I also didn't have three clamps like that. I considered removing the carriages and bending them over heat to permanently reshape them, but then noticed that there was just enough room between the bearings, Makerslide, and belt, for a small threaded rod.
One trip to the hardware store, some cutting and drilling, and I had tie-rods that didn't interfere with the carriage movement yet held the bearings firmly against the slides. It's not pretty but it works. I have already redesigned the carriages to have adjustable bearing pressure, and will be printing out a complete new set of parts with that feature eventually, but this mod will get me printing for now.
With the tie-rods on he carriages my one-inch test print measured about 0.97". The test block also had upturned corners and blobbing which suggested that too much plastic was being delivered - or rather, the head wasn't moving as far as it should for the amount of plastic being printed.
There didn't seem to be any looseness in any part of the mechanism, and even when I printed the test hex at agonizingly low speed the size was still off. Furthermore, careful tests with commanding the head to move a known distance and measuring the actual distance moved suggested that something was wrong with the actual geometry of the printer. A bit of measurement suggested that my Makerslide rails weren't located exactly right. The wooden frame I'd built didn't have any way to adjust the rail position, unfortunately. That will be something I correct in the next version, but I really wanted to get this one working without having to do a complete rebuild.
I took a look at the software instead. The modified Marlin software has a handful of added settings describing the overall geometry of the delta platform. One of these - DELTA_SMOOTH_ROD_OFFSET - described how far the drive axis were from the center of the print area. With some trial and error I determined that if I changed this from the standard 175 to 178, the objects I printed would be within half a percent of their correct size. That's good enough for now, but I still need to design a way to make fine adjustments to the rail positions.
When printing the test blocks, I had noticed strange, consistent wavy patterns on the sides of the blocks. Turning the printer speed down below 30mm/sec eliminated them. Initially I though that this was due to flex in the plastic rods, and expected it to go away when I replaced them with carbon-fiber ones. While testing some larger prints and gradually increasing the speed, I noticed that when printing long straight lines the print head was actually stuttering, slowing down for a fraction of a second at certain spots, which was causing the wavy spots to appear as the plastic would be delivered unevenly across the line.
I had read on the Deltabot message group that other people had seen this too. The modified Marlin firmware chops straight lines up into many small segments, since the amount of movement required on each axis is constantly changing as the head moves across the platform. At higher speeds this can overwhelm the buffer which the firmware uses to plan moves, resulting in momentary pauses in the movement as the firmware struggles to keep up. Changing a setting - BLOCK_BUFFER_SIZE - in the firmware from 16 to 64 fixed that problem.
The printer head seemed to be able to move in long straight lines accurately at a high speed now. The next hurdle was getting proper adhesion to the print bed. I found on larger prints that if any part of the print didn't stick to the bed properly, it would curl upwards as the part printed. Eventually this would cause the head to jam against the part, causing one or two of the drive motors to skip a step, which would completely ruin the part.
When you have a motor skip a step on a delta printer, it doesn't just shift the layers above the skip sideways like it will on a normal cartesian machine. It can result in the layers above the skip being shifted and tilted, making for some very strange-looking ruined parts.
One thing that helped is keeping the bed clean. Any skin oil on the bed can result in failure to adhere. I have very oily skin, so I've been cleaning the print bed with windex before every print.
Adjusting the bed height is critical. The Rostock lets you adjust the bed level by turning the small screws on the tops of the carriages which press the upper travel limit switches. This also seems to shift the center point of the print area, since you're effectively rotating the print volume around the home position. I also have adjustable screws at the corners of the print bed which let me independently adjust the bed level and height.
The J-head seems to be very prone to making long, fine threads during a pause in extrusion. Cleaning the hot end before every print seems to help. I tried adding a silicone wiper and setting the printer to wipe the head before each print, but that seemed to hurt more than it helped.
Despite all this, I'm having trouble getting consistent height across the entire bed. The printer is still acting as if the bed isn't properly flat, with parts of the print being too high and not adhering, and parts being so smashed down that the extruder stalls when trying to print the base level. I think there are still alignment issues with the printer geometry, uneven placement of the Makerslide rails and uneven rod lengths, so I'll be running more tests to identify and fix those problems.
At the moment, the printer seems to work at least as well as the Makerbot Thingomatic at work, with a much higher top speed but adhesion problems with any part more than a few inches across. I still have more work to do to get it working properly over the entire 200mm build area.
Saturday, October 6, 2012
Drew's Rostock: Extruder
This started out as an Airtripper extruder, but I decided to tweak the design to better fit my printer and the parts I had on hand, and by the time I was finished it was nearly unrecognizable.
Changes made from the original Airtripper design include:
Moving the mounting surface to be on the face that the filament enters the extruder through. This was more convenient for mounting the extruder vertically, with the filament coming down from above.
Redesigning the extruder to use bearings I had on hand. This included a 525 bearing for the motor axle support, and a 1614RSbearing for the pinch arm.
I replaced the Bowden tube clamp with a low-profile design I came up with that uses three bolts to compress a tightening cone around the tube. It doesn't require printing threads and seems to take up less vertical space than other designs I've seen.
Finally, I'm a shoulder bolt and two R4RS bearings to support the pinch arm pivot. This was an experiment I did only to use up some parts that had been in my junk bin for years. In retrospect it was completely unnecessary, actually makes the extruder harder to assemble, and was kind of a dumb idea.
Plans for the extruder, and all the other parts I've printed for the printer so far, have been uploaded as Thing 31889 on Thingiverse. I upload these only for reference purposes. I don't actually recommend printing any of them as they are. I've found design issues with all these parts as I've built the printer and am preparing a complete set of redesigned parts.
Changes made from the original Airtripper design include:
Moving the mounting surface to be on the face that the filament enters the extruder through. This was more convenient for mounting the extruder vertically, with the filament coming down from above.
Redesigning the extruder to use bearings I had on hand. This included a 525 bearing for the motor axle support, and a 1614RSbearing for the pinch arm.
I replaced the Bowden tube clamp with a low-profile design I came up with that uses three bolts to compress a tightening cone around the tube. It doesn't require printing threads and seems to take up less vertical space than other designs I've seen.
Finally, I'm a shoulder bolt and two R4RS bearings to support the pinch arm pivot. This was an experiment I did only to use up some parts that had been in my junk bin for years. In retrospect it was completely unnecessary, actually makes the extruder harder to assemble, and was kind of a dumb idea.
Plans for the extruder, and all the other parts I've printed for the printer so far, have been uploaded as Thing 31889 on Thingiverse. I upload these only for reference purposes. I don't actually recommend printing any of them as they are. I've found design issues with all these parts as I've built the printer and am preparing a complete set of redesigned parts.
Friday, September 21, 2012
Drew's Rostock: Print bed and new power supply
After blowing up my old PC power supply, I ordered a 360W, 12V industrial supply off Ebay. Two days later it arrived and went right into the printer.
It's got a larger footprint than the older one, but still fits in the printer base.
While waiting for the new supply to arrive I tool apart the old one and removed what usable parts from it I could. I took the entire back plate, with the AC plug, switch, and fan, and mounted it on one side of the printer to give me a convenient power switch and plug. I took the other fan and aimed it to cool the RAMPS board. Other than the power input, none of this is securely mounted yet - something I'll have to do eventually.
The new power supply doesn't have a secondary 5V output, and I didn't want to run the print head fans and LEDs off the RAMPS board's 5V line, so I threw together a deadbug 5V supply with a 7805 regulator and a few capacitors. This is mounted to the underside of the upper structural plate, out of the way of the moving parts of the print head. I'll eventually be installing some more LEDs up there as well to illuminate the entire print area.
The print surface is a standard 200mm heated bed from Lulzbot. I'm mounting it on springs on each corner so it will have some give if the head crashes into the bed, and to give me a way to fine-adjust the bed level. The bed is mounted to a plywood plate that is itself attached to the three motor mount blocks at the corners of the printer. Not shown here is the borosilicate glass plate that goes on top of the bed.
Eventually I intend to put some insulation under and around the print bed to make it a bit easier to keep it at the target temperature, and some LEDs to indicate when the heater is operating. What I'd really like to do is have a ring of red LEDs around the bed which are on whenever the bed is over a certain temperature, but I suspect that will require me to modify the printer firmware.
Now the print area of the Rostock design isn't actually a perfect match to the square print bed. The actual physical area the head can move through is a sort of rounded hexagon shape, but it's fairly close to being a circle about nine and a half inches in diameter. Ideally, the printer should have a circular print bed. I haven't seen any circular print beds on sale yet, but if the Rostock design becomes popular they might appear. I might also design and etch my own at some point. I'll need to find a source for a circular glass print surface too.
The LEDs on the print head are adjusted to illuminate the area directly under the J-head nozzle. This will help with aligning the head to the center of the print area (though admittedly this is much less of an issue with this design than it was with the Makerbot) and with testing the extruder function.
Everything has been hooked up and electrically tested. I've run the print head and heated bed up to operating temperature and manually commanded the head to move through its entire operating volume. The new power supply shows no signs of failure under full load. It is getting to be a bit of a rat's nest in there, so at some point I'm going to have to work out better wire management and mounting. At least none of the parts in the base move, so I won't need to make cable chains like I had to for the office Makerbot.
The next step will be to build the pinch-wheel filament drive. For that, I'll need to print out a few more pieces on the office Makerbot. Once that is done and my PLA reels arrive, I'll be able to start printing.
It's got a larger footprint than the older one, but still fits in the printer base.
While waiting for the new supply to arrive I tool apart the old one and removed what usable parts from it I could. I took the entire back plate, with the AC plug, switch, and fan, and mounted it on one side of the printer to give me a convenient power switch and plug. I took the other fan and aimed it to cool the RAMPS board. Other than the power input, none of this is securely mounted yet - something I'll have to do eventually.
The new power supply doesn't have a secondary 5V output, and I didn't want to run the print head fans and LEDs off the RAMPS board's 5V line, so I threw together a deadbug 5V supply with a 7805 regulator and a few capacitors. This is mounted to the underside of the upper structural plate, out of the way of the moving parts of the print head. I'll eventually be installing some more LEDs up there as well to illuminate the entire print area.
The print surface is a standard 200mm heated bed from Lulzbot. I'm mounting it on springs on each corner so it will have some give if the head crashes into the bed, and to give me a way to fine-adjust the bed level. The bed is mounted to a plywood plate that is itself attached to the three motor mount blocks at the corners of the printer. Not shown here is the borosilicate glass plate that goes on top of the bed.
Eventually I intend to put some insulation under and around the print bed to make it a bit easier to keep it at the target temperature, and some LEDs to indicate when the heater is operating. What I'd really like to do is have a ring of red LEDs around the bed which are on whenever the bed is over a certain temperature, but I suspect that will require me to modify the printer firmware.
Now the print area of the Rostock design isn't actually a perfect match to the square print bed. The actual physical area the head can move through is a sort of rounded hexagon shape, but it's fairly close to being a circle about nine and a half inches in diameter. Ideally, the printer should have a circular print bed. I haven't seen any circular print beds on sale yet, but if the Rostock design becomes popular they might appear. I might also design and etch my own at some point. I'll need to find a source for a circular glass print surface too.
The LEDs on the print head are adjusted to illuminate the area directly under the J-head nozzle. This will help with aligning the head to the center of the print area (though admittedly this is much less of an issue with this design than it was with the Makerbot) and with testing the extruder function.
Everything has been hooked up and electrically tested. I've run the print head and heated bed up to operating temperature and manually commanded the head to move through its entire operating volume. The new power supply shows no signs of failure under full load. It is getting to be a bit of a rat's nest in there, so at some point I'm going to have to work out better wire management and mounting. At least none of the parts in the base move, so I won't need to make cable chains like I had to for the office Makerbot.
The next step will be to build the pinch-wheel filament drive. For that, I'll need to print out a few more pieces on the office Makerbot. Once that is done and my PLA reels arrive, I'll be able to start printing.
Sunday, September 16, 2012
Drew's Rostock: the print head
For my printer's hot end I chose a Mini J-head Mk II, custom-made by hotends.com. The standard J-head is designed for 3mm filament. I liked the simplicity and light weight of the J-head, but my printer is intended to use 1.75mm filament, so I custom-ordered a mini J-head instead. I had been considering an Arcol.hu hot end at first - liked the idea of an all-steel extruder - or possibly a Budaschnozzle, but the Rostock design really calls for a head that's as lightweigt as practical to make full use of the platform. I won't be able to print the more challenging materials like teflon with this nozzle, but that's not really my aim anyway.
The J-head, like most hot ends, seems to be designed to mount into a slot in a wooden base plate. Presumably the wood helps insulate the hot end from the plastic structure around it, and is itself sufficiently temperature-resistant to not be damaged by the hot end. I used a bit of scrap leftover from the Makerbot, drilled and sanded into a mounting plate for the hot end.
Here you can also see the heater resistor held in place with fire putty and the thermistor taped into the other side of the block.
Here I've wrapped insulating wool and Kapton tape around the heater block. This should make it a bit easier for the heater resistor to keep the hot end at the desired temperature. I'm not completely sure this is necessary, but it seems to be good practice.
On the triangular black platform, which is normally connected to the six drive rods on the Rostock design, there are three mounting holes at the corner. These were originally intended for adjustable screws which pressed the three lower end limit switches during the homing procedure. The latest version of the Rostock software eliminates the need for the bottom end limit switches, so these holes aren't needed for anything. On the Makerbot, it's hard to see the hot end nozzle when the print head is all the way down against the print bed, as the huge platform which supports the hot end blocks the light. I'll be putting LEDs in these three holes to illuminate the hot end, to make it easier to align the head in the center of the print bed.
Here you can see the print head installed in the printer, with the three LEDs arranged around the hot end. You can also see a piece of ducting I printed to go around the J-head. The hot end is designed to have a continuous airflow across the midsection at all times. Ideally you want the transition from ambient temperature to plastic-melting heat to be confined to a small area of the hot end barrel. The transition region has cooling fins machined in it, and a constant airflow is recommended to keep the upper part of the hot end from getting too hot. The original Rostock printer had a large fan placed next to the printer to blow air through the entire print volume. I wanted this printer to be stand-alone, and ideally would like to eventually completely enclose it, so that wasn't an option.
There's not much room on the print head to mount a fan, and it's important to keep the weight of the print head as low as practical. I used three miniature fans - 20mm square - and printed a structure to hold them on the upper part of the print head. Channels inside the plastic support direct the air downwards, around the J-head, and out onto the print surface.
The fan support structure also holds the Bowden cable clamp and has channels for the hot end heater resistor and thermistor wires. Power to the fans and LEDs is from the 5V supply lines on the PC power supply I was using for the printer.
Testing of the printer was going well up till now. I could move the head around under command from Pronterface, and the temperature sensing of the print head seemed to work well. I set the target temperature of the print head to 100C. The heater came on, the temperature started to climb, and then my power supply blew up.
I was using an old 350W power supply recycled out of my wife's old PC (She has since moved onto a machine requiring a much larger power supply), using the 12V feed to power the RAMPS board (and through it the motors and heaters) and the 5V feed to power the LEDs and fans. I knew that PC power supplies typically required a minimum load on the 5V line to be stable, which I thought the fans and LEDs would provide. What I didn't realize was that cheaper supplies like the one I was using had some shared components in the 5V and 12V switching regulators. The voltage regulator circuit was designed with the assumption that the load on the 5V and 12V lines would increase roughly proportional to each other, as would typically happen in a computer. A massive imbalance between the 12V and 5V loads severely stresses the switching regulator.
I had some suspicion of the problem beforehand, though I thought the LEDs and fans would be enough of a load, but I wasn't expecting catastrophic failure. This type of power supply is supposed to shut off when it detects an improper load. Instead, something inside blew up and arced over for a few seconds, then the main fuse burned out. I could probably repair the damage, but I've decided to do what I should have done in the first place, and buy a 12V 30A industrial supply designed specifically for this type of duty. I'll have to add in a little 5V regulator for the fans and such, but that's no big deal.
Subscribe to:
Posts (Atom)