Заметка о полетном контроллере Flip32 Mini

Начал делать первые шаги в коптеростроительстве, после экспериментов с MultiWii и Arduino Pro Micro решил заказать мелкую легкую платку с STM32. По моему скромному опыту, из датчиков достаточно датчика угловых скоростей, акселерометра и барометра. Порывшись в интернетах нашел дешевую платку Flip32 Mini за $22.

Краденое в интернетах изображение Flip32 Mini

На борту STM32F103CBT6, CP2102, MPU6050 и MS6511. Получил посылку, подключил к USB. Конфигуратор Baseflight-а сразу подключился и начал отображать данные с датчиков. Данные были нестабильные постоянно плыли, причину долго искать не пришлось — значительный нагрев платы. Плата маленькая и точно определить источник нагрева тяжело, где-то в районе процессора. Снял феном процессор — потребление тока упало с ~100 мА до ~4 мА.

Подумав, что бракованный процессор, запаял на его место STM32F103C8T6, ROM у него 64 кБ, но мы-то знаем… Прошивка размером ~86 кБ отлично влезла и работала, но все равно плата грелась. Попутно заменил токоограничивающие резисторы светодиодов со 100 Ом на 5 кОм для синего и 1 кОм для остальных. После этого значительно приятнее стало смотреть в сторону платы и потребление тока снизилось на 20 мА. Несколько раз феном отпаивал процессор — искал КЗ. Ничего не нашел. Подключил ST-link по SWD и начал дебаг. Потребление резко возрастало после этой строчки:

#ifndef CJMCU
    if (spiInit() == SPI_DEVICE_MPU && hw_revision == NAZE32_REV5)
        hw_revision = NAZE32_SP;
#endif


В функции spiInit() настраивается ножка PB13 на выход для работы SPI с активным низким уровнем.

// MOSI + SCK as output
gpio.mode = Mode_AF_PP;
gpio.pin = Pin_13 | Pin_15;
gpio.speed = Speed_50MHz;
gpioInit(GPIOB, &gpio);


По схеме этот вывод подключен к выходу прерывания MPU6050.

Схема Flip32

STM32 тянет к питанию, а MPU6050 тянет к земле так как настроено прерывание по окончанию преобразования:

// Data ready interrupt configuration
mpu.write(MPU_RA_INT_PIN_CFG, 0 << 7 | 0 << 6 | 0 << 5 | 1 << 4 | 0 << 3 | 0 << 2 | 1 << 1 | 0 << 0);  // INT_RD_CLEAR_DIS, I2C_BYPASS_EN
mpu.write(MPU_RA_INT_ENABLE, 0x01); // DATA_RDY_EN interrupt enable


Самый простой способ решить проблему для меня — закоментировать функцию поиска SPI-периферии, так как SPI-девайсов на этой плате нет, но тогда при обновлении прошивки через конфигуратор из репозитория опять будет проблема. Жизнь заставила поступить жестко — отломал PB13 (вывод 26), совсем. Можно было акуратно перезать дорожку. Судя по коду и схеме такая проблема должна быть на всех подобных платах (Flip32, Naze32 и др.), но в интернетах ничего не нашел по этому поводу.

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

В конечном итоге впечатление от железки двоякое, с одной стороны — маленькая дешевая, с другой — косячная и требует обработки напильником. Изначально хотел сам разработать нормальную плату и заказать на том же seeedstudio, но экономически целесообразней посчитал заказать готовый вариант и, похоже, зря. Скорее всего, придется делать и заказывать.
  • +3
  • 11 сентября 2015, 19:42
  • zxczxcs
  • 1
Файлы в топике: FLIP32.png

Комментарии (17)

RSS свернуть / развернуть
Нафига там CP2102, интересно. У 103-го ж есть собственный USB.
0
  • avatar
  • Vga
  • 12 сентября 2015, 06:22
для совместимости
0
  • avatar
  • xar
  • 12 сентября 2015, 15:07
Совместимости с чем? CDC-COM можно прямо на МК сделать.
0
  • avatar
  • Vga
  • 12 сентября 2015, 21:30
Прошивка baseflight этих плат — это порт прошивки multiwii с arduino, думаю, так было проще. Плюс можно использовать встроенный бутлоадер. Но встречаются платы и без моста.
0
Есть Afroflight naze32 rev5, схемы на неё в сети не видел, есть только на 4 ревизию, и при прозвонке от 4 ревизии есть отличия — MPU_INT подключен к PC13, а PB13 подключен к SPI-флешке, которая только в 5 ревизии появилась.
Что касается датчиков то чтоб летал и одного MPU6050 достаточно, а вот если захочется GPS режимов то тут уж полный набор нужен. Впрочем магнитометр и без GPS интересен, как его в воздухе повернул так он туда и смотрит как вкопаный. А вот сонар в ввиде HC-SR04 как оказалось фигня полная, стоит запустить двигатели как его показания превращаются в мусор, как его от вибраций не изолируй.
+2
  • avatar
  • mChel
  • 12 сентября 2015, 23:41
Сейчас получаю опыт на мелком коптере, магнитное поле коллекторных движков очень сильно влияет на магнитомер и в достоверности его показаний я не уверен. Если соберусь делать свою плату, то заложу возможность установки MPU9250 — датчик угловых скоростей, акселерометр и магнитомер в одном флаконе.
0
Да, коллекторники мешают, впрочем и с бесколлекторниками не всё так гладко, по силовым проводам между аккумулятором и регами гуляет довольно большой ток, и если это не учитывать то компас тоже врать будет.
0
А нет способа эффективно экранировать датчик от двигателей и проводов?
0
Экранировать постоянное магнитное поле можно только ферромагнитными материалами, железом например, но оно и поле земли будет экранировать, так что не вариант. Рядом с компасом даже стальные винтики использовать не желательно — искажают поле. Скручивание силовых проводов в витую пару частично помогает, но не работает если компас находится на расстоянии сравнимом с шагом повива, а толстые провода с маленьким шагом не скрутить. Но есть кабель вообще не имеющий вокруг себя магнитного поля какой бы ток по нему ни шёл. Видели конструкцию кабеля мощной зарядки от ноутбука, ампер на 5? Там проводники расположены коаксиально, что и даёт отсутствие поля снаружи. Правда я даже не представляю где можно такое купить, но сделать довольно легко. Я взял провод на 1.5 квадрата, сверху натянул медную оплётку от радиочастотного коаксиала в два слоя что дало аналогичное сечение, и поверх всего усадил термоусадку. И никакого магнитного поля.
+3
проводники расположены коаксиально, что и даёт отсутствие поля снаружи.
А что если расположить провод внутри конструкции? Допустим, коптер имеет «традиционную» конструкцию, состоящую из металлического профиля. К нему мы подключаем "-", а "+" засовываем внутрь профиля. В итоге получается что-то подобное коаксиалу. Или не проканает?
0
Да вобщем работать должно, только есть сомнения в надёжности контакта меди с алюминием, ну и всё равно основная проблема это поле вблизи магнитометра, он как правило расположен в центре, а там профилей уже нет и идёт разводка от батареи к лучам. Кстати как выяснилось довольно сильное и протяжённое по объёму поле создаёт аккумулятор, вот что с ним делать хз.
0
Кстати как выяснилось довольно сильное и протяжённое по объёму поле создаёт аккумулятор, вот что с ним делать хз.
Сделать из него тоже коаксиал!
0
Пардон, а продолжение будет? Очень интересно почитать о остальных компонентах пепелаца.
+1
Если будут встречаться какие-либо не очевидные вещи, то буду стараться выкладывать их описание.
Коптер я собираю не спеша, для собственного удовольствия. На данный момент забрал с почты пару регуляторов Turnigy Plush-6A и пару моторов HexTronik 1811. Прошил регулятор прошивкой BLHeli и рассказывать тут нечего, так как сам делал по описанию из интернетов. Подобные вещи пережеваны бесконечное количество раз и не думаю, что стоит повторяться.
0
Кто-нибудь знает, где вообще можно найти либо уже готовые провода под такие разъемы, как на плате, либо же ответную часть с клемами (не так сложно, в общем-то, сейчас поискал — и получилось) и клещи для обжимки таких проводов?
0
На плате два типа разъёмов, тот который вертикальный с тремя контактами — стандартный для спектрумовских сателитов, у него шаг 1.5мм, остальные плохо видно, но на аналогичной плате стояли с шагом 1.25, китайский аналог серии picoblade от molex.
Провода под такие разъёмы видел както на алиэкспрессе. Сами разъёмы с контактами тут тут. В китае тоже покупал, но там мешками по 50шт и больше.
Если видел где дешёвую обжимку для них — поделись наводкой, то чем я их на работе обжимаю стоит более $300.
0
Разъемы гуглить по названию «JST-SH», шаг 1 мм.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.