Создание собственной системы стабилизации

SergDoc

Ну, чувствую, что новый GPS-ГЛОНАСС модуль будет ещё не скоро, я всё что было вкинул в новую версию контроллера, вообще больше по той же причине выносил и GPS, дабы потом его без проблем подключить к новой плате, верхней платы уже не будет, всё на одной кроме GPS, всё: разъёмы, MicroSD, переехали на основную плату, GPS может подключатся как один, так и с дополнительным внешним компасом…

Drinker

Сергей. Не в обиду будет сказано. Но какие цели Ваш проект преследует? Вы идете позади “портируемых” разработок. Не понимая что имелось ввиду (реверс инжиниринг). Разбор чужого кода. Повторяю вопрос - где собственная?

rual
Drinker:

Сергей. Не в обиду будет сказано. Но какие цели Ваш проект преследует?

Ничего что я своё виденье этого скажу? Кто сказал что собственная система это ПО? Разработка “идеального” (на текущий момент) железа не заслуживает звание “собственная”?

Drinker:

Вы идете позади “портируемых” разработок.

Что значит позади? Предполагается что развитие стабов идет строго по одной линии? Мне ж видится что процесс весьма многомереный, так как есть такие измерения как: ПО ( ртос,алгоритмы ИНС), проц, датчики, доп. аппаратура (количество входов\выходов, управление БАНО и прочими фенечками), цена и доступность. Так и где серёгина плата “позади”? Проц на уровне лучших стабов, датчики на уровне, обвязка ЛУЧШАЯ для такого “форм-фактора”, ПО - последний АПМ. О цене и доступности не говорим, ибо в продаже нет, надеюсь ПОКА нет.
Так где позади? Скорей сбоку и чуть впереди )))

Drinker
SergDoc:

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

???

rual
Drinker:

???

Всё движется, всё меняется… Много чего не получается. В ветке вроде есть пояснения.

Андрей, скажи, какие датчики в твоём ирИсе стоят?

Drinker
rual:

Что значит позади?

Руал, при всём уважении, но чего нового в копании в чужом коде, добиваясь чтобы созданный тот код заработал на не тех и не так расположенных датчиках? Где СВОЙ алго? НЕТУ

SergDoc
Drinker:

???

Андрей, в самом начале темы также сказано, что программным будет заниматься другой программер!!! а я “железячник”. Он слился, а мне что оставалось делать, сдаться просто? Так это не по мне, потихоньку изучаю того чего не знаю - ну уж извините, не могу быстрее… да железо переделали, но не клон какой-нибудь платы, а для удобства, пришлось пожертвовать 4 выходами для большего колличества портов (usart, SPI, и т.д.) и она даже не стала удобнее для портирования какого-либо софта чем прежняя версия, учтены недостатки, убрана как уже говорил, верхняя плата…

Drinker:

Где СВОЙ алго? НЕТУ

Ну для начала, я копался и запускал уже 3 различные платформы (ну если не считать родное PX4 - я с ним только на столе баловался, да и ноги у него растут из OpenPilot), вижу их достоинства и недостатки, устаканится железо и если Александр не против, будем потиху делать своё, ибо я один не справлюсь точно - такой ответ устроит?

А вообще, я не должен ни перед кем отчитываться, я это делаю, потому, что мне это нравится, и это лучше чем стоять под магазином или на диване перед зомбоящиком пивцо потягивать - это сугубо моё мнение, может кто-то считает иначе, ну извините…

p.s. обидеть никого не желаю, блин сам просто сегодня уже на коне белом скачу… проблемы житейские…

Drinker

Публично приношу извинения. Недопонял наверное. Ага?

rual
Drinker:

СВОЙ алго? НЕТУ

Есть, вот сбсна демка под Ф3Дисковери, кому интересно может проверить и сравнить устойчивость горизонта с АПМ и Вием.
Два хекса STD под простую Ф3Дискавери, MPU соответсвенно с MPU6050 в качестве акселя (готовность на PB2, SCL - PB6, SDA - PB7) и полуловская отображалка на питоне. Кому интересно полазить в терминале возьмите putty и переключите на кирилицу CP-1521, управляется стрелками, интерфейс интуитивно понятный )))

Вот видео

RusINS11F3.rar

mahowik

у меня вот на gy-86 перестал ms5611 запускаться, вчера через раз стартовал, а сегодня ни как…
выводы FSYNC, INTA, DRDY это пины готовности сенсоров? или какой нить из них нужно повесить на землю или 1-цу?

rual

Могу выложить код по F4BY v0, но кроме SergDoc проверить его некому…

SergDoc
mahowik:

у меня вот на gy-86 перестал ms5611 запускаться, вчера через раз стартовал, а сегодня ни как…
выводы FSYNC, INTA, DRDY это пины готовности сенсоров? или какой нить из них нужно повесить на землю или 1-цу?

не к баро оно не относится, ты llc отключил(выкинул)?

rual:

Могу выложить код по F4BY v0, но кроме SergDoc проверить его некому…

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

mahowik
SergDoc:

не к баро оно не относится, ты llc отключил(выкинул)?

нет… я думал про это, но решил что если питать от 3в (от дикавери) то уровни будут в норме… не так?

upd: mpu и компас не жалуются Ж вроде

rual
mahowik:

у меня вот на gy-86 перестал ms5611 запускаться, вчера через раз стартовал, а сегодня ни как…
выводы FSYNC, INTA, DRDY это пины готовности сенсоров?

Привет, Александр! Их есть у меня! FSYNC это внешняя синхра МПУ либо выход синхры, INTA это выход запроса обслуживания МПУ, по настройке смотрим сюда www.i2cdevlib.com/devices/mpu6050#registers строчка 0х3а.
DRDY это готовность МС5611, я ей не пользуюсь, так что не подскажу.
НО!!! MS5611 это не обычное и2ц устройство, мне стоило недели жизни. Нужно все операции делать строго по руководству! Стоп в конце ЛЮБОЙ команды обязателен!!!

SergDoc:

чесно, влом, перенастраивать потом арду,

Серёг, совершенно не настаиваю! В массе отлёт АПМ куда важнее!

mahowik

upd2: откатился на периферию V1.0.0 (сегодня пробовал собрать с V1.1.0) и барик запустился, но все равно через 5-10 сек виснет… ща попробую телеметрийный приемник отнести немного, мот он фонит, т.к. на одном шлейфе в пару см на тех же соплях висит 😃

rual
mahowik:

но решил что если питать от 3в (от дикавери) то уровни будут в норме.

питай обязательно от 5В, ибо в дискавери не 3.3В, а 3.0 В, видимо уровни заваливает.

mahowik
rual:

питай обязательно от 5В, ибо в дискавери не 3.3В, а 3.0 В, видимо уровни заваливает.

пробовал… таж фигня… да и потом по даташиту у него Supply voltage 1.8 to 3.6 V
драйвер смотреть надо (то что я не люблю больше всего 😃)… скорее всего там фига…
после запуска работает ровно 5-10 сек и отруб…

rual
mahowik:

после запуска работает ровно 5-10 сек и отруб…

Тут трассировка нужна… Дискавери Ф3 или Ф4?

Давай код драйвера, посмотрим…

mahowik
rual:

Тут трассировка нужна… Дискавери Ф3 или Ф4?

ф4… пока покопаюсь сам, потом если что буду просить 😃
у тебя дока или схемка gy-86 есть?

и как делать трассировку? это тож самое что дебаг? 5-й кейл вроде поддерживает дебаг периферии…

rual
mahowik:

и как делать трассировку? это тож самое что дебаг?

Ну да, отладка! Кейл делает

mahowik:

у тебя дока или схемка gy-86 есть?

Схемы нет, да и не надо. МПУ и МС висят на внешней шине, компас через МПУ, все готовности выедены как есть.

SergDoc
mahowik:

драйвер смотреть надо (то что я не люблю больше всего )… скорее всего там фига…

а i2c драйвер сам писал или у меня взял? там хитрость одна в настройке портов есть, правильно работает только так, а не как в базефлайте:

void i2cUnstick(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    uint8_t i;


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
                //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);


    GPIO_SetBits(GPIOB, GPIO_Pin_10 | GPIO_Pin_11);
    for (i = 0; i < 8; i++) {
        // Wait for any clock stretching to finish
        while (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10))
            delayMicroseconds(10);


        // Pull low
        GPIO_ResetBits(GPIOB, GPIO_Pin_10); //Set bus low
        delayMicroseconds(10);
        // Release high again
        GPIO_SetBits(GPIOB, GPIO_Pin_10); //Set bus high
        delayMicroseconds(10);
    }


    // Generate a start then stop condition
    // SCL  PB10
    // SDA  PB11


    GPIO_ResetBits(GPIOB, GPIO_Pin_11); // Set bus data low
    delayMicroseconds(10);
    GPIO_ResetBits(GPIOB, GPIO_Pin_10); // Set bus scl low
    delayMicroseconds(10);
    GPIO_SetBits(GPIOB, GPIO_Pin_10); // Set bus scl high
    delayMicroseconds(10);
    GPIO_SetBits(GPIOB, GPIO_Pin_11); // Set bus sda high


    // Init pins
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
                GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
}