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

Маркс

на работе “дело было вечером, делать было нечего”(с)

прикинул в первом приближении как может выглядеть таймер в одноплатном варианте
слева ATMEGA328P, справа MPU6050, нижний левый разъем на регулятор, правый для программатора.
это так со скуки нарисовал, выдалось пол часика свободного времени, а ардуинки под рукой не было ).
но на этом макете отсутствует стабилизатор напряжения на 3,3В,
что бы не загонятся вопросом согласования уровней
и кварца, но без него думаю вполне можно обойтись.
опять же, кнопки режимов и индикатора (с/диод) показывающего, что все включено ))

но в этом решении есть подводные СКАЛЫ, ATMEGA328p и MPU6050 отдельными камнями,
стоят на Али дороже чем готовые платы Ардуино Мини и GY521

VitalikV
Маркс:

ATMEGA328p и MPU6050 отдельными камнями,
стоят на Али дороже чем готовые платы Ардуино Мини и GY521

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

RandomJ
Маркс:

ATMEGA328p и MPU6050 отдельными камнями,
стоят на Али дороже чем готовые платы Ардуино Мини и GY521

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

Маркс
VitalikV:

а плюс еще обвес и платы где то заказать, одну две штуки делать никто не будет.

JLCPCB изготовит и отправит от пяти штук в двухстороннем исполнении.
обвес стоит совсем копейки, рублей на 15 в том виде как на картинке.

Да все понятно, это так, от нечего делать )

Маркс

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

VitalikV

Вот как раз вопрос стоит ухода от процентов, милисекунд и прочего, и привидение в читаемый вид. Так как не понято 10 000 оборотов, это сколько в процентах… . Если есть возможность использовать точные велечины, то лучше оставить их. Т. Е. Если я знаю, что мой винт работает в диапазоне от 10 до 12 тысяч, то на таймере выставляю 11 и дальше либо добавляю, либо убираю. И по времени так же, на полет у меня 6минут 15 секунд, их и выставляю, потом меняю в нужную сторону. Выщитывать проценты и милисекунды , ну очень не удобно.

Маркс

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

Пока речь идет только о длительности сигнала PWM либо о процентах от длительности.
Сейчас в скетче за базу взяты 2200 мкс для максимальных оборотов и 800 мкс для минимальных,
от этих значений калибруется регулятор.
Вот проценты от тех самых 2200 и будут меняться

Примерно обороты можно посчитать
3S 12В 1200кВ 80%
1200 х 12 х 0.8 = 10560, но это число совсем не точное, батарейки разные, реальное напряжение тоже
А дальше, в руках, дождались запуска, измерили обороты тахометром получилось например 11000
внесли поправку 0,9 и опять измеряем.

Но все равно должно быть меньше 1, потому как при увеличении тангажа таймер будет увеличивать обороты до максимальных

RandomJ
Маркс:

Пока речь идет только о длительности сигнала PWM либо о процентах от длительности.
Сейчас в скетче за базу взяты 2200 мкс для максимальных оборотов и 800 мкс для минимальных,
от этих значений калибруется регулятор.
Вот проценты от тех самых 2200 и будут меняться

Стандарт сигнала PPM от 1000 до 2000 мкс. от этого и надо плясать. Не все регуляторы понимают расширенный диапазон. В ардуиновской библиотеке “servo” диапазон ещё шире, по этому при подключении ESC вместо сервомашинки иногда возникает вопрос: “А почему не жужжит”. Об этом я писал в 16 сообщении этой темы.

Маркс

Это не сильно принципиально, границы максимум-минимум задаются в скетче Таймера
Собственно говоря, отсюда и возникло желание уйти от абсолютных значений в сторону относительных )
“Зеленый змей” победил желание поработать.

RandomJ:

в 16 сообщении этой темы.

16 сообщение было в те времена когда мой аккаунт был забанен

вопрос остался открытым, против относительных значений возражений нет ?

VitalikV

О том и речь, высчитывать параметр ниже 1, не совсем удобно. Как и проценты. Да и сами обороты понятно что относительны, просто в этих оборотах шкала регулировки получается удобнее. Например, я выставил 11000, померил тахометром , 10500, я взял в программаторе, еще 500 добавил. Мне не надо высчитывать 0.80 или 0.85, или 0.90. Я докинул еще 500 и плюс/минус попал в свой диапазон.

Маркс
VitalikV:

Например, я выставил 11000

так сейчас и нет никаких 11000, есть диапазон 800-2200
в любом случае, все что не длительность PWM будет оставаться попугаями,
пока не будет датчика оборотов
может стоит добавить в постоянные кВ мотора и количество банок АК и тогда высчитывать обороты
и от них плясать, но вопрос - а оно надо ?
тут же опять подводные камни, на модели в руках будут одни максимальные обороты,
в горизонтальном полете они будут совсем другими, а на горке третьи

VitalikV

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

И не всегда надо выкрутить мотор в максимальные его обороты, мотор может выдать и 13000, а надо 12000, и это максимум для гироскопа.

Маркс

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

Маркс

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

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

RandomJ

Примерно так я и предлогал, когда писал, что для контроля оборотов брать сигнал с одной из фаз на выходе регулятора.
Ещё один вариант реализации тахометра , но с датчиком Холла.
alexgyver.ru/tahometer/

RandomJ

ещё из разряда “хотелок” добавить возможность управления 2-4 моторами и получим таймер для моделей-копий.

VitalikV

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

Один таймер на 2 мотора, если только захотите сделать, двухмоторную пилотажку, в Америке народ так развлекается.

Маркс

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

RandomJ
VitalikV:

если только захотите сделать, двухмоторную пилотажку

Есть такая задумка… но пока только задумка.

Маркс

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

    data[i][0] = Stack[i]/1000;
    data[i][1] = (Stack[i]-data[i][0]*1000)/100;
    data[i][2] = (Stack[i]-data[i][0]*1000-data[i][1]*100)/10;
    data[i][3] = (Stack[i]-data[i][0]*1000-data[i][1]*100-data[i][2]*10);

а потом все опять в кучу при записи 😄

ладно, поплакался … полегчало … продолжу )

завтра на полетушки, к вечеру попробую “причесать” но без обмена,
пока не понимаю, как его реализовать, есть одна задумка, но … дъявол в деталях.
я не могу программатор сделать ведущим i2c, а будучи ведомым он не может давать команды таймеру,
думаю передавит таймеру байт команды, типа готов принимать/передавать,
таймер приняв байт - смотрит и либо отправляет пакет с параметрами либо принимает,
на макетке между двумя UNO вроде работает, а дальше… посмотрим