Контроллер для кордовых электричек
Ну вот, скрестил ежа и ужа
пока
- на макетке
- реакция только на угол тангажа, при превышении 30 градусов гироскоп поднимает обороты на 15 процентов.
но главное симбиоз работает, дальше дело за алгоритмом оценки положения модели в пространстве
дальше только “причесывание” алгоритма и доведение кросс платы.
кста, вот теперь можно делать вторую версию кросс-платы.
с кнопкой, светодиодами состояния, разъемом для программатора и прочими (а вдруг) фенечками
Надо добавить работу гироскопа на ноже, обязательно, так как на ноже угол тангажа равен нулю, но при этом модель находится на вершине сферы.
И после нажатия кнопки старта, надо сделать кратковременный пуск мотора и потом отсчет на добежать на ручку. А то лампочки не видно под капотом.
И в начале на разгоне обороты как то на много меньше полетных, надо разгон побыстрее, либо сделать обороты равным полетным, так привычнее взлетать будет.
это уже все - "про алгоритмы"©
главное гироскоп поженил с гувернером,
ну в том смысле, что они одновременно работают и друг другу не мешают.
Надо добавить работу гироскопа на ноже
там на самом деле много вопросов,
пока не совсем понятно, как определять положение модели в пространстве,
какие углы будет выдавать гироскоп в перевернутом полете,
тоже самое касается вопроса полета на ноже.
в общем буду строить “таблички и графики” ))
может придется данные акселерометра задействовать,
иначе как определить, где верх, а где низ.
но это все вторично.
потом отсчет на добежать на ручку
время “добежать” определяется в режиме программирования,
светодиод, а может даже пару, вместе с кнопкой управления
можно вообще вынести на проводах
если так стоит сделать, надо сразу предусмотреть.
хотя, я могу на плате контактные площадки сделать и при желании три провода припаять.
И в начале на разгоне обороты как то на много меньше полетных
эти обороты тоже настраиваемые,
для демонстрации я сделал маленькими, что бы разница была ощутимая,
в реале на взлете обороты должны быть выше полетных номинальных,
разогнать модель надо.
в этом режиме ни гироскоп ни гувернер не работают.
заданное время мотор отрабатывает с заданными оборотами,
а точнее на регулятор подается заданный в режиме программирования PWM
Это уже большой прогресс, так как пока только один таймер есть на котором и то и то работает.
Обычно гувернер на регуляторе, а гироскоп на таймере, а тут уже все вместе и на дешевой ардуинке, это здорово!
В общем, на днях, а может даже раньше, допилю кросс-плату,
осталось совсем не много )), собственно говоря начать и закончить (шутка 80 процентов сделано) )
и попробую собрать до кучи первый прототип.
возникла маленькая трудность.
модуль MPU-6050 лучше всего работает, если проинициализирован в горизонтальном положении.
если его в момент инициализации поставить на ребро, не очень охотно калибруется
и даже после калибровки данные сильно “плывут”.
в общем варианта два, таймер единым блоком и размещение на крыле модели горизонтально,
либо делать выносной модуль с гироскопом и индикацией.
Первый вариант мне нравится больше ), но не все потеряно, попробую разобраться, а вдруг …
Я сразу предлагал делать все отдельными модулями. 6050 есть несколько форм факторов , искать именно под кросс плату, не факт что будут в наличии. И с размещением вопросов меньше. Просто выносим гироскоп на проводах, как отдельный модуль, индикация там не нужна.
У Clim and Dive таймера, калибровка вообще веселая, как у квадрика, но только по двум осям)) Сначало в одном положении подержать, потом в другом. Благо это делается всего один раз. Оси для калибровки, можно задать программно, т.е. нет необходимости крепить его горизонтально.
у меня нет другого варианта исполнения модуля MPU6050,
да если бы был, не факт что сама микросхема была бы другой.
с осью Z у этого модуля реальные трудности,
сейчас достал из закромов полудохлый модуль GY521, у него те-же трудности.
он тоже не хочет нормально работать, если его поставить на ребро.
так что крепить все равно горизонтально.
калибровку делать каждый раз необходимости не будет.
но периодически делать калибровку все таки придется,
эти датчики реагируют на изменение магнитного поля.
У Clim and Dive
я не знаю как оно сделано у них,
я вижу, что поставленный на ребро гироскоп не правильно выдает углы по оси Z.
это та которая направлена перпендикулярно кристаллу.
при изменении угла на 90 градусов гироскоп показывает отклонение не больше чем на 45.
в принципе, если понять закономерность, можно и с такими цифрами “иметь дело”
а кроме того, данные по другим осям тоже начинают скакать, вероятно связано с модулем акселерометра
он то реагирует на ускорение свободного падения.
Я сразу предлагал делать все отдельными модулями.
Виталий, отдельные модули это куча проводов.
вот например, вынести гироскоп отдельно потребует шлейф из пяти проводов /SDA-SCL-+5V-GND-INT/
кнопка со светодиодом еще три провода
гувернер повесить на проводах к ардуинке и ESC, это еще 6 проводов )
ИМХО моноблочная конструкция предпочтительнее, ну разве что кнопку и с/диод вынести на отдельную плату.
ну в общем с калибровкой в вертикальном положении вроде разобрался,
но если это положение базовое, то ошибки накапливаются просто с огромной скоростью.
есть подозрение, что все варианты калибровок заточены под горизонтальное расположение кристала.
Ну в принципе это не проблема, можно и площадку примастырить под горизонтальное положение.
А если использовать не гироскоп, а акселерометр? Там так же все печально?
аксель не выдает углов
Да нам то по идее углы как таковые не нужны, нас больше интересует скорость, а вернее ускорение и замедление модели.
Летим вверх, ускорение падает, летим вниз, растет. Тоже самое по ветру или против.
вот только ускорение само по себе ничего не дает
теоретически можно в случае отрицательного ускорения по оси Х добавлять обороты,
но как оно будет работать не совсем понятно
дело движется, прототип подготовлен к монтажу,
вечером это делать не стану, зрения и так не хватает, наверное завтра
вот так будет размещен модуль гироскопа
так же на верхней плоскости будет светодиод, дублирующий с/д с платы
и SMD кнопка управления.
Сейчас в раздумьях, как припаять гироскоп, плата односторонняя,
есть два варианта
- сделать зазор над платой побольше и паять сверху
- сначала впаять штырьки, а потом на них надеть и припаять гироскоп
Оба варианта примерно одинаковы по трудоемкости,
но во втором случае проще проконтролировать результат
В общем, будет день, буду думать
К концу недели прототип будет готов, программу я к нему тоже “причешу”
Останется придумать как тестировать ),
у нас есть Володя Макаров, завтра ему позвоню,
вдруг им интересно потестить таймер для кордовых, на кордах они летают,
вот только не знаю, есть ли электрички
Поговорил с Володей, они готовы к концу недели подготовить электрическую бойцовку.
Так что с предварительным тестированием договорился.
А вот с продолжением работы возникла непредвиденная трабла, придется поставить на паузу.
Сегодня начал собирать сендвич
Пропустил необходимость запаять два пина на Про Мини A4/A5,
в итоге, отпаивая гироскоп, оторвал дорожку.
Новый уже заказал на Амперкоте, обещают до конца недели прислать
А на кросс плате осталось поставить два резистора, конденсатор и светодиод.
Ну и два шлейфа, на регулятор и на фазы мотора.
Продолжение будет после получения нового гироскопа.
Может было бы лучше, гироскоп не на ножки паять, а плашмя разместить на кросс плате, припаять гироскоп за торцы . А ардуинку развернуть пустой стороной, к пустой стороне кроссплаты, тогда она ляжет на пины.
на плате под гироскопом дорожки, возможен не преднамеренный контакт
кроме того, под гироскопом пины A4/A5 собственно говоря из за них я и “сломал” гироскоп
гироскоп плотно на плату не ляжет
тогда она ляжет на пины.
тут свои траблы, в этом случае нижней частью всего сэндвича будет верх Ардуинки ),
а таймер надо крепить и не думаю, что кварцу понравится стучаться по корпусу модели,
хотя всегда есть варианты, это все потом можно будет оптимизировать.
Вот например, я “узнал” что тактовая кнопка она сильно мелкая )),
она на фото справа внизу.
Она отвечает за управление, в следующей ревизии сделаю побольше.
Опять же, хочется сделать компактно, но похоже надо будет делать крупнее
Для понимания размеров )