Portrait of Austin Li

Hi, I’m Austin Li

Waterloo Mechatronics Engineering student, curious to learn how things work, passionate to make them better.

PROJECTS

Project 01

PMSM OneWheel Hub Motor

Hand-wound stator of the PMSM hub motor

In Brief

A permanent magnet hub motor I designed and built from scratch specifically for field oriented control. I did a custom distributed winding pattern around the stator according to my spec and validated a sinusoidal back-EMF profile using an oscilloscope.

Objective

I have always been intrigued by motors (electric motors in particular), the ability to turn electricity into motion seems magical, and yet the way motors are so ubiquitous today turn them into this seemingly simple thing which we take for granted. Motors are literally everywhere, everything from linear motion to water-pumps and turbines often start as rotation driven by motors, and without them the world would be a much more stationary place (you could almost say motors make the world turn…).

I wanted to know how motors work, so I built one entirely from scratch. Everything from the stator windings to the magnetic rotor, I specced, designed, built, and tested. Moreover, to make it more challenging and to squeeze a little bit more efficiency out of it, I designed the motor specifically for Field Oriented Control meaning the need for a magnetic encoder, distributed windings, and large arc magnets.

Being a personal project, much of this build was constrained by budgets, but through various attempts to compromise and de-scope, I was able to assemble a first prototype which is currently being tested. The ultimate goal of this project is to use the motor in a larger DIY OneWheel build which has been a dream of mine for a while.

Design

I began by defining my constraints then modeled everything in SolidWorks, since this first prototype would be largely 3D printed, everything was designed with a heavy focus on DFM for FDM printing.

Section view of the hub motor assembly in SolidWorks
Exploded view of the hub motor assembly
The wound stator seated in its printed housing
Winding diagram for the 36-slot stator: three phases distributed across the slots, with the rotor magnet arcs shown on the outer ring
Distributed winding layout calculated for a 36-slot stator, 6-pole rotor.

Field Oriented Control

I wanted to use field oriented control (FOC) to drive this motor. This meant two things that needed to be different from a typical motor: encoder to detect position, and large arc magnets in the rotor.

Finding a place to put a magnetic encoder proved difficult because it meant needing to split the shaft to make the encoder concentric with the motor, however, supporting the stator from only one end would severely compromise its rigidity which is a concern as it experiences extreme magnetic forces.

I designed a way to place the encoder inside the shaft by splitting the shaft and decoupling it from the rotor using bearings.

Original encoder layout, stator supported from one end only
Original design — making the encoder concentric meant supporting the stator from a single end.
Revised layout with a split shaft and the encoder carried inside it
New design — the shaft is split and decoupled from the rotor by bearings, with the encoder living inside.

Wide angle arc magnets are vital for creating a sinusoidal back-EMF profile. However, large arc magnets are hard to find in the proper dimensions, which makes custom ordering the only option, but this obviously greatly exceeds my budget for this project.

To compromise, I approximated arc magnets using smaller block magnets placed adjacently. Block magnets are much cheaper.

I validated that this works by using magnetic sensitive sheets to visualize the magnetic fields, and indeed the magnetic field appeared uniform in the regions they should be.

Rotor with block magnets arranged to approximate wide arc magnets
Magnetic viewing film held against the rotor to check field uniformity

Back-EMF Validation

Using an oscilloscope I could verify that the back-EMF from spinning the motor was roughly sinusoidal. The 6 spikes seen can be attributed to the 6 individual magnets in each arc cogging with the stator.

Oscilloscope trace showing a roughly sinusoidal back-EMF with six cogging spikes

Project 02

FORC Speed Controller

3D render of the FORC speed controller PCB

In Brief

FORC is a high-power ESC for field oriented control, designed in Altium and based on the Vedder ESC architecture. It was my first PCB project, taken from no experience at all to a finished board in 4 months.

Objective

Before starting this project, I had no experience in PCB design, at all. I had never touched a PCB software nor taken any advanced circuits courses. However, knowing how universal the applications of printed circuit boards are, I wanted to learn the process of how they are designed.

So, I designed FORC, my attempt at a high-power ESC specifically designed for Field Oriented Control. The software I used was Altium, which I chose over other beginner friendly choices like KiCad because it is more of an industry standard. My design is based on the Vedder ESC architecture, which is the gold standard for speed controllers in the application I am looking for.

The ultimate goal of FORC is to use it to drive my DIY OneWheel build, which is why it required specific components like an IMU and FSR sensor.

Top-down render of the FORC board showing the power stage and connectors
Altium board layout of FORC with copper pours and routing visible

Project 03

Autonomous Pool-Playing Robot

The autonomous pool-playing robot on the table
The project team with the robot at the pool table

In Brief

An omni-directional VEX robot that locates a pool ball using a laser distance sensor and strikes it into a pocket without user input.

Objective

The Autonomous Pool-Playing Robot was built as a group project for my final Mechatronics Project of first year. The robot was built around standard VEX components, and our goal was to push these components to the limits of their capabilities.

My group and I designed, coded and tested an omni-directional robot which could successfully locate and strike a pool ball into a pocket.

My contribution to this project was in the mechanical design of the striking mechanism and the ball detection algorithm I wrote in C++.

Ball Detection Algorithm

The ball detection algorithm was constrained by a single laser distance sensor which forced out-of-the-box thinking to be able to locate the ball. To achieve both efficiency and accuracy, I split the algorithm into two parts:

Step 1:

The robot does a rotating pass across the whole table. By using the robots current position and the dimensions of the table, the theoretical wall distance could be calculated and compared to the laser sensor data. Any large discrepancies between the theoretical and measured distance was flagged as a ball.

Step 2:

After finding the rough direction of the ball, the robot does a slower scan to detect the outer edges of the ball, from these two edges, the robot can align itself with the exact center of the ball.

Striking Mechanism

After many revisions, the final design I settled on used a scissor mechanism to ensure the front face stayed perpendicular with the forward direction.

Close-up of the scissor linkage driving the striking face
The complete robot showing the striking face extended

Full Video Demo

Project 04

AutoCleat

AutoCleat mounted on a shoe with its control electronics

In Brief

A shoe attachment that deploys ice spikes when winter surfaces turn unsafe and retracts them indoors, so you never stop to change footwear. Built in 24 hours at Waterloo EngHacks.

Objective

AutoCleat is a shoe attachment that automatically deploys ice spikes when winter surfaces become unsafe. It was designed to solve the awkwardness of traditional cleats, which work outdoors but become inconvenient or damaging when walking indoors.

AutoCleat was built in 24 hours as a submission to the Waterloo Enghacks Hackathon.

Side view of the AutoCleat frame strapped to a shoe
AutoCleat being worn, with wiring to the ankle-mounted controller
The AutoCleat prototype and its ankle cuff on the bench

The prototype uses temperature sensing to detect icy conditions and an ultrasonic foot-lift sensor to deploy TPU spikes only when the foot is raised. The spikes retract on safe surfaces, giving the user hands-free traction control without stopping, bending down, or manually switching modes.

Project 05

Cycloidal Gearbox for Robotic Joints

The printed cycloidal gearbox with its output arm attached

In Brief

A compact cycloidal reducer for use in humanoid robot joints. A high reduction ratio packed into a 22 mm thick package.

Objective

This cycloidal gearbox was designed to be a compact reducer for use in robotic joints. The final dimensions measure 22mm in thickness.

Top view of the assembled cycloidal gearbox showing its low profile
Exploded CAD view of the cycloidal gearbox internals

Project 06

Rocket Transport Trailer CAD

CAD render of the rocket transport trailer deck and rails

In Brief

An accurate SolidWorks model of the team’s transport trailer, which became the reference every rocket transport fixture was designed against. The full assembly is explorable in 3D inside.

Objective

I created an accurate model of a transport trailer in CAD (SolidWorks) which proved to be mission critical for designing fixtures to transport the Team’s rocket to the launch site.

Isometric CAD view of the complete trailer model
Photograph of the real transport trailer
Side elevation of the CAD trailer model for comparison

Explore the model

Loading model…
Drag to orbit · scroll to zoom