Страница 1 из 1

Блок GY-521 блок

Добавлено: 11 мар 2024, 20:39
Uriy0206
Здравствуйте . Помогите .Создал пользовательский блок GY-521 акселерометр и гироскоп в FlProg , есть проблема с работой блока. Немогу решить.
Скеч для блока брал из Arduino IDE в примерах есть MPU6050_giro_pitch_roll_yaw
Все работает , разобрался ,читал,видео смотрел по теме. Но одно но, при включении питания (nano )нет показаний.Или что то есть но не то и по одной оси. Показания вывожу на дисплей по 3 осям.Стоит нажать кнопку RESET на nano , становится все окей.

Блок GY-521 блок

Добавлено: 12 мар 2024, 07:11
Naladchik
Uriy0206 писал(а): 11 мар 2024, 20:39 Но одно но, при включении питания (nano )нет показаний. Или что то есть но не то и по одной оси. Показания вывожу на дисплей по 3 осям. Стоит нажать кнопку RESET на nano , становится все окей.
Скорее всего при включении питания гироскоп не успевает полностью проинициализироваться. При сбросе контроллера через reset питание на гироскопе уже есть, тут уже успевает.

Блок GY-521 блок

Добавлено: 12 мар 2024, 07:26
Uriy0206
Спасибо за совет!Простыню убрал. Прошу прощения, первый раз на форуме .(Да ! первый раз за 50 лет на форуме :smile44: ) Подскажите пожалуйста , питание аппаратно подавать с задержкой или програмно можно сделать? Сегодня попробую в ручную сделать задержку .
О результатах отпишусь.

Блок GY-521 блок

Добавлено: 12 мар 2024, 07:37
Naladchik
Uriy0206 писал(а): 12 мар 2024, 07:26 ... или програмно можно сделать ...
Для начала попробовать программно (это же проще). Есть такой участок.

// Initialize MPU6050
while (!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
delay(500);
}

1. Просто добавить времени в delay, т.е. допустим сделать не delay(500) а delay(1000), или
2. поставить дополнительную задержку
// Initialize MPU6050
delay(500);
while (!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
delay(500);
}
Может и поможет, пробуйте.

Блок GY-521 блок

Добавлено: 12 мар 2024, 08:29
Uriy0206
Пока в школу ходил (1класс) , тоже подумал о delay. Спасибо за пример. Я в скечах на 1 уровне.

Блок GY-521 блок

Добавлено: 12 мар 2024, 09:15
rw6cm
Uriy0206 писал(а): 11 мар 2024, 20:39 Скеч для блока брал из Arduino IDE в примерах есть MPU6050_giro_pitch_roll_yaw
В Arduino IDE по деф нет этого примера.
В библиотеке пристегнутой к блоку тоже нет его, и она не работает с этим блоком (выдает ошибку)
Взял библиотеку с гита здесь
Ваш проект грузится и работает сразу, только инфу смотрел не на дисплее а по UART.
delay из секции loop надо полностью убрать. иначе толку не будет.
Его ставят в скетчах в основном для демонстрации конкретного примера, где он не критичен.
В составе большого проекта он посеет много "граблей"
На форуме есть много тем по этому датчику, например здесь есть подборка посмотрите может что то пригодится.

Блок GY-521 блок

Добавлено: 12 мар 2024, 10:20
Uriy0206
1.Пробовал увеличить и вставлять задержку в setup ,до инициализации датчика, после , после калибровки. Возможно опробовал все
варианты.Выставлял до 5000. Результата нет.
1. Пробовал питать через задержку по питанию. Питание на датчик постоянное ,на nano через кнопку.
При первоначальном включении питание идет на датчик, потом подаем питание на nano (кнопка без фиксации ) Результата нет.
Ели при подключенном питании ( nano и датчик ) снять питание с nano , датчик остается с питанием (даже моментально ,кнопка без
фиксации) все начинает работать как надо. Я так понимаю это тот же reset?

Отправлено спустя 5 минут 1 секунду:
Спасибо за совет попробую , отпишусь.
В Arduino IDE пример именно с выводо в UART , открывал и смотрел плоттер , очень понравилось как выводится кривая . Сигнал чистый.
Только из за этого и решил сделать свой блок для своих целей. Только нужны выходы нормальные.

Отправлено спустя 30 минут 23 секунды:
rw6cm писал(а): 12 мар 2024, 09:15 delay из секции loop надо полностью убрать. иначе толку не будет.
пробовал убрал delay , результата нет.

Блок GY-521 блок

Добавлено: 12 мар 2024, 10:24
Uriy0206
rw6cm писал(а): 12 мар 2024, 09:15 В составе большого проекта он посеет много "граблей"
Я тоже задумывался об этом. Выделим датчику отдельный контроллер. Да это черезмерно. Но я думаю надежней. Будет по I2C передовать данные. Вопрос победить загрузку.

Блок GY-521 блок

Добавлено: 12 мар 2024, 13:04
rw6cm
Uriy0206 писал(а): 12 мар 2024, 10:24 Вопрос победить загрузку.
Во первых в вашем блоке был двойной расчет одних и тех же данных (результат был не тот)
А тормоз при загрузки был из за цикла while, (конфликт с дисплеем который тоже сидит на i2c)
ну и с delay в loop надо помнить, если будет мешать значит сделать по другому.
GY521 XYZ полетный контроллер1.flp
библ.
Arduino-MPU6050.zip
П/с Не забываем о включенной калибровке. при вкл 5сек не трогаем датчик находящийся строго горизонтально

Блок GY-521 блок

Добавлено: 12 мар 2024, 13:33
Uriy0206
Спасибо!!! Я уже начал думать о сбросе програмном или аппаратном. Это конечно не выход ,но все же...
Сегодня попробую ,отпишусь

Блок GY-521 блок

Добавлено: 12 мар 2024, 15:07
Uriy0206
УРАААА!!!!! ЗАРАБОТАЛА!!!
rw6cm писал(а): 12 мар 2024, 13:04 GY521 XYZ полетный контроллер1.flp
Весч рабочая, проверенно!!!
СПАСИБО!!! ДОБРЫЕ ЛЮДИ!!!

Блок GY-521 блок

Добавлено: 12 мар 2024, 15:32
Uriy0206
Дуратский вопрос ? Поймите правильно.
Uriy0206 писал(а): 12 мар 2024, 07:26 Прошу прощения, первый раз на форуме .(Да ! первый раз за 50 лет на форуме )
Как то нужно благодорить? Ну там на шоколадку?

Отправлено спустя 20 минут 31 секунду:
Ешё вопрос. Вы ребята опытные подскажите- лучше в плане стабильности и надежности работы для таких вещей отдельный контроллер?
И просто получать данные на пин другого контроллера. Если отвалился то система остается рабочей .(Наверно это черезмеро, но думаю надежней.)

Отправлено спустя 1 минуту 56 секунд:
rw6cm писал(а): 12 мар 2024, 13:04 А тормоз при загрузки был из за цикла while, (конфликт с дисплеем который тоже сидит на i2c)

Адреса разные, почему конфликт. Потому что датчик в мастере?

Блок GY-521 блок

Добавлено: 16 мар 2024, 10:22
rw6cm
Uriy0206 писал(а): 12 мар 2024, 15:32 Адреса разные, почему конфликт
Здесь не в адресации дело. Инициализация датчика и дисплея отнимают очень много процессорного времени.
В одной только функции lcd1.init() пять delay, да и если посмотреть, то почти любое действие с дисплеем по i2c несет в себе delay.
По мне так это самая тормознутая "железка" в любом проекте.
Инициализация MPU6050 (mpu.begin()) тоже очень тяжелый процесс.
И здесь (мое предположение) при вкл пит. запрос состояния процесса инициализации датчика (в цикле while, for, или if) где то не укладывается во времени с дисплеем или чем то еще. Чтобы сказать точно надо проанализировать работу библиотек при старте.
Но этим заниматься нет желания. В данном случае мы не чего не берем с этой функции, в дисплей или куда ни будь, значит гонять ее в цикле нет смысла.

Блок GY-521 блок

Добавлено: 16 мар 2024, 21:24
Uriy0206
Спасибо за обьяснения. Дисплей подключен чисто для наглядности при тестировании.
Но пока работа датчик который Вы правили меня устраивает. Все пока на этапе эксперемента.