Saturday, April 08, 2017

Cheapest Brushed Tricopter Ever? [Detailed Part 1]

[disclosure: some of the banggood links contain an affiliate code, but many products are discontinued or outdated so consider seeking current alternatives!] 

What started off as a mental exercise turned into an actual implementation of not the first, but perhaps cheapest possible brushed tricopter in existence that I'm aware of. An overview of the list of parts and some sample flights are available in this previous post.

Quick Intro

Before starting, there are some existing work including this one which basically describes the entire idea, but requires a very well made yet somewhat $$ Multiflite Pico flight controller. Since this was purely a casual exercise and I've already spent a hefty budget on larger brushless builds, I wanted to keep it as cheap as possible.

Main Challenges of a brushed Tricopter

The concept of a tricopter is relatively simple: instead of pairs matching counter-rotating in a quad (2 pairs laid out on the same plane), a Y-copter (2 side by side and 2 overlapping at the tail), hex (3 pairs, single plane), Y3 (3 pairs overlapping), Octo (4 pairs), etc... Instead, a tricopter has an odd number of rotors, which means that the yaw cannot be controlled via rotation of the driving propellers alone. In order for yaw compensation, a tail servo allows the third motor to tilt, providing the counter-rotating forces necessary to keep the craft pointing the same direction while having independent control of the overall throttle.

Both BetaFlight and CleanFlight have tricopter modes, and in these modes, the first two channels become servo controls while the remaining channels (3-6) become motor driving outputs. However, with brushless boards, normally only brushed motors are expected as outputs and so the PWM outputs are usually attached to the gate of a driving mosfet through a resistor, which then switches the motor pads between V+ and GND. This means that one would not be able to, out of the box, add any servo to these boards.

There are two main issues here:

First, I would need to bypass the MOSFET motor output of the servo channel for the tail. This would involve finding a spot on the PCB to solder an extra wire to.

Second, I would need to move the motors to channels 3, 4, 5. Here's where another issues arises: most brushed FC's that physically support only 4 motors are hardwired to channels 1-4, which means there are only mosfet drivers and motor pin pads for those channels. The reassignment in tricopter configuration would result in channels 3, 4, 5 being used, and channel 5 would not have any driving circuitry. While it would be possible to hack the FC code (BF or CF) to move the servo assignment to, say, ch 5 or 6 and retain the motor driving hardware, there is a further issue since on the PCBs, the latter channels are completely unused (not soldered to anything), and would require direct soldering of a fine wire to the tiny pins on the QFP microcontroller package itself- not a feat for the faint of heart!

*edit*: a helpful redditor mentioned that in BetaFlight the resource mapping function could potentially solve some of these issues without recompiling the FC code. It doesn't quite solve the problem of potentially having to solder directly onto the microcontroller package, but its a start! May be worth trying out as there are a number of cheap F3 brushed controllers out there that only have 4 motor drivers...

The Multiflite Pico is the only brushed FC I'm aware of that explicitly exposes servo output on a pad, which makes building a tri possible. However, it is also out of budget for this project. (And if you've ever flown a brushless mini-quad of *any* size, you probably don't want to invest any significant amount of cash into any brushed build these days... but I digress.)

The Solution

As luck would have it, the Eachine Naze32 brushed board (many clones under "HappyModel" and "Realacc" exist from various other retailers, and in fact the "Eachine" branded one actually came with Realacc markings on the bottom... ;) is a hex-capable brushed flight controller that I also had an extra of on hand from the popsicle quad build. This means that there are additional mosfet channels available, so even after the servo assignment to CH1 and 2, it would still be possible to use motor channels 3-5. The next step is to find exactly where the CH1 motor output is. For that, I dug up the naze32 schematic along with the datasheet of the STM32F microcontroller. Following (red rectangles in the image below) show the pin we're interested in:




What you see on the actual board is one pin of a SMD resistor that connects between the microcontroller's PA8 pin (29 on package), and the gate of the MOSFET for motor 1. After checking with a multimeter and confirming those two are indeed the same point, I proceeded to solder a wire onto that pad which should in theory provide the PWM servo output. (It might not look that difference in size, but its MUCH easier to solder onto that SMD pad than the leg of the microcontroller itself - not only is it considerably larger, but perhaps more importantly, there are no other pins nearby!). It was also a good time to test out the fine tip of my new super cheap (but working well so far) iron. Here's what it looks like:



The white cable is the signal, while brown (5V) and black (GND) make up the rest of the servo connections. Since the micro-servos I plan on using is super low power, using the 5V regulator of the board is OK. However, looking back it would have probably been better to use VBatt directly (unless I plan to use this board in 2-cell mode with more powerful motors... more on that later). Since the white cable is just connected to the resistor pad, adding a dab of super glue under the white cable prevents it from ripping off.

Next up is to test that it works:


And it does!!!

Second part of the build log TBA...

No comments: