There are lots of reports of not all motors spinning when you arm the FC with a fully charged Lipo battery. The symptoms fade away once your battery voltage drops a bit. This only happens when you use the combination of the tinyFISH FC (F3D8) and the tinyPEPPER ESC (STAR4).
This is a known bug of the old revision of my tinyFISH FC design. Reacerstar did not clone the newest, fixed version v0.2b, they used a previous version with the wrong voltage regulator.
In short: They took the old design that used a 2.8V regulator. The new one uses a 3.1V regulator. The obvious fix is to replace the regulator with the correct one (scroll to the bottom for the fix).
This all has do to with the way I designed the tinyPEPPER ESC: When I started with the design, it was never meant to be manufactured, it was a hack for me to play with. After I built the first prototype I was surprised how well the 1S pepperF1SH quadcopter performed.
In order to keep the ESC design simple with a small footprint I did not use a voltage regulator on it. This way the EFM8 processors is directly connected to the LiPo battery instead of running on a fixed voltage such as 3.3V. In the past, several BLHeli 1S ESCs used this hack in the as well and it worked fine. However, this is not best practice and you should probably not do this for several reasons! The LiPo voltage is not stabilized and exceeds the safe operating voltage of the processor. The efm8bb10 processor datasheet lists 4.2V as an absolute maximum voltage the processor can survive, but this is not recommended for use. This is just what the processor will survive, not more. I had some efm8 processors accidentally connected to 5V and they survived, but I might have been lucky. Some people fly the ESC with HV Lipos that can be charged up to 4.35V which seems to work fine as well. But again, this is not recommended and might shorten the lifetime of the processor — In the worst case the processor will survive only fractions of a millisecond before releasing all its magic smoke…
Being close to the absolute limits the processor can take is not the direct cause of the problem, it is more complicated: Each ESC processor is connected to an I/O pin of the flight controller that sends speed commands to the ESC. Let’s assume the FC processor is powered by a 2.8V regulator. Any signal sent by the FC, no matter if it is DSHOT, PWM, or OneShot, consists of series of 0V and 2.8V voltage levels. The ESC will now read these levels and convert it to a command. Inside of all digital logic chips there is a circuit that converts voltage levels to discrete, binary levels. Every logic device has a specified voltage range that will be interpreted as low = 0 and high = 1, respectively. After this discretization we end up with a series of binary values zero and one. The exact voltage level that ends up as zero or one is not a sharp border, it depends on the logic family type, is implementation specific, can vary from device to device, and is oftern temperature dependent.
So let’s have a look at the EFM8BB1 datasheet: Page 26 lists the voltage levels the efm8 processor will safely detect as high and low. The safe low voltage is as VIL = 0.6V — this is fine for us. However, the safe high voltage is listed as Vdd – 0.6V, which in our case (on a fully charged battery) translates to 4.2V – 0.6V = 3.6V — ooops… This means in order to have a design that will always work, no matter if it is -40°C or +85°C, we should send a low voltage level of no more than 0.6V (which we have), and a high voltage level of at least 3.6V to the efm8. This is guaranteed and safe, however in practice it was tested to be sufficient to have 3.0V high levels (and yes, you are right, this is a hack).
The newer revisions of my FC design run on 3.1V in order to be safe. The previous version used 2.8V which works for some efm8, but just not for all. This is why you end up with some motors spinning and some don’t. Once the Lipo voltage drops, the safe high level of the efm8, running on lipo voltage, will drop as well. This is why the easy fix is to wait for the voltage to drop before you arm (and yes, it is annoying).
You might be wondering why I did choose not to use a voltage regulator in this design when it has this disadvantage? Despite some saved space because of the missing regulator the major reason was that it simplifies the gate driving circuit for the mosfets a lot! So this design used fewer components and again, uses less board space. When I started with the design I was not expecting the 1S pepperF1SH copter to fly that well and I never expected that design to be manufactured and sold by so many people… I also wrote a warning in the release notes that this is a dirty hack and should not be sold as a product.
Before you ask, the new 1-2S design of the ESC uses a proper voltage regulator and mosfet drivers. That one will be fine with FC voltages of as low as 2.7V. So you might keep your 2.8V tinyFISH fc clone and wait for the release of the new ESC design — or you might try to fix it:
Fix your F3D8
I used a LP2985AIM5-3.1 (you can buy it e.g. ar farnell or mouser). Make sure to use the right type with a low dropout voltage and do not use higher output voltage levels. You want to keep the processor voltage as low as possible. Remember, you build a 1S quadcopter and your Lipo voltage will drop during flight: A linear voltage regulator always needs some voltage margin to operate (this is the dropout voltage). For the low dropout regulator I used this voltage is approximately 0.1V. This means this 3.1V regulator can safely operate as long as the input voltage is at least 3.1V + 0.1V = 3.2V. If you use a 3.3V regulator this will not work properly on 1S as your LiPo will most likely drop to less than 3.4V during flight.
How do I fix it?
Unfortunately the voltage regulator comes in a small SOT23-5 package and is not that easy to replace. But there are some tricks that might help you. There is a technique to desolder this chip without fancy tools or a hot air station: Take a soldering tip that is around 2-3mm thick and add a small blob of solder to it. Now place this solder ball directly on the plastic package of the voltage regulator. Yes, I am really talking about the plastic package, you do not need to touch the metal pins. Hold the soldering iron in place for some seconds, you should be able to pick up the device with some tweezers once the heat was spread properly. Do not worry that the “plastic” will melt, it is designed to withstand similar temperature during reflow soldering. The internals of the chip might get damaged during this procedure, so better do not use this technique on chips you want to re-use. You will have to throw away the old regulator.
There are two parts in the SOT23-5 on the PCB: an operational amplifier for the current sensor and the voltage regulator. You want to replace the part with the blue circle around it in the picture above. After you removed the old regularot solder in a 3.1V regulator. Use some flux and make sure to remove any shorts using soldering wick before you power up the flight controller.
Another option could be to buy a tinyFISH fc from a seller that ships with the proper voltage regulator, see my compilation of vendors.