Back in November of 2020, I posted about some wall-tracking exercises using my Office ‘sandbox’. Since then I have done some work on the charging station to make it more robust, and on Wall-E2’s ability to home in on and connect to the charging station. The following short video shows Wall-E2 making a complete circuit of the sandbox, ending with a homing run and connection to the charging station.
I plan to do quite a bit more work on the charging station homing algorithm, in particular how Wall-E2 reacts when it gets stuck trying to connect (which happens with somewhat disconcerting regularity).
While doing some ‘local sandbox’ testing with Wall-E2, I noticed that the charging station transmitter was occasionally going offline, even though I hadn’t done anything. After a while I was able to confirm that it simply shut down at some point, for some unknown reason.
After troubleshooting the problem for a bit, I came to realize that the shutdowns were being caused by the NTE960 5V LDO regulator going into over-temp shutdown. Here’s the circuit diagram for the charging station, with the NTE960 highlighted:
After puzzling over this for a bit, I realized why the regulator was going into thermal shutdown. I had stupidly routed the IR LED current through the regulator, so the regulator instead of supplying just the current to the Teensy processor, also had to handle the approximately 1A pulsed IR LED current — oops!
In my defense, this wasn’t actually as stupid as it looks now; the original system design used a 5V power supply to both charge the robot’s battery pack and run the Teensy, so there was no need for a regulator in the system. Later on, the system design changed to use the TP5100 charger, so now the charging station had to supply 12V to the TP5100 and 5V to the Teensy. Adding the 12V supply and the regulator was a non-trivial change to the existing charging station layout, and it just turned out to be MUCH easier to simply place the regulator in-line with the existing +5V power connection, which incidentally also powered the IR LED stack. This worked fine, until I started doing longer runs in my sandbox, giving the regulator more time to heat up and go into thermal overload – oops again.
So, what to do? Well, the obvious answer was to power the IR LED stack directly from 12V. This wouldn’t change the power budget for the 12V supply at all, but would dramatically reduce the power handling requirement for the regulator. However, the current 5Ω 5W current limiting resistor would have to be changed to a 10Ω 10W resistor as it would now be dropping 10V instead of 5V, at the same current. In addition, the current setup had the voltage regulator on a separate terminal strip on one side of the charging station and the IR LED modulation circuit on the other, as shown below.
Rather than split the two again, I decided to see if I could put all the circuitry on the left side, next to the Teensy. To do this, I started with two Bakelite terminal strips. In case you aren’t more than about 50 years old, you probably have never seen real Bakelite terminal strips, but they are perfect for this sort of thing. I got mine from a company that specializes in antique electronic items. Here’s a photo of the two-strip layout I devised to accommodate both the regulator and the IR LED modulation circuitry.
First I revised the circuit to bypass the 5V regulator for everything but the Teensy processor, and changed the current limiting resister from 5Ω to 10Ω. When I tested this, everything worked OK, except when I disconnected the modulation signal output from the Teensy to the modulation circuit. To my horror, the IR LED stayed ON! The input to the base of the 2N3904 was pulled low by the 10K pulldown resistor, turning it OFF, which turned the IRF520 MOSFET ON – oops! This was a problem with the original circuit – I had just never noticed it before. This is not a particularly disastrous situation, as the 12V power supply can handle the current, as can the MOSFET and the IR LED’s. However, it just isn’t very good engineering, so I decided to change the 10K resistor to be a pullup rather than a pulldown. As it turns out, this works fine, except now I couldn’t turn the IR LEDs on at all! Some more head-scratching and I figured out that in the pullup configuration, I had formed a voltage divider with the 1K current limiting resistor from the Teensy, and now the LOW signal from the Teensy was being converted to a (mostly) HIGH signal by the voltage divider. Changing the 10K to 100K solved this problem, and now the IR LEDs stay OFF when the modulation is disconnected, and operates properly when the modulation signal is present – YAY! One last ‘gotcha’; when operating from my lab power supply, the Teensy had a tendency to reset when the circuit first went to full load. I cured this with the addition of a 680 uF cap on the +5V line (actually I found that 10 uF would do, but I had more of the 680’s floating around, so…
Here are some photos showing the modified regulation/modulation control circuit
And a scope photo showing the input modulation (yellow) and the IR LED cathode voltage (green), along with the power supply voltage, current, and power values
Input modulation (yellow), IR LED cathode voltage (green), and Power supply output voltage, current and power
Hopefully this will completely solve the intermittent shutdown problem I was seeing in my sandbox trials – we’ll see!
20 January 2021 Update:
After getting everything running, I set up an experiment with a spare IR sensor mounted about 20cm away from the IR flashlight emitter. As shown below, the scope trace in the background is from the IR transistor on the left, in response to the 520Hz square wave transmitted over the IR path from the charging station. Once I got it set up, I let it run most of the afternoon and overnight. The next morning after almost 24 hours, the setup was chugging along beautifully – YAY!
Scope trace shows IR signal received by IR transistor on left. IR Flashlight and charging station electronics shown on right
28 December 2021 Update:
In the process of bringing up my new Wall-E3 robot, I was testing the IR homing module, and discovered that it wasn’t acting correctly – the values being read from the IR homing module were basically zero, even with the charging station IR transmitter less than one meter away. Troubleshooting, I found that the IR transmitter wasn’t transmitting correctly, which I finally tracked down to a (probably) misplaced connection to the Teensy 3.2 waveform generator. However, in the process of doing that, I also discovered that the driving waveform to the IR emitter had a big spike on one transition, which if not really a system problem, sure looked unprofessional.
So, I started looking at the IR transmit module schematic, and decided it could use some TLC. One problem that leapt out at me was the 01/17/21 mod to force the IR transmitter OFF if the connection to the Teensy was lost. This mod involves a 100K resistor pullup to +12V, which, if the 2N3904 transistor base failed ‘OPEN’ would mean putting +12V into the Teensy – probably not a good thing! So, I changed the circuit to route the 100K pullup to +5V instead of +12V. This still works to force the 2N3904 output LOW, which in turn would force the IRF520 OFF. Teensy digital I/O pins are all 5V tolerant, so this is a much better deal.
Chasing around a bit regarding the big spike on the leading edge of the IR transmit pulse, I found that a 0.01 uF cap on the gate lead of the IRF520 did a nice job of killing the big spike, as shown in the photos below:
Big spike on leading edge
No capacitor at IRF520 gate
No spike
0.01uF cap at IRF gate
With these two modifications, the IR transmit block looks pretty solid. Here’s the updated schematic:
The way that I implemented the IR transmit hardware on two parallel terminal strips looks kind of ugly, so I decided to replace that with a perfboard setup and not think of barfing every time I look at it. Here’s the ‘before’
and here is the ‘after’
While I was in the neighborhood, I also decided to modify the IR Beacon transmit code to force all unused Teensy GPIO pins to a known HIGH or LOW state in setup(). This is something I learned about just recently in the Teensy forum, and it sounds like a good idea. I think I’ll write a ‘InitAllGPIOPins()’ function that sets ALL pins to a known state, and follow it with just the necessary changes for functionality. From now on, I plan to do this with all my Teensy projects.
I’ve had my MakerGear MK3-ID for a year or so now, along with a Prusa MK3S. The Prusa MK3S with it’s removable flexible build plate is my ‘go to’ printer for almost everything that can be done with a single extruder. The flexible build plate is wonderful – it makes printing so much easier. Fortunately there is now a comparable option for the MakerGear M3-ID – BuildTak’s 8×10 FlexPlate System. I was able to find the correct size system for my M3-IE at Partsbuilt 3D and it arrived in just a few days (unfortunately with Ohio state tax applied as both the company and I are in the same state). This system makes a HUGE improvement in the ease of printing with the M3-ID, and consequently make it a much more appealing alternative to printing everything on my Prusa. Here’s a photo of the FlexPlate base on my M3-ID.
However, there were a few ‘gotcha’s’ during the installation, necessitating some modifications to the M3-ID.
The stock M3-ID comes with a 4mm glass build plate, mounted on top of the heating element, and held down with screw-down rotating clamps at each corner . There’s no need to keep the glass build plate with the BuildTak FlexPlate system, but the resulting 4mm gap means that the stock clamps will no longer hold the build plate down firmly (or at all, for that matter).
The FlexPlate system consists of a mounting plate with a number of embedded magnets that is affixed to the flat heating plate with an adhesive film, and a flexible steel build plate onto which the actual build surface (either a BuildTak or PEI sheet) is adhered. The steel build plate attaches magnetically to the mounting plate, and can be easily removed and flexed to pop the print off, a la the Prusa MKS system. However, it turns out that while the mounting plate with embedded magnets mounts quite nicely on the heated base, the 8×10″ steel build plate is just a smidge too large in both dimensions for easy mounting/dismounting. It tends to overhang in one or both dimensions, meaning that one corner rests atop its corner hold-down block, and then the plate isn’t quite flat. This problem could easily be fixed if the steel build plate was just a few millimeters smaller in both dimensions.
The Prusa MK3S has a simple and elegant way of achieving excellent physical registration of the flexible build plate when it is placed onto the printer. There are two small protruding posts (3 or 4mm screws, actually) at the rear of the print area, and the flexible plate is notched so that when it is placed against the screws, it lines up perfectly every time. There is no such physical registration feature on the M3-ID, so getting the plate down correctly so it isn’t overlapping one of the corner pieces is a bit of a PITA
So, I needed to make a couple of modifications to the M3-ID corner hold-down system. The idea was to make the build plate fit without binding, and to achieve better physical registration of the build plate when it is re-installed onto the M3-ID after popping off a print.
The first thing I did was simply place a couple of 3mm hex nuts under the hold-down clamp foot at each corner, filling the gap left by the 4mm glass build plate, as shown below.
2ea 3mm hex nuts under the hold-down clamp foot, replacing the thickness of the removed glass build plate
This worked – sorta – but it wasn’t very elegant and didn’t address the other issues, i.e. the flex plate interference, and the problem of physical registration. So, I started designing some alternate hold-down clamp and corner pieces to do a better job. The first effort was a modifed hold-down clamp, as shown below:
Modified hold-down clamp requires only 1ea 3mm hex nut spacer
The thing I love about 3D printing is that you can iterate through several designs rapidly and learning from each version. I usually go through half a dozen versions before getting where I want to go, but it is so cheap and fast that doing it this way is MUCH faster than trying to do a ‘moon-shot’ on-off solution (which generally doesn’t work anyway, due to some unknown unknown).
So, back to the drawing board (TinkerCad) and some more designs. I started with designs to replace the stock corner blocks, and after six revs, had the following final design
MakerGear M3-ID replacement corner blocks – V6A & B are left/right mirror images
Both the corner blocks and hold-down clamps were printed with left/right mirror images to match the mirror-image corner requirement.
After getting all the final versions printed up, I installed everything on the M3-ID, as shown below:
Here’s a short video showing me placing the flexplate onto the magnetic base, using the rear corner blocks for physical registration.
Me placing the BuildTak build plate onto the magnetic base
I’ve already made a number of prints with this system (all the corner blocks – about a dozen by the time I was through) and I have to say it’s like night and day compared to the hassle with my stock M3-ID. If you have a MakerGear M3-ID, this is a must-have!
I created a Thingiverse ‘thing’ with the final designs for the corner block and hold-down clamps.
My wife got me this really cool Dewalt DWS713 miter saw for Christmas this year, and I have been having fun pimping it out a bit. In a previous post I described how I added a cut shadow line LED light and control box, and this post describes how I added a 3D-printed coupler from the saw’s sawdust exhaust port to a small vacuum I keep in the shop for small cleanup jobs.
My first attempt at a coupler was a straight piece that connected on one side to the exhaust port, and on the other side to the rigid end of the vacuum hose, as shown below:
Unfortunately, I had neglected to consider what was going to happen when I actually tried to use the saw. As soon as I released the downlock and raised the saw, the coupler snapped when the rigid part of the vacuum hose ran up against items on my bench behind the saw – oops!
So, I started over again. I found the TinkerCad ‘bent pipe’ shape generator, and made a few versions that incorporated 45-60 deg bends into the rigid portion of the vacuum hose, but all of these suffered from the same problem with physical interference and cracking when the saw was raised. After some more head-scratching, I discovered I could remove the rigid end of the vacuum hose, leaving just the flexible part. As shown below, this particular vacuum has a detachable end piece that fits inside the flexible hose
Flexible hose connector. Note circular ribs.
So, I decided that I could replace the rigid piece from the end of the vacuum hose with a short coupling piece to connect the sawdust exhaust port directly to the flexible hose. As I normally do with complex projects, I started by printing a test piece – just the portion that couples to the flexible vacuum hose, as shown below:
Short piece to test the flexible hose coupling geometry
Once I had the flexible hose coupling geometry nailed, I did the same thing with the other end, and then connected the two coupling ends with a ‘curved pipe’ shape from TinkerCad, resulting (after a number of revisions) in the piece shown below:
Version 10 – this one worked!
As can be seen in the above screenshot, the final working version was version 10. One of the more wonderful things about 3D printing is the ability to make and discard multiple revisions – all it costs is a little time and a bit of very cheap filament. No need to hyperventilate over mistakes – just throw it away and try again!
The next few photos show the finished coupler installed on the miter saw.
I had uploaded the previous straight-line coupler to Thingiverse here, and I edited it to provide the new design as well