Квадрокоптер на основе Maple Mini

z1rqdym
Вторник 18 августа 2015 2:08
Всем привет!

Около двух лет я исследовал о мультикурсах и читаю много аэродинамики мухи в теории.
Итак, я узнал все об этом.

Теперь я хотел бы заняться практикой в ​​реальном мире, и у меня было много проблем и проблем в нем.

Я программирую около девяти лет на 8-битной Microchip pic18f/16f MCU, ассемблер или любого языка не имеет значения для меня, CCS C для 16F, Hi-Tech C для серии 18F.
Я создаю много проектов с этим MCU.

Таким образом, для квадрокоптера или любых многоотражных проектов Microchips MCU действительно плохи для этого, 16-битный Pic24 и DSPIC тоже тоже!

В любом случае
Я хочу;
1-) генерировать сигнал ШИМ 250 Гц и изменить поклонник сигнала ШИМ между 1000US-2000US.
2-) Чтение на основе оборудования I2C несколько датчиков (BMP180, MPU6050 или L3G4200D, HMC5338)
3-) USART/UART с HC-05 Bluetooth Module @9600BAUD (не более высоким или медленным!)
4-) Двойные переменные типа и плавания, используйте в разделении и умножьте математику даже SIN COS COS ATAN и ATAN2 Расчеты.

Это возможно с STM32DUINO?
Я купил мини -доску Baite Maple. Я знаю, что это клон, но он работает хорошо.

Я действительно узнаю Keil или IAR для STM32, но у меня больше нет времени, чтобы закончить свой проект.

Большое спасибо :) И извините за мой плохой английский:/

Rogerclark
Вторник 18 августа 2015 г., 4:45
z1rqdym написал: Я хочу;
1-) генерировать сигнал ШИМ 250 Гц и изменить поклонник сигнала ШИМ между 1000US-2000US.
2-) Чтение на основе оборудования I2C несколько датчиков (BMP180, MPU6050 или L3G4200D, HMC5338)
3-) USART/UART с HC-05 Bluetooth Module @9600BAUD (не более высоким или медленным!)
4-) Двойные переменные типа и плавания, используйте в разделении и умножьте математику даже SIN COS COS ATAN и ATAN2 Расчеты.

Mrburnette
Вторник 18 августа 2015 12:07
На нескольких поисках показано видео на YouTube с четырехлокожным stm32f103, а также ссылки на собранные доски;
http: // www.DX.com/p/9dof-stm32f103-mpu6 ... DMDTLK6C1I

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

https: // www.YouTube.com/watch?v = gmpcwhhhtka0 Плата управления использует STM32F103C8, работающий на 48 МГц в качестве основного процессора и MPU6050. Скорость дискретизации MPU6050 Accel и гироскопии составляет 500 Гц, а контроллер PID - 200 Гц. Из-за ограничения +-40 градусов склона, иногда квадрокоптер не может оправиться от драматической ситуации. Резать & Вставьте из нескольких ссылок Google:

OpenPilot: http: // www.rcgroups.com/forums/showthread.PHP?T = 2456739

Firstwares в настоящее время работает на эту «доску»:

BaseFlight: http: // www.Multiwii.com/forum/download/file.PHP?ID = 3364

Чистое поле: https: // github.com/cleanflight/cleanfli ... _Cjmcu.гекс

z1rqdym
Ср 19 августа 2015 г. 8:23
Спасибо всем ваш ответ :)

STM32F103 в порядке для моего проекта в критиках времени. это больше не проблема. i2c есть также какая -либо проблема.
Но в ШИМ я все еще в проблеме.

Я ищу много вещей об изменении периода ШИМ в библиотеке сервоприводов, это довольно легко на Arduino Uno из-за 8-битной архитехтуры MCUS Atmel. Но когда я пытаюсь изменить период в библиотеке сервоприводов с STM32, я запутался в том, что там измениться. Потому что это кажется одной и той же серво -библиотекой в ​​каждой Atmega и STM32.

Есть ли кто -нибудь, чтобы сделать это полезным для всех, чтобы изменить период и DutyCycle на PWM?

Я буду использовать выход ШИМ для управления ESC. Библиотека сервоприводов по умолчанию имеет 100 Гц (20 мс) ШИМ. Но 20 мс для многооттротного управления очень медленное. Мне нужно по крайней мере 250 Гц, чтобы запустить ESC для лучшего обновления скорости двигателей.

Mrburnette
Ср 19 августа 2015 12:34
z1rqdym написал: <...>
Я буду использовать выход ШИМ для управления ESC. Библиотека сервоприводов по умолчанию имеет 100 Гц (20 мс) ШИМ. Но 20 мс для многооттротного управления очень медленное. Мне нужно по крайней мере 250 Гц, чтобы запустить ESC для лучшего обновления скорости двигателей.

z1rqdym
Ср 19 августа 2015 г. 13:00
это то, что я хочу, спасибо :)

z1rqdym
Чт 20 августа 2015 г., 19:02
Я написал немного кода, и теперь я могу управлять своим ESC.

Я использовал HC-05, чтобы увеличить и уменьшить DutyCycle.

Сначала я настраиваю аппаратный таймер и выбираю Timer2 и их PWM -контакты, как в описании PIN -кода, булавки 11,10,9 и 8.

Код:
HardwareTimer timer( 2 ); byte b=0; uimt16 DUTY=14484; void setup() { pinMode(11, PWM); pinMode(10, PWM); pinMode(9, PWM); pinMode(8, PWM); timer.pause (); timer.setPeriod (4000); timer.refresh (); timer.resume (); Serial1.begin (9600); Serial2.println("DUTY++ | DUTY-- "); } void echoCharacter () { int numUnread = Serial1.available(); if (numUnread > 0 ) { b = Serial1.read (); Serial2.println(b); } if ( b=='a' ) { DUTY=DUTY+100; b='\0'; } if ( b=='b' ) { DUTY=DUTY-100; b='\0'; } } void loop () { echoCharacter (); pwmWrite (11, DUTY); pwmWrite (10, DUTY); pwmWrite (9, DUTY); pwmWrite (8, DUTY); }

Эниф
Чт 20 августа 2015 г., 21:07
Я не думаю, что если вы манипулируете таймером напрямую, вы все равно можете предположить, что стандартная функция ШИМ остается незатронутой. Фактически, один таймер служит до 4 каналов ШВМ, поэтому манипулирование одним периодом таймера может вызвать проблемы в других 3 штуковинах, разделяющих один и тот же таймер.

Тем не менее, я думаю, что в вашем примере таймер больше не будет учитываться от 1 до 65535, но, по какому -то меньшему значению, которое вы можете прочитать обратно таймер.GetOverflow (). То, как я это понимаю, это значение теперь соответствует 100% -ному рабочему циклу вместо 65535, поэтому таймер.GetOverflow ()/4 Должен получить рабочее цикл 1 мс с сигнала 250 Гц.

Если 250 Гц не критичны, вы, возможно, просто изменить значение предварительного выкала канала, как предложила Mrburnette, без изменения периода. Тогда вы все равно можете предположить, что 65535 счетов будут соответствовать 100% -ному рабочему циклу.

z1rqdym
Пт 21 августа 2015 г. 9:35 утра
На форуме Leaflabs я нашел тему об изменении частоты. В последнем ответе говорилось: «Ширная работа = 72 МГц / (prescale * переполнение)»

Также на Leaflabs Mapple Wiki есть тема Hardwaretimer. Под там объясняются эти вещи, такие как Setoverlow и SetPrescale Fonctions, как использовать. Инструмент этих фьюминций тоже есть еще один фонцион, функция SetPeriod. Эта функция автоматически устанавливает значения Prescale и переполнения по сравнению с тем, что я дал в значении SetPeriod в микросекундах.

Когда я меняю линию в таймере.SetPeriod (4000) к таймеру.SetPeriod (8000), PwmWrite () Duty - это то же самое 14484, ESC входят. ESC входят только при вводе DITE 2MSEC DUITH. Так кажется, я получил правильную обязанность и период от Maple Mini. Но я не уверен, что из -за того, что я рассчитываю, 14484, если нужно около 16000 ~.

Я попытаюсь прочитать таймер.Значение Setoverflow.
Я понимаю, что значение пошлина pwmwrite () должно равняться или меньше, чем таймер.значение setoverFlow ().

Эрни
Пт 21 августа 2015 г. 10:49
Я только что попробовал ваш эскиз и таймер.Значение GetoverFlow () равно 57600

Итак, pwmwrite (9,14400);

Дает 1 -мс импульс, который я подтвердил на своем логиканализере

Mrburnette
Пт 21 августа 2015 12:34
Эрни написал: <...>
Дает 1 -мс импульс, который я подтвердил на своем логиканализере

ZMEMW16
Пт 21 августа 2015 г., 19:42
Полученное
Мой - это открытый логический подхишающий.
Это банальный, но картина стоит тысячи строк информации отладки
Стивен

Rogerclark
Пт 21 августа 2015 г., 21:10
Я полагаю, это зависит от вашего бюджета и того, над чем вы собираетесь работать.

Я бы порекомендовал область предпочтения логическому анализатору.
У меня есть DSO с 16 -канальным логическим анализатором, но в 90% случаев мне не нужно подключать и настраивать модуль логики.

Для SPI и I2C двойной канал DSO может просматривать часы и данные, достаточно подробно, чтобы выяснить, что вы делаете неправильно.

Кроме того.

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

Martinayotte
Пт 21 августа 2015 г., 22:29
Если ваш бюджет ограничен, вы можете получить такую ​​дешевую доску/устройство, как они:

http: // sigrok.org/wiki/lcsoft_mini_board
http: // sigrok.org/wiki/armfly_mini-logic

Все они какое -то какое -то клоны Saleae.
Затем установите Sigrok, Sigrock-Cli и Pulseview, вы сможете сделать логический захват при низкой стоимости. :)

z1rqdym
Пт 21 августа 2015 г., 23:08
Эрни написал:Я только что попробовал ваш эскиз и таймер.Значение GetoverFlow () равно 57600

Итак, pwmwrite (9,14400);

Дает 1 -мс импульс, который я подтвердил на своем логиканализере

Mrburnette
Сб 22 августа 2015 13:45
Rogerclark написал: <...>
Для SPI и I2C двойной канал DSO может просматривать часы и данные, достаточно подробно, чтобы выяснить, что вы делаете неправильно.
<...>

z1rqdym
Солнце 23 августа 2015 г., 19:18
Я студент :) Я в Турции Электроника действительно дорогая. Я хотел бы купить осцилограф, чем логический анализатор. Но это очень дорого, логиканализер, как в ответах в этой теме в Турции, они не на рынке. Я люблю читать листы для данных, я могу понять это нормально. Но в реальной жизни это немного по -другому. И о моих экономических вопросах, потому что я спрашиваю только что -то на форумах только по этой причине, и еще раз спасибо за все интересы и ответы :) Но я сделаю один из этих логических анализатора, который был выше в сообщениях.

Nulldragon
Пт 11 сентября 2015 г. 2:25 утра
Кажется отличным проектом.
Я планирует сделать что -то подобное, когда смогу получить свободное время.

Пара вещей, которые вы можете изменить.
MPU9150 устарел, используйте MPU9250 вместо этого, он в том же упаковке, но имеет некоторые незначительные улучшения и несколько изменений в PIN.

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

Шир. Это может помочь вам с некоторыми из ваших петлей времени, а также сделать ваши двигатели более отзывчивыми. (Альтернативно 400 Гц скорость Simonk Swerted ESC более отзывчива, чем скорость акций 200 Гц)

Еще один момент, если вы смотрите на приемники, посмотрите на CPPM, это аналоговый протокал, который поддерживает 8 RX -каналов на 1 проволоке.

victor_pv
Пт 11 сентября 2015 г. 5:47 утра
z1rqdym написал:Я студент :) Я в Турции Электроника действительно дорогая. Я хотел бы купить осцилограф, чем логический анализатор. Но это очень дорого, логиканализер, как в ответах в этой теме в Турции, они не на рынке. Я люблю читать листы для данных, я могу понять это нормально. Но в реальной жизни это немного по -другому. И о моих экономических вопросах, потому что я спрашиваю только что -то на форумах только по этой причине, и еще раз спасибо за все интересы и ответы :) Но я сделаю один из этих логических анализатора, который был выше в сообщениях.

z1rqdym
Пт 11 сентября 2015 г. 15:28

Посмотрите на клоны Saleae в Aliexpress или Ebay. Они очень дешевые и определенно стоят затрат. У меня есть тот, который я использовал, возможно, 3 раза, но часы, которые он спасает меня в 3 раза больше, чем за это заплатил.
Спасибо за ваш совет. Мне это понравилось, и купил клон Saleae, и это хорошо работает :)

Furkancetin
Солнце 20 сентября 2015 г. 9:16 утра
В еще двух постах я упомянул о Клен и STM32F103 Совместимые доски. Двое из них подходят для вас, так как они дадут вам как время, так и стабильность в вашем проекте. STM32F103 Совместимые платы управления полетом появляются все больше и больше на рынке.
Flymaple ( Ссылка продукта )

Если вы собираетесь интегрировать 10DOF IMU в свой проект, почему бы вам не использовать Flymaple для прототипа. Быстрое переход к кодированию даст вам некоторое время. У меня была эта доска, и она так хорошо спроектирована и производилась. Считайте это как совет по развитию, если вам нужен IMU Stuff! (+ Доступен демонстрационный код)

Afroflight Naze32 ( Ссылка продукта )

Мне нравятся эти маленькие доски STM32 в сочетании с датчиками IMU. Это один из самых маленьких с 36 х 36 мм и 5.3 гр! STM32F103CB используется с MPU6050. Не припаянные булавки доступны для работы с. RTC не включен.

Джонбой
Ср. 07 марта 2018 г. 14:41
В настоящее время я использую Maple Mini Baite для своего квадрокоптера.
На кадре у меня есть Maple Mini, подключенный к NRF24 для связи с передатчиком, два MPU6050 для измерения угла (DMP для шага и рулона и гиросероп Измерение высоты ультра измерения ниже 300 см.
Я написал свои собственные подпрограммы PID.
Я также построил передатчик на основе Maple Mini и RF24
Я использовал аппаратные таймеры 1 и 3 с адаптированными настройками для импульсов ESC 490 Гц.

Автоматизированное выравнивание высоты находится в стадии строительства/константы PID с тонкой настройкой.
Только рисование - это тот факт, что таймеры Hardwire иногда прекращают функционировать, обновление и резюме используются, чтобы начать их снова, но я не смог обнаружить причину этого последнего выпуска

Джонбой
Ср. 07, 2018, 17:13
Что касается последнего замечания о том, что выходы ШИМ не функционируют: я прислушиваюсь к одному из выходов и использую в качестве прерыва Порог, я просто обновляю и перезагружаю торговые таймеры аппаратного обеспечения.
Это не самые элегантные решения, но это помогает сохранить квадрокоптер : D
Если кто -то видел это поведение раньше и получил решение, мне очень интересно услышать/увидеть его.

3.97 Большой дисплей 240x400 ST7793

Синусоидальный генератор