When I last left this project the great things were:
It flies and the weight issues are over
Up/ Down/ forward controls perfectly and the blimp moves clean
It flies! It flies It flies!
The bad things were:
There's a power issue. When the motors turn on, they suck power, causing the regulator's output to sag. This should be fine, because regulators are supposed to REGULATE, but this one takes too long to recover (like 5 uS) and the ESP loses connection. I had added a large capacitor at the regulator input which helped a lot, but didn't cure the problem entirely.
Left/ right do not control nicely at all, and after a number of experiments with rudders, I think it's because of the overshoot with on/off controls.
I made a new board, changing the layout slightly so that the power traces are closer to the source (battery). I'm hoping that this results in more stability.
I also added a PWM output on GPIO0 and GPIO2. For those unfamiliar with the ESP8266, GPIO0, 2, and 15 need to be in a high or low state on boot in order for the program to run. It's actually really easy to make these GPIO work and on the bench this works very well. I anticipate challenges when rebooting while in the air.
I still have a couple of issues to work out, and one of them turned out to be a huge bummer.
Two of the motors (both on same driver #1) spun at slower rpms than the one (on second driver #2).
I looked at the driver chip under the microscope and noticed that I'd soldered it slightly off the pad so that the junction provided half a trace-width (6 mil not 12 mil). Side note: I cannot find where the trace units are in Eagle. I assume since my board is in inches, the traces are too...
Fixed this by removing and re-soldering the chip
Now that all the motors draw the same current (about 350mA max each at 3.8V - 4.0V), new power problems arose. I noticed that the ESP kept resetting which indicated that the voltage was dropping below 3.0V for some short length of time (5us).
Last night I worked with Ed Nisley, a great friend and an engineer with better tools than I, to discover what exactly was going on. Ed has a Tectronic device from the 70s which coupled with a hall effect sensor converts the signal to a current value to be viewed on a scope. We looked at the current (in yellow), which fortunately doesn't dip under load. However, at the point of reset, with all three motors running (one shown here in purple) + the ESP8226 reaching out to WiFi (1.2A) we observed a voltage dip down to 2.6V at the ESP8266 supply/ buck-boost output (green).
This could be because the back emf is going back into the voltage supply due to such long traces on the board. A little hard to see, but the highlighted trace is the battery supply trace.
I'll recreate some of this test and post scope pictures later. My plan to troubleshoot is to solder three fat wire paths over the board: a path directly from battery supply to buck boost converter + battery supply to each driver.
For now, this is a pretty big bummer as if this is the case, I'll need to redo my layout to put the buck-boost (top left) converter much closer to the supply (bottom middle).
I'm going with a joystick for the main controls because everyone knows how to use one. A joystick is primarily used for direction and speed, it should be received well as a participant interface.
I need 6 commands minimum (up/ down/ left/ right/ forward/ back) and the joystick that I chose is made up of 4 microswitches, so only 4 controls. I love arcade buttons, so I decided to add 2 of those.
Inside of the controller is an Adafruit Feather (has an ESP8266 on it) and a battery.
I used Inventor to model this. Already realized that this rev 1 is missing holes for the battery charging and a reset switch. I also should have added screw holes on the bosses to make them less hollow.
I can fix these post print though :D
and started printing last night. It looks good so far!
I'm pretty excited. The blimp flies and is as controllable as a large envelope full of helium in a drafty house can be ;)
The blimp shown here is 24" diameter, 8" high.
So what's different about this revision and why does it fly?
Motors are spinning super fast and drawing about 200mA each.
New motor drivers provide motors with battery voltage, but control voltage is separate, allowing for motors to get maximum power.
Board is 0.8mm thick and cut the weight of the PCB in half - thank you @oshpark!
Buck boost converter is slightly on the edge with allowing 1.3A, but is much more capable than the voltage regulator in earlier revisions.
Code has been revised so that there is no lag between control switch and motor.
I had a memory leak in which the ram was spinning down and causing the connection to drop. Turns out the libraries (2.4.1) provided for ESP8266WiFi have a bug. A down rev (2.4.0) fixed that problem, but it still took me a day to figure it out.
Evaluate battery draw with special wattmeter designed to look at single cell draw
The hardware is there to measure battery levels, add this to code and send signal when low.
There are still connection loss issues, hopefully adding error handling to code will address this.
FUN! Design controller for joystick and buttons. I'm envisioning a figure eight so that it fits nicely in the hand.
Test with 24" blimp when that arrives
Add ESP reset switch or button to gondola hardware
Add ESP reset switch of button to joystick hardware
I designed an intermediary board to test out a new buck-boost voltage regulator, new motor driver, and a tag connect cable. For those of you in the ESPxxx forum, this is v2 intermediary board with EN tied to VBATT.
I intend to run the board with a single cell Lithium battery no less than 3.6V.
For testing, I am using a benchtop power supply (adjustable V, 3A) or a wallwart (5V, 1.6A).
The new voltage regulator, ADP2504, can provide a current output (see diagram on page 6) of over 800mA at VIN 3.6V. The inductor is rated for 700mA. Capacitors are X5R type.
Screenshot of ADP2504 schematic::
So far, I have populated the board with the ADP and the ESP-12S.
These two weird things are happening:
With power input from benchtop > 4.6V, ESP is able to program and hold the program. Under 4.6V, it is iffy, meaning that the program does not run all the time. Same (expected) results with wallwart at 5V.
Current draw after ESP reset is less than 60mA, but sometimes (often at lower voltage) the current draw jumps up to as much as 210mA.
Does anyone have an idea why this could be happening?
UPDATE: benchtop power supply is wonky and gives inconsistent readings, shuts off randomly, and probably puts out inconsistent power. My best guess is that its constant current output is stuck on something not desirable. I've had it for over 8 years, so....
To add to the gotchas:
New Macbook Pro is incompatible with anything FTDI (seriously WTF)
Fluke 16 measures a full 0.1V higher than the benchtop - no clue what is accurate now.
3VDC wall wart with indecipherable 2008 cell phone end now chopped off puts out something definitely not 3V!
Brand new air gun is making a horrible death rattle.
I decided to go the route of a redesign on a couple of components. It was obvious that the voltage drop in the original voltage regulator was causing the regulator to be a steady 3.3V, especially as the single cell battery dropped below 3.7V. This caused the the ESP to reset occasionally.
I've chosen an Analog Devices buck-boost regulator to replace the AP2112. Yes it costs $1.57 more than something else, but this one has a lot of documentation, and is more likely to work the first time.
After @Ted Yapo commented on my last log, I also realized that the fan motor driver I chose has a high voltage saturation need on the two outputs, limiting the power actually available to the motor itself. I've used fan drivers for other projects and like the simplicity of the part, but I redesigned the board to include an actual brushed motor driver.
I made a square, somewhat spread-out PCB to test the new features, it's an intermediate step before putting all these new parts on the board and having no space to probe.
I sent it off last night to @oshpark's super swift service. It includes:
Tag Connect layout! >> this one I'm really excited about
New buck-boost >> already realized I forgot to put the thermal vias in
New motor driver >> only one, so the the buck-boost won't be getting that hot anyway :)
On-off linear switch (replaces annoying momentary)
My flight test showed me that my motors didn't have enough lift/ draw enough current/ rotate fast enough. I ordered several motors to test from Uxcell ranging from 13,000 rpms to 40,000 rpms.
All the motors I bought have rpm ratings + voltage, but no kV rating.
Motor kV (the rpm constant, not kilovolts) is the relationship between rpm and generated back emf (force). It's defined as the number of revolutions per minute (rpm) that the motor will turn when 1V is applied to the motor with no load. So rpms/ volt.
A low kV (more winds, thinner wire) will have higher volts/ less amps/ higher torque so it can swing a larger propeller.
A high kV (less winds, thicker wire) will have low volts/ higher amps/ lower torque for swinging a smaller propeller.
The blimp is working a lot better. The motors are just not fast enough, nor are the propellers moving enough air to make enough of a difference. I put a 500 mA battery on it which is why now there are 5 balloons needed to hold it up :/ (I am afraid to weigh the gondola now).