Unterschiede zwischen den Revisionen 8 und 18 (über 10 Versionen hinweg)
Revision 8 vom 29.08.2009 20:05
Größe: 6749
Autor: FredericG
Kommentar:
Revision 18 vom 31.08.2009 22:47
Größe: 10532
Autor: FredericG
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 3: Zeile 3:
= Current Project status =
/!\ '''I am still experimenting and working on the first version of the tool. Also this documentation is not complete yet.'''


The current implementation is very basic, it is a "command-line" tool without any graphical user-interface.

Currently the tool was only tested on PC/Windows with FC 1.3 hardware.
Zeile 4: Zeile 12:
The tool measures the vibration generated by the motors using the MK build-in sensors. This allows to balance motor/prop assemblies and to experiment with different motor-mounts. The tool measures the vibration generated by the motors using the MK build-in sensors.

This allows to balance motor/prop assemblies and to experiment with different motor-mounts.

The standard FlightControl program supports a command that allows to monitor the MK sensors. The MKTool uses this command to generate graphs of analog values. In a first approach I used this standard command to monitor vibrations. The problem is that is mechanism only allows to sample the values only 30 times a second. In order to get reliable results one needs to monitor the values for a long time (a minute for example) and hope that one has catched the peaks of the signal.

This new approach is based on dedicated FlightControl software that allows to monitor one sensor for a short period of time as fast as possible. This allows to grab a reliable signal in a very short time.
Zeile 10: Zeile 24:
= How do I install the tool? =
== Option 1: Install Python ==
The tool is written in Python. In case you have heard of python, have look in [http://en.wikipedia.org/wiki/Python_(programming_language) Wikipedia]. In order to run the tool, you need to install support for Python on your PC. It you do not have Python installed on you PC, I propose you install: [http://www.activestate.com/activepython/ ActivePython for Windows] and [http://sourceforge.net/projects/pyserial/files/ PySerial (support for serial port access)]
Zeile 11: Zeile 28:
= Current status =
The current implementation is very basic, it is a "command-line" tool without any graphical user-interface.
Python is also available for Linux and MAC.
Zeile 14: Zeile 30:
I am still experimenting and working on the first version of the tool. Once you have Python support on your PC all you need to is place the files VibrationTest.py and mkProto.py from [http://svn.mikrokopter.de/mikrowebsvn/listing.php?repname=Projects&path=/VibrationTest/trunk/VibrationTest/#_VibrationTest_trunk_VibrationTest_ SVN] together in a directory.
Zeile 16: Zeile 32:
= How do I install the tool? =
= How do I use it? =
== Option 2: Get compiled version ==
TODO
Zeile 19: Zeile 35:
= Installing the FlightControl software =
The VibrationTest tool works in combination with a special version of the FlightControl software. It must be flashed in the FC board before using the test and you need to reinstall your regular software version afterwards. This just takes a few minutes. Switching the software is done the usual way, using the MKTool.

You can grab the latest version of the VibrationTest-FC.hex file from [http://svn.mikrokopter.de/mikrowebsvn/listing.php?repname=Projects&path=/VibrationTest/trunk/Executables/FlightCtrl/#_VibrationTest_trunk_Executables_FlightCtrl_ SVN]

= How do I use the tool? =
== Attach you MK to the table :) ==
Zeile 44: Zeile 67:
4 parameters are mandatory: COMPORT MOTORS SPPEDS and CHANNELS

'''COMPORT''': The serial port that is connected to the MK e.g. "COM4"


'''MOTORS''': List of motors (comma-separated) that need to run during the test. Typically only one motor will be selected. It is also possible to activate all motors to evaluate the global vibrations before and after calibration for example. e.g. "1" or "1,2,3,4"


'''SPEEDS''': List of speeds at which will be tested. The "speed" is the I2C value that will be sent to controller and is a value between 0 and 255. Typically interesting values for vibration-testing vary between 100 and 200.
There are 2 formats possible. First there is the simple list of speeds, e.g. "100,150,190,200". The second format specifies the minimum, maximum speed and step, e.g. "100-200:20" will test at 100,120,140 ... 200


'''CHANNELS''': List of channels that will be monitored. A channel is in fact one of the MK analog sensors. Measuring the pressure or battery does not make much sense in this context, but is it possible. It is my experience that channel 6 and 7 produce best vibration signals, but YMMV.

Zeile 46: Zeile 84:
== Example 1 ==
Finding what sensor provides best information at what speed:
Zeile 47: Zeile 87:
== Example 1 ==

Finding what sensor provides best information at what speed:
Zeile 52: Zeile 89:
Zeile 55: Zeile 91:
Zeile 58: Zeile 93:
Zeile 61: Zeile 95:
Zeile 64: Zeile 97:
Zeile 67: Zeile 99:
Zeile 70: Zeile 101:

Zeile 81: Zeile 110:
Zeile 84: Zeile 114:
Zeile 87: Zeile 116:
Zeile 94: Zeile 122:
Zeile 96: Zeile 125:
Zeile 98: Zeile 126:
Zeile 100: Zeile 127:
Zeile 102: Zeile 128:
Zeile 104: Zeile 129:
Zeile 106: Zeile 130:
Zeile 108: Zeile 131:
Zeile 110: Zeile 132:
Zeile 112: Zeile 133:
Zeile 114: Zeile 134:
Zeile 116: Zeile 135:
Zeile 118: Zeile 136:
Zeile 120: Zeile 137:
Zeile 123: Zeile 139:
Rotating the prop by 180 degrees produces best results, now lets try to balance the prop again:
Zeile 124: Zeile 141:
Rotating the prop by 180 degrees produces best results, now lets try to balance the prop again:
Zeile 127: Zeile 143:
Zeile 129: Zeile 144:
Zeile 131: Zeile 145:
Zeile 133: Zeile 146:
Zeile 135: Zeile 147:
Zeile 137: Zeile 148:
Zeile 139: Zeile 149:
Zeile 141: Zeile 150:
Zeile 143: Zeile 151:
Zeile 146: Zeile 153:
So, 2 stickers is best
Zeile 147: Zeile 155:
So, 2 stickers is best
Zeile 150: Zeile 157:
Zeile 152: Zeile 158:
Zeile 154: Zeile 159:
Zeile 157: Zeile 161:
Now, we can perform a sweep in order to compare with the starting-point:
Zeile 158: Zeile 163:
Now, we can perform a sweep in order to compare with the starting-point:
Zeile 161: Zeile 165:
Zeile 164: Zeile 167:
Zeile 167: Zeile 169:
Zeile 170: Zeile 171:
Zeile 173: Zeile 173:
Zeile 176: Zeile 175:
Zeile 180: Zeile 178:
= Links =
 * [http://svn.mikrokopter.de/mikrowebsvn/listing.php?repname=Projects&path=/VibrationTest/#_VibrationTest_ VibrationTest Project in Subversion]
 * Mail FredericG: [[MailTo(admin AT rc-flight DOT be)]]
[[BR]] /!\ ToDo:
Zeile 181: Zeile 183:
/!\ ToDo: Almost everything :)
 * Explain the parameters
 * The general procedure
 * Make a hex-file available
 * Provide a picture of my MK attached to the table
Zeile 188: Zeile 192:
 . KategorieTools

TableOfContents

Current Project status

/!\ I am still experimenting and working on the first version of the tool. Also this documentation is not complete yet.

The current implementation is very basic, it is a "command-line" tool without any graphical user-interface.

Currently the tool was only tested on PC/Windows with FC 1.3 hardware.

What is the VibrationTest Tool?

The tool measures the vibration generated by the motors using the MK build-in sensors.

This allows to balance motor/prop assemblies and to experiment with different motor-mounts.

The standard FlightControl program supports a command that allows to monitor the MK sensors. The MKTool uses this command to generate graphs of analog values. In a first approach I used this standard command to monitor vibrations. The problem is that is mechanism only allows to sample the values only 30 times a second. In order to get reliable results one needs to monitor the values for a long time (a minute for example) and hope that one has catched the peaks of the signal.

This new approach is based on dedicated FlightControl software that allows to monitor one sensor for a short period of time as fast as possible. This allows to grab a reliable signal in a very short time.

This is an example of the signal measured by the Roll-ACC sensor:

attachment:test.jpg

How do I install the tool?

Option 1: Install Python

The tool is written in Python. In case you have heard of python, have look in [http://en.wikipedia.org/wiki/Python_(programming_language) Wikipedia]. In order to run the tool, you need to install support for Python on your PC. It you do not have Python installed on you PC, I propose you install: [http://www.activestate.com/activepython/ ActivePython for Windows] and [http://sourceforge.net/projects/pyserial/files/ PySerial (support for serial port access)]

Python is also available for Linux and MAC.

Once you have Python support on your PC all you need to is place the files VibrationTest.py and mkProto.py from [http://svn.mikrokopter.de/mikrowebsvn/listing.php?repname=Projects&path=/VibrationTest/trunk/VibrationTest/#_VibrationTest_trunk_VibrationTest_ SVN] together in a directory.

Option 2: Get compiled version

TODO

Installing the FlightControl software

The VibrationTest tool works in combination with a special version of the FlightControl software. It must be flashed in the FC board before using the test and you need to reinstall your regular software version afterwards. This just takes a few minutes. Switching the software is done the usual way, using the MKTool.

You can grab the latest version of the VibrationTest-FC.hex file from [http://svn.mikrokopter.de/mikrowebsvn/listing.php?repname=Projects&path=/VibrationTest/trunk/Executables/FlightCtrl/#_VibrationTest_trunk_Executables_FlightCtrl_ SVN]

How do I use the tool?

Attach you MK to the table :)

The command line parameters

VibrationTest.py COMPORT MOTORS SPEEDS CHANNELS [-m MINSPEED] [-s NBSAMPLES] [-n NAME] [-d FILENAME] [-v]
 COMPORT         Serial port to use. e.g. COM4
 MOTORS          Motors to activate during test. Multiple motors can be used at the same time. e.g. 1,2,3,4
 SPEEDS          Indicates at what speeds the motors need to be tested.
                   Format 1:  e.g. 50,110,140            Tests at speeds 50, 110 and 140
                   Format 2:  e.g. 100-200:50            Tests at speeds 100, 150 and 200
 CHANNELS        Channels to monitor. e.g. 5,6,7
                   Channel 0 = GyroYaw
                   Channel 1 = GyroRoll
                   Channel 2 = GyroNick
                   Channel 3 = Pressure
                   Channel 4 = Batt
                   Channel 5 = AccTop
                   Channel 6 = AccRoll
                   Channel 7 = AccNick
 -m MINSPEED     Minimum speed of the motor(s)
 -s NBSAMPLES    Number of samples
 -n NAME         Name of the test
 -d FILENAME     File to which the measured values will be logged in
 -v              Verbose

4 parameters are mandatory: COMPORT MOTORS SPPEDS and CHANNELS

COMPORT: The serial port that is connected to the MK e.g. "COM4"

MOTORS: List of motors (comma-separated) that need to run during the test. Typically only one motor will be selected. It is also possible to activate all motors to evaluate the global vibrations before and after calibration for example. e.g. "1" or "1,2,3,4"

SPEEDS: List of speeds at which will be tested. The "speed" is the I2C value that will be sent to controller and is a value between 0 and 255. Typically interesting values for vibration-testing vary between 100 and 200. There are 2 formats possible. First there is the simple list of speeds, e.g. "100,150,190,200". The second format specifies the minimum, maximum speed and step, e.g. "100-200:20" will test at 100,120,140 ... 200

CHANNELS: List of channels that will be monitored. A channel is in fact one of the MK analog sensors. Measuring the pressure or battery does not make much sense in this context, but is it possible. It is my experience that channel 6 and 7 produce best vibration signals, but YMMV.

General procudure

Example 1

Finding what sensor provides best information at what speed:

VibrationTest.py COM5 3 100-200:20 6,7
      Speed=100 U=11.3V Channel=AccRoll    Min=492 Max=505 pp= 13 **
      Speed=100 U=11.3V Channel=AccNick    Min=498 Max=507 pp=  9 *
      Speed=120 U=11.3V Channel=AccRoll    Min=489 Max=503 pp= 14 **
      Speed=120 U=11.3V Channel=AccNick    Min=497 Max=507 pp= 10 **
      Speed=140 U=11.2V Channel=AccRoll    Min=469 Max=519 pp= 50 **********
      Speed=140 U=11.2V Channel=AccNick    Min=495 Max=508 pp= 13 **
      Speed=160 U=11.1V Channel=AccRoll    Min=478 Max=517 pp= 39 *******
      Speed=160 U=11.1V Channel=AccNick    Min=493 Max=511 pp= 18 ***
      Speed=180 U=10.9V Channel=AccRoll    Min=479 Max=511 pp= 32 ******
      Speed=180 U=10.9V Channel=AccNick    Min=493 Max=514 pp= 21 ****
      Speed=200 U=10.7V Channel=AccRoll    Min=479 Max=515 pp= 36 *******
      Speed=200 U=10.7V Channel=AccNick    Min=493 Max=513 pp= 20 ****
VibrationTest.py COM5 3 130-160:10 6
      Speed=130 U=11.1V Channel=AccRoll    Min=484 Max=511 pp= 27 *****
      Speed=140 U=11.1V Channel=AccRoll    Min=469 Max=524 pp= 55 ***********
      Speed=150 U=11.1V Channel=AccRoll    Min=475 Max=520 pp= 45 *********
      Speed=160 U=11.1V Channel=AccRoll    Min=479 Max=518 pp= 39 *******

So, lets concentrate on channel 6 at speed 140.

Now, the preliminary balancing of the prop:

VibrationTest.py COM5 3 140 6 -d motor3.txt -n 0s0
  0s0 Speed=140 U=11.0V Channel=AccRoll    Min=470 Max=521 pp= 51 **********
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s0
  1s0 Speed=140 U=11.0V Channel=AccRoll    Min=482 Max=513 pp= 31 ******
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 2s0
  2s0 Speed=140 U=11.0V Channel=AccRoll    Min=475 Max=520 pp= 45 *********

For now, 1 sticker seems best.

Now, lets rotate the prop:

VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s0
  1s0 Speed=140 U=10.9V Channel=AccRoll    Min=481 Max=513 pp= 32 ******
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s60
 1s60 Speed=140 U=10.9V Channel=AccRoll    Min=480 Max=512 pp= 32 ******
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s120
1s120 Speed=140 U=10.9V Channel=AccRoll    Min=477 Max=514 pp= 37 *******
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s180
1s180 Speed=140 U=10.9V Channel=AccRoll    Min=482 Max=509 pp= 27 *****
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s240
1s240 Speed=140 U=10.9V Channel=AccRoll    Min=482 Max=510 pp= 28 *****
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s300
1s300 Speed=140 U=10.9V Channel=AccRoll    Min=482 Max=514 pp= 32 ******
VibrationTest.py COM5 3 140 6,6,6 -d motor3.txt -n 1s360
1s360 Speed=140 U=10.9V Channel=AccRoll    Min=482 Max=515 pp= 33 ******

Rotating the prop by 180 degrees produces best results, now lets try to balance the prop again:

VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s180
1s180 Speed=140 U=10.9V Channel=AccRoll    Min=483 Max=509 pp= 26 *****
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 0s180
0s180 Speed=140 U=10.9V Channel=AccRoll    Min=472 Max=519 pp= 47 *********
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 1s180
1s180 Speed=140 U=10.9V Channel=AccRoll    Min=483 Max=510 pp= 27 *****
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 2s180
2s180 Speed=140 U=10.9V Channel=AccRoll    Min=489 Max=508 pp= 19 ***
VibrationTest.py COM5 3 140 6 -d motor3.txt -n 3s180
3s180 Speed=140 U=10.9V Channel=AccRoll    Min=483 Max=512 pp= 29 *****

So, 2 stickers is best

VibrationTest.py COM5 3 140 6 -d motor3.txt -n 2s180
2s180 Speed=140 U=10.9V Channel=AccRoll    Min=488 Max=508 pp= 20 ****
VibrationTest.py COM5 3 140 6,6,6 -d motor3.txt -n end
  end Speed=140 U=10.8V Channel=AccRoll    Min=487 Max=510 pp= 23 ****

Now, we can perform a sweep in order to compare with the starting-point:

VibrationTest.py COM5 3 100-200:20 6,7
       Speed=100 U=11.1V Channel=AccRoll    Min=493 Max=501 pp=  8 *
       Speed=100 U=11.1V Channel=AccNick    Min=499 Max=507 pp=  8 *
       Speed=120 U=11.1V Channel=AccRoll    Min=489 Max=507 pp= 18 ***
       Speed=120 U=11.1V Channel=AccNick    Min=497 Max=508 pp= 11 **
       Speed=140 U=11.0V Channel=AccRoll    Min=489 Max=507 pp= 18 ***
       Speed=140 U=11.0V Channel=AccNick    Min=498 Max=509 pp= 11 **
       Speed=160 U=10.9V Channel=AccRoll    Min=482 Max=508 pp= 26 *****
       Speed=160 U=10.9V Channel=AccNick    Min=496 Max=510 pp= 14 **
       Speed=180 U=10.7V Channel=AccRoll    Min=489 Max=505 pp= 16 ***
       Speed=180 U=10.7V Channel=AccNick    Min=495 Max=508 pp= 13 **
       Speed=200 U=10.6V Channel=AccRoll    Min=482 Max=508 pp= 26 *****
       Speed=200 U=10.6V Channel=AccNick    Min=491 Max=509 pp= 18 ***

Links

BR /!\ ToDo:

  • Explain the parameters
  • The general procedure
  • Make a hex-file available
  • Provide a picture of my MK attached to the table

BR

AttachList