Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков. |
22.01.2016, 01:37
|
|
Прописка
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
|
Посох деда Мороза на GU-521(MPU6050)
Сделал посох из RBG лент на Новый год. Детишки были в восторге!
Теперь хотелось-бы усовершенствовать. Два режима:
-мигать (реализуется без проблем)
-менять цвет при наклоне (оказалось не так все просто для меня)
Подключил PIC16F628A к GY-521, на ASM написал программу инициализации и считывания регистров (старших разрядов) аксельрометра по трем осям.
Далее (видимо здесь я ошибся) в каждом цикле считывания (~200Hz) находил большее значение из трех осей и включал соответствующие цвета на ленте. Все работает (меняет цвета при наклонах посоха), но не понимаю как?
Хотел-бы получить ответ знающих на следующий вопрос (не берем во внимание динамические составляющие при перемещении, только статика):
- как узнать из регистров (алгоритм их обработки) по каким осям наклонен посох (цель: высветить разными цветами наклон посоха от вертикали вниз и (вперед, назад, влево, вправо).
|
|
|
|
22.01.2016, 14:57
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
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.
|
|
|
|
22.01.2016, 20:28
|
|
Прописка
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
|
Re: Посох деда Мороза на GU-521(MPU6050)
Спасибо. Но хотелось-бы получить более простой ответ: какая последовательность действий с регистрами, если посох наклонен вперед и находится в этом состоянии. Можно ли в этот момент определить однозначно его состояние наклона (не очень понятны величины +-, где они и как отличить, если посох наклонен назад). Или из этого положения это не определяется и надо отталкиваться от чего-то исходного и где тогда это исходное состояние при считывании регистров. Не очень понятна g Земли, где она учитывается в стационарном положении или не учитывается вообще в статике и учитывается только при динамике (перемещении посоха).
|
|
|
|
22.01.2016, 22:44
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Посох деда Мороза на GU-521(MPU6050)
Акселерометр - эт обычный датчик веса.
В момент после запуска датчика и установки его режимов предполагаем, что посох с датчиком неподвижен. Считываем показания акселерометра. Определяем ориентацию в пространстве неподвижного датчика - это как раз и будет вектор g, то есть, земного притяжения. Его направление и нужно определить, получив начальный угол по всем трем осям. угол будет вычисляться как тангенсы значений каждой пары осей. Ну тригонометрия то. Тангенсы можно вычислять табличным методом с шагом градусов в 10.
Вот, это и будут начальные углы по трем осям. Предполагаем, что строго вертикально датчик всё равно не будет стоять, и по крайней мере, две оси будут иметь ненулевое значение, а значит, можно вычислить его ориентацию в пространстве по трем осям. ...
А в принципе... в принципе, можно пойти более простым другим путем, для конкретно этой задачи с наклоном посоха.
Данные гироскопа не используем вообще. Используем только акселерометр, предполагая, что быстрые перемещения датчика и изменение вектора ускорения для нас не имеют особого значения. Будем считать, что этот посох поступательно движется довольно плавно.
Итак, значения углов по трем осям не вычисляем, никаких тангенсов. Только читаем, только значения осей акселерометра. И обеспечиваем достаточно высокую частоту операций чтения. Опять же полагаем, что строго вертикально посох с датчиком не будет удерживаться.
Близкую к вертикали ориентацию посоха определяем, когда две горизонтальные оси X и Y примут значения меньше установленного нами порога чувствительности.
И далее следим за изменениями значений по этим двум осям. Можно еще отслеживать изменение по вертикальной оси Z, на уменьшение. Если Z снизилось ниже установленного порога, значит, посох горизонтально. Если Z отрицательное, значит посох перевернули вверх ногами.
Недостаток такого метода - линейные перемещения посоха будут восприниматься как наклоны. Но если задать достаточно высокий порог чувствительности к наклону, то снизятся ложные срабатывания.
+ и - по осям отражается в регистрах как 16 битное целое число со знаком, отрицательные числа представляются в дополнительном коде. Что это такое и как с ним работать - уж извините, гугл в помощь.
|
|
|
|
22.01.2016, 22:57
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: Посох деда Мороза на GU-521(MPU6050)
Если датчик установить так, чтобы все три оси были под одинаковым углом к горизонту при вертикальном посохе, то можно с каждой оси брать значения для ШИМ каждого цвета. Математики - минимум.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
24.01.2016, 21:51
|
|
Прописка
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
|
Re: Посох деда Мороза на GU-521(MPU6050)
Еще раз спасибо New... Решилась проблема учетом 1 в старшем байте и бите считываемых данных. Т.к. дополнительный код решает проблему со сложением, то вычитание положительных данных по X и Y, а также при отрицательных - простое инвертирование и вычитание :- ) вот и весь алгоритм. Все заработало. А если сразу анализировать минус по Z, то перевернув посох он из обычного превращается в волшебный (тут вербальному творчеству нет границ как это использовать).
Если есть еще пару минут, то хотелось бы получить консультацию, как правильно (значения и регистры) оптимизировать энергопотребление. Для PIC мне все ясно, а вот по датчику?
Последний раз редактировалось avgust75; 29.01.2016 в 15:10.
|
|
|
|
24.01.2016, 23:01
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Посох деда Мороза на GU-521(MPU6050)
Регистры Power Management - режим низкого потребления, отключение гироскопа и термометра, отключение DPM. Но даже если ничего не менять, его потребление не превышает потребление ПИКа, и уж точно меньше потребления светодиодов. В режиме ожидания MPU6050 можно перевести в sleep с потреблением в несколько микроампер через этот же регистр Power Management1.
Ну а вот сколько потребляет модуль GU-521, это я уж не знаю. Вроде там светодиод еще прилеплен как индикация питания 3,3В
|
|
|
|
24.01.2016, 23:49
|
|
Прописка
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
|
Re: Посох деда Мороза на GU-521(MPU6050)
Спасибо. Согласен, что оптимизация энергопотребления для датчика - это ловля блох.
Последний раз редактировалось avgust75; 27.01.2016 в 20:07.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:26.
|
|