by Floris Wouterlood – September 2, 2021
An old plastic scale model of a Douglas DC3 aircraft was retrofitted with electric engines, navigation lights, strobe and landing lights. An Arduino Nano mounted inside the fuselage controls all these devices.
The Douglas DC-3 is a very successful fixed-wing piston-engine aircraft designed before World War II. It belongs to the first generation of all-metal planes and was at its introduction in a time dominated by aeroplanes made of wood, wire and fabric a true revelation. Thanks to its size, comfort, aerodynamics, cruise speed and range this aircraft revolutionized civil aviation. Flight time from Los Angeles to New York shrunk to just 12 hours, with two refueling stops.
figure 1. Wiring scheme for the DC3 plastic scale model. The Arduino Nano will be positioned inside the fuselage of the aircraft. Engine control is based on the L9110 chip.
The military version, known as the C47 ‘Skytrain’, became famous through its participation in World War II operations such as ‘Market Garden’ (1944) with mass droppings of airborne troops. One of the most memorable performances of this aircraft was during the Berlin Airlift (1948-1949), transporting all sorts of goods to the cut-off German city, Berlin. Today a small number of DC3s is still flight worthy, some of them belonging to aficionados e.g., the Dutch Dakota Association in the Netherlands.
Plastic scale model
Twenty years ago I bought and assembled in a mix of curiosity and admiration a plastic scale model of the DC3 and hung it from the ceiling of my office. How pleasant would it be to see the navigation lights, landing lights and beacon blinking while engines would be humming and propellers turning! With the advent of colored leds, small electric motors and Arduino governed L9110 chip motor control, and armed with experience, I decided to ‘Arduinoise’ my precious scale model.
figure 2. The Douglas DC3 and its specifications.
The L9110 chip
The L9110 is a cheap and humble two-channel push-pull power controller chip designed for use with small DC motors in the 2.5-12V range, managing currents up to 1.5-2.0 Amps. In other words: Arduino compatible!
Because of its specs the L9110 is suitable for motor control in my DC3 scale model. Pulse width modulation (PWM) can be applied to control propeller speed (rpm) per software instruction.
L9110 chips can be purchased standalone, mounted on dual engine stepper motor control boards and also user-ready in so-called ‘fan boards’, that is breakout boards with on them a L9110 chip and a 3.3-5V DC motor that drives a propeller. I bought two of these fan boards (figure 1) for combination with my scale model. As the propellers were far too large I decided to remove the electric motors from their fan boards, mount them directly into the models’ engine nacelles and wire them with long wires to their ‘ripped’ fan boards placed inside the planes’ fuselage. The original propeller then would be mounted on the motor shafts.
The L9110 needs two pins of an Arduino that support PWM. Remaining pins of the Arduino are available to control leds: navigation (NAV) lights, beacon and landing lights.
Note that in aviation it is convention to designate in a twin-engine aircraft the engine on the left wing as ‘engine #1” and the one on the right wing as ‘engine #2’. In a four-engine aircraft the left outer engine is engine #1, the left inner is called ‘engine #2’ and so on.
The selected pins and their control function are shown in the table below.
|D3||engine #1 L9110 fan board||fan board #1 AIN||turn prop clockwise|
|D5||engine #1 L9110 fan board||fan board #1 BIN||turn prop counterclockwise|
|D6||engine #2 L9110 fan board||fan board#2 AIN||turn prop clockwise|
|D9||engine #2 L9110 fan board||fan board #2 BIN||turn prop counterclockwise|
|D7||left landing light led||white led||landing light|
|D8||right landing light led||white led||landing light|
|D10||left NAV led||small red led||NAV light|
|D11||right NAV led||small green led||NAV light|
|D12||beacon led||big red led||beacon (strobe)|
|5V||engine L9110 fan boards||fan board VCC||engine power supply|
|GND||engine L9110 fan boards||fan board GND||engine power supply|
Breaking apart, adapting and reassembling the model
figure 3. Positioning of the DC motor. The wing is taken apart and the nacelle for engine #2 opened. The motor is centered in the nacelle with pieces of cardboard and fastened with some acrylic kit. The ‘ripped’ L9110 fan board is to be mounted inside the fuselage. The motor needs only two wires to the L9110 fan board. The inset shows schematically the positioning of the motor
The first experiment was taking the DC motors off their L9110 fan boards and reconnect them with long wires. This test was necessary to see whether the engine would perform properly under PWM when its L9110 chip is some wire length away. This experiment was successful. Time had come now to take the scale model carefully apart, mount the DC motors in the engine nacelles and run the wires from each motor to the wing base. The scale model’s original propellers were attached to the motor shaft with a bracket cut from wire insulation plastic. The assembly of engine and propeller was carefully aligned with the nacelle axis, first with wedges made of cardboard that, after alignment, were secured in place with several drops of acrylic sealant.
As in real aviation the assembled nacelles with electric motors inside were tested one by one in an ‘engine test bench’ configuration (figure 4). As the original model’s propeller were going to be permanently connected to the shaft of the electric motor through an improvised bracket, imbalance and vibrations were likely. Proper, reduced propeller rotation speed and maximum allowed rotation speed had to be determined empirically. To manipulate propeller rotation speed this we applied pulse width modulation (PWM) (see sketch).
figure 4. Engine test bench: testing engine #2 mounted in its nacelle, rotating the scale model’s original engine #2 propeller. An intact L9110 fan board (left) served as surrogate ‘engine #1’ This board was later taken apart to supply the motor for the scale model’s engine #1.
Engines were tested by wiring them through ripped’ L9110 fan boards to an ESP32 WROOM test bench equipped with a TFT display. The ESP32 offers a rich supply of free pins ,many of them supporting PWM. The test bench was at hand from an earlier project (*), with its software modified for the purpose of testing the avionics. Held firmly in place by alligator beak clips of my ‘third hand’ the engines were ready for testing. The amount of propeller rotation speed suggestive for DC3 idling engines as well as maximum allowable propeller rotation speed was determined by manipulating the L9110s with a set of ledcWrite () instructions. Because the Arduino Nano uses analogWrite() instructions, a second, improvised test bench was built based on a Nano and two 4-character, 7-segment led displays. The propeller/engine test benches and the results obtained with them will be dealt with in a future paper.
figure 5. Wiring diagram for each wing: motor mounted in the nacelle, stripped and trimmed fan board inside the fuselage.
Running wires from wings to fuselage
Fortunately the model’s wings are hollow, with curved upper and lower wing surfaces. However, at the wing tips the upper and lower wing halves had been solidly glued together, with no space available and with no way to detach the wing halves from each other. The solution was to drill small holes in the underside of each wing, about 25 mm from the wing tip, to run from here NAV light wires through the wing interior to the wing base. The pins of the NAV leds were glued to the underside of each wing tip. Landing lights were positioned by drilling a hole in bottom of the landing light bay and guiding the led pins through this hole. At the wing base the wires labeled GND (from the NAV- and landing lights) were soldered together to form a common ‘wing GND’ wire.
After the completion of all the wing wiring another major test session was planned to determine if everything had been done correctly: the pre-assembly test (figure 6)
figure 6. Pre-assembly test, first step. Because after assembly the components will be out of easy reach all wires were connected to an ESP32 test bench and carefully tested. In this test configuration the wires still run from the fuselage via the planes’ cargo door opening to the test microcontroller board. In the next stage of assembly both parent ‘ripped’ L9110 fan boards will be mounted inside the fuselage. The Arduino Nano and all related wiring will also be positioned inside the fuselage of the DC3 model.
For this test the same ESP32 bench was used as in the engine tests. The engine test sketch was expanded with NAV lights ON-OFF control and landing led control. The strobe was mounted on a breadboard and tested as well.
Placing an Arduino Nano inside the fuselage
The aircraft model has a cargo door that is wide enough to manoevre a ‘nude’ Arduino Nano into the plane’s interior. However, I decided to equip a small soldering board with female pin headers that would accommodate the Nano. Thus all wires are not directly soldered to Nano pins but instead to the appropriate pin header pins on the bottom of the soldering board. A disadvantage of this decision was that the print with the Nano on top was too big to pass the cargo bay door. I solved this by separating the tail section from the fuselage. This was achieved by cutting the fuselage across at the level of the cargo bay and setting the separated tail section apart for the time being. The dimensions of the two ‘ripped’ L9110 fan boards were till too bulky an hence ‘trimmed’ by cutting nonfunctional material away. Next the trimmed L9110 fan boards, the print with the Nano and all wiring (including the wires to the beacon led) were taped together with Sellotape and pushed inside the fuselage. Before reassembling the tail section and the fuselage an opening in the bottom of the fuselage was made to let a cable through that connects the mini usb port of the Nano to a computer or a 5V DC usb power supply.
Inside the tail section small pieces of cardboard were glued that stick out of the fuselage as ‘dockers’ for the the tail section. The idea was to reposition the tail section guided by the ‘dockers’ and then, after testing all electronics once more, and then to attach the tail section to the fuselage small pieces of duct tape (this to enable future service work on the electronics) – gluing would be too definitive). As this did not work out satisfactory I remove the pieces of tape and firmly glued the fuselage and tail section together. After the model had been completely reassembled and body repair work had been completed a fresh layer of aluminum paint was applied while the propeller blade tips were given a yellow paint.
figure 7. It took some effort to get the electronics orderly on board. In this picture most of the Arduino Nano on its soldering board is already inside the fuselage while the two ‘trimmed’ L9110 engine control fan boards are visible in the cargo bay, prior to connecting them with the Nano. The tail section is ‘for the picture’ positioned in this configuration to show the proportions of the components.
Letting the beacon, NAV lights and landing lights blink is an easy job with an Arduino. The engines presented a challenge. A certain mass consisting of motor parts, shaft and propeller must be set into motion. This requires more power than necessary to rotate the propellers once they spin. I wanted to run the engines idle on purpose to have the best visual effect of rotating propellers. The exact startup procedure for each engine is therefore a high PWM setting to force the propeller to start spinning and then reducing the PWM setting just enough to reach idling propeller rotation speed.
figure 8. Project successful! Reassembled, repainted and working scale model.
Results and discussion
The entire project: taking an old plastic scale aircraft model apart, fitting it with leds and electric motors, running wires and stuffing its fuselage with control electronics was very instructive. Taking tightly glued components apart caused quite some damage to the model that at the end was concealed as much as possible by body shop work. It is much easier to start this job with a new, unassembled model than doing a retrofit job on a veteran vehicle. Nevertheless the result is impressive: an aircraft with navigation lights, beacon, landing lights and engines that switch on or off, with all functions governed by an Arduino sketch. Thus, I feel that ‘Arduinoising’ my precious scale model was a successful enterprise.
Most work was done figuring out how to best fit the microcontroller board and fan boards inside the fuselage. One solution might be to solder L9110 chips directly onto a long, slender board that also supports the Nano microcontroller. An interesting alternative candidate is the ESP8266 microcontroller, e.g., a Wemos D1 mini because of its very small footprint with still the number of available pins needed to control the leds and to maintain PWM control of the propellers. However, the dimensions of a Nano better suit narrow fuselages than than comparatively ’wide body’ ESP8266 and ESP32 microprocessor boards.
DC3_scale_model_Nano_PWM_2_engines.ino (zipped file)
* ESP32-WROOM-32 and ILI9341 TFT display – an interesting match – Floris Wouterlood – TheSolarUniverse.wordpress.com, March 1, 2021
figure 9. Photo montage: flyby of the DC3 scale model at the scenery in Microsoft Flight Simulator 2004 at the Duxford Air Show.