Регулятор оборотов на Ардуино: Своими руками, Схема, купить регулятор оборотов

Регулятор оборотов на Ардуино: Своими руками, Схема, купить регулятор оборотов Мультикоптеры

Некоторые термины, используемые в тематике bldc и esc

При изучении принципов работы BLDC двигателей и контроллеров ESC вы можете столкнуться с некоторыми терминами, используемыми в данной тематике. Кратко рассмотрим основные из этих терминов.

Braking (торможение) – определяет насколько быстро BLDC двигатель может остановить свое вращение. Это особенно актуально для летающих средств (дронов, геликоптеров и т.д.) поскольку они вынуждены часто изменять количество оборотов двигателя в минуту чтобы маневрировать в воздухе.

Soft Start (плавный пуск, старт) – эта способность особенно важна для BLDC двигателей когда вращающий момент от него на исполнительный механизм (колесо, винт и т.д.) передается через механизм передач, обычно состоящий из шестерен.

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

Motor Direction (направление вращения двигателя) – обычно направление вращения BLDC двигателей не изменяется в процессе эксплуатации, однако во время сборки и тестирования работы изделия может потребоваться изменение направления вращения двигателя, обычно это можно сделать просто поменяв местами любые два провода двигателя.

Low Voltage Stop (остановка при низком напряжении питания). Обычно BLDC двигатели калибруют так, чтобы при одинаковом уровне управляющего воздействия скорость его вращения была постоянной. Однако этого трудно достигнуть потому что со временем напряжение питающей батареи уменьшается.

Смотрите про коптеры:  Ваш путеводитель по ценам на FPV-дроны DJI: чего ожидать и где купить

Чтобы предотвратить это обычно контроллеры ESC программируют таким образом чтобы они останавливали работу BLDC двигателя когда напряжение питающей батареи опускается ниже определенной границы. Особенно эта функция полезна при использовании BLDC двигателей в дронах.

Response time (время отклика, время реакции, время ответа). Означает способность двигателя быстро изменять скорость вращения при изменении управляющего воздействия. Чем меньше время реакции, тем лучше контроль над двигателем.

Advance (движение вперед). Эта проблема является своеобразной “ахиллесовой пятой” для BLDC двигателей. Все BLDC двигатели имеют хотя бы небольшой подобный баг. Эта проблема вызвана тем, что когда катушка статора запитана ротор движется вперед поскольку на нем есть постоянный магнит.

И когда управляющее напряжение с этой катушки снимают (чтобы подать его на следующую катушку) ротор продвигается вперед немного дальше чем предусмотрено логикой функционирования двигателя. Это нежелательное продвижение двигателя вперед в англоязычной литературе называют “Advance” и оно может приводить к нежелательным вибрациям, нагреву и шуму при работе двигателя. Поэтому хорошие контроллеры ESC стараются по возможности устранить этот эффект в работе BLDC двигателей.

Немного теории

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

Перемещение дрона на Arduino и любом другом контролере осуществляется за счет изменения трех параметров:

Первый параметр определяет угол наклона вверх или вниз передней части квадрокоптера, позволяя выполнить снижение или подъем дрона. Крен определяет угол наклона, когда правая часть оказывает ниже или выше левой. Рыскание определяет угол поворота квадрокоптера Arduino вокруг вертикальной оси, проходящей через его центр тяжести, обеспечивая дрону поворот в горизонтальной плоскости на нужный угол.

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

ARDUINO

В итоге плата Arduino дает широкие возможности для создания различных гаджетов, среди которых дрон лишь один из примеров.

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

Непосредственно программирование на Arduino идет с помощью языка С , имеющим большое распространение. Одновременно большое количество типовых программ позволит быстро его освоить до уровня, которого достаточно для управления дроном. Одновременно широкий выбор библиотек сократит время запуска первого дрона, предупредив появление детских ошибок.

Не потребует Arduino и наличия при сборке паяльника, так как вполне можно обойтись макетной доской и набором перемычек, что одновременно упрощает работу, позволяет быстро исправить какие-то недочеты и ошибки при сборке.

Объяснение программы для arduino

Полный код программы приведен в конце статьи, здесь же мы рассмотрим только его основные фрагменты.

Для управления BLDC двигателем мы будем формировать ШИМ сигнал с частотой 50 Гц и изменяемым от 0 до 100% коэффициентом заполнения. Значение коэффициента заполнения будет управляться с помощью потенциометра. То есть, вращая потенциометр, мы будем управлять скоростью вращения двигателя.

Как уже указывалось, управление BLDC двигателем очень похоже на управление сервомотором с помощью ШИМ 50 Гц, поэтому в данном случае мы будем использовать ту же самую библиотеку, которую использовали для управления сервомотором. Если вы начинающий в изучении платформы Arduino, то перед дальнейшим прочтением данной статьи рекомендуем вам изучить принципы формирования ШИМ сигнала в Arduino и подключение сервомотора к плате Arduino.

ШИМ сигнал можно генерировать только на тех цифровых контактах платы Arduino, которые обозначены символом ~. В нашей схеме мы будем управлять контроллером ESC с контакта 9 платы Arduino, поэтому следующей командой мы прикрепим контроллер ESC к этому контакту:

Коэффициент заполнения ШИМ (от 0 до 100%) управляется с помощью положения ручки потенциометра. То есть когда на выходе потенциометра у нас будет 0V (0 на выходе АЦП), у нас коэффициент заполнения будет равен 0, а когда на выходе потенциометра будет 5V (1023 на выходе АЦП), коэффициент заполнения ШИМ будет равен 100%. Поэтому мы будем использовать функцию, которая будет считывать значение с выхода АЦП контакта A0.

Затем мы должны конвертировать полученное значение (оно будет в диапазоне от 0 до 1023) в диапазон от 0 до 180. В дальнейшем значение 0 у нас будет означать 0% коэффициент заполнения ШИМ, а значение 180 – 100% коэффициент заполнения ШИМ. Конвертация значения из диапазона 0-1023 в диапазон 0-180 будет осуществляться с помощью функции:

В дальнейшем мы должны передать это значение в функцию управления двигателем, чтобы сформировать соответствующий ШИМ сигнал на необходимом нам контакте. Поскольку мы дали нашему серво объекту имя ESC, то команда для управления им будет выглядеть следующим образом:

Принцип действия bldc двигателей

Бесколлекторные электродвигатели постоянного тока (BLDC двигатели) в настоящее время часто используются в потолочных вентиляторах и электрических движущихся транспортных средствах благодаря их плавному вращению. В отличие от других электродвигателей постоянного тока BLDC двигатели подключаются с помощью трех проводов, выходящих из них, при этом каждый провод образует свою собственную фазу, то есть получаем трехфазный мотор.

Хотя BLDC относятся к двигателям постоянного тока они управляются с помощью последовательности импульсов. Для преобразования напряжения постоянного тока в последовательность импульсов и распределения их по трем проводникам используется контроллер ESC (Electronic speed controller).

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

Затем контроллер ESC подает питание на другие два провода (фазы) и этот процесс смены проводов, на которые подается питание, продолжается непрерывно, что заставляет двигатель вращаться. Скорость вращения двигателя зависит от того как быстро подается энергия на катушку двигателя, а направление вращения – от порядка смены фаз, на которые поочередно подается питание.

Существуют различные типы BLDC двигателей – давайте рассмотрим основные из них. Различают Inrunner и OutRunner BLDC двигатели. В Inrunner двигателях магниты ротора находятся внутри статора с обмотками, а в OutRunner двигателях магниты расположены снаружи и вращаются вокруг неподвижного статора с обмотками.

То есть в Inrunner (по этому принципу конструируется большинство двигателей постоянного тока) ось внутри двигателя вращается, а оболочка остается неподвижной. А в OutRunner сам двигатель вращается вокруг оси с катушкой, которая остается неподвижной.

OutRunner двигатели особенно удобны для применения в электрических велосипедах, поскольку внешняя оболочка двигателя непосредственно приводит в движение колесо велосипеда, что позволяет обойтись без механизма сцепления. К тому же OutRunner двигатели обеспечивают больший крутящий момент, что делает их также идеальным выбором для применения в электрических движущихся средствах и дронах. Поэтому и в этой статье мы будем рассматривать подключение к платы Arduino двигателя OutRunner типа.

Примечание: существует еще такой тип BLDC двигателей как бесстержневой (coreless), который находит применение в “карманных” дронах. Эти двигатели работают по несколько иным принципам, но рассмотрение принципов их работы выходит за рамки данной статьи.

BLDC двигатели с датчиками (Sensor) и без датчиков (Sensorless). Для BLDC двигателей, которые вращаются плавно, без рывков, необходима обратная связь. Поэтому контроллер ESC должен знать позиции и полюса магнитов ротора чтобы правильно запитывать статор.

Эту информацию можно получить двумя способами: первый из них заключается в размещении датчика Холла внутри двигателя. Датчик Холла будет обнаруживать магнит и передавать информацию об этом в контроллер ESC. Этот тип двигателей называется Sensor BLDC (с датчиком) и он находит применение в электрических движущихся транспортных средствах.

Второй метод обнаружения позиции магнитов заключается в использовании обратной ЭДС (электродвижущей силы), генерируемой катушками в то время когда магниты пересекают их. Достоинством этого метода является то, что он не требует использования каких либо дополнительных устройств (датчик Холла) – фазовый провод самостоятельно используется в качестве обратной связи благодаря наличию обратной ЭДС.

Управление двигателями и сервоприводами с помощью ардуино » сайт для электриков – статьи, советы, примеры, схемы

Из этой статьи вы узнаете:

  • Что такое двигатель постоянного тока,

  • Как управлять скоростью вращения двигателя постоянного тока,

  • Как подключить двигатель к Arduino,

  • Что такое сервопривод,

  • Как управлять сервоприводом.

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

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

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

Двигатель постоянного тока

Самый распространенный электродвигатель, который используется в портативных устройствах, игрушках, радиоуправляемых моделях и других устройствах. На малых электродвигателя на статоре закреплены постоянные магниты, на роторе – обмотка.

Ток в обмотку подается через щеточный узел. Щетки сделаны из графита, иногда встречаются медные скользящие контакты. Щетки скользят по ламелям расположенным на одном из концов ротора. Если не вдаваться в подробности, то от тока обмотки якоря зависит его скорость вращения.

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

Управление скоростью вращения

При подключении к питающей сети двигатель постоянного тока начинает вращаться с номинальной скоростью. Чтобы понизить частоту вращения нужно ограничить ток. Для этого вводят балластные сопротивления, но это снижает КПД установки в целом и появляется лишний источник тепла. Для более эффективного регулирования напряжения и тока используют другой метод – ШИМ-регулирование.

Способ регулирования широтно-импульсной модуляцией сигнала (напряжения) заключается в формировании желаемой величины напряжения с помощью изменения ширины импульсов, при постоянной продолжительности периода (частоты).

То есть период делится на две части:

1. Время импульса.

2. Время паузы.

Отношение времени импульса к общему времени периода называют коэффициентом заполнения:

Кз=tи/tпер

обратная величина называется “скважность”:

D=1/Kз=tпер/tи

Для описания режима работы ШИМ-контроллера используют оба понятия: и коэффициент заполнения, и скважность.

Ток потребления двигателя зависит от его мощности. Число оборотов, как было сказано, зависит от тока. Ток можно регулировать, изменяя величину приложенного к обмоткам напряжения. Фактически при питании от напряжения, которое превышает номинальное по паспорту двигателя, его обороты также превысят номинальные. Однако такие режимы работы опасны для двигателя, поскольку в обмотках протекает больший ток, что вызывает их повышенный нагрев.

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

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

Подключаем к ардуино

У меня лежал маленький моторчик, кажется от кассетного плеера, значит, его номинальное напряжение будет ниже 5 вольт, тогда выходного питания ардуины будет достаточно. Я запитаю его от пина «5V», т.е. от выхода линейного стабилизатора расположенного на плате. По схеме, которую вы видите ниже.

Я не знаю ток этого двигателя, поэтому я его подключил к питания, а между двигателем и пином питания установил полевой транзистор, на затвор которого был подан сигнал с ШИМ-выхода, можно использовать любой из доступных.

Для регулировки оборотов я добавил переменный резистор в схему, подключив его к аналоговому входу А0. Для быстрого соединения я использовал беспаечную макетную плату, как её еще называют «breadboard».

В обвязку транзистора я установил токоограничивающий резистор (для снижения тока заряда затворной ёмкости, это убережет порт от сгорания и питание микроконтроллера от просадок и его зависания) на 240 Ом, и притянул его к земле резистором на 12 кОм, это нужно делать, чтобы он стабильнее работал и быстрее разряжалась затворная ёмкость.

Подробно о полевых транзисторах описано в статье на нашем сайте. Я использовал мощный, распространённый и не слишком дорогой mosfet с n-каналом и встроенным обратным диодом IRF840.

Вот так выглядит мой лабораторный стенд в сборе:

Функция ШИМ-регулирования вызывается при записи в соответствующий выход (3, 5, 6, 9, 10, 11) значения от 0 до 255 командой AnalogWrite(pin, значение). Логика её работы изображена на графиках ниже.

Такой сигнал подаётся на затвор транзистора:

Программный код до безобразия краток и прост, подробно все эти функции были описаны в предыдущих статьях об ардуино.

int sensorPin = A0;   // вход с потенциометра

int motorPin = 3;      // выход ШИМ на затвор тр-ра

void setup() {

  pinMode(motorPin, OUTPUT);

}

void loop() {

 analogWrite(motorPin, map (analogRead(sensorPin), 0, 1023, 0, 256));

}

В функции analogWrite я присваиваю значение на ШИМ-выход, через команду map, её использование позволяет убрать несколько строчек кода и одну переменную.

Это рабочая схема и она отлично подходит для наблюдения процессов при регулировании мощности нагрузки, яркости светодиодов, скорости вращения двигателей, стоит только подключить вместо двигателя желаемую нагрузку. При этом вместо 5В на нагрузку можно подавать любое напряжение, например 12В, не забудьте соединить минус питания с контактом, например 12В, не забудьте соединить минус питания с контактом GND на плате микроконтроллера.

В ардуино частота ШИМ, при вызове через функцию analogWrite всего лишь 400 Гц, при минимальных значениях напряжения был слышен гул соответствующей частоты от обмоток двигателя.

Сервоприводы

Двигатель который может находиться в заданном положении, а при воздействии внешних факторов, например, принудительном отклонении вала, удерживает его положение неизменным – называется сервоприводом. Вообще определение звучит несколько иначе:

Сервопривод, это двигатель управляемый отрицательной обратной связью.

Сервопривод – это поворотный привод (проще говоря: привод), который позволяет точно контролировать угловое положение. Это делает его полезным в системах с обратной связью, где требуется точное управление положением. Сервоприводы, входящие в эти системы, представляют собой автономные электрические устройства, которые вращают компоненты машин с высокой точностью.

Сервоприводы крепятся винтами к корпусу, а само соединение, например, с колесом, осуществляется путем надевания его на вал. Двигатель управляется аналоговым или цифровым электрическим сигналом, который определяет величину движения, которая, в свою очередь, представляет собой окончательное установленное положение.

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

Обычно с сервопривода для Arduino (сервомашинки) выходит три провода:

  • Плюс питания.

  • Минус питания.

  • Управляющий сигнал.

Сервопривод состоит из:

  • Электродвигателя постоянного тока (или бесколлекторного двигателя);

  • Платы управления;

  • Датчика положения (энкодера у сервоприводов с углом поворота 360° или потенциометра у серв с углом поворота 180°);

  • Понижающего редуктора (понижает скорость вращения двигателя, и повышает момент на валу привода).

Блок управления сравнивает сигнал на встроенном датчике положения и сигнал, пришедший по управляющему проводу, если они различаются, то происходит поворот на угол, при котором разница между сигнала нивелируется.

Основные характеристики сервоприводов:

  • Скорость поворота (время, за которое вал поворачивается на угол 60°);

  • Крутящий момент (кг/см, т.е. сколько килограмм может выдерживать двигатель на рычаге в 1 см от вала);

  • Напряжение питания;

  • Потребляемый ток;

  • По способу управления (аналоговый или цифровой, существенной разницы нет, но цифровой более быстродействующий и стабильный).

Обычно период сигнала равен 20 мс, а длительность управляющего импульса:

  • 544 мкс – соответствует 0°;

  • 2400 мкс – соответствует углу 180°.

В редких случаях длина импульсов может отличаться, например 760 и 1520 мкс соответственно, эту информацию можно уточнить в технической документации на привод. Одним из популярнейших сервоприводов для хобби является Tower Pro SG90 и подобные модели. Стоит недорого – порядка 4 долларов.

Он удерживает на валу 1.8 кг/см, и в комплекте с ним идут крепежные винты и рычаги со шлицами под вал. На деле этот малыш довольно сильный, и в движении одним пальцем его остановить весьма проблематично – начинает выпадать из пальцев сам привод – такая его сила.

Управление сервоприводом и Ардуино

Как уже было сказано, управление осуществляется изменением длительности импульса, но не стоит путать этот метод с ШИМ(PWM), его правильное назвать PDM (Pulse Duration Modulation). Незначительные отклонения по частоте сигнала (20 мс – длительность, частота 50 Гц) особой роли не играют. Но не стоит отклоняться от частоты более чем на 10 Гц, двигатель может работать рывками или сгореть.

Схема подключение к ардуино довольно проста, можно и запитать привод от 5v –пина, но не желательно. Дело в том, что при старте происходит небольшой скачок тока, это может вызвать просадку по питанию и ложные состояния выходов микроконтроллера. Хотя 1 маленький привод (типа SG90) можно, но не более.

Для управления такими сервоприводами с ардуино в вашем распоряжении есть встроенная в IDE библиотека Servo, у неё небольшой набор команд:

  • attach() — добавить переменную к пину. Пример: названиеПривода.attach(9) – к 9 пину подключаем сервопривод. Если вашему приводу нужны нестандартные длины управляющих импульсов (544 и 2400 мкс), то их можно задать через запятую после номера пина, например: servo.attach(pin, min угол (мкс), max угол в МКС));

  • write() — задает угол поворота вала в градусах;

  • writeMicroseconds() — задает угол, через длину импульса в микросекундах;

  • read() — определяет текущее положение вала;

  • attached() — Проверяет, задан ли пин с подключенным сервоприводом;

  • detach() — отмена команды attach.

Эта библиотека позволяет управлять 12-ю сервоприводами с плат UNO, Nano и подобных (mega368 и 168) при этом исчезает возможность использовать ШИМ на 9 и 10 пине. Если у вас MEGA – вы можете управлять 48-ю сервами, но на пинах 11 и 12 исчезнет ШИМ, если вы используете до 12 серв, то функционирование ШИМ остается полноценным на всех контактах.

Если вы подключили эту библиотеку – вы не сможете работать с 433 МГц приёмниками/передатчиками. Для этого есть библиотека Servo2, которая в остальном идентична.

Вот пример кода, который я использовал для экспериментов с сервоприводом, он есть в стандартном наборе примеров:

#include <Servo.h> // подключаем библиотеку

Servo myservo;  // объявили имя переменной для сервопривода myservo

int potpin = 0;  // пин для подключения задающего потенциометра

int val;    // переменная для сохранения результатов чтения сигнала с потенциометра

void setup() {

  myservo.attach(9);  // устанавливаем 9 пин, как управляющий выход для сервы

}

void loop() {

  val = analogRead(potpin);            // результаты чтения потенциометра сохр в пер. val, они будут в диапазоне от 0 до 1023

  val = map(val, 0, 1023, 0, 180);     // переводим диапазон измерений с аналогового входа 0-1023

                                           // в диапазон заданий для сервы 0-180 градусов

  myservo.write(val);                  // передаем преобр. сигнал с пот-ра на упр. вход сервы

  delay(15);                           // задержка нужна для стабильной работы системы

Заключение

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

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

Пример использования сервоприводов в альтернативной энергетике: отслеживание угла падения солнечных лучей и корректирование положения солнечных панелей в электростанциях.

Чтобы реализовать такой алгоритм можно использовать несколько фоторезисторов или других оптоэлектронных приборов для измерения количество падающего света и в зависимости от их показаний устанавливать угол поворота солнечной панели.

Алексей Бартош

Шаг №3. скетч для arduino

После подключения к Arduino платы MPU-6050 необходимо загрузить скетч I2C scanner code, куда вставляется код программы. Обратим внимание, что на этом этапе пригодятся хоть минимальные познания в программировании на Arduino, поэтому при отсутствии даже них стоит сделать небольшую паузу и разобраться с особенностями.

I2C scanner code для Arduino

Теперь откройте серийный монитор Arduino IDE (он находится в разделе Tools на вкладке Serial Monitors) и убедиться в наличии подключенного 9600. Если все предыдущие этапы были выполнены верно, то будет обнаружено устройство I2C с присвоенным адресом 0х69 или 0х68, который нужно записать.

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

Теперь обязательно откройте файл MPU6050_DMP6. Если у вас был присвоен адрес 0х69, то обязательно нужно расскоментировать строку после #includes, так как по умолчанию присваивается 0х68. На этом этапе уже можно получить первые значения с гироскопа и акселерометра. Для этого загрузите программу и откройте с 115200 окно серийного монитора, следуя дальнейшим инструкциям.

Arduino гироскоп

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

Оцените статью
Радиокоптер.ру
Добавить комментарий