roboforum.ru

Технический форум по робототехнике.

Балансировка мотора с пропеллером на стенде

Балансировка мотора с пропеллером на стенде

Сообщение Nesenin » 12 май 2014, 14:47

Занимаюсь разработкой стенда на основе показаний акселерометра.
В природе уже есть подобные разработки.
1)Вот http://habrahabr.ru/post/207478/ без подробностей конструкции. Сложная в изготовлении конструкция.
2)Вот торгуют http://www.dynexhobby.com/ http://www.youtube.com/user/dynexhobby то же не простая основа

общего в них это крепление позволяющее колебаться всей системе с частотой вращения мотора. То есть на показаниях мы видим "чистую"(близкую к "чистой") синусоиду. вида
Изображение
соответственно наибольший геморрой в создании такой системы под конкретные нагрузки обороты и пр.
причем балансировочные грузики тоже влияют.

3) http://youtu.be/eWWOqcSu8IY проект открытый вот исходники http://diydrones.com/forum/topics/balan ... %3A1483203 (они косячные)
тут крепление на упругих демпферов. то есть не надо мудачиться с основой (почти не надо). к колебаниям мотора добавляется реакция опор вида
Изображение
вру. это идеальный вариант где мы видим таки периодичность и max min вибраций. чуть меньше дисбаланса и уже не увидим. будет однородная каша. то есть max точность ниже предыдущих схем.

как мне кажется наиболее высокая точность у систем которые не только колеблются с частотой мотора (вынужденные колебания), но и собственную частоту имеют аналогичную. то есть наступает резонанс и в итоге на показаниях можно отследить наиболее мелкий дисбаланс.
подходящая конструкция эт "станок с качающейся рамой" http://www.cardanbalans.ru/balans.htm
вот как то так (старая версия)


про акселерометры. пока лучший вариант получился на ADXL345 с подключением по шине SPI(4 pin)ибо быстрые (3.2кГц)
из доступного ПО есть исходники автора 3го стенда http://diydrones.com/forum/topics/balan ... %3A1483203 ну тут блин шляпа какая то под arduino 8MHz не хочет толком работать на 16MHz. код для ПК под visual basic релиз вылетает с ошибками регулярно.
в сети есть код и тоже с ошибками. так что наваял по минимуму чтение данных с акселя и датчика оборотов и вывод в порт. экспериментирую дальше.

есть кто в теме? может че посоветуете?
Последний раз редактировалось Nesenin 15 апр 2016, 15:17, всего редактировалось 1 раз.
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

Re: Динамическая балансировка ВМГ стенд

Сообщение Механик » 12 май 2014, 15:23

_
Последний раз редактировалось Механик 29 авг 2015, 11:58, всего редактировалось 1 раз.
Механик
 
Сообщения: 36
Зарегистрирован: 31 июл 2011, 21:42

Re: Динамическая балансировка ВМГ стенд

Сообщение Dmitry__ » 12 май 2014, 15:46

Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Динамическая балансировка ВМГ стенд

Сообщение Nesenin » 12 май 2014, 15:50

какое еще товарное изделие?!вы ничего не попутали? это форум любителей собирать всякую хрень, в большинстве своем бесполезную, кроме как хобби для хозяина.
кроме того. коль это был бы коммерческий проект, значит исходники закрыты всякие, know how засекречены. и кто бы читал эту тему? люди ждущие коммерческий релиз? е мое. я на форум захожу информацию почерпнуть, что б самому в своих проектах применить иногда другим помогаю. другие люди, как мне думается,делают то же самое.
вот я и делюсь информацией, которую узнал, получил во время экспериментов и прошу поделиться других.
идите на http://boomstarter.ru/ и https://www.kickstarter.com/ со своим желанием товарного изделия

Добавлено спустя 2 минуты 29 секунд:

ну нет же! это уровень вибрации, а тут поиск угла дисбаланса.
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

Re: Динамическая балансировка ВМГ стенд

Сообщение Dmitry__ » 12 май 2014, 15:57

Nesenin писал(а):ну нет же! это уровень вибрации, а тут поиск угла дисбаланса.

Чуть больше итераций, на ютубе есть методички...

Добавлено спустя 3 минуты 45 секунд:
Вот пример:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Динамическая балансировка ВМГ стенд

Сообщение Nesenin » 12 май 2014, 15:59

Dmitry__ писал(а):
Nesenin писал(а):ну нет же! это уровень вибрации, а тут поиск угла дисбаланса.

Чуть больше итераций, на ютубе есть методички...

знаю я. искать методом тыка. сначала ищем угол потом массу. контроль уровня вибраций как душе угодно например зеркальце+лазер. это все не то. не та точность прежде всего.
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

Re: Динамическая балансировка ВМГ стенд

Сообщение dccharacter » 12 май 2014, 17:58

forum34/topic10956.html

Добавлено спустя 6 минут 3 секунды:
Там есть ссылка на методу. Делаешь замер, вешаешь груз известной массы в известное место, считаешь по формуле и балансируешь.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Динамическая балансировка ВМГ стенд

Сообщение Dmitry__ » 12 май 2014, 19:07

Myp писал(а):хочу ротор дремеля китайского балансировать!

Думаю, будет проще статически на ножах балансировать, ротор снимать по-любому, ибо проще точением ротора балансировать коллекторник...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Динамическая балансировка ВМГ стенд

Сообщение dccharacter » 12 май 2014, 19:12

Они по-моему и на заводах так балансируются. Видел на каком-то роторе высечку отрезным кругом.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Динамическая балансировка ВМГ стенд

Сообщение Myp » 12 май 2014, 19:21

Dmitry__ писал(а):
Myp писал(а):хочу ротор дремеля китайского балансировать!

Думаю, будет проще статически на ножах балансировать, ротор снимать по-любому, ибо проще точением ротора балансировать коллекторник...

на ножах и так сбалансирован
на роторе лунки от сверла есть
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Динамическая балансировка ВМГ стенд

Сообщение Dmitry__ » 12 май 2014, 19:32

Myp писал(а):на ножах и так сбалансирован
на роторе лунки от сверла есть

Это сбалансировано для ширпотреба. Теперь надо для себя :)
Я так в 90-х кинескопы для "себя" сводил, можно целый день это делать :D
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Динамическая балансировка ВМГ стенд

Сообщение Nesenin » 11 июн 2014, 22:19

Итак-с у меня кой чего получилось.
SAM_4522.JPG

Доработанная качающаяся рама. Есть возможность быстро корректировать собственную частоту колебаний за счет замены пружин и смещения места ее опоры. Точность на такой раме реально выше других.
Аппаратная часть состоит из arduino и акселя adsl 345 подключенного по SPI (вот такой например купить можно за не дорого ) и оптопары (с компаратором например), которая метку на моторе распознает (если корпус темный можно корректором нарисовать белую метку ). Еще можно было бы сделать вариант использующий лазер\датчик и следить по пропеллеру, но до этого я не дошел.
Вот рабочий код:
Код: Выделить всёРазвернуть
//Add the SPI library so we can communicate with the ADXL345 sensor
#include <SPI.h>


#define MAX_SAMPLES 550

//Assign the Chip Select signal to pin 10.
int CS=10;

//This is a list of some of the registers available on the ADXL345.
//To learn more about these and the rest of the registers on the ADXL345, read the datasheet!
char POWER_CTL = 0x2D;   //Power Control Register
char DATA_FORMAT = 0x31;
char DATAX0 = 0x32;   //X-Axis Data 0
char DATAX1 = 0x33;   //X-Axis Data 1
char DATAY0 = 0x34;   //Y-Axis Data 0
char DATAY1 = 0x35;   //Y-Axis Data 1
char DATAZ0 = 0x36;   //Z-Axis Data 0
char DATAZ1 = 0x37;   //Z-Axis Data 1

//This buffer will hold values read from the ADXL345 registers.
unsigned char values[10];
//These variables will be used to hold the x,y and z axis accelerometer values.
int x,y,z;

byte lowbyte_x[MAX_SAMPLES], highbyte_x[MAX_SAMPLES];
//byte lowbyte_y[MAX_SAMPLES], highbyte_y[MAX_SAMPLES];
//byte lowbyte_z[MAX_SAMPLES], highbyte_z[MAX_SAMPLES];
byte zero[MAX_SAMPLES];

int inPin = 2;
int val = 0; 
int sample_index,t;
const int dataReadyPin = 4;

void setup(){
  //Initiate an SPI communication instance.
  SPI.begin();
  //Configure the SPI connection for the ADXL345.
  SPI.setDataMode(SPI_MODE3);
  //Create a serial connection to display the data on the terminal.
  Serial.begin(115200);
 
    pinMode(dataReadyPin, INPUT);
    pinMode(inPin, INPUT);
   
  //Set up the Chip Select pin to be an output from the Arduino.
  pinMode(CS, OUTPUT);
  //Before communication starts, the Chip Select pin needs to be set high.
  digitalWrite(CS, HIGH);
 
 

  //Put the ADXL345 into Measurement Mode by writing 0x08 to the POWER_CTL register.
  writeRegister(POWER_CTL, 0x08);  //Measurement mode 
    //Put the ADXL345 into +/- 8G range by writing the value 0x01 to the DATA_FORMAT register.
  writeRegister(DATA_FORMAT, 0x02);
  writeRegister(0x2C, 0x0F); // 3200 HZ
    writeRegister(0x2E, 0x80); // set dataready to interrupt pin INT1 and active high
/* writeRegister(0x1E, 0x00); // X-offset to 0
  writeRegister(0x1F, 0x00); // Y-offset to 0
  writeRegister(0x20, 0x00); // Z-offset to 0
  */  delay(100);
}

void loop(){
               for (sample_index=0; sample_index<MAX_SAMPLES; sample_index++)
               {
                 while (digitalRead (dataReadyPin) == LOW) ;
               

  //Reading 6 bytes of data starting at register DATAX0 will retrieve the x,y and z acceleration values from the ADXL345.
  //The results of the read operation will get stored to the values[] buffer.

  readRegister(DATAX0, 6, values);
 
  zero[sample_index] = digitalRead(inPin) ;//digitalRead (dataReadyPin); //
 
  //The ADXL345 gives 10-bit acceleration values, but they are stored as bytes (8-bits). To get the full value, two bytes must be combined for each axis.
  //The X value is stored in values[0] and values[1].
  lowbyte_x[sample_index]=values[0];
  highbyte_x[sample_index]=values[1];
  //x = ((int)values[1]<<8)|(int)values[0];
  //The Y value is stored in values[2] and values[3].
//  lowbyte_y[sample_index]=values[2];
//  highbyte_y[sample_index]=values[3];
  //y = ((int)values[3]<<8)|(int)values[2];
  //The Z value is stored in values[4] and values[5].
//  lowbyte_z[sample_index]=values[4];
//  highbyte_z[sample_index]=values[5];
// z = ((int)values[5]<<8)|(int)values[4];
               }
               
               
 
  for (t=0; t < MAX_SAMPLES; t++)
  {
    x = ((int)highbyte_x[t] << 8) | (int)lowbyte_x[t];
//   y = ((int)highbyte_y[t] << 8) | (int)lowbyte_y[t];
//   z = ((int)highbyte_z[t] << 8) | (int)lowbyte_z[t];
    val = zero[t];
  //Print the results to the terminal.
  Serial.print(x, DEC);
  Serial.print("\t");
/*  Serial.print(y, DEC);
  Serial.print("\t");
  Serial.print(z, DEC);
  Serial.print("\t"); */
  Serial.println(val);   
 
// delay(1);
  }
  Serial.println ("End");
}

//This function will write a value to a register on the ADXL345.
//Parameters:
//  char registerAddress - The register to write a value to
//  char value - The value to be written to the specified register.
void writeRegister(char registerAddress,unsigned char value){
  //Set Chip Select pin low to signal the beginning of an SPI packet.
  digitalWrite(CS, LOW);
  //Transfer the register address over SPI.
  SPI.transfer(registerAddress);
  //Transfer the desired register value over SPI.
  SPI.transfer(value);
  //Set the Chip Select pin high to signal the end of an SPI packet.
  digitalWrite(CS, HIGH);
}

//This function will read a certain number of registers starting from a specified address and store their values in a buffer.
//Parameters:
//  char registerAddress - The register addresse to start the read sequence from.
//  int numBytes - The number of registers that should be read.
//  char * values - A pointer to a buffer where the results of the operation should be stored.
void readRegister(char registerAddress, int numBytes,unsigned char * values){
  //Since we're performing a read operation, the most significant bit of the register address should be set.
  char address = 0x80 | registerAddress;
  //If we're doing a multi-byte read, bit 6 needs to be set as well.
  if(numBytes > 1)address = address | 0x40;
 
  //Set the Chip select pin low to start an SPI packet.
  digitalWrite(CS, LOW);
  //Transfer the starting register address that needs to be read.
  SPI.transfer(address);
  //Continue to read registers until we've read the number specified, storing the results to the input buffer.
  for(int i=0; i<numBytes; i++){
    values[i] = SPI.transfer(0x00);
  }
  //Set the Chips Select pin high to end the SPI packet.
  digitalWrite(CS, HIGH);
}

Тут у нас чтение данных с акселя ( с 1 координаты) и оптопары, запись в память (на atmega328 влазят 550 значений) и выдача их в порт. В конце передачи еще пишется "end" для того что ПО на компе разбивала на части.

А вот что я наваял для компа в LabVIEW естественно...
прога.png

тут у нас прием всего,корректировок всякого, есть подсчет оборотов, есть фильтр данных с акселя, есть выдача фильтрованных данных за 1 оборот в полярных координатах (кружки такие получаются когда синусоида четкая). Ну и собственно считается всякими хитрыми преобразованиями спектр всего этого дела. Можно с обработанных и необработанных данных считать. Отдельно просматривается наш рабочий диапозон (10Гц это 600об\мин 100Гц-6000об\мин). Для нашей частоты смотрим фазу вычитаем фазу сигнала оптопары и находим искомое смещение масс. Уровень того смещения у нас по амплитуде смотрится. На графике 10 последних значений рисуются. Исходник под labview 13 (там еще надо ставить visa,robotics модули):
подvi.rar
(69.56 КиБ) Скачиваний: 0

чего еще не хватает? там наблюдается сдвиг фазы в зависимости от оборотов. видать какое то запаздывания. тоже корректировки нужны. ну а так работает очень даже. у мну мотор без пропеллера без крепления пропеллера за счет резонанса выдает норм данные годные для нахождения фазы.
потом еще я работу не закончил. буду еще варианты пробовать ну и начну пользоваться наберу данных, отпишусь.
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

Re: Динамическая балансировка ВМГ стенд

Сообщение Nesenin » 17 июн 2014, 19:41

опробовал такой датчик
$T2eC16JHJF0FF,DyI9elBSefVfn7Ig~~60_12.JPG

(купил тут)
он как бы на отражение своего ИК диода, но ловит свет и от солнца и от ламп и от лазера (проверял).
хорошего в нем то, что таки он позволил сделать вариант синхросигнала по пропеллеру.
по прерыванию флаг меняется с 0 на 1 и обратно. данные в ПО на ПК выглядят таким образом:
прога2.png

(данные с другой платформы с большого мотора и пропа. фото будут позже)
ничего в расчетах не меняется все работает норм с подсчетом по фронту нарастания.
прошивка поменялась на это
Код: Выделить всёРазвернуть
//Add the SPI library so we can communicate with the ADXL345 sensor
#include <SPI.h>


#define MAX_SAMPLES 550

//Assign the Chip Select signal to pin 10.
int CS=10;

//This is a list of some of the registers available on the ADXL345.
//To learn more about these and the rest of the registers on the ADXL345, read the datasheet!
char POWER_CTL = 0x2D;   //Power Control Register
char DATA_FORMAT = 0x31;
char DATAX0 = 0x32;   //X-Axis Data 0
char DATAX1 = 0x33;   //X-Axis Data 1
char DATAY0 = 0x34;   //Y-Axis Data 0
char DATAY1 = 0x35;   //Y-Axis Data 1
char DATAZ0 = 0x36;   //Z-Axis Data 0
char DATAZ1 = 0x37;   //Z-Axis Data 1

//This buffer will hold values read from the ADXL345 registers.
unsigned char values[10];
//These variables will be used to hold the x,y and z axis accelerometer values.
int x,y,z;

byte lowbyte_x[MAX_SAMPLES], highbyte_x[MAX_SAMPLES];
//byte lowbyte_y[MAX_SAMPLES], highbyte_y[MAX_SAMPLES];
//byte lowbyte_z[MAX_SAMPLES], highbyte_z[MAX_SAMPLES];
byte zero[MAX_SAMPLES];

int inPin = 2;
int LedPin = 3;
int val = 0; 
int sample_index,t;
const int dataReadyPin = 4;
byte prop = LOW;

void setup(){
  //Initiate an SPI communication instance.
  SPI.begin();
  //Configure the SPI connection for the ADXL345.
  SPI.setDataMode(SPI_MODE3);
  //Create a serial connection to display the data on the terminal.
  Serial.begin(115200);
 
    pinMode(dataReadyPin, INPUT);
    pinMode(inPin, INPUT);
     pinMode(LedPin, OUTPUT);
  //Set up the Chip Select pin to be an output from the Arduino.
  pinMode(CS, OUTPUT);
  //Before communication starts, the Chip Select pin needs to be set high.
  digitalWrite(CS, HIGH);
  digitalWrite(LedPin, LOW);
 
  //Digital Pin 2 Set As An Interrupt
attachInterrupt(0, prop_interrupt, FALLING); //RISING c LOW на HIGH, FALLING с HIGH на LOW
 

  //Put the ADXL345 into Measurement Mode by writing 0x08 to the POWER_CTL register.
  writeRegister(POWER_CTL, 0x08);  //Measurement mode 
    //Put the ADXL345 into +/- 8G range by writing the value 0x01 to the DATA_FORMAT register.
  writeRegister(DATA_FORMAT, 0x02);
  writeRegister(0x2C, 0x0F); // 3200 HZ
    writeRegister(0x2E, 0x80); // set dataready to interrupt pin INT1 and active high
/* writeRegister(0x1E, 0x00); // X-offset to 0
  writeRegister(0x1F, 0x00); // Y-offset to 0
  writeRegister(0x20, 0x00); // Z-offset to 0
  */  delay(100);
}

void loop(){
               for (sample_index=0; sample_index<MAX_SAMPLES; sample_index++)
               {
                 while (digitalRead (dataReadyPin) == LOW) ;
               

  //Reading 6 bytes of data starting at register DATAX0 will retrieve the x,y and z acceleration values from the ADXL345.
  //The results of the read operation will get stored to the values[] buffer.

  readRegister(DATAX0, 6, values);
 
 
  zero[sample_index] = prop ;//digitalRead (dataReadyPin); //
 
  //The ADXL345 gives 10-bit acceleration values, but they are stored as bytes (8-bits). To get the full value, two bytes must be combined for each axis.
  //The X value is stored in values[0] and values[1].
  lowbyte_x[sample_index]=values[0];
  highbyte_x[sample_index]=values[1];
  //x = ((int)values[1]<<8)|(int)values[0];
  //The Y value is stored in values[2] and values[3].
//  lowbyte_y[sample_index]=values[2];
//  highbyte_y[sample_index]=values[3];
  //y = ((int)values[3]<<8)|(int)values[2];
  //The Z value is stored in values[4] and values[5].
//  lowbyte_z[sample_index]=values[4];
//  highbyte_z[sample_index]=values[5];
// z = ((int)values[5]<<8)|(int)values[4];
               }
               
               
 
  for (t=0; t < MAX_SAMPLES; t++)
  {
    x = ((int)highbyte_x[t] << 8) | (int)lowbyte_x[t];
//   y = ((int)highbyte_y[t] << 8) | (int)lowbyte_y[t];
//   z = ((int)highbyte_z[t] << 8) | (int)lowbyte_z[t];
    val = zero[t];
  //Print the results to the terminal.
  Serial.print(x, DEC);
  Serial.print("\t");
/*  Serial.print(y, DEC);
  Serial.print("\t");
  Serial.print(z, DEC);
  Serial.print("\t"); */
  Serial.println(val);   
 
// delay(1);
  }
  Serial.println ("End");
}

//This function will write a value to a register on the ADXL345.
//Parameters:
//  char registerAddress - The register to write a value to
//  char value - The value to be written to the specified register.
void writeRegister(char registerAddress,unsigned char value){
  //Set Chip Select pin low to signal the beginning of an SPI packet.
  digitalWrite(CS, LOW);
  //Transfer the register address over SPI.
  SPI.transfer(registerAddress);
  //Transfer the desired register value over SPI.
  SPI.transfer(value);
  //Set the Chip Select pin high to signal the end of an SPI packet.
  digitalWrite(CS, HIGH);
}

//This function will read a certain number of registers starting from a specified address and store their values in a buffer.
//Parameters:
//  char registerAddress - The register addresse to start the read sequence from.
//  int numBytes - The number of registers that should be read.
//  char * values - A pointer to a buffer where the results of the operation should be stored.
void readRegister(char registerAddress, int numBytes,unsigned char * values){
  //Since we're performing a read operation, the most significant bit of the register address should be set.
  char address = 0x80 | registerAddress;
  //If we're doing a multi-byte read, bit 6 needs to be set as well.
  if(numBytes > 1)address = address | 0x40;
 
  //Set the Chip select pin low to start an SPI packet.
  digitalWrite(CS, LOW);
  //Transfer the starting register address that needs to be read.
  SPI.transfer(address);
  //Continue to read registers until we've read the number specified, storing the results to the input buffer.
  for(int i=0; i<numBytes; i++){
    values[i] = SPI.transfer(0x00);
  }
  //Set the Chips Select pin high to end the SPI packet.
  digitalWrite(CS, HIGH);
}

void prop_interrupt()
{
   prop = !prop;
   digitalWrite(LedPin, prop);
}

тут у нас светодиод добавился чтоб после остановки мотора знать в каком мы секторе и найти проп от которого считается угол. (в случае ошибки ниче страшного ровно 180гр поворачиваем груз и ок)

плохого в упомянутом датчике то что он уж слишком сильно ловит фоновую засветку, на выходе слабый сигнал, который временами проходит мимо контроллера вследствии чего отсчетный пром меняется (180гр поворот и снова нет проблем)
такие дела.
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

Re: Динамическая балансировка ВМГ стенд

Сообщение Nesenin » 19 июн 2014, 00:57

вон оно как предполагалось (изолента там временно):
SAM_4597.JPG

амплитуда нашей частоты (42гц или 2520об\мин) уменьшается (см. было download/file.php?id=33063&mode=view ) в 6 с лишним раз по сравнению с статическим методом (не предел).
прога2баланс.png

с качающейся рамой все еще круче должно быть. пока не оценивал.
PS с поиском фазы беда она как бы находится четко надежно, но сдвиг меняется в зависимости от оборотов, массы и установившегося режима. надо как то корректировочную кривую делать и не похоже что она будет на все случаи
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

Re: Динамическая балансировка ВМГ стенд

Сообщение Nesenin » 20 июн 2014, 18:56

Методика получается такая:
1)подбираем обороты такие чтоб получить наибольшую амплитуду. то есть резонанс и все такое.
2)лепим груз побольше чтоб он нам точно давал знать где у нас лишний вес. корректируем сдвиг фазы чтоб на полярных графиках было указано что куда (я еще сделал смену направления построения графиков для учета направления вращения. эт надо значения углов на -1 умножать иль 1)
3)снимаем груз, крутим на подобранных оборотах смотрим таки на каком угле у нас искомое смещение ( если добавочный угол +180 то сразу показывает куда груз вешать). потом если датчик работает по пропам и таки теряет проп отсчетный появляется подпункт 3.1 в ином случае пункт 4:
3.1) вешаем небольшой груз смотрим на изменение амплитуды: увеличился ? значит промахнулись. клеем груз по тому же углу но относительно другого пропа.
4)вешаем груз смотрим на амплитуду нужной частоты. на остальные пофиг. повторять пока не снизится до минимума.

возможны варианты.
бывает в ходе таких манипуляций фаза меняется. на практике получается что я вначале выправляю осевую балансировку большими грузами( эт на бок винта между лопастями). а потом уже небольшие грузики на лопасти для точной конечной корректировке.
в итоге влияние смещения масс на суммарную вибрацию получается меньше чем другие факторы (переключение обмоток, подшипники, собственные колебания различных частей и пр.) и дальше балансировать особого смысла нет.
Аватара пользователя
Nesenin
 
Сообщения: 1341
Зарегистрирован: 26 янв 2012, 03:59
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин

След.

Вернуться в Летающая техника

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5