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

sulaex
Gapey:

осталосЪ раскопать работу с компортом из экселя и написать макрос по вытряхиванию данных из ардумны …
тогда все можно будет делать прямо из экселя …

strokescribe.com/ru/serial-port-programming.html

sulaex

UP 😃

sulaex:

Здесь имеются некоторые сложности в получении эталонного значения по току. Если вы имеете какие либо предложения для решения данной проблемы, прошу высказываться. Пока более простого решения нет, в программе все таки имеется возможность калибровки. Для этого в разрыв питания регуля подключаем амперметр. Собираем ВМГ как для теста и нагружаем датчик тока путем раскрутки ВМГ. В режиме ввода эталонного значения тока можно нажимать клавиши “+” и “-” для задействования ВМГ в качестве нагрузки. Плюсом будем увеличивать обороты, минусом уменьшать. Но не забываем перед этими действиями откалибровать регулятор.

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

руководствовался данной статьей

как видите собрал вторую схему, но в нашем варианте можно обойтись более простой
вторая схема проверена лично и работает на ура, но не увеличивайте нагрузку выше 5-7 ампер

ARXITEKTOR

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

Nesenin

дык используйте. все поделки так и делаю arduino + labview. отправляю команды. читаю данные. хошь графики строй хошь 3D модели. можно интерполяцию прикрутить. запись в базу\чтение сравнение. ммм

по поводу серво сигнала на arduino. он не аппаратный. в смысле не по прерываниям от таймера работает. от того может дергать туда-сюда. для данной темы наверно не сильно актуально, но вообще есть средство arduiniana.org/libraries/pwmservo/ мож кому пригодится.

1 month later
Nesenin

sulaex, возможно у вас не точна схема передачи усилия на тензодатчик. на вид присутствует “рычаг”, см. ось двигателя имеет небольшой вылет над ножкой. я тут как рас подобную схему о 2х опорах ваяю. и заметил что даже небольшого смещения точки приложения силы и точки опоры, хватает на возникновение ошибки. а у вас еще 1 опора усилие оказывает.
может все ж сделать площадку на самой конструкции датчика и туда уже движок крепить? правда не ясно как вибрация повлияют.

Nesenin

фух! получил первый результат

эт без фильтров. мышкой крутил уровень сервосигнала. внизу на графике видно как он рос.
поздно прочел про точность датчика тока. купил ACS758LCB-050 B надо было с U(униполярный)
выход с датчика тока сначала без обвеса подключил
см

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

Nesenin

список покупок тут rcopen.com/forum/f123/topic345296/22
вот так выглядит мой стенд

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

по поводу ПО. под arduino я свой код наваял на основе нарытого в сети китайского кода под модуль АЦП.
вот архив yadi.sk/d/f1CwtYiKHuQwb
папку PWMServo надо в libraries добавить в месте где среда arduino стоит. тогда будет пахать с аппаратным серво сигналом (см. выше писал).
ноги на которые цепляются выводы с модуля АЦП датчика веса устанавливаются в файле HX711.h коэффициент для тензодатчика в файле HX711.cpp
моё творчество выглядит так

#include “HX711.h”
#include <PWMServo.h> //arduiniana.org/libraries/pwmservo/ arduiniana.org/PWMServo/PWMServo_v2.zip
int Weight = 0;
int analogVolt = 2; //pin для измерения напряжения аккума
int analogTok = 3; //pin для чтения датчика тока
int Volt = 0;
int Tok = 0;
int suma = 0;
int serva = 0;

unsigned long previousMillis = 0; // храним время
unsigned long currentMillis = 0;
long interval = 400;
PWMServo servo1; //объявляем

void setup()
{
Init_Hx711(); //инициализация датчика веса

Serial.begin(115200);

servo1.attach(SERVO_PIN_A); //выход сервосигнала 9 pin

delay(3000);
Get_Maopi(); //
}

void loop()
{
Weight = Get_Weight(); //чтение веса
Volt = analogRead(analogVolt); //чтение напряжения
Tok = analogRead(analogTok); //чтение тока

Serial.print(Weight); //вывод в порт
Serial.print(" “);
Serial.print(Volt); //
Serial.print(” “);
Serial.print(Tok); //
Serial.print(” ");
Serial.println(serva); //

if(Serial.available() > 2)
{
byte a,b,c; // принимаем байты и разбиваем их
a = Serial.read(); //значение сервосигнала
b = Serial.read(); // добавочное число (20)
c = Serial.read(); // контрольное значение для проверки

suma = a + b-3;
if(suma == c && suma != 0)
{servo1.write(a);
serva =a;
previousMillis = millis();
}
}

currentMillis = millis();

if( currentMillis - previousMillis > interval)
{
servo1.write(0);
serva = 0;
}

delay(20);
}

тут у нас чтение команд с компа и отправка данных. из плюшек это избыточные данные с компа и контрольная сумма. это надо для того чтоб проверять целостность данных и левые игнорировать. потом есть авто выключение моторки в случаях если нет поступления “правильных” команд больше 400мс(для беспроводного соединения будет актуально). все ради безопасности.

ПО для компа ща ваяю в labview. как че годное сделаю, выложу.
пока зянят борьбой с шумом в показаниях напряжения. кондеры ставлю. чет не шибко помогает. потом есть одиночные скачки в показаниях датчика веса. но эт легко отсеивается. думаю будет некоторая выборка набираться. потом фильтроваться. потом всякие графики строиться и экспорт\импорт данных будет.
PS шаг измерений тока почти 100мА это печаль. потом других датчиков докуплю. буду менять в зависимости от амплитуды с соответствующим ростом точности см.rcopen.com/forum/f123/topic345296/19

Gapey
Nesenin:

шаг измерений тока почти 100мА это печаль.

на более правильном 50U будет 50 ма , что впринцепе достаточно для больших моторов но маловато для мелких …
можно использовать датчики еще на меньший ток а можно использовать внешний АЦП например ADS1100 , тогда достаточно будет любого ACS758 , какой есть под руками и на все случаи …

SergDoc

Только я не пойму, а зачем рычаг? балку(датчик силы, тензодатчик - да как угодно) одним концом понятно - к станине, а прямо на второй конец балки крепление мотора?

Dimus

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

Nesenin
Gapey:

можно использовать датчики еще на меньший ток а можно использовать внешний АЦП например ADS1100

да, очень желательно использовать внешний АЦП на датчик тока. я тут по показаниям мультиметра (не самого дешевого) подобрал коэффициент для своего датчика . получилось 0,1237934195959(ампер на единицу). очень печально наблюдать как например при 10мА (регулятор столько ест при выключенном моторе) у меня показания за счет шума скачут 0\0.123…А
надо решать вопрос.

SergDoc:

Только я не пойму, а зачем рычаг? балку(датчик силы, тензодатчик - да как угодно) одним концом понятно - к станине, а прямо на второй конец балки крепление мотора?

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

может потом сделаю.

Dimus:

Тоже с шумами по напряжению борюсь, аппаратный фильтр не очень помогает

а я кажись поборол

потребовалось аж 100мкФ прикрутить (потенциометр 25кОм настроен на 4S, подключено после датчика тока перед регулятором). по сути маленькие пики это стандартный шум, который всегда присутствует и составляет сотые доли В и меньше.
такие дела. работаю дальше.

Gapey
Nesenin:

микровибрация просто трет подложенный кусочек алюминия,

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

Nesenin

вот тут будут жить файлы yadi.sk/d/eEj0iObbHuS9Z
собственно добавил исходник для среды LabVIEW2013(+модуль visa нужны установленные на ПК для запуска) exe’шник пока не делаю.смысла пока нет.
вот как выглядит тест и работа на сей момент (включите fullHD)

youtu.be/uBhMO2FbR2E

рекомендую всеж среду разработки поставить. там куча фильтров и примеров. программировать очень просто. запуск из среды без компиляции(мгновенно). то есть меняешь работу кода “на ходу”.
PS вертикальное расположение мотора на мосту датчика веса, как мне кажется, добавит шумов - будет качаться туда\сюда. но конечно попробую со временем. для меня главное данные как можно более похожие на правду. буду тестировать и улучшать стенд\ПО.

Nesenin

начал работать уже над третьей вкладкой “анализ”. хочу поделиться результатами экспериментов. как и ожидалось показания ток а сильнее всего вносят шум. и чем меньше значение тока тем, естественно ,больше хрени на графике гр\Вт.
я сначала делал тесты с max значениями тока до 7.5 А и малость озадачился вопросом “насколько сильно сглаживать замеры что бы конечные результаты были ближе к правде?”
если сглаживать слабо, получается такой волнистый график, который малость пугает своей кривостью. если сглаживать сильно, то уже вполне себе выпуклый плавненький, но на сколько он верен?
взял прогнал мотор с max 14А. имеем:

тут первый график это без программных фильтров. только выборка (выборка это когда из нескольких значений для заданного сервосигнала берется последнее значение с той мыслью что первые это еще не установившиеся обороты и значения; у меня шаг 100мс 4-5 значений успевают прийти см. код)
второй график это тож самое + проведено довольно сильное сглаживания данных по току, чтоб пофиксить начало .
ну и последний это уже сам график эффективности сглажен.
отдельно отмечу “уход в минус”. вообще для сервосигналов 0-4 и 176-180 обороты двигателя регулятор уже не регулирует то есть они в первом случае =0 в последнем на max . а фильтры стремятся эти участки ровных прямых привести в соответствие с общим наклоном. получается уходят значения в минус и в итоге такая вот хрень. не считаю нужным с этим что то делать. будем игнорить значения на концах сами.

так вот, на основании этого теста, буду считать что график, все-таки, должен быть плавным с резким взлетом в начале и плавным спуском вниз дальше. насколько это так, вопрос открыт. я встречал графики в этой теме rcopen.com/forum/f123/topic218743 в которых линии явно страдают от сильного влияния шумов в начале. там аж впадины встречаются в месте где должен быть максимум! ну и общее “волнение” по линии. мне кажется это все ошибки.

далее приведу реальные замеры на моем стенде с сильным сглаживанием значений тока и не сильным других (значения напряжения практически никак не влияют хоть сглаживай хоть нет). опять же значения на концах игнорим

моторка www.rctimer.com/index.php?gOo=goods_details.dwt&go…
винты
hobbyking.com/…/__25814__8045_SF_Props_2pc_CW_2_pc…
hobbyking.com/…/__25821__10x4_5_SF_Props_2pc_Stand…
www.rctimer.com/index.php?gOo=goods_details.dwt&go…

вопрос по сохраняемым данным для базы знаний. то что первоначальные значения со стенда сохраняются эт понятно. но они потом индивидуально должны обрабатываться для получения сносных графиков. загрузить их все разом и обработать единым фильтром не получится.
я вот думаю еще пустить в оборот данные вышеприведенного графика. то есть это точки[x,y] с значениями гр\вт и гр. уже сглаженные. в справочной части будет указываться мотор, винт, max ток ну и возможно среднее напряжение.
у меня тут кстати не одинаковый заряд на батарее 2s был. а это тоже важно. при разряде батареи график меняется.

кстати тот самый тест с ростом до 14А (который как бы ближе к истине) был получен так

я тут вижу высокий уровень “подобия”. буду считать что на 2S то же достойны доверия, хоть и подверглись сильной обработке.
PS исходник под LabVIEW все время свежий кидаю. мож кто приложит руку с пользой.

Nesenin

хм. чего то данные по напряжению не оч. точно меряется. при подключении заряженного аккума до 8.3В с проверкой по мультиметру коэффициент пришлось повысить (получается реальное потребление выше ранее намеренного), а последующие подключение 4S потребовало понижение коэффициента! откуда такая не линейность? там ошибка до 150мВ как то многовато.
я тут подзарядил акум 2S чтоб прогнать тесты с более близкими значениями напряжения для 3х винтов. и вот что получилось

сразу видно как понизилась эффективность. частично это из за разных напряжений (7.3В vs 8.3В) а частично изза более точной подгонки коэффициента для замера напряжения . потом винт 1245, судя по диким показаниям на графиках(тут не видно все сильно обработано) вообще срывал синхронизацию. по сему он едва превысил max тягу 10ти дюймового.
о чем это все говорит? что пипец, а не показатели эффективности ВМГ
в зависимости от заряда батареи графики плывут и оч. сильно.
надо будет специально цикл замеров провести с разрядом скажем от 8.4 до 6.6В
подозреваю что на каком то уровне будет наблюдаться максимальный КПД, а при смещении в ± по напряжению будет падать. или вообще максимум будет не в этом диапазоне.

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

встает вопрос: " а как судить то об эффективности и сравнивать ВМГ?"
у нас и стенды\настройки разные и шумы и не линейности. + в зависимости от напряжения графики плывут туда сюда. вверху у меня за 13гр\вт зашкаливает, а теперь ниже 12.

ну и вот допустим у нас rcopen.com/forum/f123/topic218743 тесты всякие. кто то чет намерил из того что у него есть. привел графики гр\вт на грамм. у другого такие же графики для своего моторки винта. и мы должны сравнить и решить что лучше…и деньги потратить в пользу каких то людей.
а оно как получается? считали считали. поставили лучшее по результатом каких то выборочных тестов, а оно не то что б прям супер.
походу надо более детальные исследования проводить. более точные инструменты использовать.
а какие данные в базу добавлять чтоб что то реально можно сравнить по данным полученным от разных людей,я вообще хз. и как теперь доверять чужим тестам, проведенным по нескольким точкам? беда

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

Nesenin

по вопросу напряжения…зарядка imax B6 у меня, судя по имеющимся у меня вольтметрам, не заряжает до 8.4В а только до 8.3 (пишет же что 8.4) печаль. вольтметры у меня тоже не одно и тоже показывают. один другого хуже. в итоге я взял тот что подороже и с помощью регулируемого БП прогнал замеры от 5 до 17В. и подобрал константы в уравнение нахождения напряжения. U=0,01662045009785*X+0,0139, где x - значение с АЦП. если предположить что опорное питающее напряжение стабильно (а это не так см.ниже), то более-менее точно считает.
конструкцию стенда я таки переделал.

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

далее.в ПО я решил таки сохранять 2 типа файлов. 1) эт показания данных со стенда как есть 4 массива значений(сервосигнал,вес,напряжение,ток) столько сколько пришло(по несколько значений для 1 значения сервосигнала). 2) показания после обрезки до 180 значений(последнее для каждого сервосигнала)и после сглаживаний, 3 графика- вес,ток,напряжение и в добавок значения (дополнительно сглаженные) гр\вт . 1) нужны для того что б потом можно было иначе обработать. 2) для сводного сравнения с другими.

и таки я прогнал тесты с постепенным разрядом аккумулятора

на 7.5 цвет белый не видно. на 6.9 забракован (см.ниже)
и как вы думаете выглядят графики гр\вт? как то так:

ну и как, глядя на это, доверять точечным измерениям тут rcopen.com/forum/f123/topic218743 и в других местах?
я отдельно отмечу: повторяемость на одном значении высокая. были проблемы с питанием arduino+обвязка. я от лени запитал через стабилизатор от той же батареи что и двигатель (да я знал что так делать не грамотно) . в итоге на значении 6.9В(с просадкой до 6.5) обнаружилось что график просадки напряжения в конце ползет вверх(!) очевидно это был виноват стабилизатор напряжения. я конечно перекинул на внешний аккум. 3 последних прогона были уже с отдельным питанием. тест для напряжения 6.9в забракован. но вопрос насколько одинаковое и стабильное было напряжение питания логики в первом и втором случае остается открытым. на следующих графиках видно особо сильные не ровности в измерениях в конце.

тут и далее X - напряжение. видно как просаживается под нагрузкой
Y- вес(тяга). видно как падает максимальная с уменьшением заряда
Z- гр\Вт
вид сверху

сбоку

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

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

но это все какой то бред! чес слово.
я полагаю, надо стенд, дооборудовать датчиком момента и оборотов.
а может еще чем то. и измерять отдельно характеристики винтов и отдельно двигателей. я еще не узнавал чего там как делается. по ходу это уже будет ни разу не “народный проект”, но иначе нельзя. все эти точечные замеры полная херня! поэтому всякие “коптеркалькуляторы” и другие “расчеты” раз за разом показывают свою не состоятельность. см. rcopen.com/forum/f123/topic345331
PS исходники свежие лежат тут yadi.sk/d/eEj0iObbHuS9Z

Gapey

ну датчик оборотов делается просто , заводится фаза с мотора и снимаются импульсы… с моментом хуже нужен второй датчик … как вариант взять второй сенсор и развернуть на 90 градусов …
влияние просадок аккума нада убирать , ставить аккум с большим запасом или питать от промышленного блока …
блоки на 13,5 вольт можно накрутить и на 11 и на 15 вольт , что в большинстве случаев достаточно …
а еще много зависит от регуля , его прошивки , настроек …

Nesenin

чет как то не обнадежило меня то что я нашел по запросу “датчик крутящего момента”. не бюджетно. если самому мутить надо некий торсион, некий тензодатчик туда прилепить, запитать через вращающийся трансформатор и снятие данных замутить. последнее конечно не проблема. китайцы наборы для вращающийся электроники для поделок продают, а вот механику делать эт надо иметь оборудование. причем придется это промежуточное звено на станину лепить и уже на отдельный вал цеплять винты\моторку. ну или вообще для каждого свое. для винтов стендовый мотор, держащий заданные обороты, а для тестируемых моторов некая регулируемая нагрузка(другой мотор в режиме генератора с регулируемой нагрузкой на его выходах). хз я как это сделать в железе.
вот тесты новые для увеличения данных.
моторка www.rctimer.com/index.php?gOo=goods_details.dwt&go…
винты
goodluckbuy.com/2-pair-oem-apc-12x3-8-1238-1238r-c…
goodluckbuy.com/fc1447pro-14x4-7pro-counter-rotati…
весят одинаково по 20гр. на 14 мягкие на высоких оборотах мнутся и тягу не охотно увеличивают. на 12 жесткие\прочные, но ВСЕ как 1 имеют осевую разбалансировку аж на 1.8гр груза.
акумы взял 2s и 4S с большей емкостью, чтоб просадка меньше была. особой разницы в тесте не заметил.
вот

зеленый аж на 22А он как бы ближе всего к правде


концы, улетающие тудя-сюда, начинают смущать. надо всеж поправить метод обработки исходных данных.
полагаю с “уплыванием” графиков тут такая же картина должна быть: с уменьшением напряжения увеличение эффективности до некоторых пределов.см. выше данные на 2830 750kv
для сравнения 1 из старых тестов 10"винта на моторке 2830 и на напряжении 8.26В

то есть как бы новый моторка с новыми винтами как бы эффективней в близкой точке напряжения. если предположить что как раньше КПД будет расти с уменьшением заряда, то можно сказать что превосходство есть, но как конкретно без полного прогона не посчитать.
PS АЦП на датчик тока я заказал, но походу он не сильно картину изменит. сглаживание решает.

Gapey
Nesenin:

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

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

Nesenin
Gapey:

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

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

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

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

Gapey

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