Monday, April 7, 2014

230mm Quad - Build Log

The time has come for me to build a kitted-out, ultra-portable micro quad on a 230mm frame.  This quad should be highly acrobatic yet also contain GPS with the ability to also fly autonomously by accessing many different autopilot modes from its flight controller.  By hand-selecting each of the components we can keep the price as low as possible while keeping the performance high.  Additionally, we would like to keep the weight down so that the quad can stay airborne while hovering for at least 15 minutes (a time that few quadcopters of this size and weight can achieve).  We would like to keep the AUW (all up weight) to less than 300g so that we can run this setup using a 2S battery.

Parts

  1. Ecks 230mm carbon fiber mini frame
  2. 4 x  Hobbyking 6A ESCs
  3. 4 x  Tiger Motor MT1306-10 3100KV
  4. 2 Pairs x HQ Prop 5x3 Fiberglass Composite Propeller (1 CW Rotation & 1 CCW Rotation)
  5. Multiwii Pro v2.1 Flight Controller with GPS Module
  6. Turnigy 2S, 2200 mAh Battery
I have been thoroughly impressed with the frames produced by Ecks for some time now.  These are some beautifully artistic and creative frames, including one crafted from mahogany, that are beautiful to behold.  While most of Ecks' frames are of the 310mm variety, they also make a 230mm mini.  The frame is CNC'd from a 2mm carbon fiber plate is is astonishingly rigid for the fact that it tips the scales at only 71g!  Upon closer the tolerances are quite good although not perfect which I am a little surprised by considering the high level of workmanship that appears on their web site.  Some of the curved cutout pieces are noticeably non-smooth in parts, but this is just aesthetic and should have no negative impact on performance.

For this build, I have elected to go with Tiger Motors since they are some of the best in the business. 
Indeed, the 1306 motors that I am using for this project are extremely strong for a high speed 2S motor yet have a maximum efficiency of 93%.  This means that only 7% of the energy it consumes is converted into heat which is a very small number (most comparable motors achieve only about 82% maximum efficiency).  All of this in a motor they weighs only 11.5g - these guys are tiny!  Running these with a 4-inch or 5-inch prop will allow us to run 6A ESCs which are extremely light (and will be made even lighter in the next section).

Assembly

 

Before assembling the components, the first thing to be done is to prepare the ESCs.  First the ESCs are flashed with SimonK firmware which configures the ESC to be better suited to multirotor uses (as opposed to being used for RC planes or cars for which they were initially programmed).

Flashing the ESCs with SimonK

 

Following the procedure described in a previous article, I flashed the 6A ESCs.  Owing to their tiny size, this process was a pain to get right.  After removing the shrink wrap from the ESC, it is clear that the socket flashing tool cannot be used for the 6A as the form factor of the ATMEL chip is way smaller than that for the larger 12A and 16A ESCs and larger.  There are four copper pads provided on the PCB to allow one to connect the programmer.  Additionally, one needs to connect power and ground to the chip while flashing.  Rather than soldering lead wires to the 4 pads (which requires a very steady hand), I elected to build my own flashing tool, similar to what I used to flash my larger ESCs.  That would eliminate the need to tediously solder leads to each ESC and would thus provide a very quick and efficient way to flash the small 6A ESC.

I raided my Arduino parts drawer and decided to use 4 pins that I typically use to connect electronic components to the headers on an Arduino board.  I bent the pins slightly so that the tips of the pins aligned exactly with the pad on the ESC.  Next, I connected leads to the 4 pins and connected the other ends of the leads directly to my USBasp programmer according to the pin configuration described in this article.  Additionally, two more leads need to be added to provide power to the ESC.  For this purpose, I connected the Vcc and Ground pins from the programmer (you can
use any one of the ground pins) to the red and black leads on the ESCs (the thin wires connected to the JST plug which will attach to the receiver).  NOTE:  that the programmer delivers 5V to the ESC which is fine based on the ESC's specs.  According to some reports, if the ESC is powered with only 3.3V during flashing, this can cause errors.  The pin setup for the USBasp programmer can be found here.  The pads on the ESC are labelled and one simply need wire the contact for each pad to the corresponding pin on the USBasp.

Using this rig, the 4 ESC's were flashed with SimonK by first connecting the power and ground leads and then holding the pins to the pads while running the software flashing tool.  The entire process took less than 10 seconds per ESC.  Despite some articles that recommend it, the BS.hex firmware DOES NOT WORK with these ESCs.  Instead, they were flashed with BSV2014-03-06 from LazyZero's repository.  A WORD OF CAUTION:  Initially, I had plugged a ribbon cable into the USBasp tool and intended to plug cables to my rig into the other on of the ribbon connector.  However, this did not work and when I connected a multimeter to it, I found that the ribbon cable seemed to be doing weird things to the input signals by the time the emerged from the other end of the cable.  As a result, I elected to eliminate the ribbon cable and, instead, plug the wires from my rig directly into the pins on the USBasp device.

These ESCs contain battery elimination circuits (BECs).  The BEC allows the flight controller (FC) to get its power from the ESC (which in turn is connected to the flight battery).  This eliminates the need to carry a separate battery for the FC.  However, the FC needs only one of the ESCs to provide power; it does not need to be powered for all four ESCs simultaneously.  Some FC's will simply take the power for the first ESC and will ignore the others while for some FCs, having all the ESCs providing power can damage the FC.  So, it is a good idea to remove/disconnect the power lead from three of the ESCs.  Since I would like to eliminate any excess weight, I removed both the power and the ground lead wires from 3 of the 4 ESCs leaving just the signal wire (ie the wire that controls the speed of the motor) connected.  Additionally, the motor lead wires were trimmed very short as these will be mounted close to the motors and so the wires were way longer than needed.  It might not sound like much, but as a result of simply trimming these wires, the total mass of the 4 ESCs was reduced by 6g from 24g to 18g.  This is the attention to detail that one needs to have towards a minimalistic assembly if one is to keep the weight to a minimum. 

 

Mounting the Motors


The assembly begins with mocking up the motor/ESC assembly.  This allows one to determine the best way of routing the cables coming from both while trimming the cables to the correct length in order to achieve this.  I used a couple of small pieces of shrink wrap tubing per motor to keep the wires neatly together before attaching the motors to the arms using the screws accompanied the motors.  The wires were run down through the holes and to the underside of the frame where they'll be attached to the ESCs.

I cut the ESCs motor wires very short (usually, I would have removed the wires completely and soldered the wires directly to the ESCs, but these tiny ESCs are a pain to deal with, so I left a short piece of each wire attached to the ESCs to which to attach the motor wires).  The ESCs contain battery elimination circuits (BECs) that supply power from the main flight battery to the FC.  Only one ESC need supply power, so three of the four ESCs had the power and ground wires removed from the cable (and plug) that connects to the FC (the photo shows one of each ESC).

The ESCs were then bound to the underside of each arm using rapstrap (a cable tie will work too).  By positioning the ESCs on the quad's arms, the motor wires and corresponding ESC wires could all be trimmed to the correct length.

The next step is to connect the power wires for the 4 ESCs together and separately connect the 4 ground wires together.  For a larger quad build, I would typically elect to use a power distribution board for an easy hookup, but in the interest of saving both weight and space, I opted to solder the4 wire directly together.  I did, however, stagger the connections so I didn't end up with one giant solder joint and a bundle of wires.  This allowed the electrical system to be placed out of sight on the underside of the quad where it is protected by the undercarriage.

The connections are soldered directly instead of using connectors which add weight.  The only problem is that we do not know if the motors are spinning in the correct direction.  The chances are that two of them are not, so we cannot yet re-wrap the ESC with shrink wrap because we might still need to switch two of the motor wires in order to reverse the direction the motor spins.  So, the shrink wrap is cut and placed in position over the ESCs but is not yet shrunk and the motor wires are soldered to the ESCs. 

Attached a battery connector (make sure it contains a male plug) and the electrical on the underside is complete.  I will tape the power wires to the frame later using black insulation tape after I know that the motors are wires to the ESCs correctly.  This will hide the wires well.

The signal wires are routed through the center hole and to the top side of the frame where they will be attached to the flight controller.  From the top side everything looks super clean.  I am loving the look of this!

For a flight controller, I decided to try out the MultiWii Pro 2.0 from Hobby King.  Turns out there is a new and improved model, so I don't recommend this, but it's cheap, comes with GPS and for acro flying, it works just fine.  Newer models have replaced the BMPxxx barometer with the more accurate XXX (only needed for modes using alt hold) and the MTK GPS unit has been replaced with the Ublox-LEA-H.  For now, I will leave off the GPS module until I need it.  The top shelf I added is unnecessary, but gives protection to the FC.


I opted to use an Orange receiver from Hobby King.  It is a very inexpensive rx, has a range of about a quarter of a mile (which is fine for this application) and binds to my Spektrum radio.  Receiver is attached to the FC and now we can add a battery, arm the FC and spin up the motors to check the direction of each.  Spinning up the motors verified that two of the motors, in fact, were spinning in the wrong direction.  These were reversed (by disconnecting and resoldering any two of the three motor wires to the ESC.

   

One last thing to do with the ESCs (told you they were a PITA) is to calibrate them.  Unlike some other flight controllers which allow you to calibrate the ESCs easily and all at once, the MultiWii Pro 2.0 seems to have no such feature to offer me.  So the ESCs must be calibrated off the rx.  One at a time, the ESC must be connected to the throttle pin on the rx.  The radio and rx are turned on first and the throttle stick is set to full throttle.  Then the ESC is powered up, wait for a beep (or two or three depending on the ESC).  This designates full throttle.  The move the throttle stick to zero throttle and wait for the beep (or two or three).  You're done.  Now repeat for the other three.  I found it easier to build a rig so that I could calibrate all four ESCs simultaneously.  This has the added benefit of ensuring that all four are in identical agreement as to what is zero throttle and what is full throttle.  In order to pull this off, I used a breadboard.  The breadboard bridged the four signal cables on all four while simultaneously providing power to the receiver from one of the ESCs.  With the calibration of the ESCs complete, the ESCs and the rx are reconnected to the FC.
Now that the motors are spinning correctly, the shrink wrap around the ESCs can be shrunk.  The rapstrap was removed, the heat shrink was shrunk and the ESCs reattached with rapstrap.  Also at this time, black insulation tape was used to attach the power wires to the frame while hiding the wires.







A shelf is added to the underside to act both as a battery tray and as a landing leg.  This will protect the vehicle while it is on contact with the ground. Additionally, the receiver was attached to the underside of the frame (at the front) using double-sided tape. 

We are just about there.  The electronics are all set up.  We just need to add the propellers and a battery.







For now I opted to use a 2S 850mAh 20C/30C battery.  Not trying to break any endurance records or performance records yet but just want to get this baby airborne.  This battery is small compact and has enough juice to spin these props.  Later, however, I will use a 2S 2,200mAh 20C/30C battery.  Finally I added the props.  I used Gemfan 5x3 props (2-bladed).  I also have a set of 4x2.5 props that I will test on the quad.  DO NOT USE 6-inch props!  Even though these will fit on the frame, they will cause the motors to draw too much current and you are likely to burn them out (and the ESCs) as a result.

All ready to go and this little guy tips the scales with an AUW of 262g.  The battery contributes about 50g to this so, without battery, this quad weighs 212g.  It's slightly higher than the 200g I was aiming for, but we're close and this quad has really high end components in its drive system.  Should be extremely agile at this weight - especially with 5-inch props.  Also, if acro and stability modes are all you are after, then there are more lightweight FCs available that would work just fine.  The 2,200mAh battery which I got for this quad weighs in at 134g.  With this battery, the quad weighs in at 346g which is a little heavier than the 300g AUW that I wait aiming for.  If necessary, we could always use a 1,600mAh which weighs in at 85g for an AUW of 297g.  The difference in flight times between the two is about 2 minutes.  Also, I have not yet added the GPS components which will likely add a few grams (about 5g) to the AUW.

This quad looks terrific and weighs nothing.  It easily fits in a backpack or in the palm of one's hand.
And just like that, we're done.  Meet my new baby.  A clean and neat minimalistic build.  Very pleased with the way this looks.  Time to go flying.

Wednesday, April 2, 2014

Flashing HobbyKing 20A ESC with SimonK Firmware

Standard ESCs are designed for cars and aircraft for which it is undesirable for the speed of the motors to change rapidly.  As such, the firmware running on the ESC accounts for this by ramping motor speeds up or down smoothly regardless of how rapid the change in inputs from the transmitter.  It achieves this by averaging the input signal with the n previous input signals before acting upon it; such filtering necessarily introduces latency in the response of the vehicle.  This latency can, under certain conditions, cause the control system to become unstable.  For the case of a multicopter, we'd like the change in rotor speeds (and thus thrust) to be as fast as possible which will improve the responsiveness of the vehicle. 

Additionally, the standard firmware incorporates other functions which are useful for fixed wing aircraft and cars but could very well be detrimental to multicopters (like a low voltage cutoff - designed to protect your LiPo battery from damage - clearly we don't want the multicopter's motors to shut off mid-flight.)

In a process known as RapidESC, the standard ESC is converted, at no cost, into a high performance, highly responsive ESC suitable for multirotor applications.  Specifically,  we will use open source firmware designed for this process by the legendary Simon Kirby who is well-known throughout the RC multirotor community simply as SimonK.  In the case of the SimonK firmware, the ESC is reprogrammed to run at 400Hz rather than its original speed of 8Hz.  It does, however, continue to average the current input signal with the last n values (which will eliminate spikes in the input), but because the ESC is sampling the input signal 400 times a second instead of 8 times a second, any change in the throttle input will result in an almost immediate change in the RPMs and thus the thrust of the motors.  The video below demonstrates the difference in responsiveness of the control system between an ESC running the standard firmware versus one running SimonK.



So, in short, the idea here is that we'd like to replace the existing firmware on the ESC with the SimonK firmware using a process called "flashing".  It should be noted that this firmware is, in many cases, both brand-specific and model-specific so be sure to select the correct one.  Here is a database containing containing flashing information for various ESC's including which firmware version to use for a particular ESC.  Before beginning it is necessary to identify the RapidESC firmware version that is suitable for the particular ESC being flashed.

Here's what I used...

Hardware

  1. HobbyKing Blue Series 20A ESC
  2. USBasp Programming Device for ATMEL Processors
  3. ATMEL Atmega Socket Firmware Flashing Tool
  4. Exacto Knife 
Note that (2) and (3) are made specifically for ATMEL processors.  In order to flash ESCs that use a different processor (like Silabs) will require a different (but similar) programming tool and socket connector.

Software

  1. KKmulticopter Flash Tool
 This software was, in fact, developed to flash the KK2 flight controller with the latest firmware.  It, however, also allows one to quickly and simply flash one's ESC with the latest version of SimonK firmware which is a .hex file and which can be downloaded automatically from an online repository.  Additionally, this software tool will run on Windows, Mac or Linux (although Windows might first require the installation of a driver for the USB programming device).

Preparing the ESC for flashing

Before the ESC can be flashed, we need to to be able to access the ATMEL processor on the ESC so that an electrical connection can be made.  For this purpose, the shrink wrap covering must be removed.  Rather than removing the entire shrink wrap from the ESC and then having to re-wrap the ESC afterwards it is easier to simply cut an access window/flap.  Use the Exacto knife to cut the shrink wrap around the ATMEL processor, as shown in the picture, on three sides to create a flap that can be folded back.  This now provides direct access to the ATMEL's electrical terminals for the socket tool.

NOTE:  There are two ways to get the correct orientation of the ATMEL processor (which is square in shape).  The first way is to look at the writing on the ATMEL.  If the writing is correctly oriented, then so is the chip.  The second way is to look for the dot on the ATMEL (ie a  small round impression on the ATMEL's plastic casing).  This indicates the top left corner and the chip should be oriented accordingly. 


The socket tool generally has a red dot on one of the corners and the socket tool should be connected to the ATMEL so that the red dot is in the TOP LEFT CORNER - ie the same corner of the ATMEL that contains the circular dot - so we match the dot on the socket tool with the dot on the ATMEL.  If the socket tool does not contain a dot (or if it has since been erased) then look at the pin configuration on the socket tool and you will notice that 4 of the 6 electrical connections are concentrated near one of the corners.  This concentration of pins connects to the LOWER RIGHT HAND corner of the AMTEL chip.

Flashing the ESC with SimonK firmware in 5 simple steps (on my Mac)

  1. Download and install the KKmulticopter flash software (just use the latest stable version).
  2. Plug the USBasp programmer into the USB port and connect the socket tool to the programmer.
  3. Launch the KKmulticopter software set the following:
    1. For the programmer, select "Any usbasp clone with correct VID/PID".
    2. For the controller, select "atmega 8 based brushless ESC + enable Bootloader (8kb flash)".  NOTE:  Make sure to select the "enable bootloader" option.
    3. For the firmware (which will be downloaded from an online repository) select "BS N-FET V2014-03-06 by Simon Kirby" or whatever the most recent update is.  If you are unsure of which version of the firmware to use then take a look at this list.
  4. Connect the socket tool to the ATMEL IN THE CORRECT ORIENTATION and hold it in place with one hand.  The pins in the tool are spring-loaded so it is easy to keep the ATMEL connected by applying a bit of downward pressure on the socket tool.
  5. With the other hand, click "Flash Firmware".  Whole process takes about 10 seconds.  You are done when you see "Flashing of firmware was successful".
DO NOT DISCONNECT THE FLASHING TOOL TOO SOON OR YOU RUN THE RISK OF PERMANENTLY DAMAGING YOUR ESC.  If you happen to disconnect or are otherwise confronted with red writing (an error) then just repeat steps 4 and 5.

Now close the flap of shrink wrap so that it covers the ATMEL again and add a small piece of tape to keep it in place and you're done.  

Voila.