Главная » Микроконтроллеры
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Акселерометр и гироскоп MPU6050

Прежде чем приступить к рассмотрению модуля гироскопа и акселерометра, думаю, будет не лишним коротко разобраться что это такое. Гироскоп представляет собой устройство, реагирующее на изменение углов ориентации контролируемого тела. В классическом представлении это какой-то инерционный предмет, который быстро вращается на подвесах. Как результат вращающийся предмет всегда будет сохранять свое направление, а по положению подвесов можно определить угол отклонения. На самом же деле электронные гироскопы построены по другой схеме и устроены немного сложнее (вращающийся волчок впихнуть в микросхему было бы не просто). Акселерометр - это устройство, которое измеряет проекцию кажущегося ускорения, то есть разницы между истинным ускорением объекта и гравитационным ускорением. На простом примере такая система представляет собой некоторую массу, закрепленную на подвесе, обладающим упругостью (пружина для хорошего примера). Так вот если такую систему повернуть под каким-то углом, или бросить, или предать линейное ускорение, то упругий подвес отреагирует на движение под действием массы и отклонится и вот по этому отклонению определяется ускорение. Таким образом, гироскоп реагирует на изменение в пространстве независимо от направление движения, с помощью акселерометра же может измерять линейные ускорения предмета, а так же и искусственно рассчитываемое расположение предмета в пространстве. Каждое устройство имеет свои достоинства и недостатки.

Микросхема MPU6050 содержит на борту как акселерометр, так и гироскоп, а помимо этого еще и температурный сенсор. MPU6050 является главным элементом модуля GY-531. Помимо этой микросхемы на плате модуля расположена необходимая обвязка MPU6050, в том числе подтягивающие резисторы интерфейса I2C, а также стабилизатор напряжения на 3,3 вольта с малым падением напряжения (при питании уже в 3,3 вольта на выходе стабилизатора будет 3 ровно вольта) с фильтрующими конденсаторами. Ну и бонусом на плате распаян SMD светодиод с ограничивающим резистором как индикатор питающего напряжения. Размер платы модуля GY-521 10 х 20 мм. 

Схема модуля представлена ниже (номиналы могут немного отличаться в разных версиях модуля):

Характеристики MPU6050:

  • напряжения питания 2,375 - 3,46 вольт 
  • потребляемый ток до 4 мА
  • интерфейс передачи данных - I2C
  • максимальная скорость I2C - 400 кГц
  • вход для других датчиков I2C
  • внутренний генератор на 8 МГц (вне модуля возможность подключить внешний кварцевый резонатор на 32,768 кГц или 19,2 МГц)

Нужно отметить возможность MPU6050 работать в мастер режиме I2C для AUX выводов, к которым можно подключить еще один внешний датчик (например магнитометр). Честно говоря, я не понимаю для чего это вообще нужно, если проще подключать дополнительные датчики к общей шине I2C микроконтроллера.

Функции MPU6050:

  • трех осевой MEMS гироскоп с 16 битным АЦП
  • трех осевой MEMS акселерометр с 16 битным АЦП
  • Digital Motion Processor (DMP)
  • slave I2C для подключения к микроконтроллеру
  • master I2C для подключения к микросхеме дополнительного датчика
  • регистры данных датчиков
  • FIFO
  • прерывания
  • температурный сенсор
  • самопроверка гироскопа и акселерометра
  • регистр идентификации устройства

Внешний вид модуля GY-521:

В комплекте идут штыревые соединения угловые и прямые. Припаян был прямой штыревой разъем.

Данные измерений датчиков можно считывать как из регистров хранения, так и пользоваться функциями FIFO. Имеется отдельный регистр под названием Who am I, значение, записанное в этом регистре постоянно и его можно только считать, можно использовать как идентификатор устройства, значение в регистре 104 или 0х68. Отдельным выводом является выход прерываний, который настраивается регистрами настройки под определенные события.

Датчики гироскопа и акселерометра изготовлены как MEMS (микроэлектромеханическая система) - внешнее воздействие на датчик сначала изменяет состояние механической части, затем изменение состояния механической части приводит к изменению сигнала электрической части. Одним словом в одном корпусе собрана не только электроника, но и механика. В микросхеме MPU6050 содержится сразу два MEMS датчика, производитель утверждает, что их взаимное воздействие друг на друга сведено к минимуму. Ну что же, совсем не плохо за цену готового модуля порядка 2 уе. Между прочим эти модули можно приобрести на торговых площадках aliexpress или ebay.

Разберемся как можно использовать датчики акселерометра и гироскопа. Температурный датчик трогать даже не будем - данные о температуре прочитали, перевели в человеческие значения и наслаждаемся. Гироскоп выдает значения мгновенной угловой скорости с разрешением, заданным в настройках, например 2000 градусов в секунду. Если прошить микроконтроллер и смотреть на получаемые данные, то увидим только нули. Если начать крутить датчик, то получим мгновенные значения угловой скорости. Заметьте, что скорость мы получаем в градусах в секунду, а это значит, что линейные скорости не влияют на эти показания - показания будут изменяться только при повороте датчика в пространстве. Далее с помощью этих данных можно получить ориентацию объекта в пространстве. Для этого нужно получить мгновенное значение угловой скорости и умножить его на промежуток времени между опросами датчика гироскопа. Пример разрешение 2000 градусов в секунду, промежуток между опросами датчика 0,1 секунда, значение мгновенной скорости 300, значит 300*0,1=30 - за это время ось гироскопа была повернута на 30 градусов. Далее каждое полученное значение нужно сложить с предыдущим. Если ось двигалась в одном направлении - значение 30 градусов, если в другом, то -30, таким образом, при возвращении датчика в исходное положение всегда (в идеале) будет 0, при отклонении от исходного положения, при выполнении вышеописанных действий, получим угол отклонения. Обрабатывая углы трех осей гироскопа можно получить ориентацию объекта в пространстве.

Таким образом, при интегрировании состояния угла положения, также интегрируется и погрешность - при длительном использовании можно получить уже абсолютно неправильные значения. Поэтому часто гироскоп используют в паре с акселерометром, образуя в простом варианте альфа-бета фильтр или комплементарный фильтр.

С акселерометром все проще. Измеряя ускорения трех осей датчика можно получить данные, преобразуя их с помощью геометрии, по которым можно также получить ориентацию объекта в пространстве. Помимо этого акселерометр измеряет линейные ускорения, то есть ориентация объекта может искажаться при движении датчика в линейных направлениях. Также с помощью акселерометра можно определять движение объекта или его столкновение. Например детектировать падение объекта или толчок о преграду, чтобы обходить это.

Данные от акселерометра получаем всегда достаточно точные, то есть нуль всегда остается нулем ни при каких воздействиях (имеется ввиду не зависит ни от времени, ни от характера воздействия), однако недостаток кроется в том, что данные идут шумом в некотором диапазоне данных, то есть до десятых долей градуса точно измерять угол не получится. Зато исходя из экспериментальных данных, точность до целых значений градуса держится вполне стабильно. Не забываем про влияние линейных ускорений.

Если датчик приобрели, можно переходить к рассмотрению внутренностей модуля, а именно главного элемента - микросхемы MPU6050. Информация хранится в регистрах микросхема, которых более 100 (!). И вот тут то и кроется огромный подводный камень. производитель не утрудился расписать в документации всю информацию, а привел лишь информацию о самом необходимом. На самом деле не известно даже сколько же всего там регистров, доступных для чтения или записи или того и другого. Также информации на некоторые регистры попросту нет, кроме его названия. Ну что же, придется экспериментально определять влияния значений, записанных в некоторые регистры.

В конце статьи вы можете скачать исходный код примера использования данного модуля. Внутри вы найдете информацию о том как считывать данные датчиков модуля, а также инициализацию устройства или просто первоначальную настройку регистров для начала работы с модулем GY-521. 

Интерфейс I2C работает по стандартной схеме. Адрес микросхемы может быть двух значений (без бита чтения / записи) в зависимости от состояния вывода AD0 - b1101000, если AD0 соединен с землей и b1101001, если AD0 соединен с источником питания. Соответственно плюс бит чтения или записи.

Микросхема содержит Digital Motion Processor (DMP), он необходим для того, чтобы обрабатывать данные, получаемые из датчиков гироскопа и акселерометра. Все это делается для того, чтобы повысить точность получаемых данных, так как пр обработке данных на микроконтроллере точность может пострадать из-за снижения скорости их обработки. Как правило, алгоритмы обработки движения должны работать с достаточно высокой частотой, обычно 200 Гц, как утверждает документация.

Что касается регистров, то их достаточно большое количество, необходимая информация находится в карте регистров на MPU6050, документ прилагается к статье. Помимо этого прилагается исходник с настройками этих регистров.

Для демонстрации работы модуля была собрана схема:

Здесь использован микроконтроллер Atmega8, данные выводятся на ЖК дисплей 2004А (4 строки по 20 символов). На экран выводится следующая информация, полученная и преобразованная от микросхемы MPU6050 модуля: 1. значения по трем осям акселерометра, 2. значения по трем осям гироскопа, 3. температура, 4. углы отклонения по данным акселерометра (рассчитаны ресурсами микроконтроллера), 5. поворот по оси Z по данным гироскопа (также путем подсчета микроконтроллером). В первом и втором пункте данные имеют мгновенный характер - то есть именно то, что считывается из регистров хранения, это значит, что для гироскопа это скорость, в состоянии покоя все значения будут равны нулю.

Помимо этого, имеется 6 светодиодов, которые загораются в зависимости от положения датчика по оси Y акселерометра.

Модуль датчиков содержит уже стабилизатор на 3,3 вольта, поэтому его можно подключать как к 5 вольта, так и к 3,3 вольтам. Микроконтроллер запитывается от напряжения 3,3 вольта, чтобы не делать согласование уровней I2C.

Собранное устройство на макетной плате:

Для программирования микроконтроллера конфигурация фьюз битов (Atmega8):

Область применения таких датчиков достаточно широка. Данный модуль часто применяют для стабилизации полета квадрокоптера по причине совместного использования гироскопа и акселерометра. Кроме этого модуль можно использовать для координации различных устройств - от просто детектора движения до системы ориентации различных роботов или управления движениями каким-либо устройствами. Область подобных сенсорных устройств достаточно новая и интересная для изучения и применения в любительской технике.

В заключении хотелось бы отметить, что данные модуль - это недорогое и достаточно хорошее решение при необходимости использования гироскопа и / или акселерометра, большое количество настроек датчиков позволит настроить их под любые устройства, малые размеры модуля без труда позволят встраивать его в большинство схем.

К статье прилагается прошивка микроконтроллера, исходный код AVR Studio4, документация на MPU6050 и видео работы датчика в схеме.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
MOD1 МодульGU-5211 На базе MPU6050Поиск в FivelВ блокнот
IC1 МК AVR 8-бит
ATmega8
1 Поиск в FivelВ блокнот
VR1 Линейный регулятор
L7805AB
1 Поиск в FivelВ блокнот
VR2 Линейный регулятор
AMS1117-3.3
1 Поиск в FivelВ блокнот
HG1 LCD-дисплей2004A1 Поиск в FivelВ блокнот
C1 Электролитический конденсатор470 мкФ1 Поиск в FivelВ блокнот
C2, C3, C5 Конденсатор100 нФ3 Поиск в FivelВ блокнот
C4 Электролитический конденсатор220 мкФ1 Поиск в FivelВ блокнот
C6 Электролитический конденсатор10 мкФ1 Поиск в FivelВ блокнот
R1 Резистор
22 Ом
1 Поиск в FivelВ блокнот
R2 Подстроечный резистор10 кОм1 Поиск в FivelВ блокнот
R3 Резистор
10 кОм
1 Поиск в FivelВ блокнот
R4-R9 Резистор
150 Ом
6 Поиск в FivelВ блокнот
HL1 - HL6 Светодиод6 Поиск в FivelВ блокнот
S1 Тактовая кнопкаTC-A1091 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 26.10.2014 0 4
Я собрал 0 3
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 3 чел.

Комментарии (61) | Я собрал (0) | Подписаться

0
valgr #
Использовал куски из вашей библиотеки, решил прочитать значение регистра 0х75. Если не включать инициализацию, то читает 0х83, если включить инициализацию то 0.
Подскажите, плиз, в чём может быть дело?
Ответить
0

[Автор]
Gauss #
Инициализация этот регистр не должна трогать вообще никак - где-то что-то перепутано, советую сначала проверить датчик на оригинальной прошивке и убедиться, что он исправен, дальше пошагово использовать куски кода
Ответить
0
Сергей Алексеевич #
Ув. Gauss! У меня, как старого гироскописта (учёба в ВУЗе, 80-е годы) вопрос - не дал ли изготовитель в дата-шите фотографии вида этой механической части микросхемы? Вопрос чисто технический - КАК (?!) они в эту маленькую финтифлюшку впихнули ещё и механику? Что там за микродетальки и микродатчики? Как далеко шагнул прогресс?
Вот, сам нашёл только что "результаты вскрытия":
http://zeptobars.com/ru/read/Invensense-MPU6050-6d-MEMS-IMU-gyroscope-accelerometer
Теперь принцип ясен, вопрос снимаю!
Ответить
0

[Автор]
Gauss #
МЭМС технологии все больше набирают обороты и то, что видим сейчас - это игрушки, военныие и медицинские разработке с применением МЭМС весьма впечатляют
Ответить
0

[Автор]
Gauss #
А ссылка очень интересная!
Ответить
0
Павел #
Откуда взялось магическое число 22? GYRO_ANGLE_Z=GYRO_ANGLE_Z+GYRO_Z/22;
Ответить
0

[Автор]
Gauss #
От туда - из вычислений, это коэффициент, чтобы кашу из регистров получить в виде градусов, рассчитан грубо
Ответить
0
Nick #
Повторил проект.
Но почему то показания гироскопа в неподвижном состоянии ненулевые. Возможно нужна калибровка. А температурный датчик там наверно для температурной компенсации.
Ответить
0

[Автор]
Gauss #
Должно быть ноль, если нет, то где-то косяк на плате
Ответить
0
Nick #
Модуль новый.
Подскажите, какой может быть косяк с платой?
В проекте вместо Atmega8 использовал Atmega16.
Ответить
0

[Автор]
Gauss #
Прошивка подходит только для меги8, для 16 неправильно перекомпилировали значит (надеюсь же пытались перекомпилировать?)
Ответить
0
Nick #
Конечно перекомпилировал
Ответить
0

[Автор]
Gauss #
Вот где-то там и косяк, настройка таймеров, например, все что угодно, что не совпадает по настройкам с восьмеркой, а может мусор какой на дорожках из-за которого помехи появляются по сигналам
Ответить
0
Nick #
Перепрошил под Mega8. Тоже самое.
Может есть какие-то регистры начальной установки?
Ответить
0

[Автор]
Gauss #
Фьюзы в статье, пробуйте чистый исходник без ваших вмешательств
Ответить
0
Mike #
Скажите пожалуйста, адрес AD0 мы подтягиваем к плюсу значит мы можем принимать или передавать данные, а если к земле - то нет? Как этот адрес вообще работает?
Я так понял, если нам надо получать только данные от MPU6050, то мы AD0 кидаем на землю?
Ответить
0

[Автор]
Gauss #
Он всего лишь участвует в формировании адреса микросхемы (это 8 битный код, где 6 битов постоянны, один бит - AD0 может быть 0 или 1 и бит чтения или записи - это 8й бит).
Соответственно в адресе микросхемы должна быть на своем месте 1 если этот пин подтянут к питанию и 0, если он подтянут к земле
Ответить
0
Hakeem #
- Откуда взялось магическое число 22? GYRO_ANGLE_Z=GYRO_ANGLE_Z+GYRO_Z/22;
-От туда - из вычислений, это коэффициент, чтобы кашу из регистров получить в виде градусов, рассчитан грубо
Как вы этот коэф. посчитали? Это частота дискретизации или что?
Ответить
0

[Автор]
Gauss #
Загляните в даташит, я уже точно не помню, но по сути это получаемое количество отсчетов на 1 градус поворота
Ответить
0
Hakeem #
В этой строке вы явно интегрируете значение угловой скорости гироскопа по оси Z чтобы получить реальный угол в градусах. И 22 это у вас частота опроса, так вот мне интересно как вы ее вычислили. Я подобрал ее итерационным способом поглядывая на значения угла Z полученного по акселерометру (откалибровал).. и сейчас и угол полученный от акселерометра и гироскопа одинаков (ну почти). Мне интересно как найти это значение программно
Ответить
0

[Автор]
Gauss #
Преобразование сигнала от MEMS гироскопа идет через встроенный АЦП, само собой цифровой сигнал имеет свое разрешение и оно ни как не связано с частотой опроса, но при этом чем чаще частота опроса, тем более точные показания даст гироскоп, так вот, грубо говоря каждые 22 отсчета, полученные от гироскопа через АЦП внутри микросхемы дают значение 0,1 градус (перед выводом на экран оно все округляется до 1 градуса). Так вот к сути проблемы - заглянуть в дташит и посмотреть рабочий диапазон АЦП гироскопа, вроде оттуда взял
Ответить
0
Hakeem #
Не нашел там ничего, кроме как когда используешь данный сенсор в качестве I2C мастера, есть возможность установить делитель частоты встроенного генератора 8 МГц.... эти 22 дает ему 364 кГц.
Ответить
0

[Автор]
Gauss #
На 12 стр. даташита указаны диапазоны шкал, задаваемых пользователем и ниже коэффициент, который показывает сколько отсчетов АЦП придется на 1 градус для каждого диапазона. С датчика мы снимаем то, что идет с АЦП, поэтому, чтобы получить мгновенную скорость в градусах на секунду, нужно разделить на этот коэффициент. Далее чтобы получить количество градусов, нужно скорость умножить на время и получим угол за данный промежуток времени, который интегрируется. Время нужно рассчитать как можно точнее (у меня это посчиталось навскидку и подогналось под одну цифру вместе с фактором шкалы - 16,4 и дельта Т). Вообще намного правильнее было бы завести таймер считать время точно и не гадать.
Ответить
0
Nick #
А откуда брали процедуру инициализации MPU6050?
Ответить
0

[Автор]
Gauss #
Даташит - карта регистров
Ответить
0
Hakeem #
Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
извините еще раз чуточку поподробнее можно? исходя из чего SMPLRT_DIV выбирать?
...нужно скорость умножить на время и получим угол..
Как это время определить?
Ответить
0

[Автор]
Gauss #
Третий раз повторяю (!) - работа идет с данными АЦП, сэмпл рэйт вообще не причем никак, нам нужна шкала, изучите работу АЦП все же, насчет времени - заведите таймер и меряйте его, я посчитал примерное время, которое уходит на один цикл функции main, из за этого при внесении нового кода придется время пересчитать
Ответить
0
Hakeem #
Я именно так и предполагал и сделал. А по поводу пересчитывать время у меня все автоматом пересчитывается. Все понял спасибо большое.
Ответить
0

[Автор]
Gauss #
Незачто!
Ответить
0
Edj90 #
Автор вам бы еще статейку написать на данном примере про настройку и обработку данных, как проходит расчет угла, наклона фильтром. А то вопросов много, а ответов еще больше, и то по ардуине. На чистый АВР мало что есть...
Ответить
0

[Автор]
Gauss #
Фильтром угол не рассчитывается, фильтр как бы совмещает показания разных датчиков
Ответить
0
jeka_rj #
Ваяю проект на stm32f429DISCO, не получаю от MPU 6050 ACK. Наивно полагал, что брак, купил вторую - результат тот же. Где может быть косяк?
Ответить
0

[Автор]
Gauss #
В программной части или в проводах
Ответить
0
garyman #
Возникла надобность собрать устройство, которое крепилось бы на колесе велосипеда и при вращении каждый оборот считывало время полного оборота (частоту).
Ну так вот хотелось бы это всё сделать без датчика холла на вилке велосипеда, можно ли воспользоваться акселометром, как он будет себя вести в случае вращения ? Не будут ли одинаковые показания под действием центробежной силы ?
Ответить
0

[Автор]
Gauss #
Ну вот и проверьте...
Ответить
0
Евгений #
Добрый день. В регистры записывает и считывает. Но при этом из ячеек гироскопа, акселерометра и термометра считывает нули. Инициализация прошла (прочитал регистры), а ощущение будто он не запущен. В коде (переведён в комментарий) присутствует другая инициализация, что это за инициализация и почему убрана? С уважением, Евгений.
Ответить
0

[Автор]
Gauss #
Фьюзы верно выставь походу
Ответить
0
Иван #
Здравствуйте. Как вы получили такие точные значения, а то у меня они заоблачные. Подскажите как вы их обработали, а то уже весь инет перерыл.
Ответить
0

[Автор]
Gauss #
Полагаю все расписано в исходнике?
Ответить
0
Ilya #
Я вот не понял, данный пример может выводить на экран значение угла, на который наклонена плата? просто есть идея использовать его в качестве уровня.
Ответить
0

[Автор]
Gauss #
Но это же очевидно - датчик фиксирует изменения, датчик находится на плате
Ответить
0
Тим #
Глупый вопрос: где почитать как датчик прошивать? У меня только копм и ардуино нано есть. И компас еще который нужно будет подключить к 6050!
Ответить
0

[Автор]
Gauss #
Датчики не шьются, а вот мк под них шьется - пишется программа для мк, которая обрабатывает сигналы с датчика и загружается в мк программатором
Ответить
0
тим #
А вот есть даташит на датчик и там куча регистров можно поменять! даташит
На станице 14 мне нужно изменить точность гироскопа до 4g. Как это сделать?
Ответить
0

[Автор]
Gauss #
Отправить данные по шине i2c с необходимыми значениями в нужный регистр, задаваемые в прошивке микроконтроллера
Ответить
0
тим #
Интересует как MPU6050 взаимодействует с магнитометром HMC5883L по встроенному i2c!
Вернее этот вопрос будет интересовать, если вы точно скажете что нельзя к одной i2c подключить два HMC5883L так как у них 1 адрес!

Вообще задача такая: определять положение двух стержней в пространстве. я думал взять на каждый стержень по MPU + HMC и совмещать их данные на Arduino, но никак не могу подружить магнитометр с гироскопом, выдает 0 на магнитометре.
собственно нашел
библиотеку но как я уже писал - выдает 0 от магнитометра, Может кто-нибудь подробно проинструктировать что делать что бы были значения с магнитометра?
Ответить
0
андрей #
Была тут же статья и про магнетометр помнится http://cxem.net/mc/mc307.php, наверно же рабочая библиотека должна быть
Ответить
0

[Автор]
Gauss #
В даташите англиским по белому написано, что есть регистры 73-96, через которые можно записывать данные в регистры EXT_SENS_DATA_00 - EXT_SENS_DATA_23 внешнего датчика. В целом не проверял, не нужно было, но должно работать
Ответить
0
Тим #
Я знаю что можно, вопрос в том, как это сделать!
Я знаю как заставить микроконтроллер общаться с компом, микроконтроллер с датчиком, но датчик с другим датчиком нет! У него же даже интерфейса нормального нет!
Ответить
0

[Автор]
Gauss #
Взять и записать в регистры, то что должно быть в соответствующих регистрах другого датчика, в чем проблема то?
Ответить
0
тим #
В моей неопытности! Если будет время, загляни в регистры 37-40.
Я все настроил для считывания, но у меня по прежнему он не считывает данные! Глупый вопрос: как прослушать шину i2c? Просто подключить ее к ардуинке можно? И с помощью прерываний как-то отследить биты?
Ответить
0

[Автор]
Gauss #
1) короче работать с регистрами внешнего сенсора нужно в mpu-шке
2) для этого вполне подойдет логический анализатор
Отредактирован 02.03.2016 18:44
Ответить
0
Сергей #
Интересует коэффициент передачи данного гироскопа в виде зависимости выходного сигнала от скорости изменения измеряемой координаты. Заранее благодарен за ответ.
Ответить
0
Василий #
Можно ли с помощью этого датчика померять угол наклона относительно горизонта? И если да то что будет с показаниями после выключения-включения питания?
Ответить
0

[Автор]
Gauss #
Думаю, из статьи видны ответы на ваши вопросы, стоит только почитать, да посмотреть. Это, собственно, то, для чего и предназначен в общих чертах акселерометр.
А что может быть с показаниями? Они будут. И будут такие как должны быть в соответствии с датчиком, с которого берутся показания.
Ответить
0
Василий #
Я, наверно, не очень правильно изложил свой вопрос. Меня интересует что будет с показаниями если его включить откалибровать и повернуть , то показания будут верными, а потом выключить его и снова повернуть, затем включить. И вот вопрос он покажет новый текущий угол или показания будут иными? Его можно один раз откалибровать, потом после каждого очередного включения он сразу угол покажет или нет?
Ответить
0

[Автор]
Gauss #
Тогда причем тут отклонение от горизонта? Это есть вращение вокруг оси, эти данные дает гироскоп. по большому счету этот ответ тоже есть в статье, нужно лишь вчитаться. Гироскоп дает значение мгновенное при вращении, а чтобы получить угол поворота происходит интегрирование по датчику в единицу времени (чем больше частота измерения, тем точнее получим значение угла поворота вокруг оси), а это значит что при включении всегда ноль по углу поворота (если только не хранить значение в памяти как последнее валидное значение, которое загружается при включении).
Ответить
0
schotki #
Подскажите, пожалуйста, реально ли добавить в программу передачу данных по USART?
Смущает то, что вывод TX(PD4) занят индикатором, то, что память программы заполнена на 96.8% и то, что микроконтроллер тактируется от внутренней RC-цепи 8mHz.
Ответить
0

[Автор]
Gauss #
Эта микропрограмма делалась просто для теста и развития понятия о том, как работают подобные датчики, поэтому смысла оптимизировать и потенциальный функционал закладывать смысла не было, а так можно много чего сделать на основе этого
Ответить
0
schotki #
Не увидел в makefile частоту работы процессора 800000UL, как компилятор определяет для какой частоты используются функции _delay_ms(loop)?
Не могли бы вы подправить программу под нашу задачу? Не безвозмездно, конечно. Самому мне в ней разбираться придется слишком долго.
Ответить
0

[Автор]
Gauss #
Частота работы объявляется в сишном файле и ее диапазон во фьюз битах, а для задержки используется "заводская библиотека" delay
По остальным вопросам в ЛС лучше
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
UNI-T UT-61A Конструктор - Гитарная педаль Remote Delay 2.5
вверх