Pull to refresh

Comments 47

Дурацкий вопрос. А спаять свою плату выходит дешевле, чем купить аналог? Или просто нет аналогов с заявленными ТТХ?
Аналогов не видел. Находил только игрушечные для маломощных моторчиков и без множества необходимых вещей. Ну и тот же ardumower, у которого тоже многого нет. То есть либо самому, либо на всяких шилдах с arduino due, что будет выглядеть как большой кусок непонятно чего, обмотанного проводами с кучей дополнительных плат.
Тут ключевая фраза — дали денег.
Особенно с учетом стоимость Decawave меток.
26 долларов за модуль, вообще-то.

А сколько их вообще?
У меня есть проект (поскромнее), так там итоговая сумма, даже с учетом многократных переделок пока только под $100 подбирается.

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

Для универсальной платформы слишком сложная, замороченная и дорогая. Мне кажется проще под конкретный случай собирать более узкозаточеную плату, тем более в современных реалиях в роботизированной газонокосилке и подобных устройствах основная проблема — это надежно выполняющая свои функции механика, продуманная кинематика, красивый и удобный корпус, интерфейсы взаимодействия и логика работы. А сам контроллер оказывается наименьшей по трудозатратам частью.
Хотя могу быть не прав, он это лично мой опыт...

Если разносить по отдельным платам, то сразу сталкиваемся с проблемой — либо толстые жгуты проводов между ними и потери контакта/наводки всякие, либо отдельные микроконтроллеры на каждой и многократно возросшая сложность разработки.

Разработка механической части — вещь ответственная, но не главная. Движки прикрепить к корпусу и к колесам присоединить легко. Тут больше вопрос наличия материалов под рукой.
Странный выбор микроконтроллера.
ATSAM3X8E можно считать уже морально устаревшим, да и ресурсы у него жидковаты.
Для современной исследовательской платформы стоило выбрать что-нибудь помощней.
Для низкоуровневого контроля — вполне достаточно, зато совместимость с ардуинкой есть, что сильно уменьшает хлопоты по разработке. С остальным справится и orange pi zero, который, собственно, и задуман как контроллер высокого уровня. В ардумовере, например, вообще atmega2560 применяется и ничего, ездит и сам стрижет, даже без внешнего компа.
orange pi соединен только через UART с микроконтроллером.
А к микроконтроллеру присоединена куча датчиков, драйверов, CAN, USB…
Чтобы всем этим управлять и отлаживать в реальном времени из orange придется ваять сложнейший протокол.
Те же алгоритмы управления как вижу никак не диагносцируются и не отлаживаются.
Датчики ориентации тоже должны быть на одной платформе с моторами, а их нет.
Словом ничего не сделано для действительно удобной отладки и исследований.
Ну, никто не мешает USB orange pi соединить кабелем с разъемом на плате, они как раз друг над другом. :) Только я посчитал, что последовательного порта будет вполне достаточно. Над протоколом обмена думал пока только в общих чертах, но вариантов много — тот же modbus, например. Простой и достаточно надежный.

Плата гироскопа/акселерометра/компаса будет выносной, так как практика показала, что компасс очень чувствителен к большим массам железа в движках (из-за чего шасси делается исключительно из алюминия/дюралюминия), а выбор размещения для такой большой платы гораздо хуже, чем для маленькой отдельной. Да и акселерометру с гироскопом — нужна амортизирующая подвеска для гашения вибраций (которых в косилке очень много из-за косящего движка, махающего ножом со скоростью во много оборотов в секунду). Радиометку тоже на плату сажать не стоит, тесты показывают, что у нее и ориентация должна быть вполне определенной и антенна открыта.
Для выносных плат у вас неправильно спроектирован вывод SPI шины.
Надо было ставить дифференциальные драйверы.
У вас же моторы, помехи.
А так сможете расположить свои датчики не дальше пары сантиметров и на скорости не больше десятка килогерц.
Словом отстрелялись вы себе по ногам.
Если честно, SPI я вообще никак не планировал использовать, тем более искать девайсы с его диффернциальной версией. I2C вполне нормально себя чувствует, как показывает практика. Напишу предупреждение про возможные проблемы со SPI в read.me потом.
для 3д принтера тоже можно использовать?
для 3д принтера настолько огромный выбор готовых плат — вообще никакого смысла что то еще лепить
На 32 битах огромный выбор плат? Не такой уж и огромный.
Навскидку, на Atmel:

Smoothieboard/Duet/DuetNG/RAMPS-FD/RADDS/MKS SBase/Azsmz

На STM32:

MKS Robin/Lerdge/Biqu/Speedy

Отдельно стоит упомянуть STEVAL-3DP001V1

Наверняка их больше, только то, что вспомнил…
Нет, не думаю. Всего один канал для управления шаговым мотором (два драйвера работают в параллель для двух моторов). Проще взять ту же arduino due и налепить на адаптированный RAMPS.
Как обычно, из пушки по воробьям, но с поддержкой Ардуино.
Ну, кому-то «из пушки по воробьям», а кому-то — «морально устарел, ресурсы жидковаты». Arduino IDE использовать необязательно, можно и в любой другой среде с поддержком cortex-m3 писать.
UFO just landed and posted this here
Там есть кнопка аварийного отключения реле. Отрубит питание полностью.

Контроль потребляемого тока моторами, разумеется, планируется. В дополнение к ограничениям по току самими драйверами моторов.
UFO just landed and posted this here
Большая красная кнопка сверху робота (положение, правда, немного осложняется наличием солнечной батареи, которая будет прикрывать верх — возможно придется сделать несколько параллельных по бокам). Моторы, естественно, просто отключатся, но по наклонной плоскости оно навряд ли покатится — сопротивление редукторов высокое.
UFO just landed and posted this here
Шасси заслуживает отдельной статьи, оно далеко не оптимально, но человек, который его сейчас делает — ваяет настоящий шедевр, причем из подручных материалов (которых в Доминикане не очень много, прямо говоря). Масса там получается весьма большой (как раз из-за использованных материалов — алюминиевые уголки, толстое оргстекло), как и габариты, но мы решили, что лучше иметь пространства побольше для отладочного прототипа. Позже планируется заказать более подходящие материалы и сделать легкое и более простое в изготовлении шасси.

Двигатели используется такие — Lynxmotion 12V 1:99.5 20RPM. Они тоже выбраны с большим запасом по мощности, надо будет найти что-то менее мощное и жрущее.
Зачем там контроллер на плате распаян? Раз остальное идет в виде модулей так может стоило и контроллер в виде discovery/nucleo поставить? Там, заодно, и программатор встроенный, и стоят они дешевле деталей из которых спаяны.
Габариты сильно увеличивает, проблемы с контактами и, например, на arduino due не все выводы на гребенке выходят. Плюс может не оказаться, к примеру, кварца для RTC. Все равно из-за обилия проводников плата выходила четырехслойной — решил распаять контроллер на плате, надежнее так. Паять не так уж сложно, я в несколько раз дольше провозился с распайкой резисторных сборок и конденсаторов (выбрал мелкие совсем, еле очистил потом все «коротыши»). Программатор, в общем-то, не нужен — atsam3x8e имеет встроенный бутлоадер для serial и usb.

Трудности проявились только в том, что был какой-то перебой с поставками контроллеров в корпусах QFP-144 (а BGA, по понятным причинам, не рассматривались), они у всех поставщиков в США закончились, еле нашел одну единственную штуку в полтора раза дороже. Но сейчас уже сток пополнен у крупных магазинов.
еще момент… драйвера ДПТ:
мне думается, что более перспективно для тележек Вашей размерности ориентироваться на колеса для гироскутеров (~3т.р. штука), тогда 3фазный мост под SPWM и вход от датчиков холла были бы более уместными.
Я вообще подумываю о шаговых моторах, с ними как-то все точнее получается. Но не определился с требованиями по мощности. Колеса от гироскутеров могут быть не очень применимы, слишком высокие обороты на оптимальной нагрузке (косилке нужно ползать со скоростью 20-40 сантиметров в секунду всего). Впрочем, никто не мешает подсоединить их контроллер к каким-нибудь свободным портам (PWM_?, например).

Входы одометров, собственно, для 5-вольтовых датчиков холла и предназначены.
Впрочем, никто не мешает подсоединить их контроллер к каким-нибудь свободным портам

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

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

не рекордные 80 кг / 15 градусов уже дают 20 кгс тяги, Вам точно для косилки больше надо?

Я вообще подумываю о шаговых моторах, с ними как-то все точнее получается.
для мобильной платформы, наверное, худший выбор
Все PWM_? — выходы как раз аппаратных таймеров. Правда, с каждого таймера — по одному выходу, не в курсе — будет ли этого достаточно для контроллеров колесомоторов? Будет время — изучу вопрос их возможного применения.
А, ну USART-ы (выведены на SERIAL-1/2/3 разъемы) в ATSAM3x8e могут работать на любой скорости и с поддержкой space/mark бита, так что можно контролировать колесо с таким контроллером легко. Хотя, конечно, хотелось бы более вменяемого контроллера с открытым протоколом и, желательно, на I2C.
будет ли этого достаточно для контроллеров колесомоторов
для шестишагового режима хватит
накидал все на один лист, для удобства

Спорное удобство.
Какие гироскопы используете? Если на MPU-6050 (типа GY-521) — то как решили проблему оси «Z» (которая вертикальная)?
Вопрос «мелкий и корыстный» — я делаю проект с GY-521, с осями X и Y разобрался, да и примеров в Сети много, в т.ч. с использованием Фильтра Калмана — но вот с осью Z (случай поворота, разворота устройства) ничего не выходит.
Может, кто-то поможет с/поделится кодом, если есть?
GY-80 используется (наследие ардумовера), но планируется в SDK добавить поддержку и других. Ориентация вокруг вертикальной оси определяется по компасу (с поправкой на наклон, полученный от акселерометра), немного геморройно (нужно компас часто калибровать и проблемы с намагничиванием железных деталей), но ничего более простого не придумывается.
Ну, думаю, вполне возможно по данным акселерометра и гироскопа считать поворот от стартовой позиции с достаточной точностью, если принять меры по гашению вибраций и фильтрации. Я просто этим не занимался совсем, времени лезть в эти дебри нет.
Угол по оси Z постоянно дрейфует.
Поскольку его не к чему привязать. По осям X и Y есть привязка к вектору притяжения земли акселерометром.
Если MPU-6050 заменить на MPU-9250 то можно магнитометром корректировать угол по оси Z. Но магнитометр имеет большую амплитуду шума, поэтому сам угол по Z становится более нестабильным.
Вот и вся дилема.
Кардинального решения не имеет, кроме перехода на более дорогую технологию гироскопов или привлечение других источников привязки.
UFO just landed and posted this here
Резина колес скребет по кафелю. Колеса слишком далеко от центра разнесены из-за больших размеров тестового шасси, поэтому при развороте их тянет вбок немного. В следующей версии шасси будет меньше и, возможно, вообще трехколесным (с поворотным колесом сзади), проблемы не будет.
UFO just landed and posted this here
Не особо анализировал влияние на точность. Когда по участку ездит с травой — тряски при разворотах нет, там нет такого жесткого сцепления резины с поверхностью.

Да, надежность коллекторных двигателей и редукторов немного беспокоит, но не стоит это дело переоценивать — практически все газонокосилки с такими ездят и выдерживают гарантийные сроки неплохо. На текущий момент — это самый простой и дешевый вариант. Вот косящий мотор я бесколлекторный outrunner буду использовать, Turnigy multistar 4014-320 — он хоть и жрет относительно много, зато косит идеально.
Sign up to leave a comment.

Articles