Skip to content

Final Project

Summary

Poster

Video

Exploring new format of flapping flight mechanism

Background

On our planet, flying animals have a long history of evolution. Fossil records indicate that they have already lived on the earth in three hundred million years ago.
There are very wide variation in flying animals as to size, wing struture, flapping mechanism. But they all share a common basic format: Symmetry flapping wings.
Why do they share a single common format? Request of laws of physics? None of us know the reason exactly.

Motivation

When we turn our eyes into sea, we see several animals use wider variation of mechanism to move in water.
One of the most popular way is “tail fin”. Many fishes, whales, dolphins, etc. have large fins on their tail.
They swing their fins to swim in water efficiently. My question: does the same approach also work in the air? In other words, could it be possible to fly by flapping tail fin?

Intension of the project

What I would make

AS to tail fin swinging motion of water animals, there are two major styles: vertical swing and horizontal swing. Vertical swing is also called ‘dolphin kick’. I focused on ‘dolphin kick’ style for the project.

Final model image

I imaged that the final model would be fairly large, around 1 meters wing span.
It would resemble a dolphin, a flat fish or a halibut, but it is a not swimmer, but a flapping-winged flyer!

Project development

Design Key

I planned to build multiple airframes vary in dimension, to compare flight performance depending by their size.
But they would share some common design keys:

  1. Composed of carbon rods with 3D printed parts like joint, motor mount, crank and link, etc.
  2. Simple crank-and-link flapping mechanism
  3. Remote controlled by micro:bit

Construction

3D print parts

Mechanical components and various small parts were designed by 3D CAD and printed using a FFF type 3D printer. I chose ABS material, which was known for durability.

Carbon rod structure

Carbon rod is a kind of CFRP(Carbon Fiber Reinforced Plastic). CFRP is very light and strong material widely used for sports gear, airplane and recing cars.
Carbon rod is available in various size(diameter and length) from internet shop.

I used various size of fine carbon rods for main frame. Carbon rods is very hard material and should be cut using diamond files.

Carbon rods were push-fitted with 3D printed ABS joint parts.

Push fitted sections are easy to pull off, so the airframes can be folded compactly to ease strage and transportation.

Laser cut

A vertical fin, rudder, etc. were designed by 2D CAD and laser cut from thin Finnish birch veneer board.

CNC mill

The circuit board for the control unit was designed by PCB CAD and CNC milled. The back of the board was thinned down by sanding for weight reduction.

Remote controller

micro:bit has a 3-axis accerometer and a couple of push buttons on board, so it can be used as a motion-sensing controller.
But I wanted to add a traditional analog joystick for throttle control, so I designed a plastic case using 3D CAD and 3D-printed the parts. I used PETG material for the case.

Control unit

The control unit integrates a radio receiver(nRF52 module), a motor driver, a regulator and a servo motor for steering on one board.
The unit is detachable, so it can be used for multiple airframes sharing the common connecter design.

Programming

micro:bit is 1/2 credit card size single board computor developped by BBC for educational purpose. It comes with several I/O pins, LED array, push buttons, motion sensors, etc.
It can be programmed with several languages like C++, MicroPython, MakeCode(internally JavaScript) and Scratch.
It uses Nordic nRF5x series chip as MCU, so it can control other micro:bits and even non-micro:bit nRF5x modules as remote peripherals.
micro:bit is a bit bulky as a receiver for light weight flying objects, so I decided to use a compact nRF52 module for a receiver.

Input device

I programmed micro:bit as an input device(remote controller/radio transmitter).

My javaScript code for remote controller:

input.onButtonPressed(Button.A, function () {
    Status = “ON”
})
input.onButtonPressed(Button.B, function () {
    Status = “OFF”
    basic.clearScreen()
    radio.sendValue(“THR”, 0)
    radio.sendValue(“RUD”, 0)
})
let Rud = 0
let Thr = 0
let Status = “”
radio.setGroup(144)
Status = “OFF”
basic.forever(function () {
    if (Status == “ON”) {
        Thr = pins.map(
        pins.analogReadPin(AnalogPin.P0),
        32,
        992,
        0,
        1024
        )
        Rud = pins.map(
        input.rotation(Rotation.Roll),
        -90,
        90,
        -90,
        90
        )
    }
    basic.clearScreen()
    led.plot(pins.map(
    Rud,
    -90,
    90,
    0,
    4
    ), pins.map(
    1024 - pins.analogReadPin(AnalogPin.P0),
    32,
    992,
    0,
    4
    ))
    radio.sendValue(“THR”, Thr)
    radio.sendValue(“RUD”, 90 - Rud)
})

Output device

I programmed MDBT42V(nRF52) module as a MCU of output device(remote peripheral/radio receiver).

My javaScript code for receiver:

radio.onReceivedValue(function (name, value) {
    if (name == “THR”) {
        pins.digitalWritePin(DigitalPin.P0, 1)
        pins.analogWritePin(AnalogPin.P1, value)
    } else if (name == “RUD”) {
        servos.P2.setAngle(value)
    } else if (name == “ELE”) {
        pins.digitalWritePin(DigitalPin.P12, 0)
    } else {
        pins.digitalWritePin(DigitalPin.P0, 0)
        pins.digitalWritePin(DigitalPin.P1, 0)
        pins.digitalWritePin(DigitalPin.P2, 0)
        pins.digitalWritePin(DigitalPin.P12, 0)
    }
})
radio.setGroup(144)

You may feel that necessary information like library inclusion, etc. are missing in these codes.
As to micro:bit programming using MakeCode Editor which was exclusively developped for micro:bit, the editor automatically add these information when compiling the codes.
Caution: In order to make the compiled hex files work with non-micro:bit nRF5x chips, the hex files should be slightly modified(See my Week13 Assignment page for detailed information).

Prototypes

At first, I built a series of small airframes as prototypes prior to full scale deelopment.

PoC(Proof of Concept) model

I checked the potential of my idea using small scale rubber-powered model named “Micro” and found that “flapping tail fin flyers” were actually possible.

Flapping mechanism of “Micro”:

Specifications of “Micro”:

Wing span 480 mm
Length 580 mm
AUW(all-up weight) 10 gram
Wing loading 0.007 gram / cm2
Rubber FAI TAN Super Sport 2.4 * 1000 mm

Larger, motorized model

Once I could find that the idea is promising enough, I stepped further.
I designed a larger, motorized model of the first prototype. It was wireless controlled by micro:bit.

Flapping mechanism of “Mini”:

Specifications of “Mini”:

Wing span 600 mm
Length 660 mm
AUW 18 gram(/w battery)
Wing loading 0.008 gram / cm2
Motor size 6 * 15 mm
Gear unit plastic planetary gear
Gear reduction ratio 1 : 171
Battery Li-po 1 cell 3.7V 100 mAh

Final projects

Based on the experience obtained by prototype development, I made a couple of airframes as my final project. One was named “Lite”, designed for indoor flight and another was named “Heavy”, designed for outdoor flight.

Indoor model

I designed “Lite” mainly for indoor flight.

Flapping mechanism of “Lite”:

Motor & gear reduction unit of “Lite”(also used for “Mini” unit weight: 2.8 gram):

Li-po 1 cell 3.7V 150 mAh battery for “Lite”(also used for “Mini”. unit weight: 4.3 gram):

Specifications of “Lite”:

Wing span 800 mm
Length 800 mm
AUW 35 gram(/w battery)
Wing loading 0.01 gram / cm2
Motor size 6 * 15 mm
Gear unit plastic planetary gear
Gear reduction ratio 1 : 171
Battery Li-po 1 cell 3.7V 150 mAh

Outdoor model

I also built “Heavy” mainly for outdoor flight. This was the one of the heaviest ornithopters I had ever designed.

Outdoor test flight of “Heavy”:

Flapping mechanism of “Heavy”:

Motor & gear reduction unit of “Heavy”(unit weight: 9.6 gram):

Li-po 3 cell 11.1 V 120 mAh battery for “Heavy”(stacked of 3 single cells. unit weight: 9.1 gram):

Specifications of “Heavy”:

Wing span 1000 mm
Length 1200 mm
AUW 60 gram(/w battery)
Wing loading 0.013 gram / cm2
Motor size 10 * 12 * 15 mm
Gear unit longitudinal mounted metal gear
Gear reduction ratio 1 : 50
Battery Li-po 3 cell 11.1V 120 mAh

Parts list

  1. Parts list for the airframe of “Lite”:
Parts name Description Cost(US$) Data
Carbon rods 1.2 mm dia. * 1000 mm rod * 3
1 mm dia. * 1000 mm rod * 1
1.6 mm sq. * 500 mm pipe * 1
16$
3D print parts 1 set
PartsSet1.step
PartsSet2.step
PartsSet1.stl
PartsSet2.stl
Gear reduction unit Precision Micro 10mm Planetary Gear Motor * 1
(only gear unit used. motor should be replaced)
1$
Replacement motor 615 Brushed Coreless Motor * 1
(for replacement)
1$
Thin plastic film for wing surface 0.01t * 500 mm * 2000 mm
0.5$
Cable, connectors, etc.
2$
Battery 3.7V 130mAh Lipo Battery * 1
3.5$
Total
24$

Parts size and cost would vary by the models.

  1. Parts list for the remote controller:
Parts name Description Cost(US$) Data
Computer board micro:bit v2.2 * 1 20$
3D print parts 1 set
1$ ControllerCase.step
ControllerCase.stl
Circuit board I used a sample circuit board supplied from Switch Science
It is to be replaced to original board
Joystick Analog joystick * 1
4.5$
Total
25.5$

The controller can be used for all the motorized models.

  1. Parts list for the control unit:
Parts name Description Cost(US$) Data
nRF52 module MDBT42V breakout board * 1
Pin pitch of MDBT42V was too narrow for hand-soldering,
so I used a sample breakout board supplied from Switch Science
(not catalog listed)
10$
Motor driver IC DRV8838 breakout board * 1
Pin pitch of DRV8838 was too narrow for hand-soldering,
so I used the breakout board
8$
5V regulator LM2940IMP5 * 1 3$
Servo motor GS-1502 1.5g/ 80g-cm/ 0.12sec Linear Servo * 1 6$
Original circuit board 1 CircuitBoard.step
CircuitBoard.svg
Laser cut parts 1 set
1$ ControlSurfaces.svg
Total
28$

The control unit is shared by all the motorized models.

  1. Programs:
Parts name Description Data
Transmitter JavaScript code for micro:bit microbit-Controller.js
Transmitter(hex) Hex file for micro:bit microbit-Controller.hex
Receiver JavaScript code for MDBT42V(nRF52) microbit-Receiver.js
Receiver(hex) Hex file for MDBT42V(nRF52) microbit-Receiver_Mod.hex

Requests and answers

Questions/requests Answers
What do they do? They make a powered flight using a flapping tail fin
Who's done what beforehand? There have been several flapping wing flyers in nature or artificially,
but flapping tail fin flyers were scarcey known.
Although flapping tail fin swimmers are very popular in the water.
What did you design? Digital desigend and manifuctured flapping tail fin flyers
What materials and components were used? Fine carbon rods for frames,
3D printed plastic parts for mechanic components,
thin plastic film for wing surface,
a small electric motor /w gear reduction and linkages for driving a tail fin,
a small linear servo motor,
a single 3.7V litium polymer battery for a power source,
and an integrated electric board for a control
Where did they come from? It came from the bottom of the sea...
How much did they cost? Around 80 US$ per 1 airframe /w controller & battery(Ready to Fly)
What parts and systems were made? I designed an entire flapping mechanism for the airframe,
3D printed plastic parts for mechanic components and a remote controller casing,
integrated electric board for a control,
user interface program for input device(micro:bit),
and control program for output device(motor and servo)
What processes were used? 3D CAD,
3D print,
PCB CAD,
CNC mill,
soldering,
embedded programming,
interface programming,
and integrated assembly
What questions did need to be answered? A powered flight using a flapping tail fin :is it possible on our planet?
How would it be evaluated? It would become the first time proof of capability of flapping tail fin flyers

Conclusion

I could show that flapping tail fin flyers were actuially possible. I’d like to enlarge the airframe to human scale next time!

All the contents of the project are open source with Creative Commons license Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).


Last update: June 19, 2022