Введение
При сборке самодельного PnP-станка (установщика SMD) многие ограничиваются простым включением вакуумного насоса через реле. Однако при переходе к компонентам 0201 и многосопельным головкам начинаются проблемы: насосы перегреваются, вакуум в длинных трубках нарастает слишком медленно, а мелкие детали разлетаются от избыточного давления.
Я разработал контроллер, который превращает дешевые китайские насосы 555 в интеллектуальную систему управления пневматикой.
Ключевые возможности
Поддержка 4 сопел (8 клапанов): Независимое управление вакуумом и давлением для каждой головы.
6 аналоговых датчиков: Мониторинг давления в двух ресиверах и индивидуальный контроль вакуума на каждом сопле (Part Detection).
Адаптивный вакуум (Target + Delta): Система поддерживает заданное разрежение в ресивере. Для тяжелых чипов — максимум (-65 кПа), для нежных 0201 — минимум (-15 кПа).
Auto-Purge (Автосброс): При переходе с глубокого вакуума на слабый система автоматически "пшикает" клапаном давления, мгновенно разряжая ресивер.
Плавный пуск и Holding PWM: Насосы разгоняются плавно. При достижении цели они не выключаются, а переходят в бесшумный режим микро-поддержки.
Полная телеметрия: Через команду
M105станок видит кПа, температуру каждого насоса (NTC 100K) и их наработку в часах.
Схемотехника
Сердце системы — Arduino Nano.
Таймеры ШИМ перестроены на частоту 3.9 кГц, что убрало мерзкий писк моторов и сделало работу клапанов тихой.
Датчики XGZP6847 выбраны за их надежность. Использована инверсная логика для вакуума (напряжение падает при откачке), что повышает точность в рабочем диапазоне.
Защита: Реализован программный «сон» (через 5 минут бездействия) и аварийная блокировка при перегреве выше 75°C.
Интеграция с OpenPnP
Контроллер полностью совместим с G-кодами. Для автоматизации написан JavaScript-скрипт Part.BeforePick.js, который перед каждым захватом проверяет тип детали и устанавливает нужную силу вакуума. Если в ресивере избыток разрежения — контроллер сам делает «пшик» через клапан того сопла, которое едет за деталью.
Итоги
На данный момент система прошла тесты на герметичность и калибровку. В планах на версию 4.0 — переход на ПИД-регулирование для идеально ровной полки давления и установка OLED-экрана для автономной индикации параметров.
🛠 Программный интерфейс (G-коды управления)
Контроллер работает по стандартному протоколу обмена через Serial (115200 бод) и полностью совместим с системой команд OpenPnP.
Основные рабочие команды:
M610 S1 P<ADC> N<1-4>— Адаптивный старт. Включает автоматику. ПараметрPзадает целевой вакуум (от 400 — макс, до 950 — атм). ПараметрNуказывает активное сопло для функции Auto-Purge (сброс лишнего вакуума при переходе на мелкие детали).M611 N<1-4> P<мс>— Принудительная продувка. Открывает клапан давления выбранного сопла на заданное время. Используется для сброса детали.M143 N<1-4>— Запрос вакуума сопла. Возвращает реальное значение в кПа. Идеально подходит для функции Part Detection (проверка захвата).M105— Полная телеметрия. Выдает строку состояния: вакуум и давление в ресиверах, температуры обоих насосов, текущие значения ШИМ и наработку моторов в часах.M42 P<пин> S<0-255>— Прямое управление. Используется для включения подсветки камер (Pin 12) или ручного управления клапанами.
Настройка системы (команды $):
Система построена на логике «Цель + Дельта». Вам не нужно настраивать пороги включения и выключения отдельно.
$610 / $611— Целевой вакуум и "окно" подкачки (Delta).$612 / $613— Целевое давление и "окно" подкачки.$617 / $618— Настройка Holding PWM. Мощность, на которой насосы "шепчут", поддерживая давление без лишнего шума и износа.
💡 Особенности реализации «умных» функций :
Алгоритм Auto-Purge: Если OpenPnP дает команду захвата легкой детали (например, 0201), а в системе остался глубокий вакуум от предыдущего тяжелого чипа, контроллер сам «пшикнет» клапаном давления на 40 мс. Это выравнивает давление в магистрали до безопасного уровня за доли секунды.
Защита от перегрева: Благодаря двум датчикам NTC 100K, контроллер остановит работу при достижении 75°C на корпусе любого насоса. Это критично, так как насосы 555 часто установлены в закрытых корпусах без активного охлаждения.
Энергосбережение (Sleep Mode): Если датчики не фиксируют падения давления в течение 5 минут, система считает, что станок в простое, и полностью обесточивает насосы.
Аппаратная часть
Контроллер: Arduino Nano (ATmega168).
Датчик Вакуума (A5): Инверсный (4.5V = 0 кПа, 0.5V = -100 кПа). XGZP6847A100KPGN
Датчик Давления (A0): Обычный (напряжение растет вместе с давлением). XGZP6847A040KPG
ШИМ Моторы: D11 (Вакуум 555), D10 (Давление 5W). Частота — 3.9 кГц (тихий ход).
Клапаны сопел:
N1: D9 (Вак), D8 (Давл) | N2: D7 (Вак), D6 (Давл)
N3: D5 (Вак), D4 (Давл) | N4: D3 (Вак), D2 (Давл)
Периферия: D12 (Свет камеры), D13 (Статус/Сервис).
[+5V] --- [ Резистор 10к ] ---T--- [ Термистор 3950 NTC 100к ] --- [ GND ]
¦
[ Пин A6 / A7
Пневматика
Обратные клапана для насосов. Ресивер вакуума собран из муфты с заглушками от канализации ДУ110, бутылка пластиковая для давления. Электромагнитные клапана пневматические OST T101E-FL 24V 1.2W 3/2NC выпускаемых компанией Zhejiang Ours Top Electronic Technology смонтированы рядом с соплами на голове станка.
Это не просто «включалка насоса», а полноценный Managed Pneumatic Hub в мире OpenPnP . Благодаря функции Holding PWM и Sleep Mode по ресурсу приближает их к дорогим бесщеточным помпам, но стоит дешевле.
Командный интерфейс (G-коды)
M610 S1 Запуск автоматического поддержания давлений.
M610 S1 P N<1-4> — Адаптивный вакуум.
P — Целевой порог (например, 470 для TQFP, 880 для 0201).
N — Номер сопла для Auto-Purge (автосброс излишков вакуума).
M611 N<1-4> P<мс> — Продувка. Открывает клапан давления сопла N на P миллисекунд.
M143 N<1-4> — Чтение вакуума на конкретном сопле (ответ в кПа).
M105 — Полный отчет: V (вак), P (прес), Tv/Tp (температуры), PWM (мощность).
M612 — Калибровка нуля всех датчиков (выполнять при "0" атмосфере).
M615 — Сброс счетчика моточасов (остановка мигания LED через 500ч).
M42 P<пин> S<0-255> — Прямое управление (например, M42 P12 S255 — свет вкл).
M600 — Вернуть всё "как было" (удаляет все ваши $6xx и обнуляет часы).
M105 — Выдает: V:-60.5 P:15.1 Tv:32.4 Tp:30.1 PWM_V/P:85/65 HRS_V/P:12/4.
Команда Значение Описание
$610=470 Цель вакуума (ADC). Чем меньше, тем сильнее вакуум.
$611=60 Дельта вакуума. Окно подкачки (Вкл = Цель + Дельта).
$612=650 Цель давления. Чем больше, тем сильнее давление.
$613=30 Дельта давления. (Вкл = Цель - Дельта).
$617=85 Hold PWM V: Тихий ход вакуумника в простое.
$618=0 Hold PWM V: Тихий ход насоса давления в простое.
$$— Позволяет быстро проверить, не сбились ли уставки после ваших экспериментов.
