MultiWii

mahowik
SovGVD:

пришел пульт: все стики кроме throttle отрабатывают почти идеальные RAW значения 1000-2000, а вот газ чето от 1100 до 1880 примерно - это нормально или перемапить придется в прошивке? и чето как то значения не идеально стоят, а ±10, хотя в прошивке потом сглаживается такое поведение немного… после идеально цифрового кода - немного настораживает =)

Syberian:

Если кто-то хочет поправить это безобразие, сделайте так:
В конце проедуры configure receiver дописать:

TCCR4A =0; //standard mode with overflow no ints
TCCR4B = (1<<CS11); //Prescaler set to 8, that give us a resolution of 0.5us, read page 134 of data sheet

Ниже по тексту найти
cTime = micros(); // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
и заменить на
cTime = TCNT4>>1; // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits

применил этот патч, в итоге rear left перестал выдавать ШИМ (6-й PWM пин ардуины на atmega1280). Пробовал ипользовать 7-й, 8-й пины…тотже результат…
При чем патч применил давно и забыл, а тут уже с движками начал играться и начались танцы с бубном… уж было подумал что пины попалил, т.к. 2,3,5-й PWM работали отлично и с патчем… Убрал патч все заработало…

вот код… возможно я не так пропатчил

// Configure each rc pin for PCINT
void configureReceiver() {
  #ifndef SERIAL_SUM_PPM
    for (uint8_t chan = 0; chan < 8; chan++)
      for (uint8_t a = 0; a < 4; a++)
        rcData4Values[chan][a] = 1500; //we initiate the default value of each channel. If there is no RC receiver connected, we will see those values
    #if defined(PROMINI)
      // PCINT activated only for specific pin inside [D0-D7]  , [D2 D4 D5 D6 D7] for this multicopter
      PORTD   = (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7); //enable internal pull ups on the PINs of PORTD (no high impedence PINs)
      PCMSK2 |= (1<<2) | (1<<4) | (1<<5) | (1<<6) | (1<<7);
      PCICR   = 1<<2; // PCINT activated only for the port dealing with [D0-D7] PINs
    #endif
    #if defined(MEGA)
      // PCINT activated only for specific pin inside [A8-A15]
      DDRK = 0;  // defined PORTK as a digital port ([A8-A15] are consired as digital PINs and not analogical)
      PORTK   = (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7); //enable internal pull ups on the PINs of PORTK
      PCMSK2 |= (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7);
      PCICR   = 1<<2; // PCINT activated only for PORTK dealing with [A8-A15] PINs
    #endif
  #else
    PPM_PIN_INTERRUPT
  #endif

  TCCR4A =0; //standard mode with overflow no ints
  TCCR4B = (1<<CS11); //Prescaler set to 8, that give us a resolution of 0.5us, read page 134 of data sheet
}

#ifndef SERIAL_SUM_PPM
ISR(PCINT2_vect) { //this ISR is common to every receiver channel, it is call everytime a change state occurs on a digital pin [D2-D7]
  uint8_t mask;
  uint8_t pin;
  uint16_t cTime,dTime;
  static uint16_t edgeTime[8];
  static uint8_t PCintLast;

  #if defined(PROMINI)
    pin = PIND;             // PIND indicates the state of each PIN for the arduino port dealing with [D0-D7] digital pins (8 bits variable)
  #endif
  #if defined(MEGA)
    pin = PINK;             // PINK indicates the state of each PIN for the arduino port dealing with [A8-A15] digital pins (8 bits variable)
  #endif
  mask = pin ^ PCintLast;   // doing a ^ between the current interruption and the last one indicates wich pin changed
  sei();                    // re enable other interrupts at this point, the rest of this interrupt is not so time critical and can be interrupted safely
  PCintLast = pin;          // we memorize the current state of all PINs [D0-D7]

  //cTime = micros();         // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
  cTime = TCNT4>>1;         // micros() return a uint32_t, but it is not usefull to keep the whole bits => we keep only 16 bits
zvuk_Irkutsk

Наткнулся тут на просторах тырнета.
После просмотра пять раз пересматривал, думаю здесь ссылку дать уместно будет? Издевательство просто! Над коптером! Но так круто!

После такого видео хочется завести себе такого-вот зверька с FreeFlight IMU

Covax

ну тут гира img3200 и bma180 участвуют, так что можно и без ff imu так полетать 😃

mahowik

кто нить пробовал этот патч или все дружно сказали спасиба и забыли?! 😃

Alex27111972

Во парнягу прет, опять новую доску все в одном намутил… ну блин многостаночник…

Covax

да, работает парень! накосячил интересно с магнетометром опять или нет?

Alex27111972
Covax:

накосячил интересно с магнетометром

Да может Олегу просто бракованный чип попался… кондеры на новой плате другие… он предлагал Олегу на РЦГрупс выпаять кондеры, ориентация судя по картинке осталась тажа, кстати нужно у Олега спросить, косяк проявляется на обоих платах (он вроде пару брал), я свою еще не подключал, со временем косяк, все хочу сам намутить аллинван “колхоз эдишн”, в пятницу должны приехать преобразователи уровня, если приедут в выходные паять начну…

Musgravehill
Covax:

накосячил

На viacopter тоже сливаются по низкой цене FFIMU отбракованные, которые не прошли тест магнетометра…
Надо его отдельно ото всех, в благоприятном месте монтажить.

Wishnu
Musgravehill:

На viacopter тоже сливаются по низкой цене FFIMU отбракованные, которые не прошли тест магнетометра…
Надо его отдельно ото всех, в благоприятном месте монтажить.

они каждую плату проверяют чтоли?

Musgravehill
Wishnu:

каждую плату

Похоже на то. Тем более, магазин молодой. Репутацию нужно заработать, а потерять - проще простого.

SovGVD
mahowik:

кто нить пробовал этот патч или все дружно сказали спасиба и забыли?!

сказали спасибо и забыли =) на самом деле я пробовал, но в другом варианте, когда системка 2х ядерная была… работало намного точнее чем стандартный вариант

tusik
mahowik:

кто нить пробовал этот патч

Я пробывал на летающем крыле. Разницы в работе серв не заметил.

Саша_пилот

Получил платку ALLINON решил проверить как работает.

когда аксель в прошивке закоментирован, все работает хорошо, цикл 1700.

как только раскоментирую аксель ВМА180, сразу цикл переходит в -29000 , и естественно на шевеления плата не реагирует!

В чем проблема? подскажите? (может в прошивке чтото править еще надо?)

www.youtube.com/watch?v=Hgl5Wt-rFpE

п.с. еще заметил что когда аксель раскоментирован и выключена апа, в ГУИ цикл меняется на 3000 , гирик отрабатывает, но аксель стоит на месте, включаю апу и цикл становится -29000 и гирик не реагирует.

tusik
Саша_пилот:

когда аксель в прошивке закоментирован, все работает хорошо, цикл 1700.

У меня такое было, когда выставлял скорость и2с 400. Правда это было на вии с нунчаком. При понижении скорости до 250 все заработало.

Саша_пилот

стоит это #define I2C_SPEED 100000L //100kHz normal mode, this value must be used for a genuine WMP

ставил 400, все тоже самое, работает гирик тока если закоментирован аксель

Morpheus
HATUUL:

Кста.А сами луичи надо заземлять на общий минус?как никак статика от трения винтов с восдухом хорошо заряжает.В вертолётах заземляют,правда там там ремень с бумом динамят.

Лучше не делать этого. В случае короткого в обмотке статора у вас что-то случиться с коптером…
У вертолета на хвостовой балке нет электроники, поэтому там допустимо.
Как вариант - “заземлите” лучи через емкостя (можно параллельно резистор с большим сопротивлением) на минус.
От статики (а Вы хоть раз регистрировали её присутствие достаточной силы) спасёт.

Syberian
Саша_пилот:

только раскоментирую аксель

Адрес акселя 0х80 замени на 0х82 в 5 местах

mahowik:

вот код… возможно я не так пропатчил

Кто ж знал, что analogWrite использует все доступные таймеры! Поменяй в выделенных местах 4 на 5…

HATUUL
Morpheus:

можно параллельно резистор

Ну это само собой,Лучи соединены друг с другом 1Момными резисторами через минус системы.

Morpheus:

От статики (а Вы хоть раз регистрировали её присутствие достаточной силы) спасёт.

Нет. Интересно узнать,как это сделать?

Alex27111972:

опять новую доску все в одном намутил.

походу ЖПС 5Гц ,плохо.

Саша_пилот
Syberian:

Адрес акселя 0х80 замени на 0х82 в 5 местах

а шину оставить 100kHz или поставить 400kHz ?

п.с. что в нормальных датчиках хорошо, они заводятся с первого раза, вии+ мог с 3-7 раза только стартонуть.
платка аллинон, такого размера что я ее чуть не потерял, пока паял.

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