Введение

При сборке самодельного 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. Мощность, на которой насосы "шепчут", поддерживая давление без лишнего шума и износа.


💡 Особенности реализации «умных» функций :

  1. Алгоритм Auto-Purge: Если OpenPnP дает команду захвата легкой детали (например, 0201), а в системе остался глубокий вакуум от предыдущего тяжелого чипа, контроллер сам «пшикнет» клапаном давления на 40 мс. Это выравнивает давление в магистрали до безопасного уровня за доли секунды.

  2. Защита от перегрева: Благодаря двум датчикам NTC 100K, контроллер остановит работу при достижении 75°C на корпусе любого насоса. Это критично, так как насосы 555 часто установлены в закрытых корпусах без активного охлаждения.

  3. Энергосбережение (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: Тихий ход насоса давления в простое.
$$— Позволяет быстро проверить, не сбились ли уставки после ваших экспериментов.


Файлы.