Posted on

New Lab Setup – Rigol and Electro-Meters

A few months ago, I started to be on the lookout for some better test equipment – an oscilloscope, multimeter, electronic load, and power supply. These would allow me to create a few projects that I’ve been thinking of doing for a while and didn’t have the right tools to get started. I had grown tired of borrowing equipment from various places and wanted a set for myself that I could use whenever I want.

Before we move on, a huge thanks to Electro-Meters for helping out with the equipment upgrade! I reached out to Electro-Meters, the local distributor for Rigol equipment, and they were willing to provide a discount in exchange for mention on these project logs and images of the products being used in my projects over the next little bit. They were great to deal with during the whole process! Check out their selection of equipment here.

What equipment to buy:

I do quite a bit of work with batteries, so having a power supply and electronic load to charge and discharge the batteries is a must. These are also super helpful for testing power distribution circuits and DC-DC converters. A multi-channel power supply (or 2 power supplies) was a requirement as I often find myself wanting to charge a battery and do something else at the same time.

A good DMM was also on the list as I need one that I can trust. I was getting tired of using the cheap handheld ones and trying to guess at what the voltage or current actually is. A few reasons for the upgrade from handheld to bench meters are below:

  1. For batteries, even a few tens of millivolts difference can make the difference between them being fine to connect in parallel or if they need to be balanced first.
  2. Keep other instruments in calibration. A 5.5 digit meter would have been good enough for typical battery or hardware debugging, but a 6.5 digit is even better for keeping power supplies in calibration.
  3. Fast measurement speed – when you’re testing voltage on 100 batteries, the fast measurement speed (Ability to change the NPLC count) of a bench meter makes everything a lot faster.
  4. Automating testing with a Python over SCPI. This enables automatic testing such as generating the efficiency curve of a DC-DC converter under different loads through a single python script. Remote sense inputs on the PSU/e-Load or extra DMMs are required to eliminate cable loss from the measurement.

Last but not least, an entry-level 4-channel oscilloscope can help debug the majority of bugs that may be encountered during bringup of a new board.

What brand to go with:

I wanted to go for some reliable equipment that wouldn’t break the bank but would also last a while and be fairly capable entry-level equipment.

I didn’t have much confidence in any of the cheap Aliexpress-style brands as I had seen way too many teardowns of them and don’t trust the quality. While it is often stuff that can be fixed pretty easily (noisy fans, cables too small, not enough mains isolation), I didn’t want to have to deal with it and wanted this equipment to be a tool and not a project.

Here in North America, Keysight equipment is generally regarded as some of the best test equipment, but it gets pretty expensive. A 6.5 digit multimeter would set you back about $1500.

I’ve used several BK Precision electronic loads and switching power supplies in the past, and have no complaints about them. They are solid pieces of hardware, and work great, but still a bit too expensive for me.

Rigol and Siglent are generally regarded as entry level test equipment, and they make a great product for the price, but on my student budget it was still a bit expensive.

The other reason I was swayed towards Rigol equipment was the reports of it being easily hackable through the activation codes to unlock extra accuracy and bandwidth capabilities. A few guides linked for the Oscilloscope here and the e-Load and power supply here. As most of the guides online mention, it was pretty straightforward to make these upgrades.


I purchased the following equipment at a discount from Electro-Meters:

  1. Rigol DS1054Z 4-channel Oscilloscope (Upgraded with protocol decoding and 100MHz bandwidth)
  2. Rigol DL3021 Electronic Load(Upgraded to DL3021A)
  3. Rigol DP832 3-channel Power Supply (Upgraded to DP832A). Remote sense is not available on this model, but having the DMM handy makes accurate measurements easy.
  4. Rigol DM3068 6.5-digit Multimeter

After upgrading the Electronic load and power supply, the characteristic color screens (as opposed to the single color displays on the non-A versions) were shown after a reboot. When you consider the added accuracy, they are a pretty good deal.

I’ve been spending some time setting up the SCPI commands to interface with these a get a full battery cycle test going, and will make a post for that soon.

Posted on Leave a comment

JLC PCB Assembly Service – First Time User Review


JLC PCB started an assembly service a while ago and I’ve been hoping to design a PCB to use it at some point. I started designing a PCB a while ago – the schematic went quick and then kind of forgot about it for a few months. The PCB is a 64 channel Data Acquisition Unit meant primarily to measure a large number of thermistors, but can also be used as a general digital I/O board.

Board Details

The board is not too complicated – pretty simple, but I wanted to try out a few different things, as well as making it as easy as possible to make and program. I used some chips with varying packages – QFN, TSSOP, and some 0402 passives. I chose a 4-layer board to keep it easy to design and have dedicated power and ground planes for easy layout. I chose ENIG as the board finish mostly because the gold just looks really good. I also put the A2D logo in the corner of the board in copper (remove the soldermask in this area) and kind of wanted this in gold.

As the design software, I used EasyEDA – not because I wanted to use it but because I didn’t want to spend the time to create all the component libraries in Altium. Its also really well integrated with LCSC (a chinese component supplier) and the JLCPCB order service (they are pretty much the same companies just different names for different divisions I think).

I ordered 10 boards with the following specs:

  • 150mm x 100mm outline
  • 4-Layer
  • 1-oz copper
  • ENIG finish (Electroless Nickel Immersion Gold)
  • Green Soldermask (required for the JLCPCB Assembly Service)


The Good

  1. The price – total was around $170 all shipping and import fees to Canada included
    • $65 for the boards
    • $53 for components and assembly
    • $23 shipping via DHL
    • $28 DHL import charges on arrival
  2. Really nice board finish – silkscreen, soldermask, and ENIG finish looked great!
  3. Boards worked – no shorts, etc.
  4. Assembly quality was great – no issues here 0402s and TSSOP packages were great! (QFNs were out of stock so I had to order those from Digikey and assemble it myself).
  5. The boards came packaged really well. I only have components on 1 side of my board, and they packaged them back to back and wrapped in the pink antistatic bubble wrap.

The Not-so-Good

  1. The sides of the board were a little rough – the panel removal left some material on the edges. Nothing that a bit of sandpaper can’t fix, and I can’t really complain for the price that the boards were.
  2. LCSC didn’t have some components in stock or low in stock, so I had to solder a few components myself after the boards arrived.
  3. There were some parts of the silkscreen that were cut off (the RESET at the top of the board). JLCPCB in the past used to be pretty good at catching things like this. I can’t fault them for this since it was my design mistake and I didn’t catch it.

Overall, for quick-turn prototype boards, I can highly recommend JLCPCB. Just make sure that you’ve designed your board and exported Gerbers properly – they will make exactly what you send them. The integration with LCSC makes it super easy to purchase components when you design it in EasyEDA but would require a litt

Posted on Leave a comment

Interfacing the 32-Channel ADG731 Multiplexer with the LTC6811 Battery Stack Monitor

Lots of people put guides online with simple steps to explain how to connect to and get data from ICs using a development board. Usually, the process in pretty simple. But for more complicated ICs, you’re not always that lucky. The first connection often takes some debugging. This is not a ‘simple guide to connect devices’ but rather a more careful look through the datasheets and debugging that is not often documented online. Engineering often has times when you’re looking for a needle in a haystack – or that 1 line in the 100 page datasheet that explains your problem. This post aims to document some debugging, which is much easier when you know that datasheets are not scary and measuring stuff is fun!

As part of the Battery Management System for the Midnight Sun Solar Car team at the University of Waterloo, I have been working on getting the external communication interface of the LTC6811 Battery Stack Monitor IC to interface with a large number of thermistors. We need to measure 2 thermistors for every group of 25 parallel cells on our battery pack as well as 1 ambient temperature sensor for every 2 series groups. The many ambient sensors are placed throughout the pack in an attempt to quickly identify spikes in ambient temperature that could be indicative of a cell venting. This adds up to a total of 30 thermistors per LTC6811 chip, plus a thermistor on the PCB for the balancing resistors.

An image of the battery modules is shown below:

To measure all of these thermistors, the external communication interface on the LTC6811 was used to communicate with the ADG731 32-channel analog multiplexer. The output of the multiplexer connects to one of the GPIO pins on the LTC6811 to be read as an Auxiliary analog input to the chip.

Testing and debugging this interface turned out to be a little trickier than planned. As usual, the answer was in the datasheets.

Let’s first get a bit of background on the ICs.


Datasheet for LTC6811-1:
Many images in this document are from the datasheet.
The LTC6811 is a 12 channel battery stack monitor by Analog Devices. It features 12 independant cell measurement inputs, and dedicated cell balancing pins. Communication to the chip happens over SPI, or by using the LTC6820 ICs an isolated isoSPI interface can be implemented. Also present an external communication interface that can be used to send either SPI or I2C commands to external devices. This is the external interface that is used to communicate with the ADG731.


Datasheet for ADG731:
Many images in this document are from the datasheet.
This device is a 32:1 channel analog multiplexer, control with a CLOCK, SYNC, and DATA signals. It mentions that the interface is compatible with SPI (but there is a catch here – read on). The mux has an internal shift register which shifts data in from the DATA input on the CLOCK signals.

When connecting it all up and reading the Auxiliary analog inputs on the LTC6811, garbage data was observed, and probing around with a multimeter proved that the pin was indeed floating. So it seems the ADG731 output was never enabled.
All the hardware connections were double-checked with a multimeter to ensure proper connections and no shorts. Still no output, so  attention was turned to the firmware. Looking through the driver that the team (UW Midnight Sun Solar Car Team) had put together for it, a missing Packet Error Code CRC calculation was found in the WRCOMM command, and the COMM register byte order mistake were both fixed. A logic analyzer was used to check the communication interface to ensure that the LTC6811 was actually outputting data at this point, and it all seemed fine (or so I thought). Note that the SPI decoder in this image is set to SPI Mode 2, which is what the ADG731 would be reading.

Time to do a deep dive into the datasheets

Two pieces of info were found that Identified the problem:

1: The LTC6811’s external communication interface operates in SPI Mode 3. This means that the clock idles high, and data is shifted out on the falling edge and sampled on the rising edge of the clock (

2: The ADG731 shifts data into the input shift register MSB first, on the falling edge of the clock.

From this information, the LTC6811 external interface is not directly compatible with the ADG731 since the data shift phase is opposite. The LTC6811 will be shifting out new data  as the ADG731 is reading the bus. Looking at the logic analyzer output above, it can be confirmed that different data is sent from the LTC6811 than is received with the ADG731.

Fixing the Communication

Looking at the waveform on the logic analyzer and double checking on the oscilloscope, I figured the clock signal of the LTC6811 SPI Mode 3 interface could be inverted to achieve a waveform that would successfully clock data in to the ADG731 Input Shift register in the correct order. Essentially, this would turn the interface into SPI Mode 1 for the ADG731.

A simple circuit using a transistor and some pull-up resistors could be used to achieve this clock inversion. I had some 2N3904s on hand, but no small FETs so I went with that. The LTC6811’s GPIOs are open-drain. Just to be sure, as mistakes are often made in small analog circuits, I fired up LTSpice and made the schematic to make sure I wasn’t out of my mind. The circuit simulated as expected and we got an inverted signal on the output.

This trace of the CLK line shows the rise times on the inverted clock are a bit long, but a less ancient transistor and an SMD footprint should make them look a little nicer due to the reduced parasitics. The long GND lead on the oscilloscope probe is also likely playing in to some of the error here. We do see the important parts though – we have 8 clock cycles to shift the data in, and they rise above the 2.4V logic high threshold of the ADG731.

Connecting up the logic analyzer once more, the output was now correct. Here, switch 5 of the ADG731 is activated. The SPI decoder in this image is in SPI Mode 1, which the ADG731 would read correctly.

Here’s an image of the test setup and probing – yes, its messy and eventually I’ll get some better tools and equipment to make this all neater – but for now, this is all there is:

Some useful data was finally received through the microcontroller. I had connected some thermistors and fixed resistors to the mux inputs and measured the correct voltage values.


The datasheet is always right. It often amazes me how much information is stuffed in there, and that they manage to get all the relevant information across without mentioning silicon structure of the chips or anything like that – block diagrams are all they need.

The external communication interface and GPIO Auxiliary input pins of the LTC6811 was used to successfully read 32 thermistors through the ADG731 analog multiplexer.

Posted on Leave a comment

Design and Build of Prototype Battery Module

For the Midnight Sun Solar Car Team (, I have been designing a building a prototype battery module. This module must fit in to the pack to be modular, safe, easy to manufacture, easy to assemble, and have low power loss.

This module will be a 24P 2S module, made up of a variety of materials and sections. This was made so that all of the access points for the terminals will be on the top of the modules and we will not need to reach any tools into the bottom in order to put the pack together.

Layer stackup:

  • Gusset Plates (red and black) and Fuse Board
  • Top Section:
    • Acetal Cover Plate (Laser Cut)
    • Electrical Grade Vulcanized Fiber (Fish Paper) Insulation (Laser Cut)
    • EMS Sigma Clad 60 Busbar (Water Jet Cut)
    • Nickel Strips (3D Printed Bending Dies)
    • Acetal Cell Holder (CNC Machined)
  • Cells and Aluminum Standoffs
  • Mirror Top Section for Bottom

Mechanical Considerations:

The module has an acetal plate on the top and bottom with pockets to fit the cells and hold them in place. In order to avoid relying on the friction between the cells and the acetal plates holding the modules together, there are aluminum standoffs connecting the plates together. M3 bolts go into the top and the bottom of these standoffs to clamp the pieces together.

Above the acetal plates, we have a laser cut piece of fish paper that is used to cover the busbar and provide isolation. And above that fish paper, there will be another acetal plate to provide extra isolation protection and a more durable module. Since the fish paper is susceptible to water damage, this will also help to minimize the water that the fish paper comes in contact with during assembly/handling.

The red and black pieces on top of the module are gusset plates that will support the vertical busbar connections that will connect the modules in series.

Electrical Structure:

We wanted to minimize the total resistance of the high current path in order to minimize the power loss.

The material of choice for the high current carrying busbars (eliminating superconducting materials from the options) is copper, due to its low resistivity. Unfortunately, due to this property, copper also is difficult to attach to the cells. Resistance spot welding – the most common and cheapest method of battery assembly for hobbyists – requires the material to have a high(er) resistance in order to generate the heat to weld the material together when passing current through it. To solve this issue, we are using nickel and stainless steel clad copper from Engineered Material Solutions (EMS). This allowed us to use a resistance spot welder to connect the cells and the busbars, as the stainless steel provides a higher through-plane resistance – with the copper still providing very low across plane resistance. The other downside of having the copper in the material is having a high thermal conductivity, which wicks the heat of the weld away. With our spot welder, the K-Weld, we were not able to get consistent welds on the 0.3mm thick EMS material for more than 10 consecutive welds. Because of these issues, we switched gears and threw some nickel strips in the design. These connect the cells to the busbars, and allow a low weld energy to be used. The lower weld energy also increases the safety of the cells because there is less electrolyte that evaporates (causing internal impurities and thus eventually internal shorts) inside the cell – this info came from a post on the electricbike forums ( The power loss from adding the nickel strips in was calculated to be negligible compared to the power loss due to the internal resistance of the cells.

The votage taps for measuring the voltage of each cell come off of tabs on the busbar. These connect to fuses and resistors on the voltage tap breakout board. The resistors will help to limit the current in the case of a short and will help to spread out the heat from the balancing resistors. The fuses will blow if anyhting bad happens. This breakout board on the top of the module connects to the voltage taps through a Molex MicroFit connector for easy disassembly in case the replacement of a fuse is required. These connectors are protected against offset installation and ‘scooping’ which could connect the wrong cells to the voltage taps – a very important feature. Having the fuses and the connector on the board enables us to switch to a distributed BMS if we choose to in the future, having the voltage measurements happening at the cells instead of on a centralized Analog Front End (AFE).


This was the fun part where I taught myself MasterCAM to program the 2.5D double sided tool path to machine the acetal plates the hold the cells in place. The Haas VF2 in our university’s machine shop made light work of the acetal.

Water jet cutting the busbars from EMS Sigma Clad 60 and the making a 3D printed die for bending the nickel strips into shape.

The top and bottom acetal insulation plates were laser cut using the Epilog Helix cutter at the University.


The whole assembly process was thought through and designed into the part, so that it all went together fairly smoothly, save for 1 part. The holes in the acetal capture plates were made so that the cells fit snugly when inserted individually. The problem comes when you are trying to put 48 cells in at the same time. It took quite a bit of force provided by c-clamps and distributed with pieces of wood. Eventually it went together, but the holes on future versions will definitely be increased in size. The burrs on the waterjet busbars made it difficult to slide the terminal connectors on them, so we ended up soldering them on for this rev and will order thicker terminal connectors for future revisions. All the red and brown wires you can see coming off the cells are thermistor wires that we attached for thermal characterization of the battery modules.

And now we have our first finished battery module prototype! Stay tuned for the results of thermal characterization and further testing.

Posted on Leave a comment

Individual Cell Testing in Large Battery Packs

I have been very fortunate to be part of the Midnight Sun Solar Car Design Team at the University of Waterloo ( As the Battery Lead for our next solar car (MSXIV), I am responsible for designing, prototyping, testing, manufacturing, and integrating the battery.
This discussion/post/article/whatever you want to call it will go through some of the considerations when building a large battery pack for high performance applications including electric vehicles. This is not as critical for the performance of say a home-built powerwall from recycled cells, but from a safety perspective is probably more important in such an application as the cells may already be degraded (in invisible ways – pending internal shorts) from their first use.
Lets start off by posting a PDF of some research/literature review that I did a few months back to determine if individual cells should be tested for a solar car battery pack. The result of my evaluation is that basic individual cell testing should be conducted, but based on time frames, a full capacity measurement will not be done. If we had access to a highly parallel capacity testing rack (which I have had some ideas on building one – might come in the future) then capacity testing would be good to do.
Click the link below to download the PDF.
The testing was done with a Keysight B2902A SMU and a custom scale made with Phidgets hardware. Our goal was to be able to detect manufacturer defects that could cause cells to heat up or fail prematurely. To this end, we testing for DC and AC Internal Resistance, Self Discharge Current, and cell weight, and an estimate of capacity through differential capacity through the capacity ration.
A custom scrip tin Python was created to interface with both instruments and automatically collect the data into CSV files. The testing was completed in a short timeline (36 hours) and, we collected data for 1400 cells. The CSV files collected made up over 6GB of data.
To process the data, more python was used – if you can’t tell yet, I really like python, especially when tools like matplotlib and numpy make data processing super easy.
These will be following the guide I have outlined here:
Once we have processed the data, it will be used to identify outlier cells and match them in order to create and most balanced pack as outlined in the Individual Cell Testing Evaluation Guide linked previously.
With all of this data, we hope to create a battery pack that will power Midnight Sun XIV on its 3000km journey across the United States during the American Solar Challenge in the summer of 2020.
Written By: Micah Black
Project By: Micah Black
Posted on Leave a comment

Machining Acetal for 18650 Cell Holders

Please note that this is a quick writeup, and not intended to be an independent guide to machining or battery pack design.

I have been very fortunate to be part of the Midnight Sun Solar Car Design Team at the University of Waterloo ( As the Battery Lead for our next solar car (MSXIV), I am responsible for designing, prototyping, testing, manufacturing, and integrating the battery.

Our battery pack is made from 864 18650 style cells in a 24P 36S arrangement, for a nominal voltage of 131V and capacity of 10.8kWh. These 18650 cells are held in place at the top and bottom using acetal plates. In the image below, the acetal plates are the grey plates at the top and bottom of the cell supports.

The choice of acetal was made primarily because it is easy to machine, creating lots of chips and not melting too easily. After finishing the design in Solidworks, I imported it into MasterCAM 2020 where all of the toolpaths were created. This was my first real project in MasterCAM, but I am glad that I spent the time to learn the software as this opens up a whole new area of possibilities for manufacturing for future projects. Anyways, the part was designed so that no endmills smaller than 1/4″ were required, and could be milled using only 2.5D operations. The process was relatively straightforward, aside from getting used to all the different plane naming in MasterCAM. Because I had created this part to be machined, all the toolpaths were easy to pick out, though time optimizations could definitely be made. This round, I was only making 2 parts for the prototype module, but in a month or so that full production will be headed to the machine with much more optimized gcode.

The University of Waterloo has a Haas VF2 CNC Machine that students can use for design team projects, and is the machine that this part was created on. Again, it was a relatively simple process of setting tool offsets, setting the part zero, then loading the program.

After testing the sizes of the cell holes, we decided to go back over the holes and enlarge them to ensure a smooth fit into the slots and not destroy the PVC insulation while inserting or removing the cells.

From design to final product, this has been a huge learning experience for me, and I hope to continue to improve my machining skills in the future.

I’m looking forward to doing some lightweighting on this part for the final manufacturing run, but have learned a lot in the prototype process.

Written By: Micah Black

Project By: Micah Black

Posted on Leave a comment

DIY Laser Engraver Design, Build, and Control

For the last few years, I have had an idea in the back of my head that I want to build a laser engraver. Over a co-op term, I decided I would finally make that happen. I decided to take a different approach to this project than I have for other projects, I would make a complete design first, and hopefully remove all problems during the assembly by doing so. I was also not going to skimp on any safety features, namely a full enclosure, proper emergency stop switch, and ventilation + filters. Making the design first also made me want to add drag chains, a hinged magnetic lid, handles for transport, a removable laser head, and many other amazing features that I would not have implemented otherwise.

One of the reasons I decided to take this project now was that I recently learned about GRBL being ported to the ESP32 and some development boards available for purchase on Tindie. A Wi-Fi enabled laser engraver sounded like a great idea to me, so I bought some of the control boards, and some TMC2208 stepper drivers for silent motion that is backwards compatible with all other stepper boards. I had some NEMA17 steppers lying around from a previous purchase, and the laser is a 2.5W diode I had purchased from Aliexpress a few years ago in hopes of one day getting to use it.

Before printing all the parts for this, I upgraded my slicer to the newest Cura edition so I could take advantage of the Horizontal Expansion feature, which allows adding offsets for the amount of expansion that your printer has. It took a few test prints to get the correct values, but it was definitely worth it. The fan enclosures, electronics boxes, motor holders, and bearing holders all slide on the to aluminum t-slots very snugly, and will not be moving around unexpectedly.

The frame of the build is made with black anodized 2020 aluminum extrusion that I purchased from RobotShop, and held together with aluminum L plates and M5 bolts. This construction is way overkill for a laser engraver that does not have any horizontal forces on the moving head, but I decided to go for it anyways as it looks great and provides a great base for transport,  etc. The exterior dimensions of the frame are 500mm x 340mm x 140mm.

A slightly modified version of the traditional CoreXY belt system was used, keeping the 2 belts on separate planes instead of having them cross over at the end. This allowed to keep the belt paths clean and the overall size smaller. The rest of the motion system includes 8mm smooth rods, LM8LUU bearings, and GT2 timing belts and pulleys with integrated bearings.

The ventilation system is 2 low profile Noctua 92mm fans with a carbon filter in front of them. These fans fit perfectly between the upper and lower aluminum extrusions, and provide a decent amount of airflow even through the carbon filters – I would not have gone with cheaper fans, as they definitely don’t move as much air as these Noctuas.

Internal lighting was another feature that I felt necessary to include, so I used some waterproof LED light strips that I have from previous projects. This fits perfectly inside the t-slot aluminum extrusions, and provides great lighting on the inside.

The enclosure is made from transparent orange acrylic. I knew I wanted the engraver to be enclosed, but I also wanted to be able to see what the laser is doing without opening the lid. The laser has a blue / near-UV wavelength, and I have heard that orange acrylic tends to absorb light of this wavelength. While I never actually verified this, I can say that looking at the laser dot through the acrylic is definitely different that without. I had originally decided to go with some laser shielding sheet from JTechPhotonics but once I realized that would mean spending a couple hundred dollars for the amount of acrylic I had needed for the design, I decided to just use some normal transparent acrylic. That lead to another search for a reasonably priced supplier that brought me to, where I was able to get the acrylic and the glue that I needed for around $100, and shipping was only $25 which was also a steal. While I was designing it, I also added some black acrylic accents to make the build a little more appealing, which turned out great.

As for gluing the acrylic together, I did not want to take shortcuts here either. There is one universally recommended glue for acrylics, also known as acrylic cement, solvent glues, or plastic welding, the Weld-On 4 and Weld-On 16 glues, which melt the acrylic thanks to some methylene chloride, and chemically bond the sheets together. This essentially creates a single sheet of acrylic once it is cured.

On the electrical side, I implemented a number of key safety features. An emergency stop switch, a large rocker switch as the main power button, individual toggle switches for the lights, fans, and laser power, and of course a fuse. These are all contained in one box mounted on the aluminum extrusions and the other box includes the ESP32 GRBL controller and the laser driver board.

The laser bed can be dropped out from the bottom using thumbscrews. I made this using a 1/4″ plywood wasteboard, a thin aluminum sheet to prevent burning through the plywood, all enclosed with aluminum angles to protect the sharp edges of the sheet metal.

I’m super happy about how this build turned out, and how close it looks to the original model. I think that’s a testament to how much planning can help a project run smoothly.

The next steps on this project is to clean up the wiring a little bit, then start the final testing. I have already verified that the motion is smooth (and pretty much silent thanks to those TMC2208 drivers) and that the laser works. Now I have to put the two together, find an optimal federate, and then find some software that will allow me to engrave images!

The first tests on this machine were engraving squares and circle with G-Code I wrote myself. After a long process of focusing the laser, I got some amazing and consistent results. I wanted to use a vector graphics platform to control the laser, and found a laser tool for Inkscape from JTechPhotonics. It took a little while to get it properly set up and useable (partly because the X-axis on my machine is reversed and the GRBL invert axes settings don’t seem to be playing nice with the CoreXY system), but once that was complete, I had a fully functional laser engraver. The first image I engraved was my logo, of course, on the same test sheet I had been using for the squares and circles!

Project By: Micah Black

Written By: Micah Black

A bunch of pictures of the design and build process can be found below.

Posted on Leave a comment

Laser Cut Nerf Ball Shooting Lego EV3 Tank

For the final project of my 1A term in Mechatronics Engineering, we created a laser cut tank with the Lego EV3 kit (this was required) that shot Nerf balls, all to achieve a very special purpose: to remove the geese from the University of Waterloo campus.

There are lots of pictures of the tank below, and our design reports are attached as well, but I would like to highlight something here as well. Before going further, I would also like to give credit to my amazing groupmates Caleb Dueck and Lukas Wormald. This project was truly a group effort, and I could not have asked for better groupmates.

The treads are made out of laser cut 3mm MDF board. Using cutting a flexible pattern in to the wood, we were able to create a fully functioning tread. We attached both ends of the tread using 18AWG wire loops soldered through holes in the ends of the treads. The gears were made from This may not have been the best option for the treads, but it worked fairly well and was easy to do. The treads were not durable in the wet weather outside and one of them broke as it got wet and soggy.

The ball hopper mechanism was inspired by the design of paintball hoppers, and laser cut out of 3mm MDF. It worked very well at slow speeds, and was very repeatable. The top cover is attached with magnets and is removable in order to reload the hopper.

If we were given more time and resources, we would like to have made the balls fire faster and further using compressed air instead of a spring. However, the spring powered solution worked fairly well after some tuning, but would not fire as straight or as far as was originally planned for.

Using the Lego EV3 Robot kit was a requirement for this project, driven by the school, as these kits are easy to debug. If we were given more time and more freedom, we would have used an Arduino based platform instead, as this gives more expandability, power, and features.

The design report that we produced covering all the design decisions that were made is available here.

Videos of the robot in action can be found here.

Project By: Micah Black, Caleb Dueck, Lukas Wormald
Written By: Micah Black

Posted on Leave a comment

Touch Sensor Piano PCB Kits

Again, a long overdue project article, but I am slowly getting through them.
This project originally started when I made a mini piano on a 400 point breadboard with screws as the touch sensitive keys. I was looking for an easier way to make keys that are secure, but extremely easy to make and assemble. The ideal solution would have been a tool-less, solder-less version that costs almost nothing, but I have yet to find such a solution. So, I designed a PCB to the 3 components of the piano, and used very large, circular SMD pads as the touch sensitive inputs.
Making a PCB allowed for a much smaller footprint, as well as easier assembly although there is soldering involved now – for me it is easy, but for others possibly not.
I may get to the point where I offer this kit as a beginner’s electronics kit, or as soldering practice like many kits I have seen on eBay.
After a year or so of using it and watching other people use it, I would have made the touch pads bigger, and would love to figure out a way to play more than one tone at once to create a harmonic.

Project By: Micah Black
Wirtten By: Micah Black

Posted on Leave a comment

Backlit Display Boxes for Decoration

This article is long overdue – it is for a project that I completed while still in the early years of high school.
The same goes for many of the next articles and projects I will be posting.

One day, I decided it would be cool to mount the boxes of computer parts on the walls and backlight them with LED strips. The next weekend, that is exactly what I did.
I used some 1cm x 1cm wooden strips to create a square slightly smaller than the sizes of the boxes that I will be mounting. To those squares, I attached the LED strips which were different colors to match the main color of the boxes. Once mounted, this created an effect somewhat like a floating box, with the light coming from behind, and no visible shelving to hold the box up.
To mount all this to the wall I chose the non-permanent method of double sided tape in the form of 3M command strips. I did not want to damage the boxes either, in case I ever needed to return any of the parts that they originally contained, so I used adhesive backed velcro to them to the wooden frames.
Now for the power, these LED strips need 12V which is perfect, as I have a computer power supply that provides 12V for the overhead lighting as well. I stuck an extra connector and switch on the end of a pair of wires and connected that to the closest box. To attach the rest of the boxes, I soldered wires between the 12V and GND traces of the LED strips, at the closest points between the boxes.
Fast forward a few years to when I am now writing the article, I am somewhat surprised that these held up so long. The 3M command strips are just now starting to lose their stickiness. As for the lighting, it still works perfectly, but I did not use it as much as I had expected. The LEDs were too bright to wire in to the main light switch, so I left them on a separate switch and only really ever used them as a showpiece.
If I were to do this again, I would make the LEDs dimmer by driving them from 9 or 10V instead of 12, and wire them in to the main light switch so that they are not too bright.

Project By: Micah Black
Written By: Micah Black