OpenPnP — это программное обеспечение с открытым исходным кодом, предназначенное для управления станками по автоматизированному монтажу электронных компонентов (SMT pick and place) на печатные платы.
Платы управления станками SMT pick and place OpenPnP обычно работают под управлением прошивки Marlin, GrblHAL либо RepRapFirmware.
Протестировал плату разработки Teensy 4.1 использует микроконтроллер NXP iMXRT1062 с ядром ARM Cortex‑M7, работающим на частоте 600 МГц на максимальную частоту сигнала Step без джитера в Marlin -130 кГц и GrblHAL — 400 кГц.
Разработал и собрал печатную плату на чипе STM32F4×1. В станке применил драйвер CL57C (оси X и Y), двигатели 57CME13 и 57CME23, шкивы 2GT 25 зубьев.
Тест на точность ось Y в OpenPnP показали.
Драйвер CL57C, двигатель 57CME23, источник питания 48V ±0.031 мм.
Драйвер на dsPIC30F4012-30, BLDC двигатель 57BL75S10, источник питания 24V, ротационный энкодер 2000 ppm ±0.026 мм.
Драйвер на dsPIC30F4012-30, BLDC двигатель 57BL75S10, источник питания 24V, энкодерная лента 360 DPI ±0.018 мм.


С данной конфигурации SMT pick and place в плане точности можно устанавливать SMD компоненты 0402.
Необходимая точность и повторяемость установки компонентов для:
0402 обычно требуется точность позиционирования ±0,05 мм.
0201 требуется точность позиционирования ±0,025 мм или выше.
01 005 требуется точность позиционирования не менее чем 8 мкм.
Харaктepиcтики платы контроллера движения:
Драйвер grbl + плагин OpenPNP + EEPROM 2K, чип STM32F401CCU6 Black-Pill 84 MHz.
6 осей (ось Y и X внешний драйвер).
Интерфейс управления контроллером USB.
Частота сигнала Step до 180кГц.
Слоты для шаговых двигателей DRV8825/A4988.
Работа от одного источника питания 24В.
Входные сигналы 6: LimitX, LimitY, LimitZ, LimitC, Probe, E-Stop (5V) (в текущей прошивке).
Выходные сигналы 9 ((полевые транзисторы NTMFS5C628 (1 PWM).
Плата stm32f4х1_V_01 (stm32f401_58), размер 100*65 мм


Планирование движения = ReferenceAdvancedMotionPlanner может выполнять полноценное планирование движения третьего порядка. Поддерживается. Рывок ускорения, управление рывком ускорения 3-го порядка.
Настройка контролера производится в ioSender. Пример файла settings настройки в ioSender. Файл примера OpenPNP my_machine.
Контакты на плате, назначение. Команда в ioSender "$pins"
[PIN:PB10,Emergency stop]
[PIN:PB2,Probe]
[PIN:PB6,X limit min]
[PIN:PB7,Y limit min]
[PIN:PB4,Z limit min]
[PIN:PB5,C limit min]
[PIN:PA0,X step]
[PIN:PA2,Y step]
[PIN:PA6,Z step]
[PIN:PA3,A step]
[PIN:PA10,B step]
[PIN:PA8,C step]
[PIN:PA1,X dir]
[PIN:PA5,Y dir]
[PIN:PA7,Z dir]
[PIN:PA4,A dir]
[PIN:PA15,B dir]
[PIN:PA9,C dir]
[PIN:PC13,Steppers enable]
[PIN:PC13,A enable]
[PIN:PC13,B enable]
[PIN:PC13,C enable]
[PIN:PB0,Spindle PWM]
[PIN:PB12,Aux out 0,P0]
[PIN:PC15,Aux out 1,Fan 0]
[PIN:PC14,Aux out 2,P1]
[PIN:PB3,Aux out 3,P2]
[PIN:PB1,Aux out 4,P3]
[PIN:PB14,Aux out 5,P4]
[PIN:PB15,Aux out 6,P5]
[PIN:PB13,Aux out 7,P6]
[PIN:PB8,I2C SCK]
[PIN:PB9,I2C SDA]

Crazy_Pit
Для управления питателями есть готовое решение на ардуино шилде https://docs.mgrl.de/maschine:pickandplace:feeder:0816feeder:nativeshield не лучшее решение. но вполне работающее. Для управления двигателями станком достаточно платы от зд принтера с прошивкой смузи или марлин или грбл. готовых плат очень много . На вторичном рынке еще больше. Как раз на основе skr1.3 и марлина 2.0 запускаю смд установщик. вполне работающее решение.