EVPR: Electric Variable Pitch Rotor

An electrically actuated variable pitch rotor with a wireless interface

Similar projects worth following
The Electric Variable Pitch Rotor (EVPR) is a variable pitch rotor that is electrically actuated. The design is self contained, eliminating the need for heavy mechanical linkages or costly slip rings. An on-board controller, the ESP32, receives commands via wireless data and controls the blade pitch via servos placed inside the rotor hub. Power is provided via batteries, also contained inside the rotor.

The EVPR could enable new multi-rotor vehicle designs and enhance current multi-rotor designs. The design could potentially be used to create more efficient conventional light aircraft and hovercraft or to make inexpensive rotary subwoofers.

The design files are open-source under the GPLv3 License.


Multi-rotor vehicles are opening up new possibilities everyday. While much of what's promised regarding agriculture, shipping, flying cars, etc. is years, or even decades away, if just some of their capabilities can be achieved, the world will be a different place. Variable pitch rotors can make the promises of multi-rotors come to fruition.

Fixed pitch rotors are typically optimized for a single condition, namely hovering. This means that for other conditions, the design is less than optimal. Variable pitch rotors change the pitch of the blades as required and provide better overall efficiency.

Variable Pitch Examples

Most multi-rotor vehicles use fixed pitch rotors, but there are a few exceptions. The Stingray 500 and the MIT ACL Variable Pitch Quadrotor are two such examples. The maneuvering capabilities of these two vehicles are simply amazing.

EVPR: Electric Variable Pitch Rotor

The main idea behind the EVPR is to put all of the components inside the rotor hub, eliminating the need for swash plates or slip rings, which can cost upwards of a thousand dollars. Servos inside the hub are used to actuate the blade pitch and power for the servos is provided by batteries. Control of the servos is provided via wireless signals. The first application of the EVPR will be on #Goliath - A Gas Powered Quadcopter.

EVPR hub containing the microcontroller, servos and batteries

Currently, the nominal battery life is 30 mins. In the the future, an axial flux generator will built into the hub and the batteries will act as a backup. In the future, the design can also be used to create  variable pitch propellers for small aircraft that can simply be bolted on and require minimal modifications to the aircraft. Hovercraft could also be fitted with a with a variable pitch fan that not only increases efficiency, but could also provided a braking thrust to slow down. The EVPR design could even be used to create cheaper low frequency subwoofers!

In an effort to make a design that was more easily manufactured, off-the-shelf components are used when available. The design utilizes servo mounts, pillow blocks and servo gears available from Servo City.


Each blade is mounted to a shaft, held in place by two pillow-blocks which carry the radial loads on the shaft. The shaft is actuated using a geared servo. To counteract the centrifugal force pulling the blades outwards, two thrust bearings are utilized and heavy-duty retaining rings hold the shaft in place.

Servo and gears for actuating the rotor blades
Servo and gears for actuating the rotor blades

Gear drive in action

The EVPR design uses standard size servos. The specific application will drive the servo and gear ratio selection. For #Goliath - A Gas Powered Quadcopter, the required torque and a variety of servos considered are shown in the figure below.

Required torque for the Goliath quadcopter and the servos considered

Required torque for the Goliath quadcopter and the servos considered

Almost all of the servos considered have sufficient torque with a gear ratio of 5:3. However, required torque isn't the only consideration. Early testing with the Hitec HS-5685MH found that while the servo had sufficient torque, the gears would strip. The brass gears were unable to handle the the shock and vibration environments and so a steel or titanium gear servo was required. The HSB-9475SH with steel gears was then selected since it's one of the cheapest servos with the required type of gear.


The heart of the EVPR is the ESP32 micro-controller. Currently a Sparkfun ESP32 Dev Board is used. The electronics are placed as close to the center of the hub as possible to lower the centrifugal forces experienced.

For now, a minimum of two ESP32s are required for the EVPR. The first is connected to the flight controller via a UART connection and acts as a master node. It's purpose is to act as the access point and broadcast the servo commands from the flight controller. The controller on the rotor acts as a slave node, receiving the servo commands from the master node and commanding the...

Read more »


CAD file of the EVPR assembly (minus electronics)

stp - 7.91 MB - 10/19/2017 at 15:24


  • 1 × Adafruit Huzzah32 Dev Board
  • 1 × EVPR Breakout Board Custom board (see instructions)
  • 2 × Standard Size Servos Torque required based on specific application
  • 30 × Socket Head Screws Black Oxide 6-32 3/8" long (91251A146)
  • 4 × 1/2" Bore Side Tapped Pillow Block SKU: 535138

View all 17 components

  • Firmware using ESPNOW seems to be working well

    Peter McCloud02/08/2018 at 06:30 0 comments

    Most of the recent work has focused on the Fiirmware,  particularly the protocol for communicating the servo positions between the master and the slaves. TCP was used for the prior iteration of the firmware, but led to less than satisfactory performance. Spurred on by @Jarrett's suggestion, I wrote a version of the firmware using the ESPNOW protocol. While it using wireless data, it doesn't require a WiFi network, but instead uses  IEEE 802.11 Action Vendor frames (as I don't follow this either, assume *magic*). The idea is that the ESPNOW protocol requires less overhead than sending UDP or TCP packets over a WiFI network that has to be established.

    So now the master node reads the servo positions from the flight contoller via UART and broadcasts the servo positions for all of the slave nodes over a single packet. Each slave node receives the packet and only uses the data for the servo it requires. This simplifies the work done on the master node, since using sockets over WiFi required a separate connection for each rotor.

    Testing thus far shows that the connections appear reliable. out of 9000 packets sent at a rate of 50 Hz, the slave node missed only three packets (0.03%). The servo movements are visibly improved from before, with none of the jerkiness. I've gone ahead and merged the updated firmware into the master branch.

    As always, there's more work to do. The slaves are setup to send out a heartbeat packet every second, and the master node is setup to receive them, but nothing is currently been done with the information. Eventually the idea is to have the master get a status confirmation of the rotors and sharing that information with the flight controller to prevent arming the vehicle with less than the required number of working rotors.  There are a few other error checking tidbits to add to make the system as safe and reliable as possible.

  • Two operating rotors

    Peter McCloud01/18/2018 at 06:00 2 comments

    There are now two operating EVPR prototypes. This week I finished assembling the parts for the second rotor. Both are using the new Adafruit Huzzah32 boards. 

    While both rotors respond to the controller inputs, there is an unacceptable delay in the responses and a jerkiness to the servo movements. The firmware uses TCP to send the servo positions from the master to the slave. I had chosen this method so that the connection status could be monitored. However, using TCP appears to be having side effects that I don't understand. More work is needed on the firmware.

  • New Adafruit Huzzah32 Boards are working!

    Peter McCloud12/06/2017 at 05:24 0 comments

    In the last few weeks, I found that the Sparkfun ESP32 Thing was not working well with the ESP-IDF due to the 26MHz crystal. In particular there was issues sending data packets between two of the boards. Therefore I ordered a batch of Adafruiet Huzzah32 that have 40 MHz crystals and they arrived a few days ago.

    The Adafruit board is slightly smaller than the previous Sparkfun board (0.9"x2.0" versus 1.0"x2.25"). Functionally there are almost identical. The Sparkfun board has an extra push button, but the Adafruit board is shielded. The battery connector on the Adafruit board is definatly more solid and has additional attachment points for strength.

    The first thing I did was to load the performance examples and runs some tests. Both the UDP and TCP tests worked as expected with the UDP throughput in the Mbits vs. the few Kbits I was getting with the Sparkfun board.

    Next I flashed the latest EVPR firmware onto the boards and swapped out the electronics in the EVPR prototype. There were no connection issues and the TCP data packets were sent correctly.

    The next step is to design and print new board holders since the Adafruit board is too small for the current ones. The pin layouts are different as well, so I'm going to need to find a different method of attachment. 

  • Issues with Sparkfun ESP32 Thing

    Peter McCloud11/25/2017 at 19:35 0 comments

    Over the past month, a lot of work has gone into testing out various communication methods between the master and slave nodes. Basic UDP, mulicast UDP and TCP have all been tried out, with each having various issues. Digging deeper I went back to some of the ESP-IDF examples that test performance and found that even for the basic examples, something is not right with the Sparkfun ESP32 Thing dev boards I'm using.

    Apparantly, the ESP32 Thing has a non-standard crystal frequency of 26 MHz, whereas the vast majority of the other ESP32 products have a 40MHz crystal frequency. The ESP-IDF seems to be tested against products with 40 MHz crystals and there appear to be a lot of bugs when the examples are run on the ESP32 Thing. Like getting very slow UDP speeds (0.4 Mbit vs 130 Mbit) and for TCP, the connection disconnects after a few seconds.

    I'm going to contact Sparkfun about getting some tech support about this, but I don't really have any expectations that it'll get resolved. In the meantime. I'm going to order a pair of Adafruit Huzzah32 boards and try those out.

  • UDP Unicast vs. Multicast

    Peter McCloud11/10/2017 at 05:21 0 comments

    With the basic EVPR hardware working, the firmware needs some work to support multiple rotors and add some redundancy. Right now only the single rotor is supported and if the rotor resets for whatever reason, both the master and slave need to be rebooted to re-establish the connection.

    Doing some research on what's available on the ESP32, it seemed like UDP Multicast might be the solution. A single data packet would be sent out to all of the rotors. Using the ESP-IDF example, it was straight forward to create a branch of the firmware to support multicast.

    The end result was less than satisfactory. Multiple devices were able to receive data and if a device got disconnected, it was able to pickup the data packets successfully. However, the latency was unacceptable. There was sometimes delays of one to two seconds using multicast. It'd probably be fine for other applications, but for trying to control a quadcopter, the delays are really unacceptable.

    Thank goodness for version control and branches. Now it's back to the unicast method to add the required support there.

  • Working Prototype!

    Peter McCloud10/29/2017 at 21:37 0 comments

    The prototype is finally working! The video above shows the prototype in action. Changes in the blade pitch correspond to changes in the thrust direction. The rivets were replace with AN470 1/8" diameter rivets (AN470-4). These rivets have 350 lbs of shear strength for a total of 2100 lbs of strength. The new blades have been tested 4 times now without the blades coming loose.

    One of change was made to the batteries. It turns out the old batteries didn't have sufficient current capacity and the micro-controller would brown out while the gas engine was started. The new batteries are a similar form factor and have a 20C rating (20x the battery capacity). The capacity is slight smaller now (650 mAh vs. 900 mAh), but no more brownout issues!

    More testing needs to be done on the physical hardware to ensure the design is adequate for flight testing. Additionally more work needs to be done to develop the firmware to add reliability. Once that's done the the other rotors can be completed and flight testing can begin!

  • Prototype not working in time for the Hackaday Prize Deadline

    Peter McCloud10/21/2017 at 00:56 0 comments

    Last week, the first test of the EVPR prototype working in concert with the flight controller was conducted. It was found while the previous servos had sufficient torque, but that the internal servo gears were not suitable for the vibration and shock environments. New servos with steel gears were Additionally the retaining rings needed to be upgraded to heavy-duty versions.

    On Tuesday the new rings arrived and the axles were modified for them. Yesterday, the new servos arrived. The new brushless servos are really cool. The are super quick and have none of the singing that the brushed servos had. Late last night the new servos were installed and testing began last night and continued into today.

    Unfortunately this afternoon, the blades on the prototype came loose. On startup the engine revved up quickly to a high RPM and the rivets holding the blades in placed sheared, sending the blades flying.

    Axle with sheared rivets
    Axle with sheared rivets

    Unfortunately there's only 14 hrs left until the deadline for the Hackaday Prize and there isn't a working prototype to meet the contest requirements. The prototype IS close to working. Stay tuned!

  • First Active EVPR Tests

    Peter McCloud10/14/2017 at 17:36 0 comments

    After completing the flight controller setup, it was time to test the rotor with the Pixhawk actively controlling the rotor surfaces. The rotor was activated, check-out and then the gas engine was turned on. Everything appeared to work well, but when the engine was turned off, it was found that one of the rotor blades had partially slipped out of place.

    Fortunately, there was an extra groove in the axle shaft that caught the retaining ring when it slipped out, keeping the rotor blade from flying out. The grooves were found to be a little shallow, so they were machined slightly deeper. Additionally the retaining rings did seem to close as tight as they should, so new retaining rings were used. There was also some stripped internal servo gears, so the servo was replaced as well. At the time I was thinking that the blade slipping might have jammed the axle gear in place and that caused the gears to stripped.

    A second test was conducted and the other rotor blade popped partially out and the brand new servo on the side that stayed in place had stripped internal gears. So it doesn't seem to be the rotor blade failures that are causing the stripped gears, but the normal environments.

    The rotor blades popping out, should be relatively easy to the fix. There are heavy duty retaining rings that have a higher holding force and I've already ordered those. The servos required a bit more thinking. The gears for the current servos are listed as "Metal", but they are made from aluminum and brass. It's obvious that either steel or titanium gears would be a better choice. However, servos with steel gears have higher torque, which isn't a bad thing, but draw more power.

    The solution is to use brushless servos. The servos I selected are the Hitec 9475SH. It's got steel gears, 50% more torque, is almost twice as fast and draws 900 mA at stall torque vs. 2700 mA that the current servos require, which should push the battery life almost up to 30 mins. The downside of course is money. The new servos cost $99 instead of $40.

    I thought that this failure was going to mean that I wouldn't have a working prototype in time for the Hackaday Prize deadline. However, the retaining rings will get here on the 17th and the servos will get here on the 19th. I should have the new retaining rings installed by the time the servos show up, and it should only take 20 mins to install the new servos. That'll give me about 36 hrs to test and update my video showing the working prototype.

  • Pixhawk driver and EVPR Firmware working!

    Peter McCloud10/06/2017 at 01:26 0 comments

    Initial testing of the Pixhawk drivers and the EVPR Firmware was a success as shown in the video below. Next step is re-configuring the control mixer and setting the correct servo ranges for the rotor blades.

  • Initial EVPR code working, PX4 driver completed

    Peter McCloud10/02/2017 at 05:03 0 comments

    The initial code for both the EVPR master and slave nodes is FINALLY ready. Additionally the PX4 driver which passes the servo settings to the EVPR master node is also complete. The servo values are correctly being passed from the flight controller tothe master node via UART and the values are being successfully passed from the master node to a slave node via UDP packets.

    The code can be found in the repository at the following locations:

    EVPR Master Node

    EVPR Slave Node

    PX4 Driver

    Now the electronics will be attached to the vehicle and more testing of the code can be conducted. If the servo values with the engine off are successfully received, then the testing can proceed to turning the engine and checking out the code on the running vehicle.

View all 29 project logs

  • 1
    Prep/Design Work

    Rotors/propellers are designed for specific applications. The airfoils and blades need to be designed to work with the chosen engine/motor. One the rotor blades are defined, the required torque to actuate the blades can determined and the appropriate servos selected.

    The following instructions up until the rotor assembly can be done in any order. However, they are listed with the longer lead time items first for a more efficient build process.

  • 2
    Print the Battery and Board Holders
  • 3
    Cut the Rotor Plates

    The rotor plates were designed to be cut on a CNC router. The CAD for the plates can be found in the repository.

View all 11 instructions

Enjoy this project?



Phil wrote 12/29/2017 at 06:02 point

Hi Peter McCloud,

Ever realized that there may well be a huge need for electrically adjustable pitch propellers in the new, so-called eVTOL industry that will emerge in the coming years? Cheers, Phil

  Are you sure? yes | no

Peter McCloud wrote 02/08/2018 at 19:59 point

Hey Phil,

So sorry for the slow reply, I never got a notification on this. To answer your question, yes, absolutely! The idea behind this design is that it can be bolted onto another. Gas motor, electric motor, eVTOL, airplane, etc.

  Are you sure? yes | no

Mal'oo wrote 07/18/2017 at 18:35 point

When thinking about flight critical systems in aircraft, they tend to be set up in a way so that they have failsafes. Electric pitch adjustment, for example, use long screws, since they hold position without power to the motor. Fixed wing aircraft seem to use oil pressure to actuate the prop pitch, and in the event of loss of oil pressure (engine failure) the prop's failsafe position is full feathered: Minimal drag to aid in safely landing.

So, there's a need to engineer for failure here. Strong return springs might be out of the question, as it's additional force for the servo to overcome, but it's the best fail-safe option, as failure will, ideally, revert back to stable flight. 

Another possibility might be worm gears, as they hold position without any power input, similarly to the screws mentioned above. They're in the same ballpark for speed, even: A tiny bit of research puts servo gear reductions in the 100-600 to 1 range, with a tiny, low torque motor running at 10k RPM or so. Worm gear reduction is dependent on the number of teeth on the gear you're driving. At a guess, leaving the gear on your props unchanged would result in a 50:1 reduction.

  Are you sure? yes | no

Peter McCloud wrote 07/23/2017 at 18:23 point

Mal'oo, thanks for the feedback. I completely agree, flight critical systems need to have fail-safes. Since this project is in the early stage, there is a balance between adding fail-safes and just trying to get something to work. Honestly, I had considered the failure scenario that broke the blades before it happened, but I felt that the risk was low enough to move forward.

I like the idea of using worm gears to hold the blade positions in the case of a power failure. I did a quick search, but I don't see any off-the-shelf hardware that'd be a quick replacement. I'll be sure to keep it in mind for future iterations.

  Are you sure? yes | no

Gravis wrote 07/05/2017 at 13:10 point

I like your concept but I have some tips to help.

1) Gear both rotors so that they can never go out of sync.

2) When in flight, it will need significantly more torque than a typical servo can provide.  Changing the gear ratios in a continuous servo might work.

  Are you sure? yes | no

Peter McCloud wrote 07/05/2017 at 14:55 point

Thanks for the feedback.

1) Not locking the shafts together actually leaves open some intriguing design possibilities, such as the ability to act as a virtual swash plate.

2) The airfoils were chosen for their low pitching moment and the servos have more than sufficient torque for the current application. This is covered in one of the early logs.

  Are you sure? yes | no

vsohal2 wrote 07/05/2017 at 05:37 point

You might look at the magnetic awash-late concept too:

What sort of power draw do you think the servos on your design will have? It seems that you will also have losses from wireless power transmission as well as holding torque for the servo. You might dramatically boost efficiency if you added some sort of mechanical locking mechanism to allow holding torque to be zero when you don't need to change pitch.

  Are you sure? yes | no

Peter McCloud wrote 07/05/2017 at 14:49 point

Thanks for the swash plate info. That's a whole nother level beyond what I'm trying to do, but I'll be sure to keep it in mind in the future.

The two servos draw about 40W at stall. You're right, a locking mechanism or spring mechanism could reduce the power consumption. Once I've demonstrated the concept works, then I can l look at improving the efficiency.

  Are you sure? yes | no

Yusuf Khan wrote 05/08/2017 at 20:22 point

Hi. This is a fascinating project, and congrats on becoming a finalist.

I was curious about 2 things. Why not slip rings for transferring power and control signals?
Also, I see the torque required has been calculated, but what about the servo's angular velocity and acceleration . What's the formula for rotor rotational speed to servo pitch speed?

I may be using the wrong lingo...

  Are you sure? yes | no

Peter McCloud wrote 05/08/2017 at 20:48 point

Yusef, thanks for the compliments.

I haven't been able to find any off the shelf slip rings that can handle 3000-4000 rpm. There are some aerospace grade models that can be custom ordered, but they cost thousands of USD.

I haven't documented the servo details yet as I'm still working that out. Ideally I want 20 deg of blade pitch rotation for the full servo travel. The servos I'm using right now will travel the full range in 0.9s

  Are you sure? yes | no

EngineerAllen wrote 05/01/2017 at 09:49 point

im going to be using variable pitch props on a future version of my asymmetric uav

having large rotors around CoM to generate 100% of vertical thrust eliminates the issue my current design has with asymmetric propulsion on pitch axis control.

since smaller variable pitch rotors can then control pitch axis without surrounding CoM.

it also maximises efficiency 

so im interested to see how yours works out

especially with the control system side

  Are you sure? yes | no

Peter McCloud wrote 05/01/2017 at 14:59 point

Cool, glad to hear others are interested in it. I'm trying to keep in mind scalability as the design proceeds. How big are your smaller rotors?

  Are you sure? yes | no

EngineerAllen wrote 05/04/2017 at 08:53 point


  Are you sure? yes | no

Daren Schwenke wrote 04/03/2017 at 19:12 point

This idea scares me.  You are introducing multiple single points of failure into a system where you already have no room for any.  I would look at using near field communication instead if you insist on going wireless for your control surfaces.  There is just too much traffic in the 2.4 Ghz band to make any system 100% reliable.  First time this powers up at a Makerfaire, you'll soon learn the entire band becomes a really small place.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 04/03/2017 at 20:26 point

My head spun a few times when I read that too... People just put 2.4GHz gizmos everywhere !

If you inject power through HF fields, ike contactless smartcards do, you can also modulate them to transmit data.

  Are you sure? yes | no

Daren Schwenke wrote 04/03/2017 at 22:04 point

In this case, he could just modulate it directly with the inverse of the PWM signal the servo requires anyway.  A couple of analog bits would do it then.

  Are you sure? yes | no

Peter McCloud wrote 04/03/2017 at 20:59 point

Daren, I'm not sure where "multiple" single points of failure are being added. I understand that the wireless data adds one extra single point failure. If the 2.4 GHz band is being relied upon to provide primary control remotely, via the transmitter, it doesn't seem too much of a stretch to use it for intra-vehicle communication.

I went with Wifi to start with because it's cheap and easy to implement as it's already part of the ESP32. I think your right that the NFC might be a better choice, though it would require 4 TX/RX pairs. The nice thing is that once the hardware and firmware are in place, it should be easy to implement other wireless technologies. Having two different ones would probably be best for redudency.

  Are you sure? yes | no

Daren Schwenke wrote 04/03/2017 at 21:39 point

Each rotor will rely on it's own connection.  4 rotors.  4 single points of failure. 

The law enforcement way of bringing down drones is to flood them with wifi/false GPS signals.  In the case of your drone, that would also result in compromising flight stability and a pretty much instant uncontrolled plummet to the ground.

  Are you sure? yes | no

daigakusei wrote 03/21/2017 at 11:10 point

Hi Peter,

is the power generator not a little bit over engeniering. The generation of electric power in the hub reduce the rotation for the rotor. Every change of magnetic field in the coils produce an reverse force on the magnet. 

Why not an Qi power induction like the loader for mobilephones. 

The sender coil axial around the axis and receiver coild in hub parallel.

The AC of the system whouldn't interferenc with the rotation of the hub.

P.S.: Excuse my bad english its not my native language.

  Are you sure? yes | no

Peter McCloud wrote 03/21/2017 at 18:53 point

I had steered away from wireless power induction because I thought it'd be less efficient. Looking at Qi after you mentioned it, that may not be the case. I'll have to look into that more.

One advantage to a generator based system is that it could potentially be more fault tolerant. If the vehicle suffers a power loss the rotor could still operate and a backup flight control system could attempt to autorotate by feathering the rotors.

  Are you sure? yes | no

Benjamin Hab wrote 04/08/2017 at 20:59 point

When talking about wireless power: I am not entirely sure if this would work, but how about tying the pwm line of the servos to V+ and using a pwm signal on the Qi? At least for analog servos that sounds like a feasible idea to me. 
Anyway, is there any particular reason not to take the rotor head of a big model helicopter? It is at least proven to work and would greatly enhance your yaw dynamics (I havent understood by now, how they are supposed to work with variable pitch anyway?)...
Best wishes,

P.S.: Your projects are really impressing!

  Are you sure? yes | no

Martin wrote 10/18/2017 at 08:38 point

Regarding inductive power transfer (transformer) vs. generator: AFAIK the application is a "drone" powered by a gas engine. So you need a generator anyway. In such a system with a variable pitch rotor the rotor speed is fairly constant. So I think the generator in the hub is a very good solution. It does also not rely on high frequency electronics with stressed components, just some magnets and coils like in any old boring motorcycle generator.
These permanent magnet alternators are regulated with a phase angle control. Of course this does not give a very stable power, so this only works together with the battery.

In aviation the first priority is reliability. This goes that far, that engine have twin spark plugs per cylinder, just for redundancy and use (or used for very long time) old fashioned magneto ignition, so it does not depend on the battery and related systems.
The considerations regarding single-points-of-failure are very important, but in an unmanned system probably not that highest priority than in manned flight.

I would consider optical data transfer in the hub to eliminate the 2,4GHz vulnerabilities. If the hub is sufficiently shielded against external light this should be possible. Distribute some IR LEDs between the magnets and modulate them with the PWM or a data signal. In the middle of one of the generator coils a receiver (photo diode) is placed.

Of course inductive would also be possible, like in old fashioned VHS recorders. The transmitter coil positioned around all of the magnets and the receiver around the the outer circumference of the generator coils. In this way these two coils do not interact with the magnetic fields of the generator.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates