Showing posts with label servomotors. Show all posts
Showing posts with label servomotors. Show all posts

Thursday, February 26, 2026

Arrakis 3.0 Updates- Now It's Arrakis 3.1

Update 3/31/26

The mechanism started making noise again, so I opened the table up and found that the belt was climbing on the corner pulleys, and that was wearing the edges of the belt and leaving bits of black rubber from the belt everywhere. The noise was occurring when the belts would climb the pulleys, increasing tension, and then snap back toward the center of the pulleys. 

I redesigned and printed the corner pulleys on the end of the stable opposite the motors to have a flat profile instead of the concave profile the other pulleys have. For some reason it only seems to be a problem at that end of the table. It's been running quietly again for several hours. I'm going to wait a while and see if I should replace the other pulleys with the flat profile type.

Now back to the original post: 


After living with Arrakis 3.0 for a few months, a few problems have led to some changes. 

1) The cheapo 6A rated power switch welded itself in the "on" position about the fifth time I switched the table on. The table has a 350W power supply - 6A should be plenty of capacity. 

2) I noticed that quite a few of the patterns started with the ball rocketing from the home position to one of the opposite edges of the drawing area, drawing a straight line across the table before the actual pattern started to be drawn. Sometimes the pattern was dense enough to wipe out that line, but very often it wasn't. I found that really annoying.

3) I noticed that the table started making some small noises only a couple months after I finished building it. That suggested parts were wearing.

4) I run the table in random mode most of the time, where the table randomly selects a pattern to draw from over 200 patterns stored in the controller's memory. Sometimes it draws a nice pattern that I'd like to keep on the table for a day or two. The only way to do that is to switch off power, which means the LEDs are also switched off. I'd prefer to be able to have the LEDs on without the table drawing any new patterns.


Changes


1) After checking the LRS-350-24 power supply specs and finding inrush current rated at 60A maximum (!), I replaced the 6A switch with one rated for 10A, and added a 16 Ohm 5A NTC thermistor and 3 second time delay relay (found in a box at the makerspace, with contacts rated for 7A @ 250V) to switch power to the table. Now when power is switched on, the thermistor is in series with the power line going into the power supply, limiting surge current to a maximum of about 10.6A (peak voltage on the power line is 170, so maximum current will be 170V/16 Ohms=10.6A, but only if I happen to flip the switch at the exact peak of the voltage). After 3 seconds, the relay closes and shorts out the thermistor. During that 3 seconds, the thermistor gets about 10C warmer than ambient temperature. This seems to have solved the power switch/surge current problem.


3 second time delay relay (the gray box) and NTC thermistor (the gray disc). If the relay ever fails, the thermistor will remain in the circuit and the table should continue to operate.





This is how the relay and thermistor are wired. Theoretically, I shouldn't need the relay at all as the thermistor resistance drops when it heats up, but I'd prefer not to have it sitting there hot when the table is powered up. If the relay ever fails, the thermistor will still be in the circuit and it should continue to operate with the thermistor sitting at an elevated temperature.

2) I manually edited all 223 pattern files and eliminated the lines that went across the table at the start of many of the patterns. I also eliminated some odd back-and-forth-along-the-edges motion that occurred at the start of some patterns. I'll be more careful to remove such lines before uploading new patterns to the table.

3) Arrakis 3.0 had wheeled carriages running in v-slot aluminum for the Y axis. I suspected that this is where the noise was coming from. When I opened up the table to inspect the mechanism I found that the Y axis carriage wheels on the outside of the mechanism frame were wearing out and the wheels on the inside of the frame weren't even touching the frame. The wear pattern is the result of the tension on the belts pushing the carriages inward while the attachment to the X axis linear guide is loose (by intention, clearly a mistake), allowing the inward motion and some tilting. It was a very bad design!

For the MakerFest in Elkhorn, Wi. on Feb.14th, I installed wheels that were made of some mystery material that was supposed to be "self-lubricating", and it restored the table to quiet operation. When I got the table home I opened it up to look at the mechanism and think about what I could do to improve it, and found this:


Self lubricating?

Arrakis 2.0 uses UHMW blocks sliding in the aluminum slots and has been 100% reliable for years. I decided to try converting the wheeled carriages in Arrakis 3.0 to use UHMW blocks instead of wheels, and to solidly attach the X axis linear guide to the two carriages. 

I found some UHMW in my stash that I was able to carve into sliding blocks to replace the wheels in the Y axis carriages. I tried it and it just didn't work out- the UHMW blocks fit loosely in the v-slots and the result was that the X axis tilted, making a noise each time the Y axis movement reversed direction. Even if they had fit well, as the mechanism wore in, it would have started making noise. Ugh.

The real problem with Arrakis 3.0 was that the X axis wasn't rigid enough. Each of the wheeled carriages could tilt due to the belt tension and that caused uneven pressure on the wheels resulting in uneven and excessive wear. Another problem is the limited accuracy of the construction of the mechanism and the use of just two eccentric adjusters at each of the wheeled carriages.

The solution to the first problem was to make the entire X axis more rigid, which I did by mounting the X axis guide rail on a piece of 1/4" aluminum tooling plate that spanned the width of the X axis. The 1/4" plate is flat and rigid, so it will flex much less (especially when screwed tightly to the X axis guide rail) than the two original 1/8" carriage plates that were loosely screwed to the ends of the guide rail.


Set up for drilling and milling the tooling plate for the X axis. Hole positions were critical, the milling was for weight reduction and cosmetic reasons (though it's inside the table and most people will never see it).


The X axis linear guide mounted on the tooling plate. 


The second problem was solved by using eccentric spacers for all the wheels. The first end is adjusted so all four wheels fit the V-slot rail, then, at the other end of the X axis, the adjusters for all four wheels are positioned to comfortably hold both sides of the V-slot rail. The holes in the eccentric spacers are offset from center by about 0.79 mm, so allow for about 1.58mm adjustment, which is more than sufficient. I would really prefer to spring load some of the wheels so they are always held in contact with the rails, regardless of imperfect spacing or flexing that may occur when the table is operating. 

I'm not sure about using 4 wheels at both ends of the X axis. If I just put 4 wheels (3?) at one end, the X axis assembly will follow the rail that it is clamped to by those wheels. Adding wheels at the other end over-constrains the motion. If the two Y axis rails aren't absolutely parallel, the second set of wheels may cause the mechanism to bind. This is why it would be good to have one set of wheels spring-loaded so they can allow for the rails to be out of parallel. Arrakis 2.0 has a spring loaded UHMW block at one end of the X axis for this reason and it works perfectly. In the end, I used 4 wheels at each end of the X axis. I will reexamine it when I see how well the wheels hold up in the new configuration.


Arrakis 3.1 left side of x axis. Yes, I know the screws holding the wheels are short- they will be replaced with longer screws when new wheels arrive and get installed.



Right end of X axis.


The tooling plate raised the X axis guide rail, belt clamps on the magnet carriage, and pulleys by 3.175 mm. That meant I also needed to raise all the corner pulleys and motors/drive pulleys, and endstop sensors the same amount. I had to modify and reprint all the motor mounts, end-stop sensor mounts, and corner pulley stand-offs. Raising the X axis guide rail also raised the magnet, so I reprinted the upper belt clamp part of the magnet carriage to lower the magnet so it stays at the its original vertical position and doesn't scrape the bottom of the sandbox.


Magnet carriage. The green parts is the new, thinner version that was needed to lower the magnet and prevent it from scraping the bottom of the sandbox. The gaffer's tape wrapped around the magnet keeps it from lifting up 


Note: the 3D printed PETG concave pulley flanges and motor mounts appear to be holding up just fine, as are the belts. There are some rubber crumbs around some of the pulleys, but that's to be expected. Eventually the belts will wear out and have to be replaced, but it won't be any time soon. I tried moving the twists in the belts from the short segments between the drive pulleys and the corner pulley blocks to the very long segments between the corner pulley blocks and opposite ends of the table. I was originally concerned about noise from the belt teeth hitting the pulleys at the corner blocks and with belt clearance along the long sides of the mechanism. Neither seems to be a problem, so I left the twists in the new positions. 

I may take another crack at using sliding UHMW blocks instead of wheels, depending on how well the wheels hold up with the new X axis configuration.

4) The solution to the LED problem was to install a switch that allows me to cut 24V power to the controller board. There are now three switches located on the underside of the table, one for main power, one to control power to the controller board, and one to switch power to the floor lights on the underside of the table. 

Here's the mechanism running:





Thursday, October 28, 2021

Arrakis: "This is part of the weirding way that we will teach you."

The Spice Must Flow (referred to hereafter as TSMF) sand table was a fun and interesting project that went through many changes to the mechanism, electronics, and software. I made several posts about the changes made.

TSMF had three main problems - it was too big to use at home, a little too noisy, and didn't look like furniture that would be acceptable in my living room. I decided to build a new, smaller table, with a more presentable finish, that I could use as a coffee table. It would have to be the right size, the right height, and as quiet as a mouse. I think I succeeded, though you may not care too much for the finish...

The result is "Arrakis", named for the sand covered planet in the Dune novels by Frank Herbert.


Arrakis, in all her glory! I gave her a haircut after this photo was taken, trimming off the fur peeking out from under the glass top inside the box.

Here's what I did that is different from TSMF.


The Mechanism

The Arrakis mechanism is smaller, and closer to the floor to make it more usable as a coffee table. 

TSMF's mechanism had a couple problems. The 45 mm square t-slot frame was a little flexible. I found that the belt tension was sufficient to cause the Y axis frame rails to bow outward. When X direction motion reversed, especially near the center of the table, the entire X axis would shift in the Y rails and make a clunking noise. I made a partial fix by bracing the frame with crossbar made of wood that helped prevent the rails from bowing, but it was still a problem.

I wanted a definitive fix for that problem in Arrakis so I spring loaded one of the Y axis bearings so that the X axis couldn't move back and forth between the Y axis rails, even if they bowed outward. I had also had a failure of one of the Y axis blocks due to poor design (the X axis tube was tight fit to the blocks and tended to split the printed layers apart). The new block design was made in two pieces, with screws that clamped it together over the X axis guide tube.

Here's the bearing/pulley block that has the sprung bearing. The light orange part is a PTFE bearing that fits in the t-slot of the XY mechanism's frame. The block at the other end of the X axis is identical, except the PTFE bearing is screwed to the block instead of sliding on pins.


The right side Y axis bearing/pulley block that has the sprung bearing as seen in the video, above. The three screws hold the two printed pieces together, clamping the X axis guide tube (black). One screw passes through holes drilled in the X axis guide tube. The pulleys are made from stacked F625 bearings and held in place with 5mm steel pins (you can see one pin sticking up a bit at the top).


This is the left side Y axis pulley/bearing block. In this one, the PTFE bearing that fits into the t-slot is screwed to the block. There's a flag for the Y axis opto endstop glued to the top of the block.


Another view of the right side Y axis bearing/pulley block.

TSMF's magnet carriage was also a problem. The magnet fit into a square hole with a light spring that kept the magnet pressed against the bottom of the sandbox. Dragging the magnet against the wood was noisy (and created dust under the table). It got even noisier when the motion changed direction. The magnet would rattle in its hole in the carriage and against the bottom surface of the sandbox.

In Arrakis, I wanted the quietest possible operation, so I redesigned the magnet carriage. Now the magnet is glued to the carriage so it can't rattle, and it is separated from the bottom of the sandbox by an air gap. 

The magnet carriage. The screws that hold it together also help anchor the belts. The belts are folded over the screws and clamped against themselves with teeth interlocked in narrow slots. You can just see the PTFE bearings contacting the X axis guide tube. There are four such bearings and their contact pressure on the guide tube is adjusted using shims made from soda cans.

The magnet is glued to the top of the carriage using silicone glue. The "blade" is the flag for the X axis optical endstop. In order to home the X axis, the Y axis must be homed first. 



This video shows how the pieces of the magnet carriage go together. There are four screws that hold the printed pieces together at the corners and serve as part of the belt clamping system. The blue parts are PTFE blocks that act as bearings to allow the part to slide on the X axis guide tube. I used shims made from soda cans to adjust the pressure that the bearings apply to the X axis guide tube.


Here is a video of the mechanism running at 200 mm/sec with plenty of close-ups of all the parts:



The Electronics

When I switched from steppers to servomotors in TSMF, I used two power supplies- one 150W supply powered one motor and a 200W supply powered the other motor, the controller board, and the LEDs (the LEDs had two buck converters to step the 24V down to 12V).

The schematic is the same as TSMF, except that I added a separate power supply (not shown) for the Duet controller board:



As I was working on the Arrakis mechanism I learned something about servomotors the hard way. I had finished putting the mechanism together and wanted to test the motion so I loaded a TSMF pattern file and started it up. I didn't consider what might happen running a large pattern on a smaller table. The magnet took off and quickly slammed into the end of one of the axes, coming to a loud and abrupt halt. The machine stopped dead and wouldn't respond to commands.

I did some research and found that that is a well known/understood problem among people who use servomotors. The problem is the kinetic energy of the system gets turned into electrical energy when the mechanism is blocked. That causes a voltage spike on the power supply line which, in this case, killed a power supply and the Duet WiFi controller board. Shortly after this, the small buck converters that were powering the LEDs from the same power supply also failed. I was lucky that the voltage spike didn't also kill the integrated driver in the motor.

I replaced the power supply, Duet WiFi board, and the buck converters (this time using higher power units), and added a separate power supply for the Duet board.

I found a protection circuit that will prevent power line spikes coming from the motor from doing that sort of damage, and have all the parts in hand, but need to come up with a circuit board for it. Watch for a blog post on the circuit board. In the meantime, I have provided the controller board with its own power supply to keep it separate from the motor.

Protective circuit for servomotors. If the voltage at the motor gets higher than the voltage from the power supply, the transistor turns on and shunts the voltage to the 33 Ohm resistor. When the motor voltage drops back to the supply voltage the transistor shuts off and everything operates normally.


In TSMF the electronics were mounted in a box that was attached to one of the table's legs. In Arrakis I mounted all the electronics on an aluminum plate screwed to the mechanism's frame. I used a Duet WiFi controller board so I wouldn't have to have a control panel on the table. Power on/off is controlled with a foot switch on the line cord. I used a white line cord because the table is best viewed in the dark and I didn't want to be tripping on the cord in a dimly lit room.

Electronics mounted on aluminum panel that's bolted to the t-slot frame. Left to right, 150W 24V power supply, Duet expansion board, Duet WiFi controller board, 200W 24V power supply. The other side of the plate has a small 24V supply for the controller board and two buck converters to power the LED strips in the sand box.

CAD rendering for positioning electronics.

Expansion board (left) that provides step/dir/enable to servomotors, Duet WiFi controller board, and 200W 24V power supply. 


The Sandbox

TSMF's sand box was made with 1 x 8" pine sides and a 1/2" plywood bottom. Pine isn't very good for much besides coffins, and is too soft- it will show every little bump. I wanted a different look for Arrakis so I ordered some red and blue fur that matches the LED lighting inside the table. I also wanted to use a thinner bottom panel so I could put an air gap between the magnet and the box to reduce noise.

I found that running TSMF at high speed would throw the sand with some of it sticking to the cover because the cover was too close to the sand. I had to open it up to clean the cover frequently. I designed Arrakis with the mechanism close to the floor and the glass cover about 230 mm above it, at coffee table height, to minimize cover cleaning.

As you may have seen in some of my photos and videos, I have a cat. She has one bad habit- she likes to chew on wires. I designed Arrakis so the sandbox would come down very close to the floor to keep Ms. Kitty away from wires and belts. If you build something like this you might also want to design it to keep pets or little kids away from wires, belts, pulleys, and motors.

The sides of the sandbox are made of 1/2" Baltic birch plywood. The corners are held together using aluminum corners of the type used to make musical instrument cases, and rivets. That's one decision I regret for reasons I'll explain below. 

The bottom of the box is made of 1/4" Baltic birch plywood. That allowed me to put the air gap between the magnet and the bottom of the box which reduced noise. During construction and testing the mechanism with the unfinished sandbox in place I noticed that the steel ball rolling on the plywood bottom of the sandbox made quite a bit of noise. I wanted to try to reduce ALL noise, so I did some experiments and found that a rubber coated steel mouse ball was very quiet (unfortunately, large diameter). Then I tried a steel ball rolling on a rubber sheet- also very quiet. 



I ended up gluing a sheet of black EPDM rubber roofing membrane to the bottom of the sandbox. That created another problem- it caused the plywood to warp. Eventually I got that under control and it went into the sandbox without any problems. The corners of the sandbox and the bottom edges are sealed with black silicone and the inside of the box is painted with matte black paint. 


Gluing the rubber sheet to the plywood caused the wood to warp! The PVC pipe was used to roll out bubbles trapped under the rubber. I later added staples to the edges of the rubber sheet, in case the glue ever lets go. I was able to get the warp out by putting a couple pieces of wood under the ends of the board and standing on it a few times.  It also seems to have settled a bit with time.


The outside of the sandbox was finished by gluing on pieces of high density 1/2" upholstery foam covered with blue and red striped fur cloth to match the LEDs that light up the table. The cloth was folded over/under the side walls and stapled to the plywood. The seams were hidden by cutting the cloth on the red/blue lines and carefully matching them up before stapling. As each piece was mounted, I glued the edges of the cloth to the foam, then carefully matched up the red-blue lines on the cloth so there would be no break in the pattern all the way around the table.

One corner of the sandbox showing the aluminum extrusion, rivets, printed spacers.

The sandbox was assembled on the granite counter top so the edges would all be in the same plane. The narrow strips are the supports for the plywood bottom of the box.

Installing the fur cloth. I painted the inside of the box black (well, more like charcoal grey), then cemented high density upholstery foam on the sides using a spray foam adhesive, then cut four pieces of the fur cloth (note the fuzz on the floor and in the sandbox), then stapled the cloth to the wood. You can see some printed neoprene spacers (red) that lift the box just enough to create the air gap between the magnet and the bottom of the box. The neoprene spacers were later replaced with printed TPU parts.



The box with the bottom in place and the cloth stapled down. LED strips are not yet mounted. I cut each piece of cloth along the red/blue lines and glued the edges to the foam so that there would be no visible seams where the different pieces of cloth meet. The fur hides the seams perfectly and I have a difficult time finding them even though I know they are there.

The top of the table is a piece of tempered glass that I bought for $6 via Craigslist. I made a frame for it out of oak by cutting the boards to length, milling in 1/2 lap joints at the corners, gluing them together, rounding the corners, sanding, staining, and finally finishing with oil based polyurethane. There is a black painted pine subframe that supports the glass. Eventually, I'll seal the glass to the top with silicone so that if some dope (probably me) spills a drink on the table it won't end up in the sandbox.

Staining the frame. The wood is 1"x4" oak cut to length and sanded smooth, with half-lap joints at the corners. The corners were rounded with a couple cuts with a pull saw and then sanded. After staining, I applied a few coats of oil based polyurethane, then added a sub frame to support the glass top. 

The LEDs are the same strips used in TSMF, cut shorter. The printed plastic clips to hold the LED strips in contact with the aluminum L channel heatsink did not inspire confidence, so I drilled a bunch of holes at every third LED and used zip ties to hold the LED strips down. They are covered with some black painted polystyrene trim boards that hide the aluminum heatsinks and prevent direct view of the LEDs.

I discovered that the black paint didn't stick to the aluminum corners of the box very well and quickly chipped the paint when installing the LED strips. I touched up the paint afterward, but I expect it will probably start peeling soon. I may need to put some sort of primer on aluminum when it's time to fix the paint again.

CAD File

You can access a STEP file of the Arrakis table here. I can't promise that everything is perfect in the file, so study it well before you try to duplicate anything based on it.


Mistakes made during this project:

  1. cutting fur cloth with scissors- next time (?) cut from the back with a razor knife instead, and keep the vacuum cleaner close by.
  2. aluminum corners for the sandbox, and the rivets used to hold them- paint doesn't stick well and the rivets take a lot of space. I think it would have been better to use 2x2 wood pieces and screws.
  3. black EPDM rubber on the bottom of the sandbox- should have used white, and maybe faux leather instead of EPDM. Contact cement would have probably been better and caused less warping of the 1/4" plywood, too.
  4. LED wiring- I need to put more effort into creating contacts on the sandbox and frame mechanism to connect LED strips just by dropping the sandbox into position on the frame. Maybe adapt some battery contacts...