15 hours at 40 mm/sec, 1mm nozzle, 1.2 mm line width, 0.3 mm layers, vase mode in Cura, 923g of PETG filament, 638 mm tall:
It's going to become a lamp.
I'm a dentist who likes to build 3D printers. I spend a lot of time at the Milwaukee Makerspace.
15 hours at 40 mm/sec, 1mm nozzle, 1.2 mm line width, 0.3 mm layers, vase mode in Cura, 923g of PETG filament, 638 mm tall:
It's going to become a lamp.
Here is Ms. Kitty enjoying my corexy sand table running a circular erase pattern at 1500 mm/sec with acceleration of 10k mm/sec^2.
The table is driven by two servomotors with a Duet2 WiFi controller.
You're essentially asking about the difference between a Kelvin and a Maxwell kinematic coupling.
The "rails" have to run parallel to the direction that the plate expands, relative to the chosen reference point. The reference point location relative to the adjustments is what makes it a Kelvin or Maxwell coupling.
If you choose the reference point to be the center of the bed, the "rails" should be aligned to point at the center of the bed at all three support points because the bed expands outward in all directions from there. That's the classic Maxwell coupling.
OTOH, if you choose one of the screws to be the reference point, say one of the two along the bottom edge, that point won't need rails- just a "hole" to sit in. The rails at the other point along the bottom edge will simply be parallel to the bottom edge (in your drawing) of the plate, and the third will just support the flat bottom of the plate and is allowed to slide in X and Y. You'll adjust the bottom edge point first to set the edge of the plate parallel to printer's X axis, and then set roll using the third point to set the plate parallel to printer's Y axis. This is a Kelvin mount.
The Kelvin mount's square angles are easier to set up accurately - most machine tools are square- than the odd angles that will result if you choose the reference to be any other point (as in a Maxwell mount), and you only need "rails" at one point, not all three.
If the rails are set square to each other (Kelvin style) and the lines they define are parallel to the X and Y axes of the printer, leveling the bed is super easy because a) you'll only need to adjust two leveling points and b) when you make the adjustments all tilting will be in the directions of the X and Y axes of the printer.
I used a Kelvin mount in my printer, with the reference being a point on one of the "ears" on the plate:
In the Maxwell mount, every leveling adjustment, tilts the bed in X and Y, so tramming isn't quite as simple. Also, every tramming adjustment moves the reference point vertically, so you have to adjust the Z=0 position once the bed is level. It's only a Maxwell mount if you accurately aim the rails at the reference point. Any error will cause the bed to tilt and move up and down a bit as it heats up.
With the Kelvin mount, the reference point doesn't move vertically when you tram the bed, and each adjustment (provided you adjust pitch first, then roll) only tilts the bed along one axis. That means that when you adjust roll, it doesn't affect the pitch adjustment.
Of course, if you use auto tramming and zeroing, difficulties in adjustment shouldn't matter...
My coffee table, aka Arrakis 2.0, is a servomotor powered coreXY mechanism that is normally used to magnetically drag a steel ball to create pretty patterns in sand. My cat enjoys chasing the ball, especially when the table is running a spiral erase pattern at 1000 mm/sec.
I decided to try to create patterns that she might like, so I wrote a spreadsheet that generates random motion of the type that attracts her attention. I enter the table dimensions, the desired speed range, and desired dwell time range and the spreadsheet creates gcode that causes the ball to move in random directions at random speeds and then stops for a random amount of time, before darting away, sort of like a small animal might behave. Ms. Kitty loves it!
The spreadsheet generates 500 lines of gcode that typically take about 16 minutes to run on the table, about 3x longer than Ms. Kitty's attention span.
More: blog post
I recently installed opto endstops in my corexy printer and ran some tests of their precision.
In the X and Y axes I ran two identical prints with the first homing normally at the start of the print and the second rehoming X and Y after each layer change. The result is that the prints are barely distinguishable under high magnification and are essentially identical without magnification, indicating that the precision of the optical endstops is very high. Here are two photos of the prints that contain the largest visible difference between them:
Why would anyone want to home a print at every layer change? MarkForged printers use that feature to automatically detect and stop layer-shifted prints. If you are printing expensive material such as PEEK, PEKK, Ultem, etc., you want the print to stop pretty quickly if there's a problem like layer shifting. I'm thinking about how to program a macro that will detect layer shifting in printers running Duet controllers.
I also tested the Z axis opto endstop. I mounted a digital gauge on the printer's frame with the probe contacting the bed, then homed the machine and zeroed the gauge. I moved the bed down random amounts and rehomed 10 times to see if the bed would return to the same position as indicated by the gauge. 8 out of 10 times it went to 0.00 mm and the other 2 times it went to 0.01 mm. The Z axis in my printer is configured for 16:1 ustepping, interpolation on, and 800 steps/mm.
Video here: Z axis homing precision test
The typical way to adjust the Z=0 position is to use a screw to bump a microswitch. The problem with that is when you're zeroing the Z axis you need to be able to make very small adjustments to the home position of the bed/extruder. If you use an M4x0.7 screw, one turn of the screw moves the home position by 700 um- that's more than 3 full 200 um print layers. If you need to move the home position 30 um, that's 1/23 of a turn - not too easy to do without overshooting.
I designed a differential screw adjuster to go with the optical endstop in the Z axis. It uses a M5x0.8 screw with the end 20 mm or so turned down to 4 mm and rethreaded with a M4x0.7 mm die. The result is an adjuster that moves the home position of the bed by 100 um for each full turn of the adjuster, making it very easy to make small adjustments.
While I was running the other tests I checked the adjuster, too. The result- about 100 um per turn of the adjuster, as expected.
Video: Differential screw Z=0 adjuster test
One of the best things about opto endstops is the cost. 3 for $10. They work fine with the 3.3V that the Duet supplies. They also don't seem to mind the 50C temperature inside my printer's enclosure when I'm printing ABS. These endstops have LEDs that light up when they are triggered, making the Z=0 position adjustment easy because you don't have to check the control panel of the printer - just turn the adjuster until the light comes on.
More here:
https://drmrehorst.blogspot.com/2020/03/a-new-z-axis-optical-endstop-design-for.html
https://drmrehorst.blogspot.com/2020/03/testing-ummds-xy-optical-endstops.html
https://drmrehorst.blogspot.com/2020/03/testing-ummds-new-z-axis-optical.html
I occasionally see people posting about using servomotors here. One thing you should know about them is that they can wipe out your controller board, power supply, and any other connected electronics if you are not very careful in their use. I was uncareful and learned this the hard way when I was building the Arrakis sand table.
I had slightly reduced the size of the corexy mechanism, but failed to update the travel limits in the config.g file. I then ran an old pattern file that was generated at the original, larger size on the new, smaller mechanism. I think all this happened before I had my morning coffee. The machine homed itself then took off at 1500 mm/sec and promptly slammed into the physical end of the Y axis, bringing the servomotors to an abrupt halt. That caused a voltage surge on the power supply line that destroyed the Duet2 WiFi controller board, the power supply, and some buck converters that were used to power LED strips.
Someone pointed me at an app note on the Gecko Drives web site that will protect from exactly this sort of problem (and mechanical failures like seized bearings, or someone/something (cats?) blocking the mechanism. This is the circuit:
I designed a PCB, ordered parts, and after waiting months for backordered connectors, decided not to wait any more. I built a couple boards and ran a test of the circuit prior to installing the servomotors in my 3D printer. The protection circuit appears to work as expected. The abruptly stopped motor generates a voltage spike that gets dissipated in the 33 Ohm 10W resistor and the spike is never seen by the power supply.
@MartinNYHC said in Belt tension:
Just finished my BLV mgn cube build and now need to fine tune all the stuff. I'm wondering what the right belt tension is. Are there any rules of thumb?
There are just two rules of thumb for corexy machine belt tension:
If the belts are too tight, you'll be putting a lot of force on the pulley and motor mounts, and if they are stacked belt type that stand up like a fence post, they are liable to flex inward. The mechanism may not move smoothly and may bind depending on the type of linear bearings and the design of the pulley mounts. If you see pulleys tilting inward, you're putting too much tension on the belts (or you need to redesign motor or pulley mounts).
If the belts are too loose they may slip on the drive pulleys - that's MUCH too loose. If they are so tight that the mechanism won't move smoothly, they are too tight. You want them to be somewhere between those extremes, and just about anywhere between those extremes will work fine.
Before you tension the belts, the X and Y axes should be square. When you tension the first belt, they X and Y axes will usually be pulled out of square an amount that will vary depending on the flexibility of the X axis assembly, the type of bearings and guide rails used, and the absolute tension applied.
When you tension the second belt, it will also increase tension on the first belt that you already tensioned, so when you tension the first belt, leave it a little looser than you feel is sufficient. Then, when you tension the second belt, the first one will tighten up. You are done adjusting tension when the X and Y axes are square and the belts are tight but not too tight. Usually, the belts will be close to equal tension when you're done, but getting the axes square is the final indicator, not equal belt tension.
If the belt tension varies as you move the extruder carriage around, the pulleys guiding the belts are not positioned correctly, and a major redesign is in order.
I put an LED and coin cell battery in the magnet holder, turned the table on its side, and ran a pattern. The result:
It took about 5 minutes with the speed at 2000, accel at 10k, and jerk at 12000.
This may be of interest to those who still use endstop switches to set Z=0 in their printer. I was using a lever/cam with a clicky microswitch to set the Z=0 position in my printer, but it developed a problem so I decided to work on a replacement. I changed to an opto endstop that has an LED that lights when the beam is broken. But that's not the interesting part. I made a differential screw driven adjuster for the flag that breaks the light beam. The differential screw moves the flag 100 um per rev so it is very easy to make small adjustments without over adjusting. The differential screw assembly mounts on the bed support that moves up and down and the opto endstop mounts of the printer's frame:
The screw was made by turning the end of an M5x0.8 screw down to 4 mm on a lathe and then threading it for M4x0.7. When you turn the screw 1 rev, it moves 0.8 mm up, while the M4 nut (and the flag) move up 0.1 mm. It has about 2mm of adjustment range, so you get it close by moving the opto endstop on the frame, and make fine adjustment with the screw.
More: https://drmrehorst.blogspot.com/2020/03/a-new-z-axis-optical-endstop-design-for.html
@gwatson90 I don't know if the belts expand significantly at elevated temperatures. Most belts have glass cores and glass tends to be pretty stable over temperature. I would think that since both belts will be at the same temperature there won't be any tension differential causing the X axis to tilt relative to the Y axis, bit I'm just speculating. It shouldn't be too hard to test it. You could always tension the belts at the print temperature to make sure the X axis is square. Make sure you buy belts that are specced for high temperature operation.
The most critical thing about setting up CoreXY is to ensure that the pulleys are positioned accurately to keep the belts parallel to the linear guides. Any error in that will result in belt tension varying with extruder position in the XY plane and will lead to distorted prints, especially as the extruder gets closer to corners of the build space.
You will also want to use quality drive pulleys that have properly sized and centered holes, and quality idler pulleys. Don't buy the cheapest crap that is marketed to 3D printer hobbyists. Gates makes quality drive pulleys that you can buy from Filastruder. I recommend stacked ball bearings for idlers. The cheap, crappy 3D printer idlers have too-tiny bearings that wear out quickly.
Finally, don't stand pulleys up on posts. The belt tension will cause them to tilt. Make sure pulley shafts are supported solidly at the top and bottom.
See: https://drmrehorst.blogspot.com/2023/07/corexy-x-axis-wobble-revisited.html
and https://drmrehorst.blogspot.com/2020/12/x-axis-wobble-in-ummd.html
@fcwilt said in My Second build (in progress):
The flatness spec is based on an entire sheet (4'x12' or so) of tooling plate. Typical flatness over a smaller piece is usually much better. In my printer, I would guess the varying thickness of the PEI and adhesive sheet under it are likely to contribute more to the unflatness than the plate itself. I have never tried to print a 100um first layer- I'm not sure why that would be needed - but I do print with 200 um first layers once in a while without any trouble.
The purpose of tramming/mesh compensation is to get the first layer to stick for the duration of the print, not to get a flat bottom on the print. If you move the Z axis up and down to compensate for bed unflatness or tramming error, you're not going to have a flat bottom on the print - it's going to be the shape of the bed, whatever that is. I can't imagine any application for a plastic 3D print where the flatness of its bottom, beyond what comes off the bed, would be critical to the function or appearance of the print. If flatness down to micron level is needed, a 3D printer is the wrong way to make the part in the first place.
Auto tramming and multiple screws/motors to lift the bed are a chicken and egg sort of thing. A lot of people think they want auto tramming so they use multiple screws/motors to lift the bed. But if you use multiple screws/motors, you have to use auto tramming because the bed is going to tilt every time you cycle power to the printer. I think what people really want is a reliable printer that they don't have to mess around with, but youtube videos showing corners of beds going up and down have made them think that auto tramming is the only way to achieve that.
If you use a single motor to lift the bed, regardless of the number of screws or belts, the bed won't tilt when you cycle power. If the bed plate is on a stable mount, it won't require tramming every time you print. You won't need bed sensors, multiple motors, drivers, and cables. And you'll never experience the joy of troubleshooting it when it fails.
I enjoy starting prints and not waiting for the machine to tram itself. I also enjoy not having to worry about whether the print is going to stick or whether I'll be able to to print at all if auto tramming fails. There's less to go wrong with a flat bed plate on a stable mount that doesn't require tramming before every print.
@fcwilt And if you do it right, there's no need for mesh compensation or auto tramming.
I use a single NEMA 23 stepper with a 30:1 worm drive gearbox to lift the bed on two linear guides in my printer. It has an 8 mm thick cast tooling plate bed on a kinematic mount. There's no autotramming or mesh compensation. The last time I trammed the bed was at least 2 years ago, and it took less than a minute. It just works every time I turn it on. The bed doesn't move when power is cut, so theoretically I can resume printing after a blackout, though I've never tried.
@Dad003 That looks like a piece of cast tooling plate. That means it is flat. 3 points define a plane, not 4, so trying to tram with 4 screws is not a great idea.
You might want to look into a kinematic mount for that bed plate. As it heats it will expand. That means something is going to have to flex and that means it will shift out of tram. A kinematic mount has 3 bed support points and just two tramming adjustments. It allows the bed to expand without causing anything to flex so doesn't go out of tram.
Several lamps, a bread box, bicycle disc brake sanding tool, bicycle fender mount, Nespresso capsule dispenser, Pax Plus vaporizer handle, Ikea Frakta bag handles, physical therapy rubber band handles, incandescent lamp replacement for microscope illuminator, camera and cell phone mounts for telescopes, microscopes, and 3D printer, in-drawer knife block, wire twister tool, Wago lever nut mounts, several furniture feet, a Van de Graaff generator, 3D printer spool holders, coin and wallet holder for Prius console, replacement for failed Prius trunk release cover, stand for S&B Mighty vaporizer, bottle cover for Uberlube, parts for my sand table and 3D printer, parts of a 20 liter soda syrup tank agitator, replacement pushbutton caps for an old preamp, brackets for a "cat ladder", cat puzzle toy, aperiodic tile array pieces and storage box, cutting board drying rack, dental x-ray sensor wall mount, brackets for mounting curtain rods,
racks for torx and hex screwdrivers, bicycle air horn bracket, coasters, cable hold-downs, bicycle chain guard, One Wheel electric skateboard car stand, ear-savers and bias tape making tools for COVID masks, compartmentalized refrigerator storage box, binaural mic earpieces, manual coffee grinder electric drill adapter, antique radio dial belt, Audi and BMW jack pads, white board marker and eraser holder, and many more.
Bread box and cover:
Disc brake sanding tool:
Bicycle fender mount:
Button caps for old preamp:
Lamps:
Another lamp:
Coin and wallet holder for Prius console:
@Dizzwold I used a 7mm thick PVC foam board- I don't recall the product name. It isn't very rigid so I braced it with square aluminum tubing so it wouldn't sag too much.
@developeralgo222 Normally you do not need to know the diameter of the motor shaft as it has nothing to do with the steps/mm. Are you using lead screws? Lead screws will have a spec called "lead" which is the linear distance the nut (your Z axis) would move in one full rotation. For one-start lead screws, lead is the same as pitch. For two-start screws, lead is 2x the pitch, etc. Lead/200 = full steps per mm. If you turn on microstepping you also have to multiply by the microstepping factor.
If you're using lead screws and they are connected with a belt to a single motor, you also have to factor in the pulley size ratios.
@T3P3Tony Thanks! I wasn't aware all these commands existed. I'll give it a go.
My sand table is running a macro that calls out a long sequences of gcode files to run on the table. The macro is very tediously assembled manually and subject to errors. I recently discovered that the sequence currently running must have a typo in one of the gcode file names that make up part of the sequence. When the macro gets to that point, the whole thing just stops. There's no UI on the table, so I don't know exactly where the error occurred, so I will have to manually go into the macro and hunt for the typo.
Is there some conditional gcode that can be included in a macro that will just skip a file in the sequence when the controller can't locate that file because of a typo or other problem?
Thanks!
@dc42 I think so. I don't have the table here, but I'll probably be going to visit it later today. I'll check then. IRIC, the last time I updated firmware was about a year ago.