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

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, но как это сделать на Ардуине?

evgen42
IDDQDesnik:

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

Предлагаемое решение не использует стандартную библиотеку servo.h, посмотрите как сделал Никита, он использовал библиотеку pwmservo
Я тоже попробовал с ней, в принципе на регуляторе калиброванном на диапазон pwm 900-2100, большего не смог добиться с помощью сервотестера, библиотека крутит начиная с 33 и до 160. Что более чем достаточно для построения разного рода графиков.

IDDQDesnik:

Там рекомендуется установить некий параметр в 1, но как это сделать на Ардуине?

А вы пробовали традиционным способом регуль калибровать, написано же что проблемы могут быть при калибровке ?

IDDQDesnik

Кажется понял, где засада. 12 пин не умеет pwm.

А как калибровать без аппы?
Сработает ли скетч эмулирующий следующую последовательность? Или лучше не лезть?

Подключите один из ваших регуляторов ESC трехпроводным кабелей в  канал газа радиоприемника приемника. (Это, как правило 3-й канал.)
Включите аппаратуру и установите ручку газа в максимум (полностью вверх).Подключите аккумуляторную батарею LiPo
Вы услышите музыкальный тон, затем два звуковых сигнала.
После двух звуковых сигналов, опустите ручку газа полностью вниз.
Вы услышите несколько гудков (количество гудков соответствует количеству ячейк батарейки, которую вы используете)         и один длинный сигнал, указывающий конечные точки были установлены и ESC откалибровался.
Отключите аккумулятор и повторите эти действия для всех регуляторах ESC.
Если окажется, что регуляторы скоростей не калибруются то  возможно , канал газа находиться в инверсии (смотрите настройки  аппаратуры) и его необходимо настроить (влючить или выключить инверсию).
Если все же возникают проблемы после попытки калибровки  (например, регулятор по прежнему издает непрерывно звуковой сигнал)  попробуйте уменьшить ваш триммер газа на 50%.
Nesenin

так ведь стандартная процедура калибровки регулятора: подаем на выключенный регулятор максимальный сервосигнал, включаем регулятор, он подает определённые звуки , уменьшаем сигнал на минимум, регулятор запоминает диапазон. у меня регулятор RCtimer 30А нормально воспринимает диапазон 0-180 , а ZTW Spider 20А 0-160.

12 days later
evgen42
Nesenin:

тут они yadi.sk/d/_SCP7BogbpLRA

Добрый день, не могли бы вы выложить сырые данные с вашего стенда, вместе с servo уровнем, вы используете внешнее управление и не понятно пока по какому принципу, толи при стабилизациио боротов переключаете толи по времени, смотреть на vi файл не предлагать 😃 Т.к. фильтрация у всех может быть разная хотелось бы понять до какого уровня имеет смысл убирать вибрации с тензо датчика, играться с параметрами rc фильтра для датчика тока и делителя напряжения если вы их используете. Напряжение в вашем бп все равно как видно проседает поэтому думаю что он не идеален, использовал бп от питания диодной ленты 12в - легко получить просад в 1в при 10А.
Пока не могу собрать адекватные данные с тензо датчика - на определенных оборотах появляются вибрации не связанные с балансировкой винта на магнтном подвесе, т.е. эффект бабочки. Использовал следующую стратегию - добавляем 1 к значению servo сигнала, если начать собирать данные сразу то будем иметь плавно увеличивающиеся обороты тягу и остальные характеристики в течении некоторого времени разгона винта, т.е. переходные процессы, чтобы их не мерить, сразу после подачи нового значения на серво канал использовал delay(1000). Далее собираю 500 показателей всех датчиков в цикле, времени уходит много минут 5 на прогон. На сырых данных тензо датчика видны различимые ступени с ровными шумными горизонтальными полками, однако это не помогает при больших оборотах. Использовал демпфера на тензодатчике улучшений нет. Полки не ровные а кривые с кривизной больше уровня шумов, фильтровать такие данные считаю неверным, результаты будут не повторяемые.
Тоже есть проблемы с ecs758 и 10 битным ацп, фильтр 10nf+50кОм помогает но бывает что при увеличинии servo сигнала ток падает. Также у меня вопрос если не потреблять ток датчик выдает 0.6в 125 на ардуине использую 100U версию, понимаю что у все направленных датчиков есть оффсет коло 500 но почему у меня оффсет 125 не пойму. Проверил все датчики которые есть у меня все выдают 0.6в. Фильтр 0.1nf поставил далеко не возле датчика а уже на макетной плате после 10см провода, может это влиять?

Nesenin

evgen42 мало что я понял из написаного… данные завтра размещу. вот видео есть

youtu.be/ORiREhZC_kg

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

в расчетах физических величин надо привязываться не к теоретическим описаниям датчиков, а к реальным показаниям. там линейная функция. нужны 2 точки из рабочего диапозона. по ним рассчитывается коэфициент и смещение. у меня в ПО смещение нулей некоторых величин оперативно правится руками, так как они “плывут” изза всяких причин вроде нагрева датчиков .

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

evgen42
Nesenin:

потом сглаживаю их

Спасибо за видео. Проясняет многое. Все таки открыл ваш проект labview и увидел как же магическим образом графики становится таким гладким. Б-сплайны да понятно теперь, что скользящие окна ничего мне не давали. Я уж думал что у вас fft используются с вырезанием частотной области, а оказалось метод наименьших квадратов и б-сплайн как и написано в википедии это хороший вариант.
Из бесплатного простого софта сразу не нашел чтобы на своих данных проверить.

Читал про ваши винты правого и левого вращения, хотел попробовать, но пока нет б-сплайнов сравнивать 2 графика не представляется возможным.

7 days later
28 days later
jekmv

вот такая штука на ХК появилась, не нашел ее обсуждения что то
как думаете, стоит брать? или самому с нуля собирать?

Nesenin
jekmv:

вот такая штука на ХК появилась, не нашел ее обсуждения что то
как думаете, стоит брать? или самому с нуля собирать?

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

jekmv

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

Nesenin
jekmv:

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

да, но это всего навсего весы…какие еще результаты можно сравнивать? кстати. с нынешним курсом >2500р за возможность измерять тягу эт как то …

3 months later
Arkady68

Друзья, кто нибудь сравнивал эффективность разбиения одного мотора на два? Дело в том что квадрокоптер по сути своей система без запаса и при выходе из строя одного мотора (винта) падает. Значит более эффективно использовать трикоптер, все равно упадет, а железа меньше. Но трикоптер требует серво, поэтому заманчивей использовать Y6 (три луча по два мотора). С точки зрения надежности это уже гекса, при выходе из строя одного мотора есть шанс посадить аппарат. Потому вопрос: сравнение эффективнсти 3 и 6 моторов одной суммарной мощности, и для разнообразия 4 и 6 моторов одной суммароной мощности…

2 months later
Dikoy

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

www.youtube.com/watch?v=4Z6daMm8umg

(я использовал 220 мкГн + 1,5к нагрузки), затем вычистив сигнал RC цепью и компаратором (на моём видео сигналы без фильтрации), либо дискретным датчиком холла.
Остаётся ввести в систему число магнитов конкретного мотора.

Если будете пользовать катушку, ищите минимального размера, не шире магнита, иначе будет эхо в сигнале.

Подскажите, из чего и как считается гр/Вт.
Ну Вт понятно, IU 😃 А вот что за гр?..

GrafSher
Dikoy:

Если будете пользовать катушку, ищите минимального размера, не шире магнита, иначе будет эхо в сигнале.

… идеальный вариант: магнитная головка от магнитофона.