Создание собственной системы стабилизации
СВОЙ алго? НЕТУ
Есть, вот сбсна демка под Ф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 просто надо тюнить спецом, т.е. сетапить ему параметры правильные?
кстати, возможно FPU просто надо тюнить спецом, т.е. сетапить ему параметры правильные?
А ты чем собираешь проект ?
отключил поддержку FPU
У Таймкопа нет FPU 😃