Перейти к содержанию
    

МК на замену Ардуине

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 минут назад, Tanya сказал:

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

Вот это точно! :) Хотя драйверы шаговых двигателей нынче не просто мосфетные ключи, а уже довольно интеллектуальные устройства:

image.thumb.png.dd19ba494903a647f10541c429445e0b.png

Хорошо уже то, что шагом можно управлять импульсами (один импульс = один шаг), не задумываясь о необходимых двигателю таймаутах. Это дополнительный аргумент в пользу того, что STM32H7 здесь не нужен. Кстати и удерживание половинным током этот же драйвер тоже делает.

К тому же на микроплате с драйвером еще "крутилка" (trimpot) есть:

image.thumb.jpeg.f2919cdfbd20cfd0bcf67971f92d2095.jpeg

Поэтому запросто его не убить. Но радиатор на эту микросхему приклеивать обязательно (они входят в комплект, но приклеивать приходится самостоятельно), а лучше организовать еще и принудительную вентиляцию (на плате "MKS Gen V1.4" есть разъем для вентилятора).

 

P.S. Говорят, что драйвер TMC2130 от TI еще круче (по SPI сопрягается), но я его не испытывала, тем более что он дороже. Сравнение этих двух драйверов здесь:

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У китайцев большая проблема с чтением документации: на модулях с A4988 и DRV8825 они неправильно припаяли микросхемы (для рассеивания тепла есть пятак на брюхе чипа, т.е. радиатор надо ставить с противоположной стороны платы). Ставить радиатор на чип сверху смысла нет, это как через 2мм стеклотекстолита пытаться тепло отвести!

Что до TMC2130 — классная вещь и стоит своих денег! Ведь можно ими по SPI управлять: рамп задавать и т.п. Ну или стандартный STEP/DIR использовать. Зато этот почти не греется.

Мы с коллегой посмотрели, сколько китайцы дерут за CAN-драйвер ШД с магнитным энкодером (от 6000р и выше), при том, что себестоимость выходит тысячи в полторы-две рублей, и я решил разработать аналогичную вещь на основе STM32F042, TMC2130 и 14-битном холловском датчике. Даже с нынешними нереально задранными ценами на STM32, получится значительно дешевле, чем готовое брать!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 минут назад, Eddy_Em сказал:

и я решил разработать аналогичную вещь на основе STM32F042, TMC2130 и 14-битном холловском датчике.

"14-битноый холловский датчик" это кто? Инфенионовский TLE501x?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, Eddy_Em сказал:

Ставить радиатор на чип сверху смысла нет, это как через 2мм стеклотекстолита пытаться тепло отвести!

Дак вы видели, какой "радиатор" туда ставят китайцы аж 8х8мм!! Какой от него толк - да никакой, там все ложится "на плечи" кулеру...

Что до ТСа, ну вот обложили его со всех сторон, не правильно делаешь да все такое... Да пусть делает, как считает нужным, суперлуп - так суперлуп, если работает, то какая разница как. В моем случае тоже было такое, ну не умею я с графическими ускорителями работать,да и дока закрыта, и вот у себя в конторе началось, да как так, ведь это неправильно, вот люди-то работают, да без них слайдшоу... и пошло. Ну и сделал без них, слайдшоу нет, анимация работает... Как я это сделал - да какая разница, задача выполнена - претензий нет, а реву было...

По поводу задачи ТСа - я бы сделал так, расчеты в суперлупе, управление двигателями из стейт-машины на прерываниях...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Xenia said:

А где вы такой шилд для Arduino Mega раздобыли? Самое дешевое, что вижу у китайцев - это:

https://aliexpress.ru/item/10000066672988.html

но в сумме с ценой за "Arduino Mega" получается заметно больше, чем рекомендованная мной плата "MKS Gen V1.4", где то и другое уже собрано воедино. Кроме того, драйверы шаговых двигателей в состав шилда не входят (их покупать придется отдельно), тогда как "MKS Gen V1.4" можно купить сразу со вставленными драйверами примерно за ту же цену.

 

Плох там не Си (он в Arduino Studio из GCC взят), а встроенные функции, которыми приходится пользоваться. Тогда как у Arduino с этим плохая наследственность - так уж повелось, что Arduino-контроллер (обычно это была ATmega8) использовался, как "автомат", т.е. составлялась таблица его контактов (даже не портов, а именно номеров пинов!), которыми тот мог "дрыгать" (управлять уровнем), и задавалась команда (одна на всю таблицу), которой можно было этот уровень изменять. А дальше  через эту таблицу всё и делали. При замене контроллера на другой заменялась таблица выводов, но всё остальное оставалось без изменений. Отсюда и та всеядность Ардуин ко всевозможным типам контроллеров - там по сути не было ничего, что зависело бы от их архитектуры.

Как это дело обстоит сейчас, я не в курсе, т.к. в современные прошивки не лазила. Полагаю, что UART и USB-СDC все-таки сделаны на аппаратном уровне с использованием предназначенных для этого линий и аппаратной поддержки.

Шилд Protoneer купил в магазине в Москве. MKS Gen я не взял, потому что не было чёткого представления о потребностях, и хотелось иметь возможность менять драйвера. Цена контроллера в любом случае - копейки, в сравнении с общей стоимостью станка. Насчёт встроенных функций Ардуино - чем конкретно плохо то, что ими приходится пользоваться? Мне они показались достаточно удобными.

2 hours ago, jcxz said:

А что - эта самая "острота инструмента" у вас изменяется с такой скоростью, что её нужно именно 50кГц измерять и делать перерасчёт?Или всё-таки - вполне "за глаза" будет мерять и пересчитывать 100 раз/сек?

Надуманная проблема.

Меняется не только острота, но и условия работы инструмента, и довольно быстро. Это долго объяснять в деталях, но, например, при завершении сверления  стенки профильной трубы инструмент может резко заклинить из-за выпадания высверленного участка. Хотелось бы такие вещи обнаруживать, не доводя до аварийной остановки двигателя. Не могу пока сказать, какая частота там нужна, вряд ли все 50МГц, но легко может быть поболее 100Гц.

Насколько "монструозный" контроллер мне совершенно неважно, ибо устройство не серийное. Будет сделано лишь несколько штук для собственных станков.

1 hour ago, Tanya said:

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

На шаговике с энкодером и гибридным драйвером (а речь о нём) это возможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 minutes ago, Xenia said:

это кто?

Что-то вроде AS5048. Точно не припомню, какую конкретно модель решили на пробу купить, надо коллегу спрашивать — он закупками занимается.

11 minutes ago, mantech said:

суперлуп - так суперлуп, если работает, то какая разница как.

Лично я считаю, что бесконечный цикл с конечными автоматами (и прерываниями по необходимости) — единственный вменяемый способ разработки на микроконтроллерах. Если кому-то вдруг этого мало и нужна операционка, то пусть уже берет Cortex-A, ставит туда линукс и развлекается уже в линуксе!

8 minutes ago, baritono said:

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

Все очень просто: ставим на вал двигателя энкодер (в идеале — чтобы было столько же отсчетов на оборот, сколько делает ШД шагов). Генерируем ШИМ, а для счета шагов используем другой таймер, к которому подключен энкодер. Периодически проверяем, что у нас там с изменением положения (например, в прерывании третьего таймера). Если за определенный промежуток времени энкодер не сдвинулся в нужном направлении, определяем ситуацию как STALL и пытаемся соскочить на меньшей скорости. Если не выходит за N подходов — останавливаемся и устанавливаем состояние в ERROR_STALL.

"Замкнутый цикл" — очень удобная штука для управления шаговиками в ситуациях, когда крайне важно знать, где он сейчас находится и не пропускает ли он шаги. На 3D-принтерах и ЧПУ-фрезерах вообще нельзя по-другому!!!

Кстати, STM32F072 о 48 ногах имеет достаточное количество таймеров, чтобы обслуживать одновременно 3 шаговика в режиме "замкнутый цикл". И еще таймеры на другие нужды останутся. И CAN есть, чтобы уйму драйверов на одну шину навешать и не париться с самопальным протоколом по RS-485.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 минуты назад, baritono сказал:

MKS Gen я не взял, потому что не было чёткого представления о потребностях, и хотелось иметь возможность менять драйвера.

Как раз на "MKS GEN" такая возможность есть, т.к. там дравера не впаянные, а на разъемах установленные.

 

198964506_.png.64179464961dad17c600353d6bae3a3e.png

Я сначала думала, что это из-за того, что драйвера часто сгорают :), а оказалось, что для того, чтобы можно было выбирать драйверы на свой вкус.

Именно ради этого в подвале разъема установлены джамперы (3 штуки), с помощью которых плата может быть адаптирована к драйверам разного типа (в том числе и к TMC2130).

 

 

42 минуты назад, baritono сказал:

Насчёт встроенных функций Ардуино - чем конкретно плохо то, что ими приходится пользоваться? Мне они показались достаточно удобными.

А оно всюду так и есть - удобство завсегда достигается за счет потери функциональности :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, Xenia said:

MKS GEN

Я бы эту гадость не брал: там в основе ардуина. Лучше самому сделать на вменяемом МК. Ну, или если так хочется таки атмель использовать, то хотя бы на подходящем по ресурсам. И с обратной связью. Ни в коем случае нельзя делать управление ЧПУ без обратной связи по положению валов двигателей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 часа назад, Xenia сказал:

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

Кстати - и как успехи? В создании собственной? 

А то ко мне тут тоже как раз сейчас 3D-принтер едет. :wink:  Правда с управлением вроде как на STM32 (не факт).

Сложно там? много? А то может тоже (если будет время и желание) поковыряю....  :wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, jcxz сказал:
14.04.2021 в 18:12, Xenia сказал:

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

Кстати - и как успехи? В создании собственной?

Сложно там? много? А то может тоже (если будет время и желание) поковыряю....  :wink:

Довольно просто. За основу для ковыряния взяла проект "Marlin" с GitHub'а - https://github.com/MarlinFirmware/Marlin/

Почему его? А потому что, прочитав фабричную прошивку в бинарном коде невооруженным глазом, увидела в ней надпись "FIRMWARE_NAME: Marlin 1.1.6". Похоже, что китайцы на все свои 3D-принтеры эту прошивку ставят, т.к. ленятся сами ее писать. Код там написан на C++ без использования скетчей, а если и есть там скетч, то только один - чтобы Сишную программу запустить. Однако фундамент у нее ардуиновский - множество поддерживаемых контроллеров и материнских плат заданы таблично. Поэтому самое сложное дело - настройка, чтобы правильно файл Configuration.h создать под стать реальному железу. А дальше можно изощряться с кодом программы, как захочется. Стоит лишь перед этим убедиться, что 3D-принтер слушается команд.

 

У меня же был особый случай (иначе программу ковырять не было бы причин) - мне хотелось из 3D-принтера сделать ... автосамплер. Т.е. вместо узла подачи филамента я установила перистальтический насос (тоже на шаговом двигателе). Вот такого типа:

70221059_.png.3056b56925dcde7c00d94702db2fd0f2.png

А вместо рабочего узла ставится игла от шприца, соединяемая гибкой трубкой с насосом. 3D-принтер брала самый дешевый и "голенький" (чтобы был свободный доступ ко всем его узлам):

image.jpeg.75f19f5687dbaf7cbd2d9cbb99f79897.jpeg

Обошлось не дорого - 8000 руб. То что у дешевых китайских 3D-принтеров руки немножко дрожат :), меня ничуть не волновало, т.к. как бы сильно ни дрожала игла, в пробирку диаметром 8-10 мм она не промахнется.

 

Модификация программы свелась у меня к добавлению собственных команд ЧПУ, помимо тех, что используются 3D-принтерами. Это касаемо калибровки (чтобы запоминало координаты пробирок/флаконов  и помнило их по номерам). Тогда как скорость работы устраивала меня та, что была, т.к. задача у меня была более простая: опустить игру до дна (тут пришлось-таки концевые выключатели для надежности поставить, т.к. изначально их не было), засосать заданное количество микролитров жидкости (коэффициент перевода микролитров в число шагов задается всего однажды на этапе той же калибровки), поднять иглу, переместиться в позицию другой пробирки, опустить иглу, выдавить тот объем, который прежде засосало. И так чтобы работало всю ночь без человека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 часов назад, Xenia сказал:

Почему его? А потому что, прочитав фабричную прошивку в бинарном коде невооруженным глазом, увидела в ней надпись "FIRMWARE_NAME: Marlin 1.1.6". Похоже, что китайцы на все свои 3D-принтеры эту прошивку ставят

Наверное не на все, а на те, которые имеют контроллер на AVR. Мне должен прийти вроде с платой на STM32 (хотя полной уверенности нет).

Или думаете - и в тех контроллерах 3D-принтеров, которые на ARM, там тоже абдуриновый код внутрях? Это было бы печально... :sad:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, jcxz сказал:
21 час назад, Xenia сказал:

Почему его? А потому что, прочитав фабричную прошивку в бинарном коде невооруженным глазом, увидела в ней надпись "FIRMWARE_NAME: Marlin 1.1.6". Похоже, что китайцы на все свои 3D-принтеры эту прошивку ставят

Наверное не на все, а на те, которые имеют контроллер на AVR. Мне должен прийти вроде с платой на STM32 (хотя полной уверенности нет).

Или думаете - и в тех контроллерах 3D-принтеров, которые на ARM, там тоже абдуриновый код внутрях? Это было бы печально... 

По-видимому, вы поленились взглянуть на проект "Marlin" по ссылке, которую я вам давала. В этом случае мне придется для вас оттуда кое-что процитировать:

1079356800_.thumb.png.1ce5af4f2cf7b82bc79158901f431308.png

Из них AVR только первые две строчки, а остальные - ARM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...