Ornithopter powered and controlled by servos
Introduction to concept
Ornithopters are aircraft that use oscillating wings to stay aloft. Depending on the characteristics of the aircraft, an ornithopter can maintain flight at a constant velocity like a bird, or it can fly in static air like an insect. These scenarios are analogous to an airplane driven by a propeller and a helicopter at hover.
Video A. Bird in horizontal flight
Video B. Insect at hover
There are a few advantages to ornithopters. In horizontal flight, the wings of an ornithopter can sweep over a much larger area compared to a propeller. According to actuator disk theory, this increase in the area can increase the propulsive efficiency of the aircraft. Likewise, oscillating wings do not suffer from dissymetry of lift and gyroscopic precession like a rotary-wing. The absence of these forces can enhance the natural stability of an ornithopter compared to a helicopter.
Initial aircraft design
This project concerns itself with developing a radio-controlled ornithopter powered and controlled by two servos. Each servo is connected to a wing and flapped independently. This allows the motion of the wings to be controlled through software rather than through a specially designed mechanism. There are many advantages to this approach, mainly that it is very easy to adjust the amplitude of the flapping motion, and the wings may be oscillated asymmetrically to achieve directional control.
Aircraft Iterations
Iteration 1:
The first version was a test platform to observe how effectively servos could oscillate a long spar. It also served to test springs connected to the servos in series or parallel. These springs can reduce the power drawn by an oscillating mass driven by a motor if tuned correctly. For this design, a a coil spring was connected in series with the servo and a leaf spring was used for a parallel connection.
Iteration 2:
The second iteration was a complete aircraft. The design employed a pair of skewed hinges to hopefully achieve roll and pitch control. Unfortunately, test flights revealed this system did not work and barely redirected the aircraft. In addition to this, the servos were undersized and were under too much load. This resulted in the servos getting very hot to apply the desired torque. The wings were also inefficient and could not generate the required thrust for the aircraft to sustain flight.
Iteration 3:
The third iteration built upon the second version. Control was accomplished separately through a controllable tail, and larger servos with four times the torque were used to reduce the likelihood of excess torque. To complement this, the servos were connected indirectly to the wings via a lever arm to double the torque applied to the wings. While this overcame the issues of driving the wings, the wing design was lacking. To overcome this limitation, different wing designs revealed large wings with a high degree of flexibility allowed the aircraft to maintain powered flight.
Arduino Code
The program is designed to receive 3 PWM inputs from an RC receiver operating in MODE 2 and outputs 2 PWM signals for off-the-shelf hobby servos. The aileron (1) and elevator (2) channels are used to bias the dihedral angle of each wing, with the aileron rotating the wings in unison while the elevator changes the dihedral angle. The throttle channel (3) changes the amplitude of a fixed-frequency oscillation.
There are three wave-forms the user can select: sine wave, triangle wave, and saw wave. The controller also is equipped with a low-voltage cutoff routine. This will disable the throttle channel to prevent over-discharging a battery. The routine uses an analog pin to read the input voltage via a voltage divider. The program was written for an Arduino Nano, but it should be compatible with other boards. It requires the PinChageInterrupt library. For more information on the controller, please see this RCgroups post.
See the attached schematic for an example of the required circuit:
Github Repo: ServoFlappingControl
Videos
Below are videos of different iterations of the aircraft:
Video 1. Demonstration of servo controller
Video 2. Underpowered servos
Video 3. Inefficient wings
Video 4. Assymetric wing elasticity
Video 5. Segmented wing panels
Construction blog
For much more detailed information on the steps taken to develop this aircraft, see this thread on RCgroups: Attempts at a servo flap ornithopter. The most important posts are shown below:
- Very simple math model
- Energy and oscillating mass
- Elastic actuators - motors and springs
- First iteration - the build begins!:
- Control via dihedral offset: Pitch-flap coupling
- Oscillating wing as 2nd order damped system
- Second iteration:
- Maximum motor efficiency: Idealized case
- A simple model to determine servo speed and torque
- Oscillating servo:
- Forth iteration:
- Measured oscillations - Updated Servo controller code - servoMotor Library
- Analysis of the effects of wing elasticity: