Wednesday, December 25, 2019

New Life For An Old Radio

Back before I got into 3D printing, I used to collect and restore old vacuum tube radios and phonographs.  I was particularly fond of wood cabinet table-top radios from the 1930s because they often used very beautiful, artistically bent plywood for the cabinets, sometimes with exotic wood veneers. The circuits were not too hard to repair once you learned which type of parts failed the most.

Believe it or not, before TV became popular, and for a little while after, there used to be shops where people actually earned a living by selling and repairing radios.  Those shops used to subscribe to manual publishers that provided schematics and tuneup instructions for new radios as they were released by the manufacturers.  The two main service manual companies, Rider's and Beitman's, produced multiple volumes of radio repair information, all arranged by manufacturer, model, and date.  I have a couple volumes of the old paper manuals in a box somewhere.  You can easily find them on the web- here's a link and here's another, and you can download a full set of the Beitman's manuals via the internet archive, here (finally, something you can download legally with bittorrent!).


One of my favorite restorations was a Zenith 5S-127 radio made in 1937.  It has a large round dial of a type that is very popular with old radio collectors.  IRIC, I paid about $35 for it at an auction about 25 years ago.






When I restored old radios, I would restore the electronics first, then the cabinets.  Repairing the electronics was sometimes a little difficult and tedious, so I used the cabinet restoration as a motivator to keep going on the electronics.


Some of the service info for the radio from the Rider's manual.

A schematic diagram from the Beitman's manual.

A schematic from the Rider's manual.


My restorations weren't museum quality- I didn't try too hard to preserve the look of the original components and chassis.  I was more concerned with restoring the function of the electronics, and then getting the cabinets looking nice again.



Failures


Old radios had all sorts of parts that were prone to failure.  Electrolytic capacitors in power supplies often dried up and shorted or just stopped working as capacitors.  There were also a lot of paper and metal foil capacitors, usually dipped in beeswax, that would fail shorted because the paper would decompose.  They used a lot of carbon composition resistors that would drift upward in resistance over time.  That would cause the bias voltages on tubes to drift out of range and the radio would quit working properly.  Tubes would fail by becoming "gassy", developing shorts, or just burn out.  Even wire would fail because it had cotton insulation that would get chewed on by insects or rodents, or rubber that would harden and crack.  Speakers were often destroyed when something poked through the cloth cover and tore the paper cone.  Water damage often wrecked speakers and cabinets if the radio was stored in a barn or basement.


It's pretty easy to find modern replacements for all those parts that will last a lot longer than the originals did.  Modern electrolytic capacitors are made better, but will still probably always be the most likely parts to fail.  Old radios from the 20's sometimes used electrolytics caps that were just a couple uF.  Those and the paper and foil type caps can be replaced with non electrolytic mylar film caps that will probably last hundreds of years. Carbon composition resistors can be replaced with modern thin film or metal film resistors. Wire can be replaced with modern stuff that uses PVC insulation, but I often use PTFE (Teflon) insulated wire that I expect to last a lot longer.


Transformers can be hard to replace, and sometimes speakers are also tricky, especially those that had electromagnets instead of permanent magnets.  The magnet coil in the speaker was often used as a choke in the power supply, so if you replace the speaker with a modern, permanent magnet type, you have to keep the old speaker's magnet wired in to keep the power supply working properly.



Tubes


Tubes are still relatively easy to replace - they were made by the millions, but you need a tester to check them.  Back when I was doing radio restorations, I found a military surplus TV-7 tube tester at a swap meet for $50.  Shortly after I bought it, tube mania hit the audio world and suddenly tube testers were in big demand by tube audio fanatics. Those people have deep pockets, and they drove the prices up, so now my TV-7 is worth about $800.


You can still find reasonably priced tube testers that can test commonly used radio tubes, and you can still find reasonably priced tubes to test. 



Dials


One of the ways that radio manufacturers tried to distinguish their radios from the competition was to use fancy dials that sometimes used complex arrangements of pulleys and cords (and even motors) to move the dial pointer when you turned a knob or pushed a button.  Zenith radios are very popular with collectors because they really went all-in on the dial design. 


Here's a video of one of Zenith's "shutter dial" console radios that can sell to collectors for thousands of dollars:




And here's the high point of Zenith radio design, a 1935 Stratosphere console with 16 tubes!






Dial Belt Replacement


My Zenith radio used a cloth belt that was somehow rubberized, and of course, was broken when I got the radio.  I replaced it using the common technique at that time (20 years ago, not 1937)- I cut an o-ring to the appropriate length and glued the ends together.  I think it lasted a couple months.


The radio has been sitting on a shelf in my office for years, gathering dust, staring at me, and daring me to try to repair the dial again.  Today, I could resist no longer, so I took the radio apart and measured the o-ring, then drew a replacement in CAD:



CAD rendering of the belt.  Do you think you could handle something like this?  3mm wide, and 1.2 mm thick, 71mm inside diameter.
... then I sliced it:
Yeah, a pretty complicated slice, too.  Not for beginners!
...and printed it using TPU filament.  It took three attempts to get the size just right.  Once I had the belt fitting properly, I dusted off the chassis and reassembled the radio.  TPU is good for this application because it is flexible and will stretch a little under tension.  It is super strong and will not break, ever.



Printed TPU belt (orange) mounted on the radio.  The radio is geared so that turning the tuning knob turns the tuning capacitor slowly and moves two dial pointers at the same time.  Pay no attention to the dust on the chassis.
When I powered it up I found that it was working quite well and the dial calibration was even pretty accurate.  The whole process probably took about an hour.

3D printing can be used to replace all sorts of hard or impossible to find mechanical parts in old radios.  Knobs, pushbuttons, dial parts, etc., can all be replaced with printed replicas. 


Maybe it's time for me to start restoring old radios again.  The purists who go for museum quality restorations will never approve, but us regular folks, who want the radio to look and work like new, won't mind if there are some replacement parts inside.

Thursday, December 12, 2019

Generating Sand Table Patterns Using Sandify

Update:  Sandify now minimizes edge and corner motion.  There's no need to use trimify2x.pl to clean up the gccode!  There are two levels of optimization.  The first, which is automatically applied, preserves the order of the pattern generation as Trimify2x.pl did. The second level reduces edge and corner motion further by reordering the sequence of the lines in the drawing, which can have an impact on the way the final drawing looks. That level of optimization has to be activated by checking the "try to minimize perimeter moves" box on the "machine" definition tab in Sandify.

At the end of this post there's a link to the Trimify2x optimized pattern files presented here. I suggest you just grab the parameters from the patterns you're interested in and regenerate the gcode. Sandify's optimization is better than trimify2x.


Now back to the original post:


I recently posted about a program I wrote to optimize sand table patterns generated by Sandify.  If you're one of the 20 or so people on the planet who has built a sand table and uses Sandify to generate patterns for it, you may wonder why I wrote that program.  Why is there a need to "optimize" the pattern files?

If you have a square or round table, maybe you use sandify to generate patterns for it that look a lot like spirograph drawings, etc.  Maybe you limit the size of the patterns to something close to the size of your table.  In that case, there won't be a lot of excess motion around the edges of the table, and not much need for an optimizer that cuts out that type of motion.



I happened to build a table that is rectangular, with a drawing area of 710 x 1600 mm.  If I restricted patterns to fit in the center of the table, say 710 mm in diameter or so, it would leave a lot of empty space on the table.  So, from the start I have been making patterns that will fill up the entire table surface which means that they inevitably have a lot of motion at the edges of the table, because of the way Sandify works.

Mishegoss3.gcode

Shortly after I built the table, I generated patterns that were 30-40 cycles long and would take 10-20 minutes to finish and put together sequences of those patterns that would run for hours.  When you run patterns that way, you can usually see residue of the previous pattern in the new pattern drawn on the table.  Sometimes it doesn't look very nice.  I threw in erase patterns after every few patterns in the sequence, but it still wasn't satisfactory.

I started experimenting with patterns that ran for hundreds of cycles and often took over an hour to draw.  Those patterns often drew over parts of the pattern they drew earlier, but in this situation, it usually looks good because the new part of the drawing is similar to the old part and the transition is smooth.  If the pattern is going to take an hour to finish and it keeps drawing over itself, it looks really different every 10 minutes.  The problem with using high cycle count patterns was the amount of time the ball was spending at the edges of the table.  It's pretty boring to watch that type of motion because it isn't really contributing to the drawing.

That's what got me thinking about optimizing the patterns by stripping out all the unnecessary edge and corner to corner motion.  Now that the optimizer is written and working, I can generate patterns with very high cycle counts that extend well beyond the boundaries of the table knowing that the optimizer will take out all the "trash".

There are a few things that I do for every pattern.  I always home the machine before each pattern starts.  That leaves the ball at the lower left corner in all the images below.  I usually start the patterns along the bottom or left edge in the patterns below.  Sometimes that works out OK, but sometimes I have to save the pattern in reverse to get it to do that.  Once in a while, if a pattern wants to start along the top or right edge I will manually edit the file and add a couple G01 commands to move the ball to the starting point along those edges without crossing the table and leaving a track in the sand.

When you play with all the settings and let the patterns grow beyond the boundaries of the table, you can find some really interesting stuff:


110219_3.gcode
One technique I use a lot is to start with a very large basic shape, then set the grow step to a negative value.  That will cause the pattern to get smaller with each cycle.  If you use a high enough cycle count, the pattern will shrink to zero and then start expanding outward again, but flipped in orientation.

110219_4.gcode

A lot of the zig-zag lines come from playing with the track length and size.

110219_5.gcode

Another source of interesting effects is to use a non integer number of sides or lobes for the different base shapes that are available.  Try a polygon with 4.3 sides or a star with 5.6 points.

110219_6.gcode

Very often the Sandify preview looks quite different from the finished pattern on the table. In the example below, the messy looking stuff on the right side of the Sandify preview turns into the vertically oriented lines in the drawing.

The green ball along the top edge is the starting point of the pattern, and the red ball along the bottom edge is the end point.  The green squiggly line is the "track".


110219_7.gcode  Notice the ball is at the top edge- I must have saved this pattern in reverse so that the start would be along the bottom edge.
Another example- a lot of the messy looking stuff at the upper right corner is some of the first stuff drawn.  If this drawing were done in reverse, the messy stuff would be overwriting the "neater" later stuff.



The wandering back and forth in the pattern below is caused by using switchbacks.

heart3_.gcode
110219_8.gcode



circles3.gcode



jazz1.gcode



loopy_2.gcode

Sometimes you get exactly what you'd expect from the Sandify preview:



mishegoss4.gcode
The green ball on the left edge, below, indicates the starting point of the pattern.  The red ball near the center is the end point.  The green thing near the center is the "track" that is responsible for the waviness of the lines.  This pattern was saved as a reverse pattern so the start and end would be this way instead of the opposite.  If it started near the center, the ball would have left a track in the sand going from the edge to the center to start the pattern and that track would have shown up in the pattern.


heartfuzz1.gcode


mishegoss5.gcode




mishegoss6.gcode



yikes.gcode

The left side of the next two patterns look the same in the Sandify previews, but one pattern was saved in the forward direction and the other in reverse.



rolo1.gcode




rolo2.gcode


rolo3.gcode

mishegoss1.gcode (not quite finished)

Some of these patterns look really good, even 3 dimensional, from an angle, too...


If you're interested in the settings I used to generate these patterns, you can DL a zip file, here, of the "clean" gcode (optimized by trimify2x.pl) files.  Each file contains a header with the parameters used to generate the pattern.  You can enter those parameters into the appropriate boxes at Sandify.org and regenerate the same patterns (but use the dimensions of your own table).  If you regenerate the patterns, the file size will be much larger than those files that have been optimized by trimify2x.pl.

Wednesday, December 11, 2019

Still More Sand Table Updates

Another Problem


The Spice Must Flow's new, quieter mechanism was great, but I kept having a problem with it.  It would run OK for a while, then the mechanism would bind and the pattern would shift while making a terrible noise.

Then I saw a link to something interesting while looking at the Duet forums:

https://www.machinedesign.com/motion-control/linear-bearings-understanding-21-ratio-and-how-overcome-stick-slip-phenomenon

When you read an article like this, it can be difficult to apply to a real world situation where you don't know any of the forces or the coefficients of friction.  But even without numbers, the article provides useful concepts.  For example, keeping friction as low as possible is best (duh!), and a "longer" bearing is better than a shorter bearing.  Minimizing slop in the bearing will keep the carriage from tilting and binding.

In The Spice Must Flow, the Y axis worked fine, and can even run an erase pattern consisting of mostly Y parallel lines at 1000 mm/sec without any issues.  But the X axis was still problematic.  On certain patterns, the machine would run OK for a little while and then suddenly the ball would abruptly change path accompanied by a horrible noise.  I took the sand box off the table and watched the mechanism run for a while to try to see what was happening.  I noticed that the magnet carriage would wobble as it moved and then tilt a bit right before the noise and path change.

I redesigned the magnet carriage yet again, going back to a printable design that uses eight PTFE inserts as bearings so the printed plastic never contacts the X axis guide tube.  Four of those bearing inserts are fixed and the other four have screws behind them that allow adjustment of contact pressure or play against the X axis tube.  The bearings are spread apart to increase the stability of the whole carriage on the tube.

The new carriage uses 3 mm diameter steel pins to anchor the belts, spaced to match the pulley spacing on the ends of the X axis to ensure the belts remain parallel to the guide tube.

The new magnet carriage design uses 8x PTFE inserts acting as bearings, and uses the same spring and magnet as all the previous designs.  Screws that push on the PTFE bearings allow adjustment of play


I milled a 15 x 8 mm teflon strip, then cut it into 7 mm thick pieces using a Japanese pull saw with very sharp teeth and narrow kerf.  If you've never used a Japanese pull saw, I urge you to try one.  You'll never go back.  I milled the individual blocks to final 5x8x15 mm dimensions.

The new magnet carriage printed in PETG.  Screws hold the cover down, and 

The two halves of the new magnet carriage design.  There are slots for eight 5x8x15 mm PTFE bearings, four of which have screws to adjust their contact pressure or play on the X axis tube.  3mm steel pins to anchor the belts fit into the round holes next to the bearings.

I installed the new magnet carriage and it almost fixed the problem.  The mechanism still occasionally stalled on certain patterns.  I concluded that the mechanism is operating right at the torque limit of the motors.  The 1:5 speed step-up made things run quietly but gave up a little too much torque.  I decided that I needed to get some of the torque back by reducing the speed step-up from 1:5 to 1:4.

The 1:5 speed step-up was accomplished by putting 80 tooth pulleys on the motors driving 16 tooth pulleys on a shaft that spins the 40 tooth drive pulleys.  There are two easy ways to convert a 80/16 1:5 ratio to a 1:4 ratio.  I could either use 80/20 pulleys or 64/16 pulleys.  The 80 tooth pulleys I used originally had 5mm bore and I did a poor job of boring them out to 6.35 mm and they wobbled a bit as they rotated so I decided to replace them with 64 tooth pulleys.  I ordered and waited in vain for them to arrive from China, so I replaced the 16 tooth pulleys with 20 tooth pulleys.  I updated the config file on the controller to reflect the new drive ratio by changing steps/mm from 128 to 160.  That got back enough of the motor torque that the mechanism now works reliably on every pattern I've thrown at it.  The noise level isn't much different than it was at 1:5. 

Another Noise


Once the mechanism was working reliably I went back to attacking noise and one I hadn't previously noticed became apparent.  The machine would make a clunking sound when motion along the X axis reversed direction near the center of the table. 

A little investigation found that the belt tension was deforming the frame members and causing the Y axis rails to bow outward.  The result was excessive slop in the fit of the X axis between the Y rails near the center of the table.  The clunking sound was caused by the entire X axis shifting between the two Y axis rails when the X axis reversed direction.  I cut a strip of plywood the width of the table, drilled and installed a couple screws and t-nuts then mounted it under the table between the two Y axis rails.  Offsetting the ends slightly pulled the Y axis rails back into parallel and allowed me to adjust the X axis bearings so there's no more clunking when the X axis reverses.

More Changes to Come


A future redesign of the X axis may include a spring on one of the bearings to keep the X axis stable, and larger pulleys using flanged ball bearings to get quieter, lower friction operation.