Блок GY-521 блок

Блок GY-521 скетч из примера IDE

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#1

Сообщение Uriy0206 » 11.03.2024{, 20:07}

Здравствуйте . Помогите .Создал пользовательский блок GY-521 акселерометр и гироскоп в FlProg , есть проблема с работой блока. Немогу решить.
Скеч для блока брал из Arduino IDE в примерах есть MPU6050_giro_pitch_roll_yaw
Все работает , разобрался ,читал,видео смотрел по теме. Но одно но, при включении питания (nano )нет показаний.Или что то есть но не то и по одной оси. Показания вывожу на дисплей по 3 осям.Стоит нажать кнопку RESET на nano , становится все окей.
Вложения
GY521 XYZ полетный контроллер.flp
(1.78 МБ) 11 скачиваний
pr40.ino
(3.99 КБ) 5 скачиваний
Последний раз редактировалось Uriy0206 12.03.2024{, 07:20}, всего редактировалось 1 раз.

Naladchik
Капитан
Сообщения: 824
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

Блок GY-521 блок

#2

Сообщение Naladchik » 12.03.2024{, 07:11}

Uriy0206 писал(а):
11.03.2024{, 20:39}
Но одно но, при включении питания (nano )нет показаний. Или что то есть но не то и по одной оси. Показания вывожу на дисплей по 3 осям. Стоит нажать кнопку RESET на nano , становится все окей.
Скорее всего при включении питания гироскоп не успевает полностью проинициализироваться. При сбросе контроллера через reset питание на гироскопе уже есть, тут уже успевает.
Последний раз редактировалось Naladchik 12.03.2024{, 07:31}, всего редактировалось 1 раз.
Win10-64. FLProg Portable.
Изображение

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#3

Сообщение Uriy0206 » 12.03.2024{, 07:26}

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

Naladchik
Капитан
Сообщения: 824
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

Блок GY-521 блок

#4

Сообщение Naladchik » 12.03.2024{, 07:37}

Uriy0206 писал(а):
12.03.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);
}
Может и поможет, пробуйте.
Win10-64. FLProg Portable.
Изображение

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#5

Сообщение Uriy0206 » 12.03.2024{, 08:29}

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

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Блок GY-521 блок

#6

Сообщение rw6cm » 12.03.2024{, 09:15}

Uriy0206 писал(а):
11.03.2024{, 20:39}
Скеч для блока брал из Arduino IDE в примерах есть MPU6050_giro_pitch_roll_yaw
В Arduino IDE по деф нет этого примера.
В библиотеке пристегнутой к блоку тоже нет его, и она не работает с этим блоком (выдает ошибку)
Взял библиотеку с гита здесь
Ваш проект грузится и работает сразу, только инфу смотрел не на дисплее а по UART.
delay из секции loop надо полностью убрать. иначе толку не будет.
Его ставят в скетчах в основном для демонстрации конкретного примера, где он не критичен.
В составе большого проекта он посеет много "граблей"
На форуме есть много тем по этому датчику, например здесь есть подборка посмотрите может что то пригодится.
Win10-64, FLProg (portable)

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#7

Сообщение Uriy0206 » 12.03.2024{, 09:44}

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

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

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

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#8

Сообщение Uriy0206 » 12.03.2024{, 10:24}

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

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Блок GY-521 блок

#9

Сообщение rw6cm » 12.03.2024{, 13:04}

Uriy0206 писал(а):
12.03.2024{, 10:24}
Вопрос победить загрузку.
Во первых в вашем блоке был двойной расчет одних и тех же данных (результат был не тот)
А тормоз при загрузки был из за цикла while, (конфликт с дисплеем который тоже сидит на i2c)
ну и с delay в loop надо помнить, если будет мешать значит сделать по другому.
GY521 XYZ полетный контроллер1.flp
(157.55 КБ) 25 скачиваний
библ.
Arduino-MPU6050.zip
(27.26 КБ) 12 скачиваний
П/с Не забываем о включенной калибровке. при вкл 5сек не трогаем датчик находящийся строго горизонтально
Win10-64, FLProg (portable)

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#10

Сообщение Uriy0206 » 12.03.2024{, 13:33}

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

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#11

Сообщение Uriy0206 » 12.03.2024{, 15:07}

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

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#12

Сообщение Uriy0206 » 12.03.2024{, 15:10}

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

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

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

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

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Блок GY-521 блок

#13

Сообщение rw6cm » 16.03.2024{, 10:22}

Uriy0206 писал(а):
12.03.2024{, 15:32}
Адреса разные, почему конфликт
Здесь не в адресации дело. Инициализация датчика и дисплея отнимают очень много процессорного времени.
В одной только функции lcd1.init() пять delay, да и если посмотреть, то почти любое действие с дисплеем по i2c несет в себе delay.
По мне так это самая тормознутая "железка" в любом проекте.
Инициализация MPU6050 (mpu.begin()) тоже очень тяжелый процесс.
И здесь (мое предположение) при вкл пит. запрос состояния процесса инициализации датчика (в цикле while, for, или if) где то не укладывается во времени с дисплеем или чем то еще. Чтобы сказать точно надо проанализировать работу библиотек при старте.
Но этим заниматься нет желания. В данном случае мы не чего не берем с этой функции, в дисплей или куда ни будь, значит гонять ее в цикле нет смысла.
Win10-64, FLProg (portable)

Uriy0206
Рядовой
Сообщения: 10
Зарегистрирован: 11.03.2024{, 16:51}
Репутация: 0
Имя: Юрий

Блок GY-521 блок

#14

Сообщение Uriy0206 » 16.03.2024{, 21:24}

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

Ответить

Вернуться в «Разработка пользовательских блоков»