Создание собственной системы стабилизации
???
Андрей, в самом начале темы также сказано, что программным будет заниматься другой программер!!! а я “железячник”. Он слился, а мне что оставалось делать, сдаться просто? Так это не по мне, потихоньку изучаю того чего не знаю - ну уж извините, не могу быстрее… да железо переделали, но не клон какой-нибудь платы, а для удобства, пришлось пожертвовать 4 выходами для большего колличества портов (usart, SPI, и т.д.) и она даже не стала удобнее для портирования какого-либо софта чем прежняя версия, учтены недостатки, убрана как уже говорил, верхняя плата…
Где СВОЙ алго? НЕТУ
Ну для начала, я копался и запускал уже 3 различные платформы (ну если не считать родное PX4 - я с ним только на столе баловался, да и ноги у него растут из OpenPilot), вижу их достоинства и недостатки, устаканится железо и если Александр не против, будем потиху делать своё, ибо я один не справлюсь точно - такой ответ устроит?
А вообще, я не должен ни перед кем отчитываться, я это делаю, потому, что мне это нравится, и это лучше чем стоять под магазином или на диване перед зомбоящиком пивцо потягивать - это сугубо моё мнение, может кто-то считает иначе, ну извините…
p.s. обидеть никого не желаю, блин сам просто сегодня уже на коне белом скачу… проблемы житейские…
Публично приношу извинения. Недопонял наверное. Ага?
СВОЙ алго? НЕТУ
Есть, вот сбсна демка под Ф3Дисковери, кому интересно может проверить и сравнить устойчивость горизонта с АПМ и Вием.
Два хекса STD под простую Ф3Дискавери, MPU соответсвенно с MPU6050 в качестве акселя (готовность на PB2, SCL - PB6, SDA - PB7) и полуловская отображалка на питоне. Кому интересно полазить в терминале возьмите putty и переключите на кирилицу CP-1521, управляется стрелками, интерфейс интуитивно понятный )))
Вот видео
у меня вот на gy-86 перестал ms5611 запускаться, вчера через раз стартовал, а сегодня ни как…
выводы FSYNC, INTA, DRDY это пины готовности сенсоров? или какой нить из них нужно повесить на землю или 1-цу?
Могу выложить код по F4BY v0, но кроме SergDoc проверить его некому…
у меня вот на gy-86 перестал ms5611 запускаться, вчера через раз стартовал, а сегодня ни как…
выводы FSYNC, INTA, DRDY это пины готовности сенсоров? или какой нить из них нужно повесить на землю или 1-цу?
не к баро оно не относится, ты llc отключил(выкинул)?
Могу выложить код по F4BY v0, но кроме SergDoc проверить его некому…
я не проверю, пока авторежимы не проверю, чесно, влом, перенастраивать потом арду, он у меня сейчас так красиво настроен, жду может выпадет оказия вылететь срочно 😃
не к баро оно не относится, ты llc отключил(выкинул)?
нет… я думал про это, но решил что если питать от 3в (от дикавери) то уровни будут в норме… не так?
upd: mpu и компас не жалуются Ж вроде
у меня вот на gy-86 перестал ms5611 запускаться, вчера через раз стартовал, а сегодня ни как…
выводы FSYNC, INTA, DRDY это пины готовности сенсоров?
Привет, Александр! Их есть у меня! FSYNC это внешняя синхра МПУ либо выход синхры, INTA это выход запроса обслуживания МПУ, по настройке смотрим сюда www.i2cdevlib.com/devices/mpu6050#registers строчка 0х3а.
DRDY это готовность МС5611, я ей не пользуюсь, так что не подскажу.
НО!!! MS5611 это не обычное и2ц устройство, мне стоило недели жизни. Нужно все операции делать строго по руководству! Стоп в конце ЛЮБОЙ команды обязателен!!!
чесно, влом, перенастраивать потом арду,
Серёг, совершенно не настаиваю! В массе отлёт АПМ куда важнее!
upd2: откатился на периферию V1.0.0 (сегодня пробовал собрать с V1.1.0) и барик запустился, но все равно через 5-10 сек виснет… ща попробую телеметрийный приемник отнести немного, мот он фонит, т.к. на одном шлейфе в пару см на тех же соплях висит 😃
но решил что если питать от 3в (от дикавери) то уровни будут в норме.
питай обязательно от 5В, ибо в дискавери не 3.3В, а 3.0 В, видимо уровни заваливает.
питай обязательно от 5В, ибо в дискавери не 3.3В, а 3.0 В, видимо уровни заваливает.
пробовал… таж фигня… да и потом по даташиту у него Supply voltage 1.8 to 3.6 V
драйвер смотреть надо (то что я не люблю больше всего 😃)… скорее всего там фига…
после запуска работает ровно 5-10 сек и отруб…
после запуска работает ровно 5-10 сек и отруб…
Тут трассировка нужна… Дискавери Ф3 или Ф4?
Давай код драйвера, посмотрим…
Тут трассировка нужна… Дискавери Ф3 или Ф4?
ф4… пока покопаюсь сам, потом если что буду просить 😃
у тебя дока или схемка gy-86 есть?
и как делать трассировку? это тож самое что дебаг? 5-й кейл вроде поддерживает дебаг периферии…
и как делать трассировку? это тож самое что дебаг?
Ну да, отладка! Кейл делает
у тебя дока или схемка gy-86 есть?
Схемы нет, да и не надо. МПУ и МС висят на внешней шине, компас через МПУ, все готовности выедены как есть.
драйвер смотреть надо (то что я не люблю больше всего )… скорее всего там фига…
а 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);
}
Ф4 кстати проще, у Ф3 внутренняя “кухня” и2ц операций.
Вариант - подавай 3.3 и на 5V и на 3.3V
а i2c драйвер сам писал или у меня взял?
твой… самому слабо 😃
Вариант - подавай 3.3 и на 5V и на 3.3V
вроде сперва продержался подольше, потом завис опять, когда уже собрался писать что все гут 😃
надо к ардуине подрубить и убедиться что проблема не в железе или же в нем как раз…
Ну да, отладка! Кейл делает
уже не помню где читал, но отладка именно периферии появилась в 5-й версии… т.е в 4.7 не было вроде…
смотри - 4,5 лапы выбор адреса - на корпусе обе, 2 - i2c/spi - должно питание висеть - проверь если есть чем, я из базефлайта выкидывал все упоминания о BMP085 - у них адреса одинаковые и в драйвере MS5611 как раз и идёт автодетект обоих!!!
i2c драйвер твой не трогал… bmp085 не выкашивал, но не думаю что в этом проблема, т.к. CLI показывает что задетектил ms5611…
тем более если по адресам были бы какие ошибки, то вообще баро не запустился бы думаю, а то запускается и потом молчек… буду дебагать в общем…
доделал новогоднюю моргалку на окно (на ардуине и диодной ленте купленной к коптеру 2 года назад) и вернулся к теме… 😃
кроче дело было не в бобине… в float accAlt переменной интегратора в дебаге увидел значение 1.#QNAN
при чем с этой переменной выполняются только операции умножения, т.е. деление на ноль исключено по идее…
таймкоп зарыл бомбу 😃
static float accAlt = 0.0f;
...
// Integrator - Altitude in cm
accAlt += (vel_acc * 0.5f) * dt + vel * dt; // integrate velocity to get distance (x= a/2 * t^2)
accAlt = accAlt * cfg.baro_cf_alt + (float) BaroAlt *(1.0f - cfg.baro_cf_alt); // complementary filter for Altitude estimation (baro & acc)
EstAlt = accAlt;
vel += vel_acc;
отключил поддержку FPU в настройках проекта, пересобрал, проблема ушла…
в любом случае этот кодярник по расчету высоты буду выкидывать, т.к. есть свои интеграторы 😃
кстати, возможно FPU просто надо тюнить спецом, т.е. сетапить ему параметры правильные?