MultiWii

devv

Ставлю коптера на пол. Акум не подключен. Только Ардуина от УСБ и приемник.
Гиры по нолям. Но если АСС не ноли то столбики движков будут подниматься не равномерно
после CALIB_ACC столбики поднимаются равномерно

VitaliyRU
kedrikov:

Если ардуина на выходе дает несинхрон то хоть запрограмируся с этими регулями…

Если гирик дает нули, должно быть синхронно. Достаточно чуть качнуть на полу квадрик(ну за шнур там дернуть), будет не синхронно, до новой калибровки гирика. Сегодня еще раз проверю как по факту, но на память так. А Throttle PID attenuation точно 0? с ним мой не кувыркался, но раскачивался если убавлять и добавлять газ. Если я правильно выкурил исходники… Это как бы множитель который увеличивает коэффициенты PID пропорциональна газу.
Хотя у меня все же вертолетный опыт есть, может я его “руками” ловил.
И Вы когда взлетаете правую ручку не дергаете? Если дергать - исправный и настроенный кувыркнется.

kedrikov
VitaliyRU:

И Вы когда взлетаете правую ручку не дергаете?

Не это точно не трогаю за исключением когда пытаюсь компенсировать провал левого заднего двигателя но так летать не реально.

VitaliyRU:

Если гирик дает нули, должно быть синхронно

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

VitaliyRU:

до новой калибровки гирика.

Вот тут я наверно чет я пропустил.Аксель калибровал с этим разобрася все понятно,а вот гирик я так понял он автоматом после включения илиже гиру тоже нужно калибровать??

woddy
woddy:

буду переставлять джаву. спасибо.

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

кто-нибудь пользуется сабжем на ардуине mega 2560 uno? проблем нет? или например на 328 uno?

upd отключение аппаратного ускорения видеокарты помогло

VitaliyRU
kedrikov:

Аксель калибровал с этим разобрася все понятно,а вот гирик я так понял он автоматом после включения илиже гиру тоже нужно калибровать??

Автоматом после включения, но квадрик можно не успеть ровно поставить.
www.multiwii.com/#Gyroscopes_calibration

kedrikov
VitaliyRU:

Автоматом после включения, но квадрик можно не успеть ровно поставить.
www.multiwii.com/#Gyroscopes_calibration

С инглишом туговато а переводчик бред какойто несет,по нашему как это будет 😃 :

Gyroscopes calibration

To calibrate the neutral of gyroscope sensors, you must tilt the yaw stick left, tilt the pitch stick back while having the throttle stick in minimal position.
The multicopter should not move during this stage. However its inclination has no influence.
The status LED will blink to confirm this step.

Accelerometers trim

With the help of your roll and pitch stick you could now trim the ACC mode.
You must first put the throttle stick in maximal position. (obviously with motors disarmed)
full PITCH forward/backward and full ROLL left/right (2 axis possibilities) will trim the level mode according to the neutral angle you want to change.
The status LED will blink to confirm each ticks.

devv

Может кто сможет пояснить про компас что в комплекте платки алл-ин-оне (HMC5883L Triple Axis Magnetometer) ???

Залил в Ардуинку версию 1.9.
Выбрад #define ALLINONE
ориентация в блоке #if defined(ALLINONE) такая:
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = -Y; magADC[PITCH] = X; magADC[YAW] = Z;}

Но все равно в конфе полная фигня. Компас поворачивается совсем не так как я кручу по часовой и против коптер на полу.
Поставил коптер ровно. на рисунке стрелка в N, HEAD около 0.
Поворачиваю коптер на 90гр по часовой стрелке, стрелка развернулась на 180 гр и показывает S, HEAD уже -174
поворачиваю коптер еще на 90 гр по часовой, стрелка между W и S. HEAD показывает -128
поворачиваю коптер еще на 90 гр по часовой, стрелка зашла за W, HEAD показывает -74
доворачиваю коптер до 1 оборота. Стрелка в N, Head около 0.

так у всех ?

VitaliyRU
kedrikov:

С инглишом туговато а переводчик бред какойто несет,по нашему как это будет :


Пока гирик калибруется, на ардуимнке моргает светодиод.

nsk-racer

Не подскажите где в новой версии 1.9 указывать тип платы? А то на mini работает как то неуверенно, а на arduino mega1280 запускается но не видит датчиков =( Может пины другие? Цепляю в меге пин13 питание WMP, земля на GND, пульт 6,5,4,2, ну и SDA SCL

tda2030

nsk-racer, кусочек кода из def.h

#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
#define PROMINI
#endif
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
#define MEGA
#endif

если все правильно понимаю, то тип платы определяется исходя из установленного контроллера. Эмм, подозреваю, что тип контроллера передается IDE.
В самой Ардуине задается в Tools -> Board.
думаю, что ничего страшного не будет, если самостоятельно зададите тип Вашей платы. У меня самопальная promini, все работает ок )

что до датчиков, тут ничего не могу подсказать. Про себя - чтоб корректно работало, собрал преобразователь уровней 5В (ардуина) -> 3.3В (датчики). Проблем с определением не возникало.

А теперь мои вопросы.

исходные данные. Плата promini на Atmega 328p. Конфугурация пепелаца - трикоптер. Радио - 6 канальное ХоббиКинг. Датчики - ITG3205 и bma180 по i2c.
Моторы dt750, регули Mystery 20A blue series (brake - off, timign setup - (22-30)deg, soft start-up - start acceleration, switch freq - 16kHz)

прошивка 1.9

вопросы:
1) не могу заставить работать 6-й канал. 5 задействованы, пашут правильно.
физически 6-й подключен к D12 (до этого была свободна). Правки в коде

/* possibility to use PIN8 or PIN12 as the AUX2 RC input
it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8)

раскомментировал #define RCAUXPIN12

  • в def.h поправил с
    #define AUX2PIN 0 // optional PIN 8 or PIN 12
    на
    #define AUX2PIN 12 // optional PIN 8 or PIN 12

вроде все. Однако в гуи значение на AUX2 = 900 и не меняется. Пробовал на 12 пин подавать данные с других каналов приемника. Никакой реакции. И обратно - 6й канал вместо, к примеру, 5го. 6й физически работает

2). по поводу использования опции trust acc_z. Эмм, смотрю тут на форуме народ чувствительность акселя в данном направлении меняет и полосу пропускания фильтра. И это все для bma020. Никто ничего не пробовал подобного делать с bma180? Просто пока не вникал какие флаги и в какие значения надо выставлять. Надеюсь, можт кто подскажет, если же нет, будем сами курить. И вообще, насколько сильно сказывается включение использования acc_z на поведение коптера? Оно того стоит? 😃

3 со включенным стабмод коптер плывет назад и вправо. До сих пор не могу понять почему. Чтобы избежать дальнейших вопросов:

  • регуляторы на максимальный газ откалиброваны;
  • аксель и гиро откалиброваны;
  • включение питания на максимально возможной горизонтальной поверхности. Задержка калибровки гиры - 2 сек;
  • значения стиков Pitch и Roll совсем рядом с 1500. Прыгают немного, но это аппа виновата;
  • триммирование акселя сильно не помогает, хотя делаю по 15-20 “щелчков” для каждого направления завала
  • вибрации на датчиках в режиме 2/3 от полного газа заметны, но не фатальны;
  • расположение датчиков правильное. Отклонения кривых совпадают, изображение виртуальной модельки повторяет перемещения реальной. Ничего никуда не плывет со временем.

нипонятна почему так. на 1.7 подобного не замечал. Вечером скрин ПИДов выложу )

upd: ах да, тут кто-то еще serial LCDшками интересовался. Глянул на спаркфане - дороговато будет и ждать надо. У меня уже была LCDшка. Стало быть надо платку было сваять serial -> parallel. Если глянуть в ардуиновскую IDE, то там в примерах (Examples -> LiquidCrystal -> SerialDisplay фактически уже есть код для этого преобразователя. Облом в том, что он отображает только одну строчку. Прямо сейчас не могу вспомнить, но дописал буквально пару строчек кода, чтобы LCDшка заработал корректно. Если интересно, попытаюсь найти. Собсно сам код занимает 3кбайта + загрузчик. Так ш на atmega8 пойдет только так, если, конечно, вы не считаете, что для таких нужд использовать мегу8ю вообще транжирство. Зато все можно собрать чуть меньше, чем за вечер. Проверял, работает 😃

VitaliyRU
DemidSPb:

Цитата Сообщение от mahowik Посмотреть сообщение в мультиви “Д” параметр другой… вот пожалуй 2 луШШых ссылки: www.rcgroups.com/forums/showthread.php?t=1375728 www.rcgroups.com/forums/showp...postcount=7460 Вот кто бы адекватный перевел бы это на русский применительно к мультивии…

Перевести не переведу, но покурив код… Обычный там “Д”. Отрицательный был в бородатых версиях типа 1.3 и т.п.
Еще одна особенность. В вии при расчете дифференциальной составляющей(а эта составляющая размерности углового ускорения)учитывается ускорение не за один шаг цикла а усредненное за 3 шага. КМК это сделано по 2 причинам… Хотя зачем на самом деле, я естественно без понятия 😃)
что бы не было деления на переменную(увесистая вещь для проца, да и получится черти что, все расчеты то целочисленные), а усердняя за несколько шагов длительность шага цикла(Cycle time в GUI) можно принять const = деление не нужно. Это будет тоже ускорение, но в безразмерной величине.
И что бы тряска коптера так не влияла, как известно “Д” капризное к вибрациям.
В общем, на мой взгляд, код там как в классическом PID регуляторе, только чуть оптимизированный под конкретную задачу.

nsk-racer

Бросил пока затею с мегой, теперь новая проблема, Регули пищат моторы дрыгаются на месте, на KK контроллере всё нормально работает, в чём дело?

с пульта отдельно через приёмник калибруется и работает

nsk-racer

Опытным путём было выяснено что проблема в регулях, регули Turnigy Trust 45A. Подцепил ради интереса контроллеры турниги плюш 18А, с ними всё нормально работает, а с траст писк и дёрганье, при том что пищит чаще если газ на всю, если минимум реже. В чём дело?

sulaex

попробуйте на апе газ ниже настроить

nsk-racer

Я триммером убавлял газ всё равно, а вот если сделать минтротл ниже 1000, то при включении в полётный режим, моторы не пищат, пока тротл не станет выше 1000, потом как раньше. Пробовал калибровать отключая питание моторов во время полётного режима, потом включал их обратно при полном газе, несколько пытались калиброваться, но только на старой прошивке версии 1.7, на 1.9 вообще никакой реакции нету!

mahowik
VitaliyRU:

Перевести не переведу, но покурив код… Обычный там “Д”

мляяя… вот лень хотябы заснуть в гугл транслейт 😉 почитайте ветку… ни разу он не классик… я тут уже ни раз приводил ссылки на легкое-доступное чтиво про ПИД регули…

VitaliyRU:

И что бы тряска коптера так не влияла, как известно “Д” капризное к вибрациям.

ну не путайте народ не разобравшись… к вибрациям чувствителен “И” параметр… т.к. это интегрирование… суммирование по другому… т.е. если суммировать шум/вибрации в цикле, это приводит к дрейфу системы в произвольном направлении…

VitaliyRU:

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

не совсем так:

  1. для акро мода это PID
  2. в случае левел мода это комплексный PI-PD

www.multiwii.com/forum/viewtopic.php?f=7&t=905&sta… -

pidcontrol.narod.ru - вот оч. понятная статейка про классик ПИД регуль

з.ы. “Д” параметром в мультиви можно регулировать скорость системы в целом… хотите плавности и мягкости, подымайте его до 40-50, но при этом он уменьшает влияние “П” параметра, потому его надо тоже увеличивать пропорционально… мои любимые ПИД-ы для акро 7…9-0.03-40

tda2030

nsk-racer, на каком-то из форумов читал, что регули вообще желательно калибровать, подключив вход к приемнику напрямую. Я именно так и делаю.
но можно еще и через посредника в виде multiwii. Про такое тоже читал, но не пробовал

VitaliyRU
mahowik:

мляяя… вот лень хотябы заснуть в гугл транслейт почитайте ветку… ни разу он не классик… я тут уже ни раз приводил ссылки на легкое-доступное чтиво про ПИД регули…

Видел я эту ссылку. Родная библиотека PID от arduino такая же как и мултивии, к слову говоря, там D вычитается.

mahowik:

ну не путайте народ не разобравшись… к вибрациям чувствителен “И” параметр… т.к. это интегрирование… суммирование по другому…

Вообще-то наоборот 😃.
Вибрация суть гармоническое колебания и сумма за n-ное время даст 0. Но вибрация это плохо и на практике дрейф будет, т.к. интегрирование дискретное и ошибка накопиться.
А D это производная от скорости, там “случайные” значения угловой скорости очень не желательны. Т.к. вот воходные данные для D это угол наклона касательной к той синусоиде от гармонических колебаний. Т.е. в произвольный момент времяни D этот может иметь практически случайные значения.

mahowik:

з.ы. “Д” параметром в мультиви можно регулировать скорость системы в целом… хотите плавности и мягкости, подымайте его до 40-50

С моими пропами с ХС он этого не переживет. Если Д сделать больше 20 - его трясти начинает.

mahowik:

но при этом он уменьшает влияние “П” параметра, потому его надо тоже увеличивать пропорционально…

С этим согласен(полностью разобрался уже позже), с дугой стороны обратного я и не утверждал.

nsk-racer
tda2030:

nsk-racer, на каком-то из форумов читал, что регули вообще желательно калибровать, подключив вход к приемнику напрямую. Я именно так и делаю.
но можно еще и через посредника в виде multiwii. Про такое тоже читал, но не пробовал

я пробовал калибровать споиощью приёмника, калибруется и работает, но подключаю потом их к ардуине и всё привет, пищание

aleksas
nsk-racer:

я пробовал калибровать споиощью приёмника, калибруется и работает, но подключаю потом их к ардуине и всё привет, пищание

Из моей практики: У меня аппаратура 2,4Гц. Откалибровал 4 регулятора через приемник, подрубаю к ардуине все регуляторы пищат. Долго ломали головы с другом, несколько раз калибровал. Результат 0. Потом взяли аппаратуру 40мГц. Подрубил к приемнику, откалибровал, все заработало. В чем дело так и не понял.