Motor vibrations


No motors running, just "natural" noise of the sensors...

This post is obviously related to my “roman-fleuve” post about my attempt at building a quadcopter… I’ve decided however to create a new post as the initial one has already become too long, and dealing with vibrations is a more general mechanical question, that applies to much more than just quadcopters.

I still don’t know why my quadcopter refuses to balance properly, and to be honest it could be anything: the frame, the motors, the ESCs, the code, literally ANYTHING !

However, I have the feeling it’s related to vibrations, and there’s only one way to find out: done with the funny part of building the quad, now enters the tedious/annoying task of setting a vibrations test bench and do some measurements…

A couple of weeks ago I tried to minimize vibrations by re-enforcing the frame… I have no numbers but from what it looked like and what I could subsequently read on the Internet, it must actually have worsened them… lol ;(

Reinforcement bars

Reinforced frame

The idea is to test different options :

  1. at different speeds
  2. with different propellers
  3. with or without rubber grommets for the motor mounts
  4. and finally, with  modified frame

The conclusion will be that the only thing that makes a noticeable difference are the silicone rubber grommets, BUT that even then, at full throttle they actually induce MORE vibrations than without.

Obviously, there are really not enough measures to take this conclusions too seriously, but it seems that vibrations are very tricky and one can never get rid of them completely… it’s more a question of minimizing them on a range of frequencies, at the cost of others !

Finally, the new frame design (with carbon fibre centre plates) does help, by reducing by almost half (especially for the gyros) the vibrations… but I still seem to have a lot of noise/vibrations !

Could the ROUND tubes be more “vibration prone” than the square ones that everybody uses ?

__________________________________________________________________________________________

Here’s the code that will gather the data. I will basically go from 0 to full throttle in 10 steps, and for each step I will take 100 data points for the 3 gyros and the 3 accelerometers. Then simply plot this with the step/sub-step on the X axis and the measured value on the Y.

#include <Servo.h>#define toRad(x) (x*0.01745329252)  // *pi/180

#define toDeg(x) (x*57.2957795131)  // *180/pi

Servo esc;

double _roll, _pitch, _yaw, _compass;

int _gyroX, _gyroY, _gyroZ, _accelX, _accelY, _accelZ, _compX, _compY, _compZ;

double _dt;

long timer_old; //general porpuse timer

void setup(){

Serial.begin(115200);

setup_I2Csensors();

esc.attach(11);

esc.writeMicroseconds(1000);

}

void loop(){

esc.writeMicroseconds(1000);

Serial.println("Press a key to start");

while(Serial.read() == -1);

for(int i=1000; i<2000; i+=100){

esc.writeMicroseconds(i);

delay(1000);

timer_old = millis();

for(int j=0; j<100;j++){

_dt = (millis() - timer_old) / 1000.0; // real time of loop run, in Seconds

while(_dt < 0.01) {

_dt = (millis() - timer_old) / 1000.0;

delay(1);

}

timer_old = millis();

readGyros();

readAccel();

readCompass();

compassHeading();

// do DCM calculations

matrixUpdate();

normalise();

driftCorrection();

eulerAngles();

Serial.print(i+j);Serial.print(",");

Serial.print(_gyroX);Serial.print(",");Serial.print(_gyroY);Serial.print(",");Serial.print(_gyroZ);Serial.print(",");

Serial.print(_accelX);Serial.print(",");Serial.print(_accelY);Serial.print(",");Serial.print(_accelZ);Serial.print(",");

Serial.print(_compX);Serial.print(",");Serial.print(_compY);Serial.print(",");Serial.print(_compZ);Serial.print(",");

Serial.print(toDeg(_roll));Serial.print(",");Serial.print(toDeg(_pitch));Serial.print(",");Serial.print(toDeg(_yaw));Serial.print(",");Serial.println(toDeg(_compass));

}

}

}

The motors are either KDA 20-22L or 2213-22T, both 17A and 924V, identical except that one is “hacker style” and the other not.

The sensors are :

  • Wii Motion Plus  IDG-650 & ISZ-650 for gyroscopes
  • ADXL345 for the 3 axis accelerometer

The new motor mount, with and without grommets :

New motor mount

New motor mount with grommets - quite heavy !

No motors, natural noise of the sensors

No motors running, just "natural" noise of the sensors...

Motor spinning, but no propeller

Motor spinning but no propeller

Propeller 9×4.7

Propeller 9x4.7

Propeller 9×4.7 and silicone rubber grommets for the motor mounts

Propeller 9x4.7 with silicone rubber grommets for the motor mount

Propeller 9×6

Propeller 9x6

Propeller 9×6 and silicone rubber grommets for the motor mounts

Propeller 9x6 with silicone rubber grommets for the motor mount

Propeller 12×3.8

Propeller 12x3.8

Now final step: update the frame

It occurred to me that the vast (if not all) majority of quad frames out there, follow a quite standard design, with a central 2 plate solution in the middle, as opposed to my 2 bars design:

Original frame, 2 round tubes screwed together with 1 central bolt

So what if, this central element is not only about simplifying the design, but serves to amortize vibrations too ?

It’s true that my original frame, especially after I tightened all the bolts, resonates like a diapason when hit ! 🙂

So here I am, completely dismantling my quad

Dismount the quad, show all the pieces

and building it back with the help of 2 MikroKopter carbon fibre plates from a friend that didn’t need them:

New frame with carbon fibre centre plates

And now, let’s see if it has any effect on vibrations.

New frame – Propeller 9×4.7

New central plate frame - 9x4.7 propeller

New frame – Propeller 9×4.7 with silicone rubber grommets

New central plates frame - 9x4.7 propeller - motor mount grommets

Leave a comment