Tag Archives: 3D printing

Chess Piece Replacement Project

Posted 15 March 2019,

A week or so ago a family friend asked if I could print up a replacement part for a chess set.  I wasn’t sure I could, but what the heck – I told them to send it to me and I would do my best.  Some time later a package arrived with the piece (shown below) to be duplicated – a pawn I think.

Chess piece to be duplicated

Chess piece to be duplicated

The piece is about 43 x 20 x 20 mm, and as can be seen in the above photos, has a LOT of detail.  I didn’t know how close I could come, but I was determined to give it the old college try!

3D Scanning:

The first step was to create a 3D model of the piece.  I was semi-successful in doing something similar with an aircraft joystick about five years ago, but that piece was a lot bigger, and had a lot less detailed surface.   This previous effort was done using Autodesk Capture123, and it was a real PITA to get everything right.  Surely there were better options now?

My first thought was to utilize a professional 3D scanning service, but this turned out to be a lot harder than I thought. There is a LOT of 3D scanning hardware out there now, but most of it is oriented toward 3D scans of industrial plants, architecture installations and big machinery.  Very little to be found in the way of low-cost high-resolution 3D scanning hardware or services.  There are, of course, several hobbyist/maker 3D scanners out there, but the reviews are not very spectacular.  I did find two services that would scan my piece, but both would charge several hundred dollars for the project, and of course would require a round-trip mailing of the part itself – bummer.

Next, I started researching possibilities for creating a scan from photos – basically the same technique I used for the joystick project.  While doing this, I ran across the ‘Photogrammetry’ and ‘Photogrammetry 2’ video/articles produced by Prusa Research, the same folks who make the Prusa Mk3 printer I have in my lab – cool!  Reading through the article and watching the video convinced me that I had a shot at creating the 3D model using the Meshroom/AliceVision photogrammetry tool.

At first I tried to use my iphone 4S camera with the  chess piece sitting on a cardboard box for the input to Meshroom, but this turned out to be a disaster.  As the article mentioned, glossy objects, especially small black glossy objects, are not good candidates for 3D photogrammetry.  Predictably, the results were less than stellar.

Next I tried using my wife’s older but still quite capable Canon SX260 HX digital camera.  This worked quite a bit better, but the glossy reflectivity of the chess piece was still a problem. The wife suggested we try coating the model with baby powder, and this worked MUCH better, as shown in the following photos.  In addition, I placed the piece on a small end table covered with blue painter’s tape so I would have a consistent, non-glossy background for the photos.  I placed the end table in our kitchen so I could roll my computer chair around the table, allowing me to take good close-up photos from all angles.

End table covered with blue painter’s tape

Chess piece dusted with baby powder

Chess piece dusted with baby powder

Chess piece dusted with baby powder

Next, I had to figure out how to use Meshroom, and this was both very easy and very hard.  The UI for Meshroom is very nice, but there is next to no documentation on how to use it.  Drag and drop a folder’s worth of photos, hit the START button, and pray.

Meshroom UI

As usual (at least for me), prayer was not an effective strategy, as the process crashed or hung up multiple times in multiple places in the 11 step processing chain.  This was very frustrating as although voluminous log files are produced for each, the logs aren’t very understandable, and I wasn’t able to find much in the way of documentation to help me out.  Eventually I stumbled onto a hidden menu item in the UI that showed the ‘image ID’ for each of the images being processed, and this allowed me to figure out which photo caused the system to hang up.

Meshroom UI showing hidden ‘Display View ID’s’ menu item.

Once I figured out how to link the view ID shown in the log at the point of the crash/hangup with an actual photograph, I was able to see the problem – the image in question was blurred to the point where Meshroom/AliceVision couldn’t figure out how it fit in with the others, so it basically punted.

Photo that caused Meshroom/AliceVision to hang up

So, now that I had some idea what was going on, I went through all 100+ photos looking for blurring that might cause Meshroom to hang up.  I found  and removed five more that were questionable, and after doing this, Meshroom completed the entire process successfully – yay!!

After stumbling around a bit more, I figured out how to double-click on the ‘Texturing’ block to display the solid and/or textured result in the right-hand model window, as shown in the following photo, with the final solid model oriented to mirror the photo in the left-hand window.

textured model in the right-hand window oriented to mirror the photo in the left-hand window

So, the next step (I thought) was to import the 3D .obj or .3MF file into TinkerCad, clean up the artifacts from the scanning process, and then print it on my Prusa Mk3.  Except, as it turns out, TinkerCad has a 25MB limit on imports due to its cloud-based nature, and these files are way bigger than 25MB – oops!

Back to the drawing board; first I looked around for an app I could use to down-size the .obj file to 25MB so it would fit into TinkerCad, but I couldn’t figure out how to make anything work.  Then I stumbled across the free Microsoft suite of apps for 3D file management – 3DPrint, 3DView, and 3DBuilder.  Turns out the 3DBuilder app is just what the doctor ordered – it will inhale the 88MB texturedMesh.obj file from Meshroom without even breaking a sweat, and has the tools I needed to remove the scanning artifacts and produce a 3MF file, as shown in the following screenshots.

.OBJ file from Meshroom after drag/drop into Microsoft 3DBuilder. Note the convenient and effective ‘Repair’ operation to close off the bottom of the hollow chess piece

Side view showing all the scanning artifacts

View showing all the disconnected scanning artifacts selected – these can be deleted, but the other artifacts are all connected to the chess piece

The remaining artifacts and chess piece rotated so the base plane is parallel to the coordinate plane, so it can be sliced away

Slicing plane adjusted to slice away the base plane

After the slicing operation, the rest of the scanning artifacts can be selected and then deleted

After all the scanning artifacts have been cleared away

Chess piece reoriented to upright position

Finished object exported as a .3MF file that can be imported into Slic3r PE

Now that I had a 3D object file representing the chess piece, I simply dropped it into Slic3r Prusa Edition, and voila! I was (almost) ready to print!  In Slic3r, I made the normal printing adjustments, and started printing trial copies of the chess piece.  As usual I got the initial scale wrong, so I had to go through the process of getting this right.  In the process though, I gained some valuable information about how well (or poorly) the 3D scan-to-model process worked, and what I could maybe improve going forward.  As shown in the following photo, the first couple of trials, in orange ABS, were pretty far out of scale (original model in the middle)

I went through a bunch of trials, switching to gray and then black PLA, and narrowing the scale down to the correct-ish value in the process.

The next photo is a detail of the 4 right-most figures from the above photo; the original chess piece is second to right.  As can be seen from the photo, I’m getting close!

All of the above trials were printed on my Prusa Mk3 using either orange ABS or gray (and then black) PLA, using Prusa’s preset for 0.1mm layer height.  Some with, and some without support.

After the above trials, I went back through the whole process, starting with the original set of scan photos, through Meshroom and Microsoft 3D Builder to see if I could improve the 3D object slightly, and then reprinted it using Prusa’s 0.05mm ‘High Detail’ settings.  The result, shown in the following photos is better, but not a whole lot better than the 0.1mm regular ‘Detail’ setting.

Three of the best prints, with the original for comparison. The second from right print is the 0.05mm ‘super detail’ print

I noticed that the last model printed was missing part of the base – a side effect of the slicing process used to remove scanning artifacts.  I was able to restore some of the base in 3D Builder using the ‘extrude down’ feature, and then reprinted it. The result is shown in the photo below.

 

“Final” print using Prusa Mk3 with generic PLA, Slic3r PE with 0.1mm ‘Detail’ presets, with support

Just as an aside, it occurred to me at some point that the combination of practical 3D scanning using a common digital camera and practical 3D printing using common 3D printers is essentially the ‘replicator’ found in many Sci-Fi movies and stories.  I would never thought that I would live to see the day that sci-fi replicators became reality, but at least in some sense it has!

Stay tuned!

Frank

 

 

 

 

 

 

 

 

Better Battery Charging for Wall-E2

Posted 08 February 2019,

After recovering from my bout with #include file hell, I’m back to working on Wall-E2, my autonomous wall-following robot.  In a previous post I described the integration of the TP5100 charger module into Wall-E2’s system, but I have lately discovered that the TP5100 end-of-charge (EOC) detection scheme isn’t very reliable in my application.  The TP5100 uses a current threshold to determine EOC, which works fine in a normal application where the battery pack isn’t simultaneously supplying current to the load, but in my application, Wall-E2 stays active and alert while it’s docked at it’s feeding station; it has to, in order to be able to respond to the EOC signal and detach itself.  So, the current going through the TP5100 never goes below the idling current for Wall-E2, which is on the order of 300mA or so.  This is enough to keep the charging current above the TP5100 EOC threshold, and so Wall-E2 hangs on to the charging station forever – not what I had in mind!

Life would be good if I somehow measure Wall-E2’s idling current while on charge and the total charging current.  Then I could subtract the two values to get the excess current, i.e. the current going into the battery but not coming out – the current actually going into increasing the battery charge level. When this current falls below an appropriate threshold, then charging could be terminated. This scenario is complicated by the need to measure the current on the high side of the charging circuit and of the +Vbatt supply to the rest of the system.

Well, as it turns out, Adafruit (and I’m sure others) makes a high-side current sensor just for this purpose, based on the 1NA219 and INA169 chips. The INA219 module reports current via an I2C connection, while the 1NA169 module provides a open-emitter current source proportional to the current through an onboard 0.1Ω resistor (see this data sheet for details).  My plan is to use two of these modules; one at the charging circuit input, and a second one at the 8.4V +VBatt supply from the battery to the rest of the system. Since Wall-E2 stays awake during charging, it should be simple to monitor both currents and decide when charging is complete (or complete enough, anyway).  As a bonus, I should be able to extend the life of Wall-E2’s battery pack by terminating the charge at less than 100% capacity. See this very informative post by François Boucher for the details.

03 March 2019 Update:

After the usual number of mistakes and setbacks, I think I have the dual current sensor feature working, and now WallE-2 charges by monitoring both the battery voltage and the actual charging current (total current measured at the charging connector minus the run current measured on WallE-2’s main power line).  As a final test, I discharged the main battery pack at about 1A for about 1 hour, and then charged it again using the two-current method. As shown in the Excel plots below, Charging terminated when the actual battery charging current fell below 50mA.

Complete charge cycle, after discharging at approx 1A for approx 1 Hr

Last 20 minutes or so of charge operation, showing detail of end-of-charge behavior

two 1NA169 high-side current sensors mounted in the battery/motor compartment.  Note the 3D-printed mounting plates.

Here is a showing the installation of the two 1NA169 sensor modules in WallE-2’s battery compartment.  The one on the left measures running current, and the one on the right measures total current (charging + running).

The following figure shows the system schematic for WallE-2, with the two new 1NA169 sensors highlighted

System schematic with locations of new current sensors highlighted

Now that I have the current sensors and the new charge algorithm working, it’s time to go back an take another look at the charge/discharge characteristics of the Panasonic 18650B cells I’m using to see if I can extend their life with a more intelligent charge/discharge scheme.  The following plot shows the charge characteristics for this cell.

Charge plot for the Panasonic 18650B LiPo cell

As noted by François Boucher, the red line above is the total energy returned to the battery during charge.  As he notes, the battery acquires about 90% of its total capacity in the first 105 minutes of the charge period, when charged at 0.5C at 25C.  My battery pack is a 2-cell parallel x 2-cell series stack, and currently I’m charging to a 50mA cutoff.  According to Boucher, this is way too low – I’m charging to almost 100% capacity and thereby limiting the cycle life of the battery pack.  Looking at the end-of-charge detail plot above (repeated below), I should probably use a charge current threshold of around 500mA charging current (250mA per cell in the parallel stack) for about 90% capacity charge.

End-of-charge detail with approximate 90% charge current highlighted

On the discharge side, Panasonic’s Discharge Characteristics plot below shows a discharge down to 2.50V/cell.  WallE-2’s typical current drain is about 1A or about 0.3 – 0.5C, and the cutoff I’m using is 3.0V cell.  From the plot, this gives about 3150mAH of the approximately 3300mAH available at 0.5C, or about 95%.  So, it looks like I should raise the discharge cutoff voltage to about 3.2V or about 3000mAH of the 3300mAH available, or about 90%.

Conclusion:

So revisiting WallE-2’s battery management seems to have paid off; I now have much better visibility into and control over charge/discharge of the 18650B battery pack, and at least some expectation that I can use WallE-2’s new found battery super powers for good rather than evil ;-).

Stay tuned!

Frank

 

Dawes Lightning 1500 Stem Bracket

Posted 13 June 2018

A friend got a new Dawes Lightning 1500 bike, and wants to install a ‘Swing Grip’ handle accessory on the piece (the ‘stem’) that connects the front fork post to the handlebars.   I had printed up a similar bracket for Ray in the past, and so he asked if I could do one for this bike too.

I had him bring the bike over so I could get a good look at the ‘stem’ shape and then built up a prototype in ABS.   I had a lot of difficulty with getting the ABS to print without lifting off the heated bed, and so eventually had to use a raft, which sucked because the raft stuck to the part too well.   When I got the part done I tried it on the bike, and of course it didn’t fit, but it did allow me to see where the design had to be changed.

Printing Notes:

I printed the PLA part with

layer height:   0.2mm

extruder temp: 205 for layer 1, 195 for 3 & up

print bed temp: 70C

speed: 30mm/sec

Z-offset: -0.05mm

I had to work a bit to get the PLA to stick to the bed, and the right combination was the above settings, plus attention to getting the bed levelled properly and the correct Z-axis offset so the first layer was ‘squished’ significantly.

 

 

To a man with a hammer, …

Posted 17 March 2018,

To paraphrase the saying, “to a man with a hammer, every problem looks like a nail”, “to a man with a 3D printer, every problem looks like a 3D printing opportunity”.   And that’s pretty much what happened when I ran across the problem of adapting some  80mm wheels to my Wall E-2 robot, which came originally with 65mm versions.   The extra 15mm diameter/7.5mm radius doesn’t sound like much, but it makes a  huge difference when navigating over carpet or other small obstacles (like my wife’s slippers).

After a  lot of work, I finally was able to print four reasonable quality adaptors, and thought I was home free.   Unfortunately, I soon learned that despite my best efforts, the printed adaptors were no match for physics; the wheel eventually worked its way off the motor shaft, just as before – it just took a little longer ;-).

After the usual number of curses, imprecations, and woe-is-me’s, I finally decided to use whatever was left of my engineering brain to actually look at the physics of the situation.   When I did so, I realized that my adaptor idea was never going to work.   While the adaptor did indeed (after the aforementioned ‘lot of work’) provide for a better fit between the 80mm wheel receptacle and the motor shaft, it also moved the wheel another 9mm or so away from the robot chassis, which put the wheel center of pressure (CP) well outside the adaptor-to-motor shaft parting plane.   This meant that the wheel would always be trying to pry the the adaptor off the shaft, and it didn’t take all that long for it to succeed :-(.   The following photo illustrates the problem

80mm wheel with 3D-printed adaptor on the left, same wheel directly attached to motor shaft on the right

So, contemplating this problem while drifting off to sleep I was struck by a solution; I could use a small roll pin inserted through the wheel and motor shafts to literally pin them together.   The geometrical physics would still cause the wheel to flex the shaft, but the forces wouldn’t be able to overcome the strength of the metal roll pin.   Because I knew I would forget this insight if I left it until morning, I staggered out of bed and jumped onto the McMaster-Carr site (they have  everything!) to look for an appropriately sized roll pin.   I found a 1 x 6mm roll pin that would be perfect for the job, and if I ordered them now they would probably already be on my doorstep when I woke up in the morning.

McMaster-Carr metric roll pins

However, while I was doing the necessary measurements on the motor shaft, I noticed the motor shaft had a axial hole in it, and so did the wheel; hmm, maybe I could simply run the roll pin through the axial hole, instead of cross-wise?   Then I thought – wait that hole looks to be slightly smaller than 3mm – maybe I could simply drill/tap it for 3mm and use a 3mm screw (of which I had plenty in different lengths) instead of a roll pin?

So, in just a few minutes I had drilled & tapped the axial hole in the motor shaft of one of my spare motors, drilled out the wheel hole for 3mm clearance, and firmly screwed the wheel to the shaft (the right-hand wheel in the first photo above) – cool!

Now all I have to do is modify all four wheel shafts for 3mm clearance, and all four motor shafts to accept a 3mm screw – piece of cake!

As can be seen in the above photos, the 80mm wheels are now much closer to the chassis.   The wheel guards are now much too wide, but I may keep them that way for the moment, as I have already adjusted the charging station lead-in rails to accommodate the (now unnecessary) greater wheelbase – oh well 😉

So, the moral of this little story is:   Just because you have a 3-D printer doesn’t mean the solution to every problem is a new 3-D printed piece; and maybe to keep one’s eyes/brain open for even better solutions as they might come along when least expected!

Stay tuned,

Frank

 

 

 

 

 

 

 

Printing an ABS Shaft Adaptor for 80mm Wheel

Posted 25 January 2018

Over the last few days I have been struggling with a project to 3D print a small adaptor to allow me to mount some 80mm wheels I bought some time ago to my Wall-E2 autonomous wall-following 4-wheel drive robot.

The original robot came with 56mm wheels and this gave Wall-E2 very little ground clearance.   I found some 80mm wheels that I thought would do the trick nicely, but when I tried them, it quickly became apparent that the shaft receptacle on the wheel was significantly larger than the motor shaft, leading to a very bad wobble and catastrophic wheel departures – oops!

Lightweight 4WD Drive Aluminum Mobile Dolly Car Robot Platform for Arduino

 

original 56mm wheel and companion motor

Ebay ‘Arduino Robot’ motor dimensions

80mm wheel

After some troubleshooting, I discovered that the new 80mm wheels have a shaft receptacle that measures 5.9mm long and 3.6mm wide, while the motor shafts are 5.4mm long and 3.5mm wide.   The width is OK, but the longer length is causing the problem.

After thinking (and cursing) a bit, I decided to try printing an adaptor.   The larger diameter wheels are also considerably thinner (20mm or so vs 30mm), so there should be room for an adaptor part, as shown below

shaft adaptor for 80mm wheel

And threw it on my PowerSpec 3D PRO (Flashforge Creator Pro knockoff).   After just a little fiddling, I got some nice parts, and thought I was done.   A couple of days later, I noticed one of the parts was just a little loose on its shaft, so I said to myself – “I’ll just print off another one”.   Unfortunately, what came off the printer was really ugly, and completely unusable, even though that same printer had produced nice parts just a few days ago – WTF!?   Clearly I had forgotten what magic I had wrought the first time, so now I had to go back and recreate it – bummer.   As part of my penance for this crime, I am writing this post so the next time I want to do this, I’ll have the print settings recorded.

Print Settings for ABS

The significant factors in how to get good prints with ABS on this printer appear to be

  • Print speed
  • Extrusion factor

The first thing I did was slow the print speed down, but this had only a minor effect on print quality.   Going slower helped, but even very slow speeds (like 10mm/sec) didn’t result in clean edges on the male part of the adapter. However, the female portion was very clean, which left me a bit puzzled – why one part but not the other?   I finally realized that the difference was that the female piece was perfect because the hole perimeter was the first thing laid down at each slice, then the outside perimeter, and finally the fill material was added last.   This meant that the hole perimeter had a chance to cool and solidify before the fill material impinged on its outer surface, and this meant that the perimeter stayed in the same shape as originally laid down.   When printing the male part, however, the outer perimeter was laid down first, and then the fill material was immediately added, before the outer perimeter had a chance to cool and solidify, even at the slower speeds.   The material making up the fill was pushing the outer perimeter out of shape.

This led me to focus on the extrusion factor.   Reducing the extrusion factor from 1.00 to 0.95 had a significant positive impact on the print quality of the male portion of the adaptor.   Reducing it again to 0.90 resulted in an even better print, as did a further reduction to 0.85.   However, at the 0.85 value, I started to see some degradation in the quality of the female portion, so I backed off to 0.90 as the final value.   The following image shows the last seven prints.   All were printed at either 20mm/sec or 10mm/sec, and the last three on the right were printed with 10mm/sec and extrusion factors of 0.95, 0.90, and 0.85 respectively.

The last seven prints. the last three on the right were printed at 10mm/sec and with extrusion factors of 0.95, 0.90, and 0.85 respectively

Original and new wheels, with completed adaptor shown

Bottom Line (PowerSpec 3D Pro, Simplify3D):

  • Material: Gray ABS
  • Extruder temp: 230 (not critical 220-240 should be OK)
  • Bed temp: 110 (not critical, 100 should do too)
  • Speed: 20 or 10mm/sec (maybe faster would be OK, but not much)
  • Extrusion factor: 0.95 or 0.90

 

 

 

 

A New Chassis For Wall-E2, Part II

Posted 17 November 2017

In my ongoing quest to give Wall-E2 a bigger/roomier ride, I am continuing the process of moving all Wall-E2’s stuff to the new chassis, and modifying the charging station to work properly with the new wide-body model.

Second Deck Sensors:

Even with the wider footprint, there’s not enough real estate to easily mount the three distance sensors (LIDAR for forward distance, and acoustic for left/right distance).   I could shoe-horn it all in, but it would look messy and would leave all Wall-E2’s electronics exposed to potential damage from furniture, cats, careless humans, etc.   So I decided to transplant the second deck, complete with all the sensors, to the new chassis.   This looked to be a real PITA, until I let go of the notion that the 60mm stand-offs had to remain in the same locations. Once I did that, things got a  lot easier 😉

IR Homing Module:

This was a straightforward transplant, especially since all the detection/demodulation is being

3D printed spacers for the motor controller PCBs

done by a Teensy 3.2 physically attached to the sunshade. All I had to do was drill the mounting   holes, add two more press-fit nuts, and screw on the module.

Arduino Mega Processor and Motor Controllers:

These two items came over as a group, as that way I didn’t have to disconnect anything – my kind of transplant!   However, while I was at it, I decided to neaten things up a bit by printing spacers for the motor controllers; this isolates the underside of the PCBs from the metal chassis, and provides a nice flat surface for mounting the controllers to the chassis with double-sided tape – a win-win-win (the last ‘win’ was because I got to use my 3D printer some more!)

Arduino Mega processor, motor controllers, rear taillight assembly, and IR homing module transplanted

Charging Station Modifications:

I was  not  looking forward to modifying the charging station to work with the new wider chassis.   The charging station electronics assembly is non-trivial, and it would be a real PITA If I had to reprint the frame and transfer all the electronics. Fortunately for me, this turned out not to be the case.    By a happy coincidence, the distance from the right-hand guide rail to the center of the power receptacle was exactly the same for the new chassis as for the old one, so all I had to do was re-position the left-hand rail to accommodate the wider tread spacing. Well, there was one minor glitch – the charging station has two physical stops, and the one that mated with the left-hand wheel guard on the old chassis now didn’t hit anything, so I had to print a small 5mm thick spacer and double-sided tape it to the front of the existing stop.

Closeup of the spacer for the right-hand charging station stop

Front view showing left and right charging station stops (with spacer added to right one)

18 November 2017 Update:

I’ve got almost everything transplanted over now, as shown in the following photos:

Side view without the sensor deck, showing that all modules are in place

Side view showing the sensor deck in place.

end-on view showing the difference between the old and new chassis dimensions

There’s still a ton of work to be done; The latest version of the charger PCB still hasn’t arrived from Bay Area Circuits, so I still need to do all that, and then wire the finished module into the battery compartment. Also, I’m having to redo the front bumper guards, as I have found they are somewhat fragile due to the way in which they were printed – bummer!   However, it shouldn’t be  too long before I can take the new model out for a spin! ;-).

Stay tuned!

Frank

 

 

 

A New Chassis For Wall-E2, Part I

Posted 06 November 2017

Back in May of this year I came to the conclusion that I was never going to get my new four-cell battery pack (4ea 18650 3600mAH 3.7V LiPo cells connected as 2ea 7400mAH 3.7V stacks) and its companion charger module to comfortably fit into Wall-E2’s current chassis.   It all fits, but only with a considerable amount of pushing and shoving which has invariably resulted in damage to something – a connector, a wire, or something else vital.

Bottom side view of 4WD robot showing battery packs and charging module

Bottom rear view of 4WD robot showing battery packs and charging module

So, I spent some quality time online looking for a new, larger home for Wall-E2, and found this chassis

Lightweight 4WD Drive Aluminum Mobile Dolly Car Robot Platform for Arduino

This chassis has an internal cavity width of about 14cm compared to 10.5cm for Wall-E2’s current ride.   This extra inch or so make all the difference in the world for comfortable installation of the battery pack and charger.

After getting this chassis on order, I basically forgot about it while I was working on the square-wave modulated IR homing project.   Then when my grandson Danny and his family visited in August, we dug out the kit and assembled it.   Danny wasn’t all that impressed with the quality (well, neither was I, but I didn’t expect all that much for $30 either).   After looking at both chassis (Wall-E2’s current ride and the new one), Danny suggested that maybe we could transplant the motors from the new chassis into the old one and get enough additional space from the different form factors to solve the battery problem.   At the time I pooh-poohed the idea, and put the new chassis back on the shelf to be forgotten again.

However, after finishing up the IR homing project last month, I decided I would actually try this trick and see what happened.   So, I laboriously swapped all four right-angle motors from the new chassis to the old one, and … RATS!!   As the photos below show, no real change in the available room for the charger/battery pack combination.   Well, at least I tried ;-).

So, now I’m back to swapping chassis (wow – plural form of ‘chassis’ is ‘chassis’ – go figure) instead of motors.

One of the major shortcomings in the new model was the cheapness of the threaded holes in the frame components.   The frame metal is so thin that instead of drilling and tapping the material, the holes were punched in a way that left the punched-out metal in the hole, and this material was tapped with the machine thread.   Needless to say, this lasted for about one (or fewer) screw/unscrew cycle before stripping out – bad design!.   Fortunately I knew how to fix this problem, with the help of McMaster-Carr.   I went to their site and ordered a bunch of press-fit nuts (also called PEM-nuts for historical reasons)

Press-fit nuts for my new robot chassis

In case you have never dealt with McMaster-Carr, they are incredibly quick.   I normally tell people that once I click on the ‘order’ button, I get up, walk to my front door, open it, and get hit in the chest by the shipped order! ;-).

Once I got the nuts, I replaced all the threaded holes on the new chassis with these wonderful little gadgets.   I used a #16 number drill to drill out the holes, and pressed the nuts in the new holes with a pair of cheap gas pliers – done!

As seen below, there is a  lot more room in the new model

In fact, there is so much room that now I have to figure out how to keep the batteries and charging module from sloshing around in there.   Fortunately I have a fertile imagination, TinkerCad, and a 3D printer – so I designed and printed up a battery box, and a prototype stand-off design for the PCB, as shown below.

The next part of the puzzle will be to figure out how all that stuff (IR Homing Module, laser and ultra-sonic distance sensors, motor controllers and the main controller) is going to fit on the new chassis.

Stay tuned!

Frank

 

 

 

IR Homing Module Integration, Part III

Posted 20 August 2017

I’m writing this post from our Kids’ place in St. Louis, which just happens to be in the path of totality for the upcoming solar eclipse.  As usual, I brought my project stuff with me so I can work in the off moments, but this trip has a bonus in that I have managed to suck my 14 year-old grandson Danny into helping me with the robot project.  He also has my old PrintrBot ‘Simple Metal’ 3D printer, so he is able to print up new IR detector holders as required.

So, the first thing we did was to print up a new holder with a 30 º angular offset for the detectors; this is something I forgot to do with the previous model.  With this setup, we got the following results from an azimuth scan.

Azimuth scan for 2-detector model with 30-deg angular offset and center divider

meanwhile, my friend and mentor John Jenkins came up with a set of simulated azimuth response curves (shown below) that showed that the center divider (apparently originally intended to make steering more responsive) was more of a liability than an asset.  Turns out (at least according to John’s results) that removing the divider makes the (diff/sum) ratio curve smoother and more linear in the critical boresight region.

Loader Loading...
EAD Logo Taking too long?

Reload Reload document
| Open Open in new tab

Download

So, we printed up a new holder with the center divider removed (and in the process made the walls thicker to block IR transmission through the material), and took some more measurements.

 

Charging Station System Integration. Part III

Posted 15  April 2017

In my previous post on this subject, I described some IR homing tests with and without the overhead incandescent lights, and  the development of a ‘sunshade’ to block out enough of the IR energy from the overhead lamps to allow Wall-E2 to successfully home in on the IR beam from the charging station.  At the conclusion of that post, I had made a couple of successful runs using a temporary cardboard sunshade, and thought that a permanent sunshade would be all that I needed.

However, after installing the sunshade (shown below), I discovered that the homing performance in the presence of overhead IR lamps was marginal when the robot’s offset distance from the wall was more than about 50 cm.

Sunshade, oblique view

Sunshade, side view

Sunshade, front view

Apparently  the IR interference was causing the robot to not respond to the IR beam until too close to miss the outer lead-in rail.  This issue was explored in an earlier post, but I have repeated the relevant drawings here as well.

 

Tilted gate option. The tilt decreases the minimum required IR beam capture distance from about 1.7m to about 1.0m

Capture parameters for the robot approaching a charging station

When the robot is ‘cruising’ at more than about 50 cm from the tracked wall,  the IR interference from the overhead lamps prevents the robot from acquiring the charging station IR beam until too late to avoid the outer lead-in rail, even in the 13 º tilted rail arrangement in the first drawing above.

 

So, what to do?  I am already running the IR LED at close to the upper limit of the normal operating current, so I can’t significantly increase the IR beam intensity – at least not directly.  I can’t really increase the size of the ‘sunshade’ dramatically without also significantly affecting the IR beam detection performance.  What I really needed was a way of increasing the IR beam intensity  without increasing the LED current.  As it turns out, I spent over a decade as a research scientist at The Ohio State University ElectroScience Lab, where I helped design reflector antenna systems for spacecraft.  Spacecraft are power and weight limited, so anything that can be done to improve link margins without increasing weight and/or power is a  good thing, and it turns out you can do just that by using  well-designed reflector dishes to focus the microwave communications energy much like a flashlight. You get more power where you want it, but you don’t have to pay for it with more power input; the only ‘cost’ is the insignificant added weight of the reflector structure itself – almost free!  In any case, I needed something similar for my design, and I happened to have a small flashlight reflector hanging around from a previous project – maybe I could use that to focus and narrow the IR beam along the charging station centerline.

LED flashlight reflector

So, using my trusty PowerSpec PRO 3D printer and TinkerCad, I whipped up an experimental holder for the above reflector, as shown below

Experimental 3D-printed flashlight reflector holder

Reflector mounted on experimental holder

IR LED mounted on reflector

A couple of quick bench-top tests convinced me I was on the right track; At 1m separation between the IR LED/reflector combination and the robot, I was able to drive the robot’s phototransistors into saturation (i.e. an analog input reading of about 20 out of 1024 max), where before I was lucky to get it down to 100 or so.  However, this only happened when I got the LED positioned at the reflector focal point, which was tricky to do by hand, but not too bad for a first try!

Next, I tried incorporating the reflector idea into the current charging station IR LED/charging probe fixture, as shown in the following photo. This was much closer to what I wanted, but it still was too difficult to get the IR LED positioned correctly, and this was made even more difficult by the fact that I literally could not see what I was doing – it’s IR after all!

New reflector and old charging station fixture designs

However, the reflector focusing performance should be (mostly) the same for IR and visible wavelengths, so I should be able to use a visible-wavelength LED for initial testing, at least.  So, I set up a small white screen 15-20 cm away from the reflector, and used a regular visible LED to investigate focus point position effects.  As the following photos show, the reflector makes quite a difference in energy density.

Green visible LED, hand-positioned near the focal point

Pattern without the reflector

Next, I used my Canon PowerShot SX260HS digital camera as an IR visualizer so I could see the IR beam pattern. As shown below, the reflector does an excellent job of focusing the available IR energy into a tight beam

IR beam visualized using my Canon PowerShot SX260HS digital camera

IR LED, without reflector

Next, I made another version of the reflector holder, but this time with a way of mounting the LED more firmly at (or as near as I could eyeball) the reflector focal point.

Reflector holder modified for more accurate LED mounting

With this modification, I was able to get pretty good focusing without having to fiddle with the LED location, so I set up some range tests on the floor of my lab.  With LED overhead lighting (not incandescent), I was able to get excellent homing performance all the way out to 2m, as shown in the following photos and plots

Range testing the IR reflector in the lab. Distance 2m

IR Detector response vs orientation at 2m from reflector, in the lab

IR reflector beam pattern at 2m, visualized using digital CCD camera

After this, I decided to try my luck again out in our entry hallway, with the dreaded IR interference from the overhead lighting and/or sunlight.   I installed the lead-in rails in the ’tilted’ arrangement, and then performed a response vs orientation test with the robot situated about 2.5m from the IR LED/reflector assembly, in natural daylight illumination with the overhead incandescents OFF.  This produced the curves shown in the plot below.

Robot response vs orientation test setup, 2.5 m from tilted lead-in rails & LED/reflector assembly

IR detector response vs orientation test, 2.5 m from IR LED/Reflector assembly

In  the above Excel plot, the individual detector response minimums can be clearly seen, with minimum values in the 200-300 range, and off-axis responses in the 800-1000 range.  This should be more than enough for successful IR homing.

After seeing these positive responses, I ran some homing tests starting from this same general position.  In each run, the robot started off tracking the right-hand wall at about 50 cm  offset.  One run was in daylight with the overhead lights OFF, and another was in daylight with the overhead lights ON.  As can be seen in the videos below.

Both of the above test runs were successful.  The robot started homing on the IR beam almost immediately, and was successfully captured by the lead-in rails.

So, it is clear the reflector idea is a winner – it allows the robot to detect and home in on the IR beam from far enough away to not miss the capture aperture, even in the presence of IR interference from daylight  and/or  overhead incandescent lighting.

Next step – reprint the IR LED reflector holder with the charging probe holder included (I managed to leave it out of the model the last time), and verify that the robot will indeed connect and start charging.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PowerSpec 3D PRO Build Plate LED Lamps

Posted 03 April 2017

In the year or so since I started printing with my trusty PowerSpec 3D PRO (Microcenter clone of the FlashForge Creator PRO), I have struggled to see what was happening in the first few layers of problem prints.  The extruder/feed motor assembly is so big that it blocks  most of the sight line to the build surface.  What is left is a very shallow viewing angle, which is mostly shadowed by the print assembly.  Over time, I have found that hanging one of my goose-neck LED bench lamps over the top edge of the cabinet on either the left or the right side gave me a much better view – the restricted viewing angle was unchanged, but a  lot more light was thrown on the subject, literally.  However, this was an inelegant solution to say the least, as the lamp was apt to fall off the printer at the most inopportune times.

As usual, I kept thinking of ways to improve this situation, and finally came up with the idea of seeing if I could find some small LED work lights that I could permanently attach to the printer.  After some Googling around, I came up with a  2-lamp LED Auxiliary Light Kit (p/n DRL-CW3-SM-9) offered by superbrightleds.com  for $24.95/pair – nice!

DRL-NW3-SM 12-24V 9W Auxiliary LED Light Kit (2 lamps)

After some fiddling around and some goofs, I arrived at an arrangement I liked.  The lamps are mounted at the top of the cabinet and are pointed down so they illuminate the entire build surface, but are physically offset enough so the plastic top closure assembly can still be removed and put back on without problems (this was one of the goofs – the first arrangement I tried made removing/replacing this piece very tedious).  The shots below show the setup.

To power the lamps, I used a ‘Mean Well’ APC-25-1050 24VDC constant-current LED driver supply from ledsupply.com.  This is an incredibly cheap switch-mode power supply that delivers 1.05A constant current, with an output voltage from 12-24V.  This matched well with the 12-24V input spec for the LED auxiliary lamp, so I was in good shape.   I had a couple of these hanging around from a previous project where I  converted a crappy Lowe’s LED clip-lamp to a robust high-power LED lamp, so I got a two-fer (didn’t have to research/buy a power supply, and used up some of my excess stock – yay!).

For  control, I decided to use individual power switches, mounted at the rear left & right of the cabinet.  I had some small SPDT power switches available, so I printed up a nice little housing with integrated  zip-tie anchor points for cable strain relief, and then ran a common power run down the back center of the cabinet to the power supply mounted on the back of the cabinet, below the right filament spool.

The following photos show the arrangement, and the build plate illumination during the first few layers of a test print.  Enjoy

Old vs New. Hanging bench lamp in foreground, new permanently mounted LED lamp in background

New LED lamps in action. Note the build plate illumination.

View from back of printer showing both LED lamps and ON/OFF switches

Mean Well APC-25-1050 1A constant-current LED power supply mounted at rear bottom of the cabinet

Build plate illumination with both LED lamps ON

Test print with both LED lamps ON

Test print with both LEDs OFF

View from top during test print, both LED lamps ON