Reference

Jet Printing

Technical overview of the Mycronic MY600 jet printer and the JPSys JSON program format.

MY600 Jet Printer

The Mycronic MY600 is a high-precision solder paste jet printing system designed for stencil-free PCB assembly. Instead of forcing paste through a fixed stencil aperture, it deposits solder paste volumetrically, enabling dynamic, per-pad control of paste volume and geometry within a single print cycle.

Core principle

The MY600 uses a piezo-driven ejector to dispense controlled droplets of solder paste. It dynamically adjusts droplet count, volume, spacing, and stacking pattern per pad. This enables immediate transitions between small and large deposits without hardware changes.

Ejector types

PropertyAG04 (standard)AR02 (fine-pitch)
Cassette Model ID21307146322130808852
Default mediaMY600 Senju M705-LFAC19AR Tamura T6
Dot diameter range330 -- 520 µm219 -- 250 µm
Default dot period0.00333 s (~300 Hz)0.005 s (~200 Hz)
Typical velocity0.075 -- 0.115 m/s0.024 m/s
Requires FinePitch optionNoYes

The AR02 ejector produces smaller minimum droplets for finer-pitch deposits. It generates significantly more path segments per board because smaller dots require more passes to achieve the same volume.

FinePitch option

Without the FinePitch option enabled, JPSys enforces a minimum dot diameter of 300 µm. Any segment with a smaller diameter is automatically increased to 300 µm on load. The AR02 ejector (219--250 µm dots) requires FinePitch to be enabled. FinePitch defaults to ON on current machines.

Dot size behavior

With the standard AG04 ejector, typical printed dot diameters are approximately 0.33 -- 0.52 mm. The MY600 can change deposit size for every individual pad on the board in real time during the same print cycle.


JPSys JSON Format

The JPSys JSON is the native program format exported from MYCenter / JPSys for the Mycronic MY600 jet printer. A single .json file contains everything the machine needs to execute a print run: board layout, panel definitions, component positions, paste deposit geometries, paste volumes, and the optimized head movement path.

Object hierarchy

graph TD
    Layout["Layout (root)"]
    Layout -->|boardPosList| BP["BoardPosition"]
    BP -->|panel| PanelNode["Panel"]
    PanelNode -->|panelPcbPosList| PPP["PanelPcbPos"]
    PPP -->|pcb| PCBNode["PCB"]
    PCBNode -->|jetComponentsList| JC["JetComponent"]
    PCBNode -->|segmentOrdersList| SO["SegmentOrder"]
    JC -->|depositsList| Dep["Deposit"]
    JC -->|padsList| PadNode["Pad"]
    BP -->|boardPosTrimPointsList| TP["TrimPoint"]
    PanelNode -->|"fiducial_1/2/3"| FM["FiducialMark"]
    PCBNode -->|"fiducial_1/2/3"| FM2["FiducialMark"]
LevelObjectDescription
0LayoutRoot. Board dimensions, machine coordinates, batch settings.
1BoardPositionOne slot in the layout. Links to a Panel and TrimPoints.
2PanelPanelization container. Fiducials, bad-board tracking, PCB placements.
3PanelPcbPosPosition of one PCB instance within the panel.
4PCBFull PCB program. Components, path segments, paste media, volumes.
5aJetComponentA component placement with its deposits and pads.
5bSegmentOrderOne segment of the optimized jetting path.
6Deposit / PadIndividual paste deposit / copper pad footprint.

Units and conventions

QuantityUnitExample
Spatial coordinates, sizesµm1 mm = 1000 µm
Rotationsmillidegrees90° = 90000
VolumesnL (nanoliters)160.59
Time between dots (dotPeriod)seconds0.00333 ≈ 300 Hz
Velocities (vx, vy)m/s0.15 = 150 mm/s
Shape enuminteger1 = circular, 2 = rectangular
Timestampsepoch milliseconds1771507297120

The #ref pattern

JPSys uses a deduplication strategy for repeated objects. The first occurrence of a PCB or fiducial is fully serialized. Every subsequent occurrence is replaced with a compact back-reference:

{ "id": 42, "#ref": true, "normalizedUcName": "MY_PCB" }

Consumers must resolve #ref objects by looking up the corresponding id from the first full definition.

Volume calculation

Base volume from deposit geometry

The nominal paste volume is derived from the deposit area and a virtual stencil thickness:

nominalVolume_nL = (deposit.sizeX × deposit.sizeY × stencilHeight) / 1,000,000

Where stencilHeight is approximately 127 µm (5 mil).

Volume percentage scaling

The volume percentage (90%, 100%, etc.) scales all three volume fields linearly:

nominalVolume = baseVolume × (volumePercent / 100)
minVolume     = nominalVolume × 0.9
maxVolume     = nominalVolume × 1.1

Deposit shrink factor

Deposits are intentionally undersized relative to their pads. The default shrink factor is 0.96 (96%):

deposit.sizeX ≈ pad.sizeX × 0.96
deposit.sizeY ≈ pad.sizeY × 0.96

Worked example -- 2512 pad at 100% volume:

  • Pad: 3401 × 2499 µm
  • Deposit: 3401 × 0.96 = 3265 µm, 2499 × 0.96 = 2399 µm
  • Area: 3265 × 2399 = 7,832,735 µm²
  • Volume: 7,832,735 × 127 / 1,000,000 = 994.76 nL (reference JSON: 994.92 nL)

Oscillated movement (path planning)

The JPSys path compiler converts deposit geometries into an optimized sequence of SegmentOrder entries. The machine's Z-servo uses height measurement points to interpolate the correct jetting height for the start and stop of every strip.

Strips

The fundamental unit of movement is a strip: one linear sweep across a deposit area. During a strip the head moves at constant velocity while ejecting dots at a fixed period. The dot spacing along a strip equals:

dotSpacing_µm = |velocity| × dotPeriod × 1,000,000

Each strip has a minimum dot count determined by its length and diameter -- the machine will not accept fewer dots than this minimum.

Refill+

On each strip, the volume of the first dot can be boosted slightly if it would otherwise be smaller than subsequent dots. This is controlled by the Refill Dwell parameter in the cassette model (default 0). It compensates for the brief dwell time before the first ejection in a new strip.

Serpentine pattern

Deposits wider than a single dot diameter are filled using a serpentine (back-and-forth) pattern. Consecutive strips alternate their velocity sign:

Strip 1:  vx = +0.10, vy = 0     → sweep right
Strip 2:  vx = -0.10, vy = 0     → sweep left
Strip 3:  vx = +0.10, vy = 0     → sweep right

Between strips the head repositions by one dot-pitch in the perpendicular direction. This minimizes travel distance and avoids lifting the head between adjacent lines.

Component-level optimization

All strips belonging to the same component's deposits are grouped and ordered to minimize repositioning moves. Pads within a single component are visited in sequence.

Global path ordering

Components are visited in a nearest-neighbor sequence across the entire PCB. The orderNumber field on each SegmentOrder reflects this global optimization. The machine's path optimizer groups segment orders and applies a nearest-neighbor algorithm to minimize total travel distance.

When Online PCB Merge is enabled, the machine overrides the offline compiler's path and re-optimizes across all PCBs in the panel as if they were a single PCB, using nearest-neighbor for groups of segment orders.

Volume per segment (spherical cap model)

The volume of paste deposited by a single segment is calculated using a spherical cap model. Given the dot diameter and a contact angle parameter (set globally on the machine), the volume of each dot is:

V_dot = (π × h / 6) × (3r² + h²)

Where r is the dot radius and h is the cap height derived from the contact angle. The total segment volume is V_dot × dotCount.

Height zones and Z control

Before jetting, the machine measures board height at designated points. These height measurement points are interpolated into a height matrix. The Z-servo uses this matrix to set the correct nozzle height at the start and end of every strip.

Height zones group deposits together with their measurement points. Each PCB gets at least one height zone by default (one zone per PCB). Height zones can be regenerated as:

  • One zone per PCB -- default, each PCB gets its own zone
  • Single zone -- all PCBs share one zone (faster for large panels)
  • Multiple zones -- automatic clustering based on deposit grouping

The z field on each SegmentOrder reflects the planned jetting height (typically 0 for flat boards). For boards with cavities or height variations, the machine adjusts the Z position per-strip using the height zone data.

Coordinate systems

Two coordinate systems are involved in panelization:

  • PCB coordinates -- defined by the PCB's fiducial marks. Jet component positions (x, y) and deposit/pad offsets are in PCB coordinates.
  • Panel coordinates -- defined by the panel's fiducial marks. The PanelPcbPos entries map each PCB's fiducials into panel coordinates via x1/y1, x2/y2, x3/y3.

The first fiducial defines the origin and the line from fiducial 1 to fiducial 2 defines the board angle.

Field reference

Layout (root)

FieldTypeDescription
idintegerUnique identifier
namestringProgram name
normalizedUcNamestringUpper-case normalized name
commentstringStructured metadata (see below)
createTimeintegerCreation timestamp (epoch ms)
__modifiedTimeintegerLast modification timestamp
__modifiedCountintegerModification counter
modifiedBystringLast modifier
lifeCycleStatusstring"PRELIMINARY", "RELEASED", or "DISCONTINUED"
clampForcestring"NORMAL", "LOW", or "HIGH"
lengthintegerBoard length along conveyor (µm). Zero = auto-measure.
conveyorWidthintegerConveyor rail width (µm). Range 30--508 mm.
lowerLeftCornerXintegerMachine-coordinate X origin (µm)
lowerLeftCornerYintegerMachine-coordinate Y origin (µm)
batchSizeintegerBatch size count
batchSizeTypestring"LAYOUTS"
boardPosListarrayBoard position slots

Comment field metadata

The comment field stores structured metadata as a multi-line string:

Heinrich: Hier stehen Kommentare:
Purpose: AG04-M705-LFAC19 100%
Machine Type: MY500_S3
Compiler Settings: Default

PCB

FieldTypeDescription
totalVolumeintegerTotal paste volume (nL)
executionTimeintegerEstimated execution time (s)
mediaCategorystringe.g. "Paste, LeadFree"
cassetteModelIdintegerEjector type identifier
mediastringPaste media name
dotCountintegerTotal dots across all segments
jetComponentsListarrayComponent placements
segmentOrdersListarrayOptimized jetting path
inspectionThresholdintegerInspection threshold (%)

JetComponent

FieldTypeDescription
componentNumberintegerSequential number
namestringReference designator (R1, U3)
shapeNamestringPackage name (0402, QFN48)
rotationintegerRotation (millidegrees)
x, yintegerComponent center in PCB coords (µm)
depositsListarrayPaste deposits
padsListarrayCopper pads

Deposit

FieldTypeDescription
depositIdintegerSequence number
padIdintegerCorresponding pad
sizeX, sizeYintegerDeposit dimensions (µm)
shapeinteger1 = circular, 2 = rectangular
x, yintegerPosition relative to component center (µm)
nominalVolumenumberTarget volume (nL)
minVolumenumberMinimum acceptable volume (nL)
maxVolumenumberMaximum acceptable volume (nL)

SegmentOrder

FieldTypeDescription
orderNumberintegerExecution sequence (ascending)
x, y, zintegerSegment start position (µm)
vx, vynumberVelocity components (m/s)
diameterintegerDot diameter (µm)
dotPeriodnumberTime between dots (seconds)
dotCountintegerDots in this segment
arcSegmentRadiusinteger/nullArc radius, null for straight

Gerbtrace integration

Gerbtrace's Paste feature includes a jet print mode that simulates the MY600 dot deposition pattern on the board canvas. The JPSys export generates a complete program JSON including the optimized serpentine path that can be loaded directly onto the machine.

Export validation and coordinate frames

Gerbtrace's export supports circular and axis-aligned rectangular paste pads. Unsupported geometry, parser warnings, arbitrary rotations, empty placements, and pads outside the board outline stop the export with an error. Coordinates are normalized to millimetres, translated by the board origin and transformed for 0°, 90°, 180° or 270° board rotation before conversion to machine units. The program must have a name and valid paste settings.

The library's panel export additionally requires explicit panel dimensions and PCB-local fiducials; panel placement fiducials are in the panel coordinate frame. All four PCB corners are checked through the two-reference placement transform, including rotation and scale, against the panel envelope. The current export dialog generates a single-board program.

Desktop exports write exactly to the filename selected in the native save dialog. Keep the suggested extension when the receiving application requires it.

Before production use, open the exported program in JPSys, verify dimensions, orientation, fiducials, deposition volumes and path, and perform the machine's normal simulation or dry-run acceptance procedure. Automated reference tests verify the serialized contract; they do not replace acceptance on the target machine.

Machine export requires a closed, warning-free Outline or Keep-Out contour. Copper or paste extents are not physical board dimensions and cannot supply a missing machine frame. Correct the layer classification or import the board outline before exporting.