Integrating custom designed transducers with the Sonix platforms is a straight forward and easy process. In this article we explain the basic steps for integrating a new transducer to the system.
For this article, we have assumed that a new transducer has been designed and developed which is compatible with the Sonix systems. In particular, the transducer elements are wired properly to the pins on the connector. Ultrasonix trasnducer pin-out can be found online at the research forum http://research.ultrasonix.com in the Transducer section.
For the integration process, described in this article, only six pins are of interest: A1 to A6. These pins define the 5-bit transducer ID encoded by C0 to C4, as shown in the following diagram: (The C5 bit is reserved for future)
Assigning an ID to the Transducer: Concept
The A1 to A6 pins on each of the transducer connectors on a Sonix system are 6 digital inputs, which have pull-up resistors on them. This means that if the pins are left unconnected, the values for all six pins would be read as logic high. The A6 pin is not actually used. By grounding the A1 to A5 pins, inside the transducer, it is therefore possible to assign a 5-bit ID to the transducer. Therefore a maximum of 32 transducer ID's can be supported at each time by the Sonix system.
The pins are usually tied to ground inside the transducer connector, GND = 0 (pin tied to ground) and NC = 1 (leave open) , to form the binary format of the ID.
An example to create a transducer with ID = 3.
Assigning an ID to the Transducer: Procedure
The following photos illustrate how to assign or change the ID of a transducer manually. Please note that this is an advanced procedure for research users of the system. Changing the ID of an existing clinical transducer will void its warranty and prevent the system from loading the right parameters for the transducer and is strongly discouraged.
Step 1: Become familiar with the transducer connector, especially the screws. You may need to remove small plastic caps to expose the Four screws:
Step 2: Remove the screws and pull the two plates apart.
Step 3: Unscrew the grounding connector(s) and partly remove the connector interface. Note that access is needed at row A. You can read row A in the following photo.
Step 4: After analyzing the pin-out diagram and how the transducer ID should be connected, solder or unsolder the necessary lines. The conductor that extends along the board is a ground, and by soldering each pin to this conductor, you are actually grounding it.
- C0 = A1 = Left board, left side, top trace
- C1 = A2 = Left board, right side, top trace
- C2 = A3 = Middle board, left side, top trace
- C3 = A4 = Middle board, right side, top trace
- C4 = A5 = Right board, left side, top trace
- C5 = A6 = Right board, right side, top trace
Example: A1 = left open = binary 1
Example: A6 = tied to ground = binary 0
Defining the Transducer Specifications for the Software
After wiring a ID for your custom transducer inside its connector, it is now time to connect it to the system. At this stage, the hardware will read the transducer ID, and notify the software (such as the clinical Exam software) of the transducer ID. The software now needs to load the specific parameters, such as the element pitch, radius of curvature, bandwidth, etc. for your probe.
The Sonix software looks inside a file called probes.xml to find the values for all the transducer parameters. In order for your transducer to function properly with our system, you need to modify the probes.xml file and enter the specific values of these parameters which pertain to your custom transducer. The file is a nested .xml file and easy to read and edit.
Each transducer is defined inside the <probe> </probe> tags. The id of the transducer is the ID that you hard-wired inside the transducer connector. This is the parameter the software uses to identify your transducer in the .xml file. Therefore, you only need to modify (or add) the items under your own transducer ID.
Ideally a new ID should be created for each transducer to avoid confusion within the software. However, as Ultrasonix supports many different transducers, we have run out of the 32 available ID's. In future more ID's will be available through hardware upgrades, for instance by putting ROM in the transducer connector. For now, you may need to reuse an existing ID for your transducer. As for reusing, we recommend that you:
- back up your probes.xml file, so that you can go back.
- Select an ID that is assigned to a transducer that is least likely to be used on that particular system.
- Delete the entire section of the file between the <probe> </probe> tags for that transducer.
- Copy and paste entire section of the file between the <probe> </probe> tags from a similar transducer and change its id to the target id. This way you will have to modify values from a similar transducer for your custom transducer
- Modify the values to match your custom transducer parameters.
A typical probe entry from the probes.xml file may look like this:
<probe enabled="1" id="2" name="L14-5/38"> <type>2</type> <transmitoffset>0.000000</transmitoffset> <vendors> <vendor name="Prosonic"> <model>L5-10/40EP</model> <partnumber cableexit="left">00.035.081</partnumber> <partnumber cableexit="left">00.035.067</partnumber> <partnumber cableexit="left">00.035.051</partnumber> <partnumber cableexit="right">00.035.017</partnumber> </vendor> <vendor name="Prosonic"> <model>L5-10/40EP(GPS)</model> <partnumber cableexit="left">00.035.064</partnumber> </vendor> </vendors> <icon>L14-5_38-and-L9-4_38.png</icon> <biopsy> <angle>41000</angle> <depth>6000</depth> <distance>50000</distance> <width>3430</width> </biopsy> <frequency> <center>9500000</center> <bandwidth>9000000</bandwidth> </frequency> <maxfocusdistance>100000</maxfocusdistance> <maxsteerangle>17500</maxsteerangle> <minFocusDistanceDoppler>40000</minFocusDistanceDoppler> <minlineduration>60</minlineduration> <motor> <FOV>0</FOV> <homeMethod>0</homeMethod> <minTimeBetweenPulses>0</minTimeBetweenPulses> <radius>0</radius> <steps>0</steps> <homeCorrection>0</homeCorrection> </motor> <numElements>128</numElements> <pinOffset>0</pinOffset> <pitch>300</pitch> <radius>0</radius> <support> <freehand3d>1</freehand3d> <tempAngleSensor>0</tempAngleSensor> <trus>0</trus> </support> <muxWrap> <Rx>0</Rx> <Tx>0</Tx> </muxWrap> <elevationLength>0.7</elevationLength> <maxPwPrp>800</maxPwPrp> <invertedElements>0</invertedElements> </probe>
The above example shows the information that should be set for a transducer definition. Looking deeper into file, one can find examples for defining biopsy guide information, stepper motor control, and many other transducer properties. The following table contains a description of the transducer parameters and their units.
|transmitoffset||Transmit offset in number of elements.||number of elements|
|pinoffset||Pin offset if the probe element # 0 starts at a different pin.||N/A|
|frequency - center||Center frequency of the probe.||Hz|
|frequency - bandwidth||Frequency bandwidth of the probe.||Hz|
|radius||Radius of the probe.||1/1000th of a degree|
|biopsy - angle||Angle of entry for the biopsy needle.||1/1000th of a degree|
|biopsy - depth||Depth of entry for the biopsy needle.||microns|
|biopsy - distance||Initial biopsy target distance at probe surface.||microns|
|biopsy - width||Default width in pixels of the biopsy guide.||N/A|
|maxfocusdistance||The maximum focus distance for calculating receive time delays.||microns|
|maxsteerangle||The maximum steer angle allowable.||1/1000th of a degree|
|minFocusDistanceDoppler||The minimum focus distance for one Doppler scanline.||micons|
|minlineduration||The minimum line duration for one scanline.||microseconds|
|motor - FOV||Field of view of the motor range.||1/1000th of a degree|
|motor - steps||Maximum number of motor steps if the probe has a motor.||N/A|
|motor - radius||Radius of motor.||microns|
|motor - homeMethod||How the motor gets to home position. 0 = no motor, 1 = hal sensor, 2 = count method.||N/A|
|motor - homeCorrection||The number of steps used to correct the home position for motors without homing sensors.||number of steps|
|support - freehand3d||Does the probe support freehand 3d? 0 = no, 1 = yes.||N/A|
|support - tempAngleSensor||Does the probe support temperature/angle readout? (Supported by TEE probes only) 0 = no, 1 = yes.||N/A|
|support - trus||Does the probe support Trus grid? 0 = no, 1 = yes.||N/A|
|invertedElements||Only set to 1 for SA4-2/24 probe (ID 29) only due to the probe's construction. Set to 0 for all other probes.||N/A|
To get started with imaging using the Exam software, a preset will need to be created and associated with the new transducer. The simplest way to do this is to copy a master preset from another transducer that has similar parameters and properties. For instance, a new 10MHz linear array should copy from the L14-5/38 master preset, the associated file within the software is GEN-General (L14-5 38mm).xml. Once copied, the file should be renamed to something different like GEN-General (My Probe).xml.
Editing the master preset file is relatively easy, the important information is to change the attributes of the preset node, where the probe attribute is the ID of the new transducer.
<preset app="6" factory="1" master="1" probe="2" version="2">
Imaging parameter values can be adjusted directly in the XML file, or the transducer can be loaded with the research software with the default copied preset, and using the research menus, the parameters can be adjusted until imaging is optimized, whereupon the preset can be saved and overwritten. It may be best to contact an Ultrasonix support member to help with this step.