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

Маркс

посвятил пол дня поиску косяка, повторил схема на макетке

и пронаблюдал траблу на осциллографе.

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

на макетке купировать удалось, скорее всего не на 100 процентов,
но процентов 85 помех не пропустить на вход МК удалось,
а это значит, что количество ошибочных данных уменьшится на порядок.

Маркс

ну и вот, на выходе имеем первое приближение

Гувернер на базе Ардуино Нано.
Датчик оборотов пока собран на макетной плате.
Требуемые обороты в программе указываются в оборотах/минуту.

В программе установлено две полки оборотов, 2000 и 3000.
После старта гувернеру передается команда на установку оборотов 2000 об/минуту,
через пять секунд посылается новая команда - 3000 об/мин
и еще через пять секунд новая команда - 2000 об/минуту.
Все остальное делает программа.

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

Сегодня поменяю конденсаторы на прототипе кросс платы и она должна заработать так же )

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

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

Маркс

в общем прототип тоже работает,
осталось причесать программу и можно встраивать в таймер

Маркс

рисую новую версию кросс-платы, появился вопрос.
может стоит на плате разместить кнопку управления и пару светодиод для индикации ?
пока на плате место есть

VitalikV

Пару диодов можно, а вот кнопку, которая со временем начнет звинеть, думаю не надо…

Маркс
VitalikV:

которая со временем начнет звинеть,

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

VitalikV

А зачем эта кнопка нужна на кросс плате? Есть штатная кнопка на ардуино. Так же кнопка нужна на корпусе модели, тем более если модель объемная и мотор под капотом.

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

VitalikV

Кстати на счет акселерометра, может имеет смысл, на кросс плате разместить место для него, вместо кнопки. Акселерометры периодически всплывают в продаже на али.

А вот гироскоп наверное имеет смысл размещать по центру тяжести модели. Хотя и не обязательно.

Маркс
VitalikV:

А зачем эта кнопка нужна на кросс плате? Есть штатная кнопка на ардуино.

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

VitalikV:

отключения гироскопа, гувернера

режим без GYRO и GOVER будет, как и без одного из них,
но предстоит разобраться с логикой

VitalikV:

Кстати на счет акселерометра

MPU6050 - это 3-х осевой гироскоп + 3-х осевой акселерометр

VitalikV:

А вот гироскоп наверное имеет смысл размещать по центру тяжести модели.

нет никакого смысла, его задача угол тангажа измерять не более того

VitalikV
Маркс:

MPU6050 - это 3-х осевой гироскоп + 3-х осевой акселерометр

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

Не факт, что гироскоп в полете заработает правильно… Ибо его еще надо правильно по осям установить. Или в программе пофиг , по какой оси меняется угол?

Маркс
VitalikV:

Или в программе пофиг , по какой оси меняется угол?

до гироскопа еще доберемся, в стоковой версии устройства он должен стоять по осям X/Y/Z.
изменение положения не предусматривалось

VitalikV

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

Или как то калибровку гироскопа делать…

Маркс

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

Маркс

Плату нарисовал, завтра распечатаю, вытравлю и буду паять

Слева внизу SMD кнопка и SMD светодиод пусть будут, справа J3 и J4 место подключения MPU6050

Маркс

У меня есть только две платы Pro Mini
По порядку слева 8MHz 3.3V и вторая 16MHz 5V.

На третью можно внимания не обращать, это гироскоп.

Так вот косяк в том, что платы отличаются расположение контактов A4/A5,
а это выходы для подключения i2c в том числе и гироскопа.
Прототип сделан для установки как раз на первый тип Про Мини,
но 3.3V питания и 8 МГц это не то, что нужно.

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

VitalikV

Сразу под 5В, так как BEC на регуляторе обычно от 5В и выше. Сейчас на более свежих регуляторах уже переключаемый SBEC на 5В/6В. Так что , ардуино, с питанием ниже 5В , не имеет смысла покупать для наших целей.

У меня например, плата Iskra mini, там вообще другое расположение контактов, но есть вход питания до 9В.

Может имеет смысл нарисовать две платы, одну под ардуино про мини 5В, а вторую чисто под шлейф, тем самым не привязываться к конкретному типу Ардуинки, расположению контактов на ней. Распаял шлейф как надо и полетел. И так же это даст возможность размещать кросс плату в любом удобном месте на модели, отдельно от ардуинки.

Маркс
VitalikV:

Сразу под 5В, так как BEC на регуляторе обычно от 5В и выше.

5В на Ардуино это питание микроконтроллера шина VCC, сама Аруина может питаться от 9В шина RAW,
а может даже и больше.
Трабла с 3,3В питания МК в том, что тактовая частота сразу ниже в два раза.
А кроме того, на VCC платы 3.3V, а их будет мало для питания модуля MPU6050
и не совсем понятно, что будет с конвертором, хватит ли ему питания 3,3В,
но это не страшно, достаточно просто проверить на макетке, подав на ОУ питание 3,3 В ))

VitalikV:

плата Iskra mini

от моей платы которая на 5В отличается сдвигом A4/A5 на один шаг, это минимум изменений.

VitalikV:

вторую чисто под шлейф

нет в этом большого смысла. слишком широкий шлейф получится

  • RAW - питание
  • GND - земля
  • VCC - 5V питание кросс платы
  • SDA - i2c
  • SCL - i2c
  • INT - i2c
  • D2 - прерывание от кросс платы
  • D9 - PWM от Ардуино на регулятор

Итого восемь проводов и это не считая сигналов индикации и управления,
которые всяко придется прикручивать либо к Ардуино либо к кросс-плате.

Это точно не мой путь )), проще кучку разных плат развести в EasyEDA, под разные Ардуинки, хоть под Нано

VitalikV

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

Тогда и для жесткого монтажа, под любую ардуину, нужно будет развести всего 3 контакта.

Маркс

кто то на кросс плате должен будет этот интерфейс обеспечить ))
тогда сразу надо Мегу или STM32 на нее поставить )),

VitalikV

Ну этот интерфейс можно обеспечить например на Атини 10, размером с smd транзистор, а основные вычисления отдать Ардуинке.

Я просто к тому, что раз уж паять плату с нуля, то какая разница, что на нее паять, хоть процессор от Интел)))