Build your own Tiny USB Battery


After having successfully built a few tiny USB batteries in the past, I was always left with a bit of frustration about the difficulty to build them. My previous model has been working flawlessly for the last 2.5 years now despite the hackish way it was built, that's undeniably a success!

Once I got my laser engraver and managed to create some quite fine PCBs, I thought it might be a good use case to try to make a PCB for this tiny battery project. This would save me from having to destroy existing PCBs and would make the project much more replicable. It would also standarize the power LED and the button that were added as a hack on top of the previous one. Last thing I wanted was to increase the output voltage to 5.2-5.4V in order to compensate for cable losses, especially when powering various single-board computers (SBC) which drain a lot of power and tend to become unstable under 5V.

Creating a PCB for the battery.

I already mentioned, I'm not good at using Eagle, I find it pretty complicated to do trivial things, even though maybe it allows to easily do complex things. Thierry Fournier offered some help on the project as he's much more fluent with Eagle than I am. He first created the library of components, the schematic matching my needs, and a dual-layer PCB. To be honest I wasn't very impressed with the resulting size, and attributed this to the dual-layer design: vias take a lot of room, and some of the components there appeared large enough to support having copper tracks passing underneath them.

So based on Thierry's schematic I tried my luck with a single-sided approach. I moved and rotated components around until I managed to route it without a single via nor strap. A first version was created, at about 33x22mm, with the charge and power connectors on two adjacent sides:

The result was already quite good:

Given that I had 240mAh batteries of exactly 30x20mm I really wanted to squeeze it further, which led to the final version documented here, whose PCB is 30x20mm, exactly the battery's dimensions.

The result is great, it's flat on one side (PCB), flat on the other side (battery), with the components in the middle between the two. The final version is very dense and requires careful placement of the SMD components, but I had no problem soldering them all with a thin solder iron tip (0.2mm) and thin solder wide (0.5mm). The USB connectors are both on opposite sides this time:

In fact for the final version I even tried my luck with solder paste. For this I produced the GCODE for the stencil mask in Eagle, and used it to cut holes in a 150 microns-thick Post-It paper. It appeared to be exactly the appropriate thickness for the paste. I attached it with duct tape to the PCB and scraped some solder paste on it:

But it seems that paper is not that great for solder paste, it seems to extend a little bit while pulling the paste, and it looks like some places were slightly thicker than expected, probably because more paste accumulates in corners and isn't totally removed.  I purposely did not put paste on large components like the inductor nor for the USB connectors' ground because I didn't want to risk seeing them move under the heat gun and ruin the rest of the circuit, I preferred to solder them by hand.

Despite not being perfect, the result remains impressively good though, and there were very few errors, so I think it will have to be attempted again, maybe with Kapton tape, or with sticking paper, I don't know yet.

Looking closer, it appears that some of the micro-USB connector's solder joints were joined together, that that the capacitors were not properly soldered. This is because they were salvaged from an older PCB (all components were desoldered) and were not clean enough for the solder paste to properly take on them:

This is why I said above that I had to re-solder a number of components using the soldering iron's tip. However the solder paste is very convenient for the IC's thermal pad under the package, which must be connected to the ground plane. And fortunately the IC was properly placed.

Choosing components

The module is still based on a TP5400 or TP5410 IC. The only difference I found between the two is the resistor value to program the charge current, any can be used. One nice thing about this circuit is that it contains a 4A switch with a low on-resistance, and that the voltage sensing is external so it's trivial to adapt it to increase the voltage a bit (there is even such an example in the datasheet).

I salvaged most of the components from a previous TP5410-based module. I wanted to use a higher current inductor. I found that 2.2 and 4.7 uH do work fine and allow the module to deliver up to 2.5A and even peak up to 2.8 at 4.5V output. It's better not to do this for too long though because the IC cooling is performed through the PCB on a single side and is a bit less efficient than the one from the original design. I soldered the battery's positive terminal directly on the inductor's pin:

Regarding the battery, I used LiPo batteries made for drones. The 602030 ones are perfect. They must withstand at least 15C of discharge capacity. However most of these batteries have an internal protection board and most of them are of poor quality resulting in a huge voltage drop as the current increases, to the point of being barely capable of delivering 1.5A under 5V. It's not very difficult to remove the board from the battery, but I'd rather find some unprotected batteries to avoid this annoying step. Till now I didn't find any (the rare ones available are reported as out of stock).

I intended to use a 0.2 Watt LED driven by a 39 ohm resistor, but found that I had in stock a few PCBs salvaged from 220V LEDs. These ones are made of series of five 0.5W LEDs in parallel in a very compact form factor. So I used these PCBs as a replacement for the power LED and reduced the resistor to 15 ohms, after successfully trying 18 ohms on the first version. This gives me roughly 0.5W of LED power without overheating the LEDs, which illuminates very well in dark stairs or in my garage for example.

The USB connector on the final version was larger than expected because I ordered short ones (10mm) but due to lockdown measures in place here I still haven't received them, hence the reason why on the final version it's a bit too deep, and the button was placed slightly outside to align with it.

Some users might prefer to put a male USB-C connector (e.g. to charge a smartphone). But this would require a protuberant part which risks to be damaged. Also instead of a micro-USB connector for the charge it should be possible to use a USB-C female connector. But micro-USB is still more available for me, and this matches what most existing batteries do. Also, there exist tiny USB-A to micro-USB adapters that insert directly into a USB port and which automatically provide a male micro-USB connector. Maybe these even exist for USB-C now, I don't know. The ones I have look like this:

As an enclosure, I used transparent heat shrink tube, then filled everything inside using hot glue, just like for previous models. This keeps the device very compact and solid. I tried throwing it on the ground and it doesn't have any problem. Maybe some people will want to try 3D-printed enclosures, or even molded plastic.

Download files

The source files (schematic, board and library) as well as the output files (schematic in PNG, board in PNG and PDF) are available here. There's nothing particularly tricky in the assembly process, except maybe hacking with the battery's connections. It's particularly important to be careful not to make a short circuit while soldering the battery, especially the one without the protection board! I don't have any good recipe for this except lots of care.

There's a dual-color LED to indicate the charging status. The common track is the anode (+), the left LED (connected to pin 2) is the red one (indicating it's still charging), and the right LED (connected to pin 4) is the greed LED (indicating standby mode or end of charge). The layout was made to also support installing individual LEDs (which I did on my second version). When connected to a charger, it should light red during charge and green once fully charged. The LEDs are never lit without a charger.

Tests and conclusions

With a 602030 240mAh battery, which is roughly 0.9 Wh, I can power my GL.iNet WiFi router for about 1 hour. This makes an ideal companion to every WiFi/3G pocket router! Below it's connected to my GL.iNet either with a short USB cable or with the tiny adapter shown above.

I can also use my bike's powerful front light for about 20 minutes at normal power level, or about 10 minutes at full power (6W), which is more than I usually need when crossing woods at night.

At this point it goes beyond a proof of concept as it's possible to build them by hand in about 2 hours, including the battery modification. What takes most of the time is finding suitable components like the high current inductor, or soldering tabs on the LED bar. But for anyone able to source components, the circuit has nothing difficult.

I think that these dimensions are really great, I don't feel the battery in my pocket and have it with me every day. I've even replaced the v3 that I had been using since last article. Some people might prefer to have a bit more energy. There are slightly larger batteries with even more capacity. I like a lot what can be found in the range of 800 to 1200 mAh, with widths up to 35mm and lengths up to 45-50mm. But many of them are much thicker, up to 10mm. It's possibly not that big of a deal when using a thinner PCB, as it's possible to save one millimeter here.

Another idea would be to replace the flat, empty PCB surface with a solar panel and have it charge the battery. But at such dimensions, even the most efficient panel would take ~10 hours in full sun to charge a small battery so it doesn't seem really interesting in the end.

Overall I'm extremely satisfied with this design. The next step for me would probably be to be lucky to find it pre-made by someone who can design complete devices and source the components! I think I'd be OK with paying up to about $5 for such a device, maybe a bit more if the capacity gets slightly larger, provided the strong power is still present.


Improving the Eleksmaker A3 Pro Laser Engraver

After starting to use my laser engraver, I found a few points that really needed to be improved.

Seeing under the piece

First, when cutting thick material like wood or acrylic, you never know if the cut is finished or if another pass is needed. This is the reason why I installed a 39x30cm glass on 47cm long aluminum corner frames, that I fixed using the extra screws and bolts that were provided with the A3 Pro kit. I had to drill a few corners from aluminum blocks to hold everything in place but aside taking measures and drilling at the appropriate dimensions, there was nothing really difficult:

The first frame I used was quite large (5cm), hoping that it could be used as a ruler, but that was a bad idea since it prevents the beam from reaching the medium beneath, so it is not possible to see if the material is entirely cut or not:

So I finally replaced the large frame and opted for a very narrow one (7mm), which has the additional benefit of having a thin line roughly 4mm from the edge. This further helps aligning the beam with a reference position anywhere on the X axis:

This one is still slightly thicker than the glass so that it can be used as an alignment ruler. However its metal is also thinner thus the frame is quite soft, and adding some weight on the glass can slightly bend it and slightly degrade the focus. Maybe I should have stacked two of them to improve the rigidity.

I bought a cheap mirror mounted on a telescopic stick that's made to look for objects fallen behind furniture, it's perfectly suited to looking under the piece being cut (typically with wood you never know when it's finished because even if the beam passes through it's not necessarily sufficient):

Keeping objects in place

As mentioned above, it is preferable to use paper tape rather than weights to keep objects in place. The tape I'm using is sold in any DIY shop to protect walls and windows when painting, it doesn't stick too much and doesn't leave an trace when removed:

It is very convenient to keep objects in place. But when you discover that the cutting didn't completely go through, it's hard to place the object again at the exact same place and angle. At least having one side of the material wedged along the edge frame forces the angle so that by running the engraving process again at low speed and low power, it is possible to progressively slide the object until the beam perfectly enters the existing trench. For other situations like PCBs where it can be required to flip them over when engraving both sides, I found that attaching another small part of aluminum frame along the right Y axis can serve as a second ruler:

Why not on the left side instead ? Because most of the things I have to cut cross the zero origin. So I prefer to move the head by hand to the right when I need to use an accurate ruler for such rare use cases.

Laser line

I thought that it would be very convenient to install a laser line underneath the laser module, in order to precisely indicate where the laser is expected to pass. For this I ordered a small laser line module working on 3 to 5V, it's made of a small transparent cylinder placed in front of a laser diode, making the beam span a very large size (it covers roughly 45 degrees):

The problem is that the beam is several millimeters thick, so it's totally impractical for alignment:

In the end I think it remains more convenient to keep the laser perfectly aligned with the aluminum edge and align objects there.

Extracting smoke

Engraving and cutting with a laser consist in burning, vaporizing or melting matter. Some materials like acrylic do not produce smoke but do produce a lot of vapors that you can smell and that deposit all over the work place in addition to you lungs. And seeing the amount of thin deposit everywhere even on the laser lens doesn't make me very confident that it's good for the laser module's longevity. Other materials like wood, cardboard or ABS smoke a lot, to the point where the amount of smoke can disturb the beam. Therefore it becomes important to be able to remove this smoke.

There is a small (and noisy) fan at the top of the 2.5W laser module, but it's made only to keep the laser module cool, and it doesn't blow strong enough to even disturb the smoke in the beam, as can be seen below while cutting some wood:

I first tried to place a battery-powered flat fan directly on the glass close to where the laser was working. This proved to work pretty well as long as the laser was no more than a few centimeters away from the fan, and it was not very convenient to move the fan to follow the laser beam:

Using a much larger fan worked better but was not convenient and quite noisy. It also had the undesirable effect of blowing some freshly cut light parts and sometimes moving them under the beam, causing some other areas not to be totally cut. So I tried to attach a small and light PC fan to the module to let it move along with the module:

This first experiment was not fantastic, to say the least... The air flow from the fan barely reached the surface, it needed to exhaust much closer to where the beam touches the material, hence this second assembly:

I started by stealing the 12V power directly from the original fan's pins on the board above but finally found it easier to solder a JST-XH 2-pin connector beneath the 3-pin one to take the 12V from there:

This actually is the one that gives me the best result. It does have one downside though: when cutting very light materials like thin cardboard, it tends to make the finished pieces fly over the place even though it doesn't blow strongly. And sometimes such pieces either need an internal cut (one more reason for etching from inner to outer), or they can deposit a few centimeters away on a place that was supposed to be cut, which is more problematic. I found that catching them with a piece of paper tape without stopping the work is easy enough not to care too much about this issue.

I tried a completely different approach by sucking the smoke instead of blowing it, using a small pump and a very soft silicone tube ending in water inside a jar. Long story short: it doesn't work, the suction is too weak. While the tube can stick to your finger, the flow is too small to collect the smoke from a few centimeters around. Maybe it would work with a stronger sucker, but it would also make too many bubbles in the water and would also suck the water out of the jar:

Motor driver replacement

During the first tests, I noticed that the motors were lacking a bit of resolution and that when the laser beam was very thin, some parts could be missed:

I've read on various forums about the SilentStepper family of drivers which was supposed to render 3D printer motors totally silent and to significantly improve their accuracy by taking into account the amount of energy sent into the motor's coils and not just the ON/OFF time. Given that these ones are designed as drop-in replacements for the A4988 that my board is using, I thought about trying them. Most of these modules are programmable but I didn't want to go into this, so I picked the 2209 which supports 1.7A, doesn't require a heat sink with my motors, and defaults to 32 microsteps like the A4988. I just cut the unused programming pins and replaced existing modules:

The first thing I noticed was that the motors would go backwards. I just had to change the direction mask on my GRBL config for both axis (X=bit0, Y=bit1):

Grbl 1.1h ['$' for help]

Once fixed, the positions and distances were working as before. However I was absolutely impressed by the total silence when the motors move. You don't hear them anymore at all, sometimes you can believe that etching is finished and you really have to look at the bream to be sure whether they're moving or not.

The second gain I got from this is that horizontal lines are evenly spread all over the distance. This is very important for raster images because before some lines would be left and others could be etched twice by being too close. Now the steps are perfectly regular. I tried to move the axis by sending various commands. The board is configured for 80 steps per millimeter, so we're supposed to be able to move by steps of 0.0125 mm. To be honest, I'm unable to say whether or not the motors move when I ask them to move this little, and it looks like when repeating the operations the motors move smoothly.

The third gain is that when moving fast we still keep some precision. I noticed in the past that when moving too fast I could sometimes fail a piece, because the laser head would miss a few millimeters on a large move. This has never ever happened anymore with these drivers. So they're really worth the money.

Enabling "laser mode" for raster images

The first time I tried to engrave a raster image (i.e. a bitmap image in black and white or with levels of gray), the result was awful. The motors would start and stop for every pixel with a different darkness level. It used to take a lot of time, to heat up the X axis motor, and to make burn spots at the beginning of each new segment of a same color.

I then thought "why not modify GRBL not to stop?". I just figured that it had already been implemented in version 1.1 under the term "laser mode". My engraver came with version 0.9, requiring an upgrade. I was a bit scared by horror stories on the net about some of the arduino-compatible modules there employing fake ATMEGA328P chips and not supporting being relfashed. I wasn't sure whether mine was affected or not:

In doubt, I ordered a small bunch of extra Arduino Nano compatible boards to flash the new version on. The problem I had with the Arduino Nano board is that it came with a Mini-USB connector while I mostly had Micro-USB cables. So I also tried my luck with a RobotDyn NANO V3 board, which comes with micro-USB and a good voltage regulator, but which is also much thicker due to the crystals and the ISP connector, preventing me from closing the cover:

I flashed the latest GRBL image (1.1h then) to the new device, and could start some tests. After about one week I decided that I wouldn't revert to version 0.9, so I decided to try my luck by flashing the original module that came with the engraver, and it worked. This allowed me to reinstall the acrylic cover on the controller board.

Laser mode is enabled by setting variable $32 to 1:

Grbl 1.1h ['$' for help]

In this mode, the M3 command turns the laser on at a fixed power level, while M4 turns it on at a power level relative to the motor's speed during acceleration, to avoid burns. And more importantly, the motors do not stop if you don't send a new M3/M4 command while changing the spindle ratio. This means that you can produce very compact GCODE code using series of G1Sxxx commands describing segments of different intensities. This makes the laser go left to right and right to left and engrave line after line, exactly like an inkjet printer. Furthermore, G0 (travel) automatically turns the beam off so you can even optimize the printing using a fast traveling over white areas. It's worth noting that the X axis motor tends to heat up after a while but it remains OK. The resulting quality is extremely good. However it depends a lot on the material and on the software used.

I noticed that I often had to manually edit the output raster files to remove extra M3 or M4 commands placed there so that there's only one in the file.

I was finally fed up with constantly editing the files and started to write a GCODE fixup script. Over time it grew into a full-featured GCODE manipulation tool that allows me to also adjust offsets, intensity, gamma, feed rate and even reverse an image. With a bit of experimentation it becomes convenient to figure the right parameters to apply to an incoming image to make it print exactly as desired on various materials (e.g. have shades on wood without burning), as can be shown here with this well-known Relativity drawing from MC Escher that I engraved on white 5mm thick plywood (which was then cut in 6 passes at 240mm/min):

In order not to burn too much material for testing, I figured it would be nice to be able to emulate the behavior of some materials and represent the expected result on screen. That led me to write the laser-preview utility. It takes a GCODE on input and produces a PNG file based on some parameters (width, height, and diffusion ratio into nearby places). It's not that good and I'd need to redo it differently to improve the modeling of the physics of the material so that we could take into account the variations of reflection at various depths and the fact that some materials melt and that their absorption or diffusion changes with the phase change. But once you get used to validating the output on it for a given material, it does save some time and some material, which is already great.

The manipulations required to do all this and to change settings were quite long and painful, so I decided to write a PNG to GCODE converter which does what it says, it takes a PNG on input, a resolution and some argument such as fixed size, cropping on each side, setting the spindle speed and feed rate, setting the number of passes, quantizing the values, normalizing intensity and applying some gamma/soften factors. The argument are placed in the output GCODE file so that it's easy to try again changing one parameter.

This significantly eased experimentation with new materials. For example with it I managed to print this sketch of me by Frank Tizzoni on a painted metal business card (full one on the left, close-up on one part on the right) :

This was printed with a resolution of 200 microns. Experimentation shows that it's better to use a slightly larger step than the beam width (which was about 180 microns here). It's the best way to avoid over-burning some areas, this results in thin ~20 microns wide black lines that are barely visible. Achieving this requires a very fine focus adjustment, and burning a few cards with fine patterns. A macro close-up with a ruler (0 to 1 centimeter) is provided below showing this:


The card above was made using the "NEJE 20W" laser module, which has a much larger beam than the original EleksMaker one, but which is more powerful, and thus engraves faster. For raster mode, there is a sweet spot to find between fine level of detail and engraving speed. For example, engraving a large logo on wood or plastic wouldn't need this level of detail and would benefit from having fast passes. Engraving on very smooth and shiny paint like above achieves and extremely fine level of detail and definitely benefits from a smaller dot, even if that means using a less powerful module at a smaller speed. The card above is 5x7 centimeters and took roughly 40 minutes to engrave. With a finer dot, using a resolution of 100 microns, it would require twice as many lines, hence would take twice as much time at the same power level, or 3-4 times more with a less powerful module.

Trying a new laser module: NEJE 20W

I found a very appealing laser module that was easily adaptable to this engraver, it's the NEJE 20W module. The module is well documented and easy to attach since it's the same width as the original one (30mm).

However, while initially advertised as 20W, it's "only" 5.5W optical power (the datasheet was since updated to reflect this). Despite this, it's still very powerful. Its fan blows inside and the hot air exhaust is close to the lens, resulting in it automatically blowing the smoke out of the engraving area. This is way better than what I've done to date with my other fan experiments.

I initially had difficulties finding the connector's pinout until I figured it's printed on the solder side:

It uses a JST-PH 2mm 4 pin connector, and is provided with a cable that can be cut if needed. The main thing I've been missing on it initially was the alignment button which enables it at very low power to see a harmless dot. I figured that most other modules would suffer from the same limitation, so I decided to address this by creating the laserdot project (board + code).

The principle of this tiny module is to use a micro-controller (ATTINY13A here) to detect the pulse from the laser controller, and send a very faint one when there is none for more than a few milliseconds. This ensures that the beam is never totally off, and ends up being even more convenient than the EleksMaker module with the button since there's no risk to start with the switch on the wrong position. The module was made so as to also serve as a connector adapter, so on one side it uses the NEJE 4-pin connector and on the other side it uses the EleksMaker connector.

Once you have the ability to work with a faint beam, it becomes obvious there's an issue with this one. It's extremely wide. It's not a dot but rather a line roughly 10 times as long as it's large. Plus it's oblique, making it even harder to use in the least problematic direction.

The photos below were taken through the protection goggles with the beam sent over a ruler composed of chip footprints. The beam length was roughly 3 cm. The first one shows the beam is roughly 0.8mm x 0.1mm. With the ruler aligned to the beam direction it's easier to measure it.

This means that even at 1 cm, which is very close, the beam will still be 0.25mm wide. The problem with very short distances like this is that the smoke directly enters the lens and risks to damage it.

At 5cm distance the beam is very wide and unusable for anything requiring a bit of precision:

I sent the beam to a wall to compare the EleksMaker 2.5W module on the left and the NEJE 20W (5.5W) module on the right:

As can be seen, most of the energy is packed into an almost square area with the 2.5W one, while it's on a 10x1 area on the 5.5W one.

It's also visible that the very wide aspect-ratio beam makes it impossible to use it to cut anything small, because some directions are cut wider than others, as can be seen below trying to cut small 1cm circles:

I found that it is slower at cutting cardboard than the original laser module, because by using a much larger beam, a lot of energy is wasted. In fact cardboard can be cut with a very thin dot, which the original 2.5W module easily achieves faster.

It is possible to narrow the beam further by putting the piece to cut closer to the lens (1 cm), but as mentioned above, the smoke enters the lens and deposits dust on the glass that needs to be cleaned up regularly using isopropyl alcohol. The effect of smoke on the lens is that the spot becomes blurry:

There is another issue when trying to cut thick material, which is that the beam diverges much faster and is either unable to cut thick material at all, or manages to do it but with an oblique form, and as such it cannot be used to cut wood to make tabbed laser boxes for example:

I noticed that it has become increasingly difficult to cut acrylic with this laser. Initially I wondered what could have been the reason, maybe I initially managed to very finely adjust it and cannot do it anymore. But I came upon NEJE's Wiki for this module which explicitly mentions that modules like mine bought before last October could be subject to aging and attenuation, so I suspect it might be the issue I'm seeing. I tried to contact them but for now got no response. I'll see.

With the default lens, this laser can still cut quite fast and engrave painted metal at 1cm focus, but the cut remains quite large, even when cutting balsa wood like below:

And the large spot combined with the high power tends to inevitably make balsa catch fire. I never managed to perform a small cut of a 3D puzzle with this one. The lower the speed, the higher the risk it will catch fire. The larger the spot, the higher the risk as well. For this reason it's extremely important never to leave it cut with nobody watching, as can be seen on the failure below! I though about wetting the wood a little bit, but that doesn't work, it bends a lot, which is understandable given the nature of the wood cells as seen above in the close-up.

Also it is important not to use too short a focus to cut wood, as the beam will have a cone shape and be very large at the top, burning wood a lot:

The high power from this laser module had a side effect on my operations, which is that it managed to engrave the glass support. It's pretty visible below with the puzzle being engrave in the glass. It's still uncertain how the laser should be adjusted to do this, it seems that it only happens when there is some matter above. So probably that the concentrated light heats the smoke above the glass at a very high temperature at which the glass melts. This would deserve more experiments, because it might be useful to cut glasses to precise dimensions, for example by first painting it or just placing some duct tape on it.

Similarly it engraves brick. What's fun is that it melts and crystalises the matter beneath the surface, making it look like quartz, which thus becomes transparent and stops absorbing light. So only the first millimeter melts but it doesn't evolve at all anymore past this point, regardless of the number of extra passes:

Trying new lenses

The extra power available in the NEJE module is quite appreciable but the loss of precision is a real issue for some work. Since a lot of lenses are available on the net at different prices, I accepted to invest in a few of them to run more experiments.

First, it was visible that a number of them are not suitable due to too large or too short a focus. The one from the 2.5W module for example is not suitable for the NEJE module.

I then tried a single-element lens. I found that the spot looked small but it didn't seem to burn very well. Then I understood. It needs not to be inserted deep enough, and for its small internal aperture, a significant part of the beam is wasted on the metal parts inside. Thus what appears as a small spot is in fact just a small part of the emitted light.

I found many references to 3-element lenses, so I tried two of them (they ended up being the same so a single one ought to have been enough). These lenses have a slightly longer focus than the original one, allowing to get approximately the same spot size at a slightly larger distance. Here at 16mm I get a spot of about 0.2mm matching what I used to get at 1cm:

Interestingly the simple lens that's found in Aixys modules gives reasonably good results, in that the spot is quite sharp at a long distance (29mm) even if not very small (~0.25mm):

But it still cannot cut acrylic after several passes, and it's visible that the beam is too wide:

Overall even for cutting cardboard it's still not enough, a single pass at 400mm/mn doesn't cut while it does with the original 2.5W module:

Since it's very difficult to adjust lenses at a short focus, I figured that it's easier to invest time adjusting them at a well-defined distance and use a wedge to adjust the module on top of the piece to etch instead:

However this requires that the lens' thread is firmly secured, which is not often the case. I found that the best solution for this is to put some Teflon tape around it. It even makes it much less sensitive to vibrations and should improve overall quality:

The difference can be important, as can be seen below trying to engrave 5mm circles (the circles borders are distant 0.5mm each). The one on the right was made with visual alignment. The one on the left was made after many attempts were made on top of a 11mm wedge.

I found the DTR-G8 lens which seems to get a lot of good reviews. It's quite more expensive than others ($34 shipping included) but the results are actually impressive. The spot is by far the thinnest obtained from this laser module, around 0.1mm wide at 11mm, which is how the circles above were etched. The lens has a wide internal aperture and collects a very large part of the beam:

And it delivers a very thin and sharp spot (the pads have a 0.4mm pitch, are 0.25mm wide and spaced by 0.15mm):

Making your own module

I tried to reuse an old module I built myself from a kit. It's made of a 1W blue laser diode, a PWM driver and a heatsink+collimator lens.

It required some adaptations to fit into the actual support, but nothing too difficult:

This diode being less powerful, it's more compact and is actually what managed to deliver the thinnest spot of all modules. It is visible on this test on a PCB's top side with the concentric circles where the cut is much sharper and around 50 microns wide only from 6 centimeters (the rest around is burnt):

This module doesn't have room for a fan, though it doesn't heat too much thus it seems it would stand working like this. However it also means that the smoke is not blown and hinders the work. It really requires at least a lateral fan on the work piece to blow the smoke away.

I suspect it would constitute the best solution for very fine PCBs, working at moderate speed, and would require less adjusting time than the other ones.

Printing on cylinders

It is possible to print on cylinders such as toilet paper rolls by connecting a stepping motor to the Y axis connector. It requires adjusting the Y scale to accommodate for the cylinder size and to firmly attach the piece to be engraved to the motor:

I thought about improving this with rotating axis to place anything on them, and while looking for mechanical parts to build such a device I discovered that some vendors were already making some such inexpensive ones like Eleksmaker's Eleksrotate so I decided not to waste my time hacking with mechanics since I've never been good at this.

Final words

That's already quite a long article, showing the extent of what is possible to do with such a fun device. I'm still a bit disappointed by the NEJE 20W module because while more powerful it has a very impractical spot shape and seems mostly useless for my use cases. And with careful adjustments the original Eleksmaker module remains the most versatile one.

Every user should absolutely upgrade to GRBL version 1.1 to benefit from the laser mode. I'd like to modify the code to integrate the low power on for centering, which will allow me to drop the laserdot module.

I also found during tests that printing on top of PCBs works very well and could actually be used to print the components references. That's probably something for a future article.