Система автоматического тестирования ВМГ (народный проект)

Gapey
Nesenin:

то что я нашел по запросу “датчик крутящего момента”. не бюджетно.

а нам по большому счету ненужно ставить датчик между мотором и пропом … можно поставить датчик на крепление мотора … можно попробовать использовать такой-же тензодатчик как для измерения тяги только развернуть на 90 градусов …

Nesenin
Gapey:

а нам по большому счету ненужно ставить датчик между мотором и пропом … можно поставить датчик на крепление мотора … можно попробовать использовать такой-же тензодатчик как для измерения тяги только развернуть на 90 градусов …

да, Вы правы. так и будем делать.
я думал думал и придумал вот такую конструкцию

тут подшипник из HDD привода головки записи\чтения. это в духе “народного” проекта. он не имеет люфтов, сопротивление минимальное, прочность максимальная. по ощущениям на него хоть киловатный движок водрузить можно будет.
соответственно на левый край верхней трубки будет крепится маленький тензомост, повернутый на 90гр, и будет упираться в некий упор\демпфер или вообще намертво зажат. в зависимости от того как результат получится лучше.(а я сегодня видел конструкцию мотор\винт которые качаются в горизонтальной плоскости с поднятием некого груза силой момента вращения винта, так там масло налито чтоб это дело плавно работало и тяжеленный груз еще инерцией своей сглаживает).
общая конструкция вернется к балочной. все равно мне не понравилось поведения стенда при прямом креплении.
вот теперь надо по новой затариваться модулем АЦП и искать подходящий мостик. наверно что то до 1кг. если что длину “плеча” увеличим.

и если это все получится, то в итоге нам достаточно будет протестировать винты 1 раз и моторы 1 раз, а потом только выставлять нужные параметры в ПО и запускать поиск по базе, чтоб получить подходящие сочетания мотора с винтом с акумом. кроме того полный тест моторов позволит еще и достоверно считать полетное время и другие параметры. кроме того можно будет разработать теорию по перемотке двигателей с получением более подходящих характеристик под нужное сочетание винта аккума. и пр.
в теории…

Gapey

конструкцию делать намного проще , как тут
датчик крепим к квадратной трубе как на фото закреплена нижняя часть датчика , на верхнюю часть датчика тоже крепим кусок квадратной трубы , к концу трубы мотормаунт …
второй датчик крепим точно также в разрез квадратной трубы только под 90 градусов … те один датчик меряет усилие вперед/назад второй вправо/влево …
вот какой датчик ставить ближе к мотору нада подумать …
к модулям на HX711 можно подключать сразу два датчика …

Nesenin
Gapey:

второй датчик крепим точно также в разрез квадратной трубы только под 90 градусов … те один датчик меряет усилие вперед/назад второй вправо/влево …
вот какой датчик ставить ближе к мотору нада подумать …
к модулям на HX711 можно подключать сразу два датчика …

я не представляю как момент на конце палки будет гнуть “влево\вправо” наш датчик. уж пусть оси совмещены будут . я и забыл про второй канал на HX711. сейчас пожертвую своими весами на 300гр. может чего да получится.

Gapey

поидее да , наибольшее усилие на датчике “влево\вправо” будет если ось двигателя будет по центру датчика , тут рычаг работает против нас … ну и датчик нужен с большой чувствительностью …
а вот датчик который работает “вперед/назад” можно брать менее чувствительный (на больший вес) так как рычаг работает на увеличение усилия …

sulaex

Здоровэнькы булы!

Давненько я тут не был. 😃

Не особо вникая в выше изложенное, а не слишком ли вы фанатеите по поводу точности измерений при создании подобных стендов по теме?

Nesenin
sulaex:

Не особо вникая в выше изложенное, а не слишком ли вы фанатеите по поводу точности измерений при создании подобных стендов по теме?

точность никому не вредит, тем более что денежных затрат особо не требуется.
если вы вникните, то возможно согласитесь с мнением, что существующая методика тестирования и данные тестов не годятся ни для точных расчетов параметров мультироторов, ни для собственно качественного сравнения мотора\винта. сущесвует вероятность вообще сделать неверные выводы о том или ином моторе\винте.
а это все зря потраченное время, деньги, силы.
если же мы привяжем тесты тяги винта и потребления электроэнергии мотора к физическим параметрам вращения (мощность = углавая скорость * момент), мы как минимум избавимся от необходимости тестировать все возможные сочетание “мотор\винт”. то есть не надо покупать 100500 винтов и по очереди лепить их на мотор для подбора (а еще помножьте это на перебор батарей). мы просто протестируем все винты по 1 разу, запишем данные, потом протестируем моторы ( будет длительный цикл чтоб учесть зависимость по напряжению) и уже численными методами программа для нас будет искать подходящее сочетание мотор\винт\батарея и рассчитывать итоговые показатели. и в этом случае данные полученные кем то по какому то винту\мотору легко будет добавить в базу знания для последующего использования.
а максимум - это возможность построить точную матмодель с неограниченным применением. хоть свои винты\моторы\регуляторы проектировать\делать и тестировать\настраивать с сравнением результатов других.
в теории… дальше вопрос к реализации.

по деньгам. надо докупать мост для замера момента (например www.aliexpress.com/item/…/893631341.html)
и данные оборотов как то завести. (вообще есть регуляторы с отдельной линией данных по оборотам например www.castlecreations.com/…/phoenix-edge.html)

PS тензомост на 300гр я проверил, второй канал на АЦП тоже. сейчас воюю с кодом. пытаюсь заставить все вместе работать.

Gapey

есть регули которые работают по СОМ порту и выдают обороты , и нетолько обороты …
autoquad.org/esc32/
но проще завести на ардуину одну фаза с мотора через делитель , и считать импульсы … количество полюсов можно и глазами посчитать …

sulaex

Вы делаете лишнюю работу. Она не востребована будет. Добавляя, расширяя конструкцию вы наоборот накапливаете ошибки.
Например первоначальная ваша конструкция не достаточно жесткая. Привожу этот пример для указания на ошибки более влияющие на результаты измерений, чем то, на что вы щас заостряете свое внимание.
Между пластиной и тензодатчиком текстолит, очень изменит показания (эта ошибка более существенна). Так же квадратная труба не достаточно жесткая.
Не будет линейности в измерении, в начале и конце теста значения будут занижены (проверял на своем стенде, уж поверьте или проверьте).
А последующая доработка вообще существенно изменит показания, просто напросто вы загоняете проект в бесполезное, дорогое творчество, которое никто не будет повторять.
Для примера сравните информативность табличек на сайте СанниСкаев и моими измерениями, и то и другое содержит практически одну и ту же полезность, большего от этих данных не требуется.
Имеется немного расхождений в данных, но это практически не влияет на предварительные расчеты ВМГ для комфортных последующих подборов связки ВМГ.
Да и вообще, мне стенд помог понять множество факторов, которые могут повлиять но правильность подбора ВМГ. В этом его большая заслуга, а не в точности измерений.

Nesenin

не беспокойтесь, я даже ось вала по нормали выставляю пузырьковыми уровнями. про возможные причины не линейности в вашем стенде я писал, как рас таки после длительного изучения своей балочной конструкции.
со всеми ошибками я активно борюсь. как аппаратно так и программно. см мое ПО yadi.sk/d/eEj0iObbHuS9Z и сообщения тут.

“лишняя, бесполезная” эт субъективная оценка. кому то вообще это все не надо. а кому то нужны достоверные данные для работы над долголетами или еще чем.

Nesenin

утром не успел написать про “жесткость”.для опоры я использую 2 трубы с толщиной стенки 1.5мм (15*15 ). они стянуты друг к другу и образуют цельную опору с вертикальными полосами в середине и по краям. то есть в сумме 6мм*15мм(ширина*высота) балка препятствуют изгибу основания по вертикали . текстолит по всей площади опоры моста. сжать его сложнее чем алюминий. и стянуто это 2мя болтами М6. этим обеспечивается достаточная жесткость. сверку показаний я делал.

я тут подумал. так как тяга винта соответствует точному значению оборотов и моменту, можно будет, произведя тест набора популярных винтов, извлекать показатели для моторов из обычных тестов. что сильно облегчит мне жизнь при наполнении базы данных. а там может кто поможет сделать более детальные тесты моторов.
щя думаю заказать APC Slo-Flyer винты 9-12" с шагом 3.8 и 4.7 и 14" с шагом 4.7 какие еще заказать (по 1 чтоб не разорился я)?

22 days later
Nesenin

по поводу ПО для стенда которое для LAbVIEW и arduino. дальнейшие разработки под 1 вариант стенда я остановил. последняя версия все там же yadi.sk/d/CYA3DLdHKxsv6
по сравнению с тем что было на видео, доработан раздел “обработка”, сделан раздел "анализ"с необходимым минимум функций. и как бонус есть раздел “3D картинки” там по загруженным графикам строятся поверхности.

код arduino не менял. в случае если кто надумает использовать упомянутый АЦП ADS1100 вот тут код forum.arduino.cc/index.php/topic,77794.0.html рабочий. его легко можно добавить в основной, ничего не сломав. достаточно воткнуть в нужные места куски из этого

/*
SDA ==> analog 4 PC4
SCL ==> analog 5 PC5
*/

#include <Wire.h>

#define AD0 B1001000 // 7bit address
#define AD1 B1001001 // 7bit address
#define options B10001100 // 0x8C

uint8_t reg = 0;
int16_t result = 0;

void setup() {
Serial.begin(115200);
Wire.begin();
Wire.beginTransmission(AD0);
Wire.write(options);
Wire.endTransmission();
}

void loop() {

Wire.beginTransmission(AD0);

Wire.requestFrom(AD0, 3); // request 3 bytes from AD1

while(Wire.available()) {

result = Wire.read();
result = result << 8;
result += Wire.read();

reg = Wire.read();

Serial.println(result, DEC);

}

Wire.endTransmission();

delay(5);
}

надо только настроить под свой чип (см выбор AD1 или AD0). для моего датчика , расчетная точность должна составить 0,003814697265625 [А] (шум не позволит так точно измерять). напомню сейчас шаг измерений у меня составляет 0,1237934195959 [А]. То есть точность должна улучшиться на порядок!

над вторым вариантом стенда я потихоньку работаю. Код для опроса 2х тензомостов я наваял. К сожалению методика опроса 2х каналов предполагает тратить по 1 запросу на смену выбора канала АЦП (в сумме 4 запроса к АЦП). В итоге скорость цикла измерений упала более чем в 4 раза, так как АЦП еще тупит между переключениями. Придется время теста сильно увеличивать. Как вариант использовать 2 АЦП. Вот тут banggood.com/HX711-Weighing-Pressure-Sensor-24-Bit… например цена с доставкой $2.40 ! да и версия с экраном тоже карман сильно не опустошает. может потом 2 будут. а пока вот рабочий код для 2 каналов yadi.sk/d/HSbal9N0L2VCm

теперь мне осталось решить вопрос с измерением оборотов и можно все собирать воедино. даже если данные момента ничего не дадут, все равно выйдет более точный , удобный, проработанный стенд, чем были до этого.

6 months later
Nesenin

Про стенд с измерением в добавок оборотов и момента. Вот результат:

добавились:
АЦП ADS1100 для измерения напряжения на датчике тока
еще 1 АЦП HX711 и тензомост на 1кг для измерения момента
датчик скорости оптический такой dx.com/…/lm393-beam-photoelectric-sensor-black-217…

Точность по датчику тока и моменту можно оценить по картинке по оборотам то же весьма норм(на этом скрине еще не работало)

Для стабилизации измеряемых данных время на 1 шаг выделяется 1 сек. Для избавления проблем с питанием я использую БП. Выглядит стенд так:

Исходники жить будут тут: yadi.sk/d/_SCP7BogbpLRA
В архиве исходники для arduino. Они уже вряд ли будут меняться.
Файл с расширением vi эт исходник под LAbVIEW2013 его я буду постоянно изменять по мере дальнейших работ. Будет обновляться.

evgen42

Вопрос в чем преимущество диода для измерения оборотов? Например с регулятором hobbywing в комплекте идет датчик оборотов вот здесб он показан www.falconsekido.com/products/rpm-sensor, можно же его использовать или все-же решение на оптике в чем-то выигрывает? По крайней мере не надо ничего подводить к двигателю и каждый раз клеить наклейки

Nesenin

evgen42, я о такой штуке только сейчас узнал. не знаю я про преимущества. с регулятора данные брать удобней конечно, когда он есть такой.

сегодня начал модифицировать программку для вывода всех новых данных. интересные графики получаются. например по КПД

график гр\Вт(механ) эт какрас независимые характеристики пропеллера. я тут тестировал карбоновые всякие. например пара левого и правого направления вращения 1 из них имеет брак( чуть сильнее загнут на глаз еле видно) и полный хлам по тестам, другой норм. а другие хоть и оба норм, все равно где то не одинаковы и на тесте это видно. в разделе “анализ” можно будет быстро любые графики построить.

а то я пока не знаю какие данные то нужны. пусть будет возможность вывести что угодно.

evgen42

Labview как я понимаю исходники вы не открываете? А так все можно бы выложить в гитхаб, можно и порефакторить на досуге, например удивительно видеть аж 2 дублирующихся файла hx711 отличающихся парой констант 😃
Теже adafruit библиотеки для датчиков все в гитхабе давно

Nesenin
evgen42:

Labview как я понимаю исходники вы не открываете?

тут они yadi.sk/d/_SCP7BogbpLRA файл superTest.vi обновляю каждый раз.

7 days later
evgen42
Nesenin:

тут они

Бинарный исходник? Это не удобно для гита будет надо что-то другое придумывать.

Попробовал этот датчик, припаял к 2 проводам регулятора, в плане ардуино такой же код как и в случае оптического - attachinterrupt, сигнальный провод во 2ой пин, и поехали считать.
Посмотрел в вашем коде зачем-то в каждом прерывании измеряется время потом это все сглаживается окном. Зачем так сделано, да и окно можно было уже на клиенте делать. У себя сделал проще, копипаст с сайта ардуино - в прерывании счетчик, далее в loop() все равно самая долгая операция это измерение + усреднение тяги, я например из 40 замеров делаю. За это время прерывание натикает иногда > 255 что надо учитывать если копипастим volatile byte с arduino.cc , тут то мы и измерим время которое счетчик тикал. В результате никаких окон, и миллионов вызовов функции millis(), не знаю как здесь но в виндовс любая функция QPC занимает не мало времени. Вобще даже без фильтрации окном получается почти монотонный график оборотов.

  servoValue += dServo;
  servo1.write(servoValue);

  //reset rpm counter
  timeold = millis();
  half_revolutions = 0;

  //account weight from scale
  float weight = scale.get_units(40);
  scale.power_down();			        // put the ADC in sleep mode
  delay(5);
  scale.power_up();

  //Update RPM
  rpm = 4350.0/(millis() - timeold)*half_revolutions;

Калибровал регуляторный датчик по оптическому счетчику с HK, в итоге показания стали сходится - ну или оба врут пропорционально теперь или все-же более менее правду гоорят

Nesenin
evgen42:

Бинарный исходник? Это не удобно для гита будет надо что-то другое придумывать.

labVIEW использует визуальный “язык” программирования. никакой читабельный текст от туда не извлечь. эт для таких как я - не программистов. по этой же причине я не могу разделить ваше желание рефакторить код.

IDDQDesnik

Заморочился постройкой коптера, заказал всякого, но пришли пока только моторы, регули и акумуляторы и пропелееры. Потому и решил опробовать все на ардуинке.
Накидал скетч:

#include <Servo.h>

Servo myservo;

int l_out_1     = 3;
int l_out_2     = 4;
int l_out_3     = 5;
int angle       = 0;

void setup()
{
  myservo.attach(12);
  delay(5000);
  myservo.write(angle);
  delay(2000);
}

void loop() {
  for (angle = 95; angle <= 130; angle += 5) {
    myservo.write(angle);
    led_out(angle);
    delay(2000);
  }
}

void led_out(int ang) {
  int value = (ang - 95) / 5;
  digitalWrite(l_out_1, (value & 1) * HIGH + (value & 1 == 0) * LOW);
  digitalWrite(l_out_2, (value & 2) * HIGH + (value & 2 == 0) * LOW);
  digitalWrite(l_out_3, (value & 4) * HIGH + (value & 4 == 0) * LOW);
}

Мотор завелся, но смущает очень низкий диапазон углов: при 100 мотор стартует, при 110 - максимальные обороты. Это как то калибруется, или это чей-то баг?

IDDQDesnik

Нашел на сайте производителя регулей упоминание о пробемах при использовании совместно с Ардукоптером и Мегапиратом, на которое изначально не обратил внимание, так как была куплена Наза. Там рекомендуется установить некий параметр в 1, но как это сделать на Ардуине?