Manufacturing interventional cardiac devices, such as stents, has traditionally employed two-axis systems consisting of a rotary “spindle” axis mounted on top of a direct-drive linear stage. (See Figure 1) This combination of axes allows the workpiece to be moved very quickly underneath a fixed laser beam, and permits very precise and intricate profiles to be cut into the tubular workpiece material.

Fig. 1 - An example of an integrated two-axis linear/rotary system for stent manufacturing.
Typically these systems are programmed as if the two axes are both, in fact, linear in nature. In other words, the cylindrical pattern is “unrolled” to take the shape of a more typical flat workpiece. While this technique might ease the motion control programming burden, often the resulting pattern cycle-time suffers due to the many directional changes the rotary axis (in particular) must undergo during laser processing. Alternatively, “free-running” the rotary axis in a constant direction and raster-scanning the required pattern using high-dynamic galvanometers is a better and far more time-efficient means of writing the same pattern to the cylindrical workpiece.

Figure 2 shows a typical “unrolled” stent pattern. Because of the many tight circular features in the pattern, both axes must accomplish many directional changes while executing the motion profile. As workpieces become smaller in diameter, the acceleration values implied by these directional changes become very high. At certain accelerations the stages can no longer effectively track the desired profile and cycle times must be increased (as acceleration values are decreased) to compensate. However, if the image shown in Figure 2 were sampled to create pixels whose sizes are an integer multiple of the laser spot size, then the entire pattern could easily be written using a raster-style from the resulting bitmap array.

Fig. 2 - A typical stent pattern “unrolled.”
Clever motion control programming, along with mark-on-the-fly features native to some modern advanced motions controllers, can facilitate writing the pattern onto a continuously rotating workpiece using a high-speed galvanometer. One axis of the scanner performs the linear scanning while the second axis compensates for the rotation of the workpiece during a single raster line, that is, making sure that the line is not diagonal on the workpiece. Of course, care must be taken to choose a rotational speed and scanning velocity that will not cause the laser spot to “walk off” the workpiece and become defocussed. The steps required to create such a project follow.

Create a BitMap from a Drawing

Fig. 3 - Bitmap dialog within CADFusion.
First, save the source DXF file to a bitmap format of the highest possible resolution. Ensure that the pixel size is scaled or chosen to be an integer multiple of the laser spot size being used to process the part. Other sampling strategies might include simple snipping/screen captures (for lower resolution trials) or third-party programs to convert vector files to bitmap images.

Create Bitmap Project

Next, the image must be post-processed (or sampled) to create an array of pixels that are used to dictate when the laser will be on as the scanner rasters over the top of the workpiece. One product that could be used for this task is CADFusion, a post-processor that converts drawings or images into motion controller programs.

he desired bitmap image should be selected and the software settings should be chosen. CADFusion allows easy selection of the drive hardware which simplifies Tracking Source (from where the servo encoder signals come for each of the two axes) as well as Marking Settings. For this example, the “Threshold, Bitmap’s Average Pixel Value” choice from the Conversion drop-down list in the post-processor is selected to mandate that pixels will be defined by this metric, as opposed to dithering, for example. At this point specific choices may also be made to define laser firing outputs and hardware definitions (See Figure 3).

After the Bitmap settings have been made, the image should be positioned on the canvas to represent its position within the motion control system during laser micromachining (i.e., at the same offset as the physical tooling underneath the galvo scanner).

Fig. 4 - Bitmap dialog within CADFusion.
TNext, we must define the marking pixel size for the bitmap image (See Figure 4).

Within the Properties panel we select a Marking pixel size of 0.050, or 50 microns assuming a user unit defined as one millimeter.

The final step is Exporting the actual motion controller program code. Select Export from the File Menu Group. Within CADFusion, this launches the Project Settings dialog if these have not already been previously set (See Figure 5).

These settings should be chosen to support the feedrates allowed by the system mechanics. For galvo-enabled marking, the Coordinate Motion Feedrates can be set quite high–easily hundreds of mm/s and perhaps higher. The Axis Names should be verified against the controller parameter file, and Linear Type should be selected for both axes (recall that the rotary stage is being programmed as a linear axis in circumferential units for this project). If any Initialization or Termination code is required (for instance, to enable and home the axes, to set up machine safety or I/O functionality, or to make function declarations and definitions), this may be typed or imported within this dialog box. Once the Project Settings have been selected and saved, the resulting code is displayed and should be saved.

Configure Mark on the Fly

Next, open the saved program within the chosen motion controller. To enable the “mark-on-the-fly” feature required for continuous rotation laser machining, the following command (using the A3200 machine controller as an example) is required to allow the radial-direction galvo axis (Y direction in our example) to have access to the rotary stage’s encoder feedback (and to then compensate for it during X-direction scans): GALVO ENCODERSCALEFACTOR Y (CountsPerUnit.Y/CountsPerUnit.THETA)*EmulatedQuadratureDivider. THETA

Fig. 5 - Project settings dialog.
In this example, the rotary axis is named THETA. This statement not only binds THETA to the Y galvo axis direction, but also scales the relative axes such that one user unit in the galvo direction is equivalent to the same user unit in the servo (THETA) direction.

The EmulatedQuadratureDivider qualifier within this statement is optional and may be omitted if this THETA axis parameter is set to 1 within the configuration file, as it is a type of scaling function used within the A3200 controller. This statement should be inserted into the program before the “‘Bitmap 1’” line comment, as exported by CADFusion, to be certain that it is implemented before any motion is commanded of the system. (See link at end of article for Appendix)

The specific wiring for the system should also be confirmed at this time to be certain that the encoder feedback signals from the rotary stage’s drive are properly input into the galvo drive’s encoder input port.

The final step in configuring this feature is to command the rotary stage to freerun (spin continuously). In general, this would be done immediately before galvo motion is commanded to write the actual part. However, CADFusion outputs a very compact code structure for bitmap generation that nests the motion commands within those commands that download the bitmap arrays to drive memory. Therefore, the required insertion point for the FREERUN command may not be obvious.

This command: FREERUN THETA should be inserted immediately following the line within the CADFusion-generated code (See Appendix): $nextReadScan = $nextReadScan + $maxScansPerRead.

Similarly, command: FREERUN THETA STOP should be inserted toward the end of the program after command line: FILECLOSE $BitmapDatFile. This stops the rotary axis after the laser processing is complete.

One key factor to consider is the feed rate chosen for the rotary stage. If a feed rate too slow or too fast is chosen, the galvo axis in the radial direction (again, Y in this example) will still track the rotary stage’s motion, but it may cause the laser spot to “fall off” to one side or the other of the cylindrical workpiece as it tracks.

To a first order approximation the total processing time may be estimated as the number of raster scans ( image length divided by pixel size) times the product of scan speed (Coordinated Motion Feedrate) and image width: Process Time = (Image Length/pixel size) * (Coordinated Motion Feedrate) * (Image Width). Of course this assumes that the galvo axis in the axial direction (X) can accelerate in near zero time. All dimensions are in user units, and the Coordinated Motion Feedrate should be replaced with any explicitly commanded RATE value used for that axis in the program. The feedrate for the FREERUN command should be selected to support one revolution of the rotary axis in this amount of time.


The preceding example and supporting code demonstrate a powerful post-processing strategy, one that is enhanced by the image post-processing capabilities of utilities such as CADFusion. The full code structure of this project is available from Aerotech at .

This article was written by Scott Schmidt, Group Manager, Laser Processing and Micromachining Group, Aerotech, Inc., Pittsburgh, PA. For more information, Click Here