2A Mechatronics Engineering — University of Waterloo
Project Manager, Electrical Team @ Waterloo Aerial Robotics Group
USB-C Sink Rev. 2 is a benchtop testing tool that acts as a power supply for boards, servo rails, CAN busses, and small drones for Waterloo Aerial Robotics Group's firmware team. It uses USB-C PD to negotiate power from a USB-C port depending on the user's requirements.
The board has an AP33772S USB PD IC, which requests a PPS PDO from the source PDIC. It then requests the voltage and current limit values that have been given to it over I2C by the MCU. These values are set either with the buttons and potentiometer on the board, directly connected to the ESP32's GPIO pins, and displayed on the screen over I2C, or with the companion webpage and communicated over WiFi to the ESP32. Along with the user-set values, the live, measured voltage and current are also displayed on the screen and website. These are measured with shunt resistors at the PDIC and 3V3 output. The current limit can be changed in 100mA intervals, and the voltage has multiple presets; 3V3, 5V, 9V, 12V, 15V, 16V, and 20V. Since many source PD ICs don't have the PPS protocol, if PPS can't be negotiated, the board will ask for a standard power range PDO with the required specifications. If a PDO cannot be negotiated, the AP33772S will instead negotiate a base 5V, which can still run all peripherals for the board and some external loads. This will also be accompanied by an error message on the screen and website, stating the source rejected the negotiation.
Since the MCU and peripherals need 3V3, the board needs to be able to supply 3V3 regardless of what the PDIC is negotiating from the USB-C port. So, the board has an onboard wide-input buck converter. However, if VBUS were to spontaneously change from 5V to 20V, the buck wouldn't be able to compensate immediately, there would be some amount of time where the output voltage spiked; and this could damage the MCU and other ICs on the 3V3 rail. This is solved with the introduction of a 3V3 LDO, which can catch the output spikes and regulate them down to 3V3. Ultimately this two-stage step down converter, 5V buck and 3V3 LDO, keeps the peripherals safe while allowing VBUS to change and have up to 20V on the VBUS rail. It also provides the voltage for the 3V3 header pin, which remains at 3V3 regardless of what the PDIC is negotiating. This creates the need for an additional voltage/current sensor, as when a load is connected to the 3V3 output, the sensor on the VBUS rail won't be able to sense the output.
The USB-C Sink has five outputs: XT60 and XT30 for powering small systems and drones, 3 pin header for servo rails and development boards, 4pin JST for CAN busses, and 3V3 header for development boards and smaller mcu boards. This allows it to supply most projects the firmware team tests, thus removing the need for Lion batteries to test boards, which need to be recharged and converted down to the required voltage.
A custom 6-layer 30.5 x 30.5mm analog FPV flight controller based on an STM32F722RET6 and designed to run betaflight. This is the first step in a larger project where I'll be designing all of the electronics for a small FPV drone, including the flight controller, ESCs, and ELRS receiver.
The board has an ICM42668-P IMU, for gyro and accelerometer precision and ultra-low noise, a BMP390 barometer for 25cm altitude precision and low power, and an AT7456E OSD and W25Q16JV 16MB black box. All of these were additionally chosen as they are supported by betaflight, and will lead to smooth integration of the betaflight firmware. The flight controller has three SPI busses, an I2C rail, five UART pairs, and a differential pair from a USB-C connector. The SPI busses are separated so the peripherals on them don't clog a single bus; the IMU has its own, and the OSD and 16MB black box are grouped on their own as well. The barometer, being the least critical for FPV flight, is on the I2C bus, which additional external components can be added to in the future, such as a GPS and magnetometer module.
The board is double sided to accommodate all the components in such a small package, and the top has the MCU, sensors, OSD and black box, which required both digital and analog signal routing, as while the SPI busses, UART, USB pairs and I2C is digital, the Video In and Out signals are analog. The bottom side has a multistage power system that can take power from the USB-C port or the drone's battery, which can range from 3S (12V) to 6S (24V). From VBAT, there are two buck converters, both based on the LMR33630 simple switcher IC, as it is relatively small and requires few external components. These bucks regulate 5V for the onboard components, and 9V for the VTX, which can take 7V-25V as input. The 5V buck and 5V input from the USB-C port are then joined with an ORing diode, the LM66200, and regulated down to 3V3 via an AP7361EA-33E-13 LDO. This way, regardless of which input is plugged in, or even if both are plugged in, all the peripherals will be supplied. The power system is separated from the MCU and peripherals so as to avoid EMI from the rapidly switching inductors of the buck converters and large voltage rails of the overall system.
To accommodate the complicated signals on the top layer with the loud EMI of the bottom layer, a six layer stackup, SIG/SIG/GND/GND/PWR/PWR was chosen. This allows signals to be routed underneath the relatively dense top layer, on the second layer, without heavy EMI, due to the two ground layers in between, and allows power to be distributed across the board on the fifth layer easily. This is all the more important due to the additional solder pads added on the sides of the board, which were made relatively easy to route due to the signal and power distribution layers.
Helios Mk II is a VTOL UAV being produced by Waterloo Aerial Robotics Group. Once finished, it will have a 2.5 meter wingspan and be able to fly for over an hour without landing after taking off vertically, or over an hour and a half if it takes off from a runway. I am mounting the electronics and making the harnessing and battery packs for Helios.
Helios has four lift motors, two mounted on each wing, and one pusher motor mounted at the rear of the fuselage, with the lift motors only being on during the vertical takeoff and landing. The tail connects under the wings, meaning all electronics and wiring for both the wings and the tail must run through the wings from the fuselage. Also, Helios is so large that it must be broken down for transportation, meaning the wings and tail must be detachable. This means all electrical connections must have a connector at the edge of the wings. To make wiring the motors easier, I designed a small servo hub for each wing that sits in the fuselage, and is never disconnected from the pixhawk. This way the motors only need to be disconnected from the hub in transportation.
The fuselage contains two 6S3P batteries in the nose, a BMS, a Pixhawk 6X flight controller mounted between the wings, the camera and VTX, the pusher motor, servo hubs, and all five ESCs, which are mounted at the edge of the wings. This is so they never have to be disconnected from the controller. The servo hubs each connect to the flight controller on one side and the wings on the other, and they control the aileron, elevator, and rudder motors. There is also a small cargo bay beneath the wings.
The wings contain all the sensors, pusher motors, and control surfaces. There is a CAN bus in each wing; the left wing has a GPS, and the right wing has GPS, Magnetometer, and airspeed sensor. There are bars running under the wings that lead to the tail, so the connections to these bars also contain small servo and JST female-to-female connectors, so the CAN bus and control surfaces can be detached and reattached easily.
The electric go kart was a project completed before engineering orientation in 2026, as the dark red team had a lightning mcqueen theme, and wanted a more impressive mascot. I was invited to make the new powertrain.
The go kart had almost every system removed before anything was added, including the old brakes, which were worn out, wheels, rear axle, all the electronics, and the lawnmower gas engine. The only things that were kept were the steering system, which was in fine condition, and brake pedal itself, as it could still be used for the new system. Then, the frame had new holes drilled into it to mount the new electronics, and two plates welded onto it to support the new accelerator pedal and hydraulic brakes.
The new powertrain involved a 48V 1800W Brushless DC motor and motor controller, powered by a 12S3P battery. This was connected with a new chain and sprocket to a new rear axle, and could sustain up to an hour of fairly consistent driving. Also added and connected to the motor controller were a forward and reverse switch, a 3-speed switch, as the kart would occasionally be driven around large groups of people and needed to be able to move slowly, a keyswitch ignition, so the kart couldn't be stolen as easily or driven without the consent of a team leader, and the accelerator pedal, which was screwed to the plate at the front and wired to the back. All of these components were wired, harnessed, and soldered by me, as well as tested on a benchtop before being mounted on the go kart. Finally, a wooden shell of Lightning McQueen was mounted to the frame.
This is the first PCB I designed that was manufactured, allowing me to get additional hands-on experience with testing and assembling PCBs. It was designed for Waterloo Aerial Research Group, and it can regulate 6S-12S (24V-48V nominal) down to 12V at up to 8A to power peripherals on UAVs.
Due to its use on UAVs, which have very limited power, it was designed to be very high efficiency, and after testing was determined to have a peak efficiency of 95%. This is achieved partly due to the high efficiency IC selected, the LM65680, as well as the low switching speed, 400kHz, which allows for less switching losses. The board is 30.5 x 30.5mm, designed to be easily added to any drone the team would need it on, and it will be used for Helios Mk. II, where it will power the VTX.
During the winter semester last year, I worked on the power electronics for a lower body exoskeleton for the waterloo biomechatronics design team, making multiple PCB schematics and layouts that were eventually coalesced into one power board, that all the sensors, motors, and microcontrollers of the skeleton connected to.
My first PCB was a 5V to 3V3 LDO. It was needed to power the IMUs and microcontroller board. I had also never used Altium or LTSpice before, so it was a good opportunity to learn the software I would be using for the rest of the boards. I found the components on Digikey, researched how to connect them together, and then made a schematic. After testing it in LTSpice, I made the layout in Altium.
Once the LDO was finished and validated, I started working on a 28V to 5V buck converter. This was needed to take the very large voltage from the batteries and make it usable for a raspberry pi.
The Air Hockey Defense Robot was built to sit at one end of an air hockey table and deflect incoming shots. It did this by detecting the puck's initial and final distance from the side of the board as it crossed the midpoint of the table. It measured both the distance and time between the two measurements, which gave it the puck's direction and speed. Then it moved a mallet to intercept it as it passed the robot's side of the table.
I was my team's mechanical lead, so I had to create a system that would move the mallet to the puck's calculated position. This was a significant task, since I was limited to exclusively VEX IQ parts. After several revisions, I ultimately designed a two-axis gantry system, with a belt attached to the mallet in order to move it along the widthwise direction and a linear actuator for the lengthwise direction to strike the puck quickly. The widthwise motor was also geared down at a 9:1 ratio so it would be fast enough to catch the puck, being able to cross the table in a single rotation of the motor.
However, since my wires weren't long enough to cross the entire table, I could only put motors on one side of the table. This made the linear actuator difficult, since it required an equal push from both sides to evenly shoot the puck forward. So, I had to run rotating beams along the full length of the gantry, and recreate the same actuator mechanism on the opposite side. Without this, the mallet would've been angled instead of pushed, and the puck would've been shot back either unpredictably or not at all.
The Air Hockey Defense Robot achieved a 76% deflection rate, despite the very strict material constraints.
A distortion pedal based on the old Fuzz Face guitar pedal, which uses transistor clipping to produce 'fuzz' in the signal transmitted to the amplifier.
First, I found a schematic for one online and modified it for the components I had available. Then, I calculated the resistances that would be required to complete the circuit and properly bias the transistors for stable clipping. Then I soldered my available resistors in series until they reached the correct calculated resistance I needed to complete the circuit.
Once I had all the correct components, I soldered them together point-to-point, following the schematic. All the components worked properly, except for the LED indicating the pedal was on, which had to be replaced after I calculated the wrong resistance and burnt it out. Afterwards, the finished pedal achieved stable distortion and clipping, without any components overheating.