Page 3 of 7

Re: Balancing during the assembly

Posted: Thu May 16, 2013 6:09 pm
by DesTinY
TheFrog4u wrote:It might be usefull to know which acceleration value is defined as beeig 100% and which 0% (I assume something like 0.6 to 2.0)?
I am still looking for good values, but actually 100% = 0.65-0.77 depends on spin direction (yes different acceleration in different spin direction :( ) and 0% = >3.2
BAD level is accX>1.6, accY>1.6, accZ>4.0, FAIL level is accX>3.2, accY>3.2, accZ>8.0 (all values in G)

I planning to made a Client Tab for propeller balancing, than it should be possible to calibrate the balancing much better and measure the acceleration of the motor without the propellers and use this as 100% value for next measures (with propellers).
bhuism wrote:Will you be doing a pull request on the official repo?
I'm waiting for some feedback. Good to know were the values of the condition without the propellers from other users. I fear that there are significant quality differences in the motor production as well.
Here is a CF balancing self test FW with higher information level for that.

Code: Select all

SYS: Crazyflie is up and running!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871443555456854966FFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 102 percent 
MPU6050: Propeller on M1 [OK]. X_max: 0.687, Y_max: 0.618, Z_max: 0.707 
MPU6050: Propeller on M2 [OK] Condition: 102 percent 
MPU6050: Propeller on M2 [OK]. X_max: 0.637, Y_max: 0.619, Z_max: 0.610 
MPU6050: Propeller on M3 [OK] Condition: 101 percent 
MPU6050: Propeller on M3 [OK]. X_max: 0.678, Y_max: 0.653, Z_max: 0.705 
MPU6050: Propeller on M4 [OK] Condition: 100 percent 
MPU6050: Propeller on M4 [OK]. X_max: 0.642, Y_max: 0.650, Z_max: 0.620 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].
NOTE: This version stops printing, if you are not connected during the test, becourse the prints are queued offline and the upper limit of the buffer will be reached. After connection the test will continued.
Source code is on: Bitbucket Repo Link

Re: Balancing during the assembly

Posted: Thu May 16, 2013 7:12 pm
by bhuism
Good that you will submite, here are my values (tested twice 2 be sure), I think it flies fine, but its a bit banged up :?

Code: Select all

ng!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [BAD]. Y_max: 2.162 (low: 0.300, high: 1.600) 
MPU6050: Propeller on M1 [OK] Condition: 42 percent 
MPU6050: Propeller on M1 [OK]. X_max: 1.162, Y_max: 2.162, Z_max: 1.804 
MPU6050: Propeller on M2 [OK] Condition: 55 percent 
MPU6050: Propeller on M2 [OK]. X_max: 1.281, Y_max: 0.942, Z_max: 1.353 
MPU6050: Propeller on M3 [BAD]. Y_max: 2.78 (low: 0.300, high: 1.600) 
MPU6050: Propeller on M3 [OK] Condition: 38 percent 
MPU6050: Propeller on M3 [OK]. X_max: 1.75, Y_max: 2.78, Z_max: 3.291 
MPU6050: Propeller on M4 [OK] Condition: 59 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.209, Y_max: 0.972, Z_max: 1.90 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].
ng!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [BAD]. Y_max: 1.946 (low: 0.300, high: 1.600) 
MPU6050: Propeller on M1 [OK] Condition: 46 percent 
MPU6050: Propeller on M1 [OK]. X_max: 1.181, Y_max: 1.946, Z_max: 1.486 
MPU6050: Propeller on M2 [OK] Condition: 50 percent 
MPU6050: Propeller on M2 [OK]. X_max: 1.584, Y_max: 1.67, Z_max: 1.231 
MPU6050: Propeller on M3 [BAD]. Y_max: 2.214 (low: 0.300, high: 1.600) 
MPU6050: Propeller on M3 [OK] Condition: 37 percent 
MPU6050: Propeller on M3 [OK]. X_max: 1.94, Y_max: 2.214, Z_max: 3.221 
MPU6050: Propeller on M4 [OK] Condition: 72 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.23, Y_max: 0.721, Z_max: 0.969 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].

Re: Balancing during the assembly

Posted: Thu May 16, 2013 7:29 pm
by bhuism
Here some more tests, now on a non slippery couch, so the CF will not slide/vibrate a bit during the test, now they all test OK.

The previous test in the earlier post was done on a modern flat table, I think thats why the show BAD on 2 motors.

BTW: the fourth motor test starts after connecting. Only the blue light stays on after 3 motors tested, then after connecting the fourth motor tests, and you can fly.

Code: Select all

SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 53 percent 
MPU6050: Propeller on M1 [OK]. X_max: 0.802, Y_max: 1.388, Z_max: 2.323 
MPU6050: Propeller on M2 [OK] Condition: 66 percent 
MPU6050: Propeller on M2 [OK]. X_max: 1.98, Y_max: 0.673, Z_max: 1.417 
MPU6050: Propeller on M3 [OK] Condition: 44 percent 
MPU6050: Propeller on M3 [OK]. X_max: 0.936, Y_max: 1.536, Z_max: 3.463 
MPU6050: Propeller on M4 [OK] Condition: 61 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.53, Y_max: 0.927, Z_max: 1.146 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].
SYS: Crazyflie is up and running!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OIMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 53 percent 
MPU6050: Propeller on M1 [OK]. X_max: 0.883, Y_max: 1.393, Z_max: 1.914 
MPU6050: Propeller on M2 [OK] Condition: 61 percent 
MPU6050: Propeller on M2 [OK]. X_max: 1.163, Y_max: 0.763, Z_max: 1.443 
MPU6050: Propeller on M3 [OK] Condition: 45 percent 
MPU6050: Propeller on M3 [OK]. X_max: 0.973, Y_max: 1.540, Z_max: 2.901 
MPU6050: Propeller on M4 [OK] Condition: 57 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.223, Y_max: 0.871, Z_max: 1.347 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].

Re: Balancing during the assembly

Posted: Thu May 16, 2013 8:40 pm
by DesTinY
Thanks a lot for testing und posting bhuism!
My standard test place is on a stable flat table, if you put it on a soft surface the measurement will distorted.
Maybe we could define this (see Pic) as standard measurement environment.
Image
But for future tasks of the balancing test (after a crash) it should work on your first lift of position (mostly flat stable surface).

BTW: Please check your motor mounts on M2 and M4. I see in you first test post, that maybe your motor cables look out the motor mounts.
Image
That course to vibrations during the test on M1 and M3 and more importantly it will destroy your motor cable in the near future :? .

Can you make a recording without propellers for me, but attention see here Removing propellors Do this only if you dare.

Re: Balancing during the assembly

Posted: Thu May 16, 2013 9:47 pm
by bhuism
The image with your red arrow it not my CF :-D but by pure coincidence I did open a new subject on this topic :lol: cause I have that problem too, putting the motors a bit more inside helps, but not a permanent solution I think, see my other topic.

Result without the propellers (on a flat surface, I don't have that foam available):

Code: Select all

SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 85 percent 
MPU6050: Propeller on M1 [OK]. X_max: 0.696, Y_max: 0.626, Z_max: 1.312 
MPU6050: Propeller on M2 [OK] Condition: 103 percent 
MPU6050: Propeller on M2 [OK]. X_max: 0.587, Y_max: 0.549, Z_max: 0.756 
MPU6050: Propeller on M3 [OK] Condition: 85 percent 
MPU6050: Propeller on M3 [OK]. X_max: 0.728, Y_max: 0.623, Z_max: 1.224 
MPU6050: Propeller on M4 [OK] Condition: 106 percent 
MPU6050: Propeller on M4 [OK]. X_max: 0.588, Y_max: 0.528, Z_max: 0.725 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].

SYS: Crazyflie is up and running!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 89 percent 
MPU6050: Propeller on M1 [OK]. X_max: 0.674, Y_max: 0.637, Z_max: 1.75 
MPU6050: Propeller on M2 [OK] Condition: 102 percent 
MPU6050: Propeller on M2 [OK]. X_max: 0.590, Y_max: 0.555, Z_max: 0.766 
MPU6050: Propeller on M3 [OK] Condition: 88 percent 
MPU6050: Propeller on M3 [OK]. X_max: 0.720, Y_max: 0.629, Z_max: 1.75 
MPU6050: Propeller on M4 [OK] Condition: 106 percent 
MPU6050: Propeller on M4 [OK]. X_max: 0.581, Y_max: 0.531, Z_max: 0.725 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].
Happy to help

Re: Balancing during the assembly

Posted: Thu May 16, 2013 9:58 pm
by bhuism
Last test with new propellers:

Code: Select all

SYS: Crazyflie is up and running!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x871145435456854966EFF50 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OIMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 54 percent 
MPU6050: Propeller on M1 [OK]. X_max: 1.502, Y_max: 1.15, Z_max: 1.368 
MPU6050: Propeller on M2 [OK] MPU6050: Propeller on M2 [OK]. X_max: 1.271, Y_max: 0.846, Z_max: 1.385 
MPU6050: Propeller on M3 [OK] Condition: 59 percent 
MPU6050: Propeller on M3 [OK]. X_max: 1.294, Y_max: 0.930, Z_max: 1.337 
MPU6050: Propeller on M4 [OK] Condition: 73 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.31, Y_max: 0.681, Z_max: 0.977 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].

Re: Balancing during the assembly

Posted: Fri May 17, 2013 8:01 am
by tobias
DesTinY wrote:
TheFrog4u wrote:It might be usefull to know which acceleration value is defined as beeig 100% and which 0% (I assume something like 0.6 to 2.0)?
I am still looking for good values, but actually 100% = 0.65-0.77 depends on spin direction (yes different acceleration in different spin direction :( ) and 0% = >3.2
BAD level is accX>1.6, accY>1.6, accZ>4.0, FAIL level is accX>3.2, accY>3.2, accZ>8.0 (all values in G)
Defining a good 100% value might be impossible as there are so many variables involved such as:
* How motor is fitted in the motor mount
* How the motor mount is fitted on the PCB arm
* How the vibration travels from the motor/prop to the sensor
* ...
Maybe taking the raw sensor noise as 100% is a simple way to go but that would mean the values would be way from 100%. Then skipping the percent might be a simple solution and just have a threshold value. So e.g. anything above 20 is a good balance but the higher value the better (but it is still a kind of percentage with 100 as max)?

Re: Balancing during the assembly

Posted: Fri May 17, 2013 9:14 am
by DesTinY
How the balancing self test works (in short): see bool mpu6050PropellerBalancingTest(int motorId)
1. Based on the mpu6050SelfTest()
2. First measure the environment (motors off); noise only.
3. Take second measurement (100 samples of all 3 axis) with motor on and choose the max one.
4. axfDiff = difference between first and second measurement.
5. conditionX (x axis of motor x) = ( faktor / axfDiff ) * 100.0; faktor= 0.650 means acceleration value of the motor without propellers. faktor is not measured by now.
6. conditionSum = (int)((conditionX + conditionY + conditionZ) / 3.0); information would be lost here but better for quick balancing. conditionSum is only for Printing.
7. independent of the conditionSum the report level OK/BAD/FAIL would be displayed OK = acceleration< 1.6G; BAD = acceleration< 3.2G; FAIL= acceleration> 3.2G;
8. report level according to conditionSum: FAIL= 0%-20%, BAD= 20%-40% OK= 40%-100%.

Re: Balancing during the assembly

Posted: Sat May 18, 2013 9:45 am
by TheFrog4u
ok, tested on flat table:

Code: Select all

SYS: Crazyflie is up and running!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x872023395356854966EFF54 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 72 percent 
MPU6050: Propeller on M1 [OK]. X_max: 1.62, Y_max: 0.740, Z_max: 1.122 
MPU6050: Propeller on M2 [OK] Condition: 87 percent 
MPU6050: Propeller on M2 [OK]. X_max: 0.733, Y_max: 0.679, Z_max: 0.779 
MPU6050: Propeller on M3 [BAD]. Y_max: 1.764 (low: 0.300, high: 1.600) 
MPU6050: Propeller on M3 [OK] Condition: 43 percent 
MPU6050: Propeller on M3 [OK]. X_max: 1.56, Y_max: 1.764, Z_max: 2.439 
MPU6050: Propeller on M3 [OK] Condition: 45 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.262, Y_max: 1.354, Z_max: 1.644 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
MS5611: Self test [OK].
tested on foam (the one that is included in the cf box):

Code: Select all

SYS: Crazyflie is up and running!
SYS: Build 40+:601803a36702+ (tip) MODIFIED
SYS: I am 0x872023395356854966EFF54 and I have 128KB of flash!
IMU: MPU6050 I2C connection [OK].
IMU: HMC5883 I2C connection [OK].
IMU: MS5611 I2C connection [OK].
MPU6050: Self test [OK].
MPU6050: Propeller on M1 [OK] Condition: 73 percent 
MPU6050: Propeller on M1 [OK]. X_max: 0.971, Y_max: 0.748, Z_max: 1.164 
MPU6050: Propeller on M2 [OK] Condition: 83 percent 
MPU6050: Propeller on M2 [OK]. X_max: 0.779, Y_max: 0.677, Z_max: 0.852 
MPU6050: Propeller on M3 [OK] Condition: 49 percent 
MPU6050: Propeller on M3 [OK]. X_max: 1.15, Y_max: 1.409, Z_max: 2.53 
MPU6050: Propeller on M4 [OK] Condition: 52 percent 
MPU6050: Propeller on M4 [OK]. X_max: 1.63, Y_max: 1.79, Z_max: 1.690 
MPU6050: Propeller Balancing Self Test [OK] 
HMC5883L: Self test [OK].
so on foam u get a few percentage points more, but in genereal the results are quite equal (which is good) -hover I seam to have issues with motor 3 and 4. Will try to change the propellers and see how the results change.
However its already seems to fly quite well.

BTW: Thanx very much for your cool mod! :)

Re: Balancing during the assembly

Posted: Sat May 18, 2013 9:57 am
by DesTinY
You're welcome :D
TheFrog4u wrote:...Will try to change the propellers and see how the results change.
That's the right way to use the mod!

Maybe you can post a capture from the balancing self test without the propellers too. I try to find out if there are differences in the motor conditions too.
Thanks for testing!