CLASS PROJECT, mechanical and electrical design

Omnicopter

As my Senior Capstone, our team decided to try our hand at building an omnidirectional drone based on an ETH Zurich paper. For an additional challenge, my group mate and I decided to try and design and layout a PCB for an electronic speed controller for a BLDC motor. We started during summer, planning out some high-level requirements and reading up on existing literature.

ESC’s are quite involved electrically, not only requiring the triple MOSFET bridge, but also a lot of peripheral sensing components to track current through each of the phases, and the right setup to sense back EMF in order to estimate where the rotor is relative to the windings. Our schematic also included a gate driver to drive the MOSFET bridge, and a battery protection circuit that handled reverse polarity and overvoltage.

Once our requirements had been fleshed out and our schematic finished, we separated into our own subsystems and began working on making an operational drone with 8 motors positioned for decoupled motion.

We worked on laying out the 4-layer ESC. In particular, due to the current values we were running through each of the motors, we needed to draw up large power planes and use polygon pours to create traces with enough copper to withstand the current.

In conjunction I worked on designing a frame for the drone, building a custom frame from the ground up due to lack of the exact sized carbon used in the paper and other reference designs. I performed some quick stiffness calculations to confirm my design choices were within the values that the original design had.

In the meantime, we worked on setting up communications between STM and 2.4 GHz ELRS remote controller, writing drivers to store and unpack the controller channel values being sent over the CRSF protocol.

Unfortunately, our project’s complexity level was beyond what we had originally considered for. We made a few concessions due to the lack of time, opting to use a Nucleo board and Adafruit breakout boards instead of laying out and fabricating our own flight board. Our own ESCs also proved too heavy and unpractical to use on our drone, leading us to use a pair of off-the-shelf 4-in-1 ESCs. However, while unit testing our ESCs, we fried our Nucleo board, requiring us to port our project over to Arduino within a night.

I spent the night carefully testing each component using lab tools, verifying the correct waveforms using an oscilloscope and simulating using a power supply and function generator. Once all signals and electrical values were confirmed to be within range and issues were debugged, I hooked each sensor and actuator up to the Arduino, using existing libraries to quickly migrate our existing code.

Our final project was only partially functional. I was able to confirm functionality of the receiver, transmitter, IMU, and the ability to ramp the off-the-shelf 4-in-1 ESCs. However, we were unable to achieve liftoff or anything more complex than a simple control scheme that reacted to angular position.

I would say we all still learned a lot through this experience. Project scope and responsibility is really important when it comes to something with real complexity and our handling of the project could be improved upon. But in the time that we had, we are proud of what we were able to deliver.