Контроллер для кордовых электричек

RandomJ

где то в соседних ветках про него писалось, что при падении двигатель таймером не отключается.

VitalikV

Пал_Николаевич, скинул вам ссылку на программу, на ватсапп.

Маркс

надо читать мануал, но что то мне подсказывает,

что изменение настроек производится командами через BT-терминал.
А их надо смотреть в мануале

Маркс
VitalikV:

только регулятор видит, вклинил мотор или нет.

кста, про это тоже надо задуматься, если мотор остановился, то полный “стоп” управления.
реализуется достаточно просто

VitalikV

Функцию отключения при закливании, имеют только KR Governor Timer и Climb and Dive таймер, они имеют прямую связь с мотором и понимают, работает мотор или нет.

VitalikV
Маркс:

кста, про это тоже надо задуматься, если мотор остановился, то полный “стоп” управления.
реализуется достаточно просто

Где то в теме уже говорили об этом, но тогда занимались гувернером и отложили вопрос, а так функция очень нужная!

RandomJ
Пал_Ник:

В гуглплеи программу найти не могу…

Serial Bluetooth Terminal

Маркс
RandomJ:

Serial Bluetooth Terminal

все таки я угадал )

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

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

karmann

Обязательно в телефоне включить разрешение подключать устройства!

ВТ терминал должен быть от Kai Morich))

karmann
VitalikV:

Нет там такой функции

Да, к курсе, что такой функции нет( Спросил как на практике происходит…

VitalikV

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

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

RandomJ

упал и периодически стучим пропеллером об планету… Это всё на откуп регулятору. Увы дешёвые регуляторы от Али функции отключения при перегрузке не имеют. Какие модели условно бюджетных регуляторов могут отключаться при блокировке мотора я не ведаю. Если кто ведает пишите.

VitalikV

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

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

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

Пал_Ник

Всем БОЛЬШОЕ СПАСИБО!!! Все получилось после переустановки программы и перегрузки телефона! Скоро в небо!!!

VitalikV
Маркс:

меня не оставляют сомнения, если есть гувернер, зачем нужен гироскоп ?

Тут наверное все зависит от гувернера, его основная задача поддерживать обороты, в диапазоне установленных.

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

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

Как я понял, на системе Бургера гувернер встроен в регулятор, и он просто обеспечивает стабильные обороты, а за перегазовки отвечает гироскоп.

В КР таймере, за перегазовки отвечает гувернер в самом таймере.

В нашем случае, я вижу два режима работы гувернера, пассивный как в регуляторе и активный как в КР таймере.

RandomJ

А схему и файлики прошивки в студию для повторения. Или это коммерческий проект?

Маркс

Сказ про то "Как вредно быть сильно умным"©

Маркс:

А пока оптимизировал уже написанный код, но ошибку так и не вывил, а без “визуализации” сложно.

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

Оказывается аккумуляторы иногда надо заряжать, хотя бы раз в месяц ))
их у меня целых три и все три оказались посажены до 3В/банка.
И при попытке гувернера увеличить оборотов регулятор просто уходил в отсечку.

у меня просто нет слов (((

а я уже половину программы гувернера переписал в поисках логической ошибки.

поставил на заряд кучку 2S LiPo и пошел пока “курить бамбук”.

Маркс

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

void isr() 
{
  isr_time = micros();
  isr_period = isr_time - isr_prev;
  isr_period_buffer [isr_buffer_count] =   isr_period ;
  isr_prev = isr_time;
  isr_buffer_count++;
  if (isr_buffer_count > 15) isr_buffer_count == 0;
  _isrFlag = true;
}

дрогнула рука и вместо присвоения ноля я влепил оператор сравнения с нолем.
я могу себе позволить делать “много кода” в обработчике прерываний, потому как точно знаю,
что других прерываний ПОКА не будет, но все равно, этот код из обработчика уже вынес ))
да и сделано это было в поисках ошибки, возникавшей по причине посаженных АК

теперь я его вернул к прежнему виду

void isr() 
{
  isr_time = micros();   // запомнил момент прерывания
  _isrFlag = true;          // поднял флаг
}