ПО с открытым исходным кодом, которое управляет платой RAMPS RepRap непосредственно с компьютера?

Я хотел бы найти программное обеспечение с открытым исходным кодом, которое напрямую взаимодействует с платой RAMPS (или любым другим драйвером 3D-принтера) без использования arduino ...

Не имеет значения, работает ли он на Windows или Linux, главное, чтобы он был с открытым исходным кодом. Кроме того, я не беспокоюсь о том, как осуществляется эта связь (USB, последовательный порт, параллельный порт) ...

Кто-нибудь когда-нибудь слышал о подобных проектах?

, 👍5


2 ответа


Лучший ответ:

4

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

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

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

Но затем произошли две вещи: компьютеры стали быстрее, но более изолированными от мира, а широко используемые операционные системы стали гораздо более строгими в том, что они разрешали.

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

  • Большинство процессоров класса ПК практически не имеют прямого ввода-вывода, если вообще имеют, особенно к тому времени, когда вы выходите за рамки. Такой интерфейс, как USB, отлично подходит для перемещения большого объема данных в единицу времени, но он абсолютно ужасен для выполнения тривиальной задачи с точным и частым синхронизацией - это грузовой поезд, а не велосипедный курьер. Многие из вещей, которые позволяют процессору быстро работать внутри, в частности, работают, отделяя его от внешнего мира, который часто не может поддерживать - кэши памяти, блоки обмена шинами и т. Д. Если вы и найдете параллельный порт сегодня, то он, скорее всего, находится по крайней мере на дальней стороне моста шины PCI и имеет другой низкоуровневый интерфейс, чем устаревший.

  • Современные операционные системы имеют планировщик временных срезов, который "владеет" процессором (процессорами) и выделяет небольшие фрагменты времени обработки обычным программам. Эти программы обычно запускаются достаточно часто, чтобы казаться отзывчивыми для пользователя, но недостаточно часто, чтобы точно управлять шаговыми двигателями. Существуют различные схемы, которые были опробованы, например, для создания планировщика "жесткого реального времени", который владеет процессором и позволяет задаче управления двигателем регистрироваться в течение точно необходимых временных интервалов - затем, с любым оставшимся временем, Linux или Windows или аналогичному ядру разрешено запускать, и разделите оставшееся время между обычными программами с помощью своих правил планирования. Конечно, такая схема, как правило, нуждается в пересмотре каждый раз, когда используемая обычная операционная система выпускает новую основную версию.

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

Вместо этого, как правило, проще и экономичнее (в наши дни это даже не 10 долларов) разместить встроенный процессор на внешней печатной плате и поручить ему выполнять задачи с точной синхронизацией от имени главного процессора. Несколько отходя от идеи промышленных станков с ЧПУ, которые первоначально считывали перфорированную бумажную ленту, а позже были дополнены схемой, при которой обычный компьютер "капает" команды G-code через последовательный порт, современные 3D-принтеры, как правило, доставляют данные команд G-code (или другие) немного заранее о том, когда это необходимо, так что задержка USB или последовательного соединения на самом деле не имеет значения. Обычно на принтере буферизуется достаточно данных, чтобы он продолжал работать, но даже если это не так, он будет делать кратковременные паузы между полными перемещениями, которые передаются, а не испытывать заикание двигателя, как это было бы, если бы USB пытался передать каждый отдельный шаговый импульс.

Что касается того, почему Arduino - вероятно, в основном история того, кто построил машины, которые положили начало тенденции печати энтузиастов. Если бы сегодня перед кем-то из промышленных специалистов была поставлена задача создать что-то вроде принтера FDM или машины с аналогичными потребностями в движении в изоляции, скорее всего, в итоге он получил бы процессор ARM, который был бы немного быстрее, гибче, с большим количеством ресурсов и, вероятно, стоил бы немного дешевле. Но в реальной истории первые доступные машины были созданы теми из сообщества производителей, которые уже были знакомы с доступностью Arduino и хотели приложить немного ума, чтобы добиться хорошего движения при его ограничениях. В частности, RAMPS, по-видимому, спроектирован как сквозной мост с грубым шагом, который любитель мог бы построить самостоятельно, а затем купить немного более сложный для работы с процессором для поверхностного монтажа и чипами motor drive, предварительно собранными в виде модулей Arduino Mega и stepper drive. То, что даже на вполне приличных машинах используются эти базовые компоненты, вероятно, указывает на полезность отказа от "изобретения колеса" - если вы хотите разработать принтер, вы можете начать с доступных компонентов и настраивать их только по одному по своему усмотрению, вместо того, чтобы не иметь возможности запустить свой прототип разработки пока вы не разработаете и не изготовите рабочую печатную плату, не разработаете рабочую программную базу и т. Д.


,

5

Нет, такого программного обеспечения не существует. Вы не можете взаимодействовать с платой RAMPs, потому что плата RAMPs не имеет встроенной логики; это просто тупая плата, которая соединяет Arduino Mega с компонентами вашего принтера (такими как шаговые драйверы, МОП-транзисторы для управления нагревателями, концевые упоры, ...).

Если вы хотите подключить плату RAMPs "напрямую" к своему компьютеру, вам понадобится способ, чтобы ваш компьютер генерировал импульсы, которые обычно генерирует Arduino. Потенциально вы могли бы использовать для этого параллельный порт, но вам потребуется гораздо больше выходов, чем может обеспечить один параллельный порт, и вам нужно будет найти способ выполнить аналого-цифровое преобразование, необходимое для термисторов.

Это просто не очень выполнимо (учитывая, как мало компьютеров в настоящее время имеют параллельные порты).

,