Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков.

 
Опции темы
Непрочитано 22.01.2016, 01:37  
avgust75
Прописка
 
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
avgust75 на пути к лучшему
По умолчанию Посох деда Мороза на GU-521(MPU6050)

Сделал посох из RBG лент на Новый год. Детишки были в восторге!
Теперь хотелось-бы усовершенствовать. Два режима:
-мигать (реализуется без проблем)
-менять цвет при наклоне (оказалось не так все просто для меня)
Подключил PIC16F628A к GY-521, на ASM написал программу инициализации и считывания регистров (старших разрядов) аксельрометра по трем осям.
Далее (видимо здесь я ошибся) в каждом цикле считывания (~200Hz) находил большее значение из трех осей и включал соответствующие цвета на ленте. Все работает (меняет цвета при наклонах посоха), но не понимаю как?
Хотел-бы получить ответ знающих на следующий вопрос (не берем во внимание динамические составляющие при перемещении, только статика):
- как узнать из регистров (алгоритм их обработки) по каким осям наклонен посох (цель: высветить разными цветами наклон посоха от вертикали вниз и (вперед, назад, влево, вправо).
Реклама:
avgust75 вне форума  
Непрочитано 22.01.2016, 14:57  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

GY-521 - на основе MPU6050, а значит, читаем доки по ней -
https://www.cdiweb.com/datasheets/in...eet_V3%204.pdf
http://www6.in.tum.de/pub/Main/Teach...-MPU-6000A.pdf
Поворот по осям узнается по регистрам гироскопа, ориентация в пространстве - по регистрам акселерометра, направление вектора g.

Сообщение от avgust75 Посмотреть сообщение
(видимо здесь я ошибся)
самую малость почти не ошибся, ну разве что получил не совсем то, что задумывал, хоть и работает.
Регистры акселерометра считывать можно гораздо-гораздо реже, только для определения первоначальной ориентации и для корректировки через какие-то промежутки времени. А вращение определять по данным гироскопа.
В стационарном положении акселерометр будет показывать направление вектора g, а при линейный перемещениях - направление суммарного вектора ускорения, в который уже включен вектор g.
Конечно, если перемещать не быстро, и если не шибко то важна точная ориентация, то можно полагаться только на направление вектора ускорения, считая его приблизительно направленным вниз, а начальный угол можно получить, вычисляя тангенс значений ускорения по трем осям.
Для полноценной ориентации по азимуту, когда одна из осей строго вертикальна, нужен еще и компАс, а это уже MPU9250

Последний раз редактировалось NewWriter; 22.01.2016 в 17:15.
NewWriter вне форума  
Непрочитано 22.01.2016, 20:28  
avgust75
Прописка
 
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
avgust75 на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

Спасибо. Но хотелось-бы получить более простой ответ: какая последовательность действий с регистрами, если посох наклонен вперед и находится в этом состоянии. Можно ли в этот момент определить однозначно его состояние наклона (не очень понятны величины +-, где они и как отличить, если посох наклонен назад). Или из этого положения это не определяется и надо отталкиваться от чего-то исходного и где тогда это исходное состояние при считывании регистров. Не очень понятна g Земли, где она учитывается в стационарном положении или не учитывается вообще в статике и учитывается только при динамике (перемещении посоха).
avgust75 вне форума  
Непрочитано 22.01.2016, 22:44  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

Акселерометр - эт обычный датчик веса.
В момент после запуска датчика и установки его режимов предполагаем, что посох с датчиком неподвижен. Считываем показания акселерометра. Определяем ориентацию в пространстве неподвижного датчика - это как раз и будет вектор g, то есть, земного притяжения. Его направление и нужно определить, получив начальный угол по всем трем осям. угол будет вычисляться как тангенсы значений каждой пары осей. Ну тригонометрия то. Тангенсы можно вычислять табличным методом с шагом градусов в 10.
Вот, это и будут начальные углы по трем осям. Предполагаем, что строго вертикально датчик всё равно не будет стоять, и по крайней мере, две оси будут иметь ненулевое значение, а значит, можно вычислить его ориентацию в пространстве по трем осям. ...

А в принципе... в принципе, можно пойти более простым другим путем, для конкретно этой задачи с наклоном посоха.
Данные гироскопа не используем вообще. Используем только акселерометр, предполагая, что быстрые перемещения датчика и изменение вектора ускорения для нас не имеют особого значения. Будем считать, что этот посох поступательно движется довольно плавно.
Итак, значения углов по трем осям не вычисляем, никаких тангенсов. Только читаем, только значения осей акселерометра. И обеспечиваем достаточно высокую частоту операций чтения. Опять же полагаем, что строго вертикально посох с датчиком не будет удерживаться.
Близкую к вертикали ориентацию посоха определяем, когда две горизонтальные оси X и Y примут значения меньше установленного нами порога чувствительности.
И далее следим за изменениями значений по этим двум осям. Можно еще отслеживать изменение по вертикальной оси Z, на уменьшение. Если Z снизилось ниже установленного порога, значит, посох горизонтально. Если Z отрицательное, значит посох перевернули вверх ногами.
Недостаток такого метода - линейные перемещения посоха будут восприниматься как наклоны. Но если задать достаточно высокий порог чувствительности к наклону, то снизятся ложные срабатывания.

+ и - по осям отражается в регистрах как 16 битное целое число со знаком, отрицательные числа представляются в дополнительном коде. Что это такое и как с ним работать - уж извините, гугл в помощь.
NewWriter вне форума  
Непрочитано 22.01.2016, 22:57  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

Если датчик установить так, чтобы все три оси были под одинаковым углом к горизонту при вертикальном посохе, то можно с каждой оси брать значения для ШИМ каждого цвета. Математики - минимум.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor на форуме  
Непрочитано 24.01.2016, 21:51  
avgust75
Прописка
 
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
avgust75 на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

Еще раз спасибо New... Решилась проблема учетом 1 в старшем байте и бите считываемых данных. Т.к. дополнительный код решает проблему со сложением, то вычитание положительных данных по X и Y, а также при отрицательных - простое инвертирование и вычитание :- ) вот и весь алгоритм. Все заработало. А если сразу анализировать минус по Z, то перевернув посох он из обычного превращается в волшебный (тут вербальному творчеству нет границ как это использовать).
Если есть еще пару минут, то хотелось бы получить консультацию, как правильно (значения и регистры) оптимизировать энергопотребление. Для PIC мне все ясно, а вот по датчику?

Последний раз редактировалось avgust75; 29.01.2016 в 15:10.
avgust75 вне форума  
Непрочитано 24.01.2016, 23:01  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

Регистры Power Management - режим низкого потребления, отключение гироскопа и термометра, отключение DPM. Но даже если ничего не менять, его потребление не превышает потребление ПИКа, и уж точно меньше потребления светодиодов. В режиме ожидания MPU6050 можно перевести в sleep с потреблением в несколько микроампер через этот же регистр Power Management1.
Ну а вот сколько потребляет модуль GU-521, это я уж не знаю. Вроде там светодиод еще прилеплен как индикация питания 3,3В
NewWriter вне форума  
Непрочитано 24.01.2016, 23:49  
avgust75
Прописка
 
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
avgust75 на пути к лучшему
По умолчанию Re: Посох деда Мороза на GU-521(MPU6050)

Спасибо. Согласен, что оптимизация энергопотребления для датчика - это ловля блох.

Последний раз редактировалось avgust75; 27.01.2016 в 20:07.
avgust75 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 12:26.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot