Balancing during the assembly

Firmware/software/electronics/mechanics
DesTinY
Member
Posts: 97
Joined: Sat Feb 09, 2013 5:18 pm
Location: Bünde, Germany

Re: Balancing during the assembly

Post 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
bhuism
Beginner
Posts: 13
Joined: Thu May 09, 2013 8:51 am

Re: Balancing during the assembly

Post 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].
bhuism
Beginner
Posts: 13
Joined: Thu May 09, 2013 8:51 am

Re: Balancing during the assembly

Post 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].
DesTinY
Member
Posts: 97
Joined: Sat Feb 09, 2013 5:18 pm
Location: Bünde, Germany

Re: Balancing during the assembly

Post 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.
bhuism
Beginner
Posts: 13
Joined: Thu May 09, 2013 8:51 am

Re: Balancing during the assembly

Post 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
bhuism
Beginner
Posts: 13
Joined: Thu May 09, 2013 8:51 am

Re: Balancing during the assembly

Post 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].
tobias
Bitcraze
Posts: 2339
Joined: Mon Jan 28, 2013 7:17 pm
Location: Sweden

Re: Balancing during the assembly

Post 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)?
DesTinY
Member
Posts: 97
Joined: Sat Feb 09, 2013 5:18 pm
Location: Bünde, Germany

Re: Balancing during the assembly

Post 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%.
TheFrog4u
Expert
Posts: 113
Joined: Fri Feb 08, 2013 6:59 pm
Location: Bremen, Germany

Re: Balancing during the assembly

Post 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! :)
DesTinY
Member
Posts: 97
Joined: Sat Feb 09, 2013 5:18 pm
Location: Bünde, Germany

Re: Balancing during the assembly

Post 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!
Post Reply