1. Metadata Overview
- First iteration as a beaglebone black cape : https://github.com/kelu124/murgen-dev-kit/
- Second iteration of breadboard modules: https://github.com/kelu124/echomods
- Target group: Ultrasound researchers, engineering school students, students, general hackers.
- Skills required: advanced surface mount soldering skills.
- Replication: The different iterations and modules have been disseminated in several locations.
- Documentation is published as a gitbook at: https://kelu124.gitbooks.io/echomods/content/v/50fd2a5931f95ab0e5c111557b0069c8273e0f77/
- Modules are available online.
Ultrasound imaging has evolved since the first ultrasound machine appeared. The first devices were using single-sensor (transducers) techniques, coupled with mechanical scanning . The architecture of such systems, as shown in Figure 1, is well-known and formed the basis of ultrasound imaging.
Mechanical scanning has its limitation, but also its strengths: a single signal channel, linked to a single sensor, means that the corresponding electronics are simplified, and the cost is reduced. Moreover, with progress made in different technical fields, mechanical probes are seen on the market again. Search in academic literature, and open-electronics resources, yielded little to no documentation of previous research to rebuild these mechanical ultrasound imaging devices.
To the best of the author’s knowledge, there are no open-source hardware designs nor electronics accessible online for the analog-processing component. To bridge this gap, this work provides modules to the community to understand and recreate the electronic core of an ultrasound device.
This kit consists of several modules mainly built from easily available components. Two electronic modules were specifically designed to provide the basic development kit. These two modules, called the Ultrasound Imaging Analog Core (UIAC), as shown in Figure 1, are:
- the Transducer Pulser Module (TPM): designed to provide a precise high-voltage pulse, necessary to excite the sensor, while remaining robust enough to be controlled by an Arduino;
- the Analog Processing Module (APM): designed to correctly process the raw ultrasound electric signal, while easily exposing all intermediary signals, and exposing a digital output to the user.
We have chosen a modular approach to ensure that each key component inside the ultrasound image processing can easily be replaced and compared with another module. Each electronic module takes the place of a function in the signal processing chain or allows tapping into the different signals circulating between the blocks. We have considered readily available open-source modules and re-purposed components (probes) to provide the user with building bricks for the basic non-medical ultrasound imaging tool.
We remind that the aim of this work is not to design an ultrasound probe: the goal of the present article is rather to provide a basic open-source tool to understand ultrasound imaging technique and provide the analog core, unavailable today, as well as selecting proper off-the-shelf components for the remaining elements in the setup.
This paper also discusses several alternative configurations that can be implemented based on the presented modular system.
A strong focus has been put on documentation and corresponding infrastructure. The project’s documentation is backed by a script, extracting relevant information from the work logs in the repository, allowing a continuous update of information.
3. Overall Implementation and design
Using echoes for imaging
Ultrasounds, high-frequency sound waves, are used in medical applications for both diagnosis and treatment of patients. Their frequencies can vary from 2 to approximately 15 MHz for regular imaging, where in some cases higher frequencies are used for a finer surface imaging.
The ultrasound waves originate from the mechanical oscillations of a crystal in a transducer, excited by electrical pulses, also known as the piezoelectric effect. These pulses of sound are emitted from the transducer, propagate through the different media being imaged, and then return to the transducer as “reflected echoes” of an interface, as shown in Figure 2. These reflected echoes are converted back into electrical signals by the transducer and are further processed to form the final image.
In general, these sound waves, like typical waves, are reflected at the interfaces between the tissues of different acoustic impedance (linked to the density of the medium), where the strength of the echo is proportional to the difference of the impedance. On the other hand, echoes are not produced if there is no acoustic difference, hence no impedance interface, between media. Homogeneous fluids thus seen as echo-free structures.
A modularized approach
A modular approach was chosen for the kit development in order to enable the exploration of the individual mechanisms of ultrasound processing and to allow the replacement of each element in the processing chain, as desired.
Each module can be considered as a breakout board of the most central elements, intended for easy experimentation with usual equipment, such as breadboards and standard power supplies. This design, along with selected easily-accessed signal interfaces, provides access to the different intermediary signals.
As mentioned, there is no available open-source electronic analog system for ultrasound imaging. There are several open-source software initiatives (like PLUS) or multiple-focus ultrasound control systems (like Vanderbilt’s Open-Source Small-Animal MR-Guided Focused Ultrasound System), or articles suggesting electronic architectures for ultrasound systems. In 2009, Tortoli et al. [18, 21] created an open 64-channel platform, but with a relatively complex architecture. A simpler 4-channel acquisition setup was built with an annular array, but with no automatic movement. A more recent approach combines relatively a 4-channel , similar to our design, coupled to a Raspberry Pi [15, 16]. So far, state-of-the-art systems cannot be built with abundant modules and easily assembled components.
A representative publication shows a common structure for the different ultrasound systems , which has been summarized in Figure 1. Recent progress and research show the feasibility of producing compact ultrasound imaging devices, which can interface with a smartphone , wirelessly or through USB .
A central element in the kit is the sensor, the ultrasound transducer. As we chose a single-channel processing unit, the transducer is a mono-element piezoelectric. This element has a fixed focal depth. A frequency of 3.5MHz was chosen, with a focal distance of 70mm, which is commonly used for obstetric and gynecological imaging. For the sake of simplicity, this frequency on the lower range of ultrasound imaging was chosen. Larger characteristic periods enable simpler, slower controls and ADCs. As a consequence, we chose a repetition period of 300us. This corresponds to an imaging depth of 230mm, which was more than required to image between 20 and 150 mm. This project focused also on single element transducers to avoid developing a more complex beam-former component. The drawback is slow scanning, mechanical fragility, and insensitivity . To increase the framerate, several transducers and corresponding connections can be integrated into a sweeping or rotating scan head , as it was done on previous mechanical probes.
The kit requires a pulse component: to have the transducer emit a signal, a high voltage pulse, precisely controlled in amplitude and in time, needs to reach the transducer. We chose off-the-shelf components after research and consideration. Existing ICs exist, such as the MAX14808 , but are relatively complex, as they are octal or quad chain components.
The kit then requires an “analog processing” component. After the acoustic wave leaves the transducer, echoes appear due to the acoustic impedance discontinuities taking place in the medium being imaged. These echoes are captured by the transducer, and transformed back into a weak electrical signal, which needs to be processed. Classical processing includes filtering the signal around the central frequency of the transducer, then apply a low-noise amplification, then correcting the time-based attenuation. The image is built from the envelope of this last signal. So the envelope of this signal needs to be extracted, and passed to a digital converter. As filtering and band-pass consume most of the processing power (up to 80% of processing power) , the module allows signal envelope detection with an ADL5511 IC. This also enables a first compression of the data to be transmitted to the user.
The data for the creation of an ultrasound image, the envelope of the signal, would have a high frequency of 1 MHz, since echoes are typically several periods long. Specific ADCs would be required for the digitization of such signals. Open hardware boards have onboard ADCs, but very few have ADCs above the Msps range, This implies that an analog envelope detection has to take place in the module. To facilitate this processing, we have, we have used an existing open-source 40Msps Data Acquisition (DAQ) on one of the modules, and have also tried a 6 Msps Arduino IDE-compatible micro-controller to acquire the signal and stream it over WiFi.
A embedded-linux first iteration
A first iteration of the hardware was embodied in a Beaglebone Black extension (cape), where the cape 10 Msps ADC would be tapping into the two programmable real-time unit (PRUs) to acquire the signal. Special attention was given to simplify the power supply, limiting the inputs to 5V and 3.3V, the most common levels.
Designs of modules
Three iterations were done during the length of the project:
- A first single-board analog design was tested with a BitScope (see Figure 3).
- The second design used both the two TPM and APM modules, with a medical probe on one side, and a Beaglebone Digital Acquisition board on the other.
- The third design is simpler, using the two modules, with a simple transducer for the sensor, and a Arduino-compatible microcontroller, with an appropriate ADC, and with wireless capabilities.
A first integrated board
This first iteration permitted tests and validated parts of the design. Despite its test points, this board did not provide all the insights that can be extracted from the hardware, so a redesign was considered to expose all key inputs and outputs of the signal processing. While existing compact elements exists, such as the AFE5808 (which include low noise amplifiers (LNA) and analog-to-digital converters (ADCs) , we preferred using separate ICs, so that the user can measure exactly the target signal.
A second approach
For the sake of simplicity, a design of two separated modules emerged.
- One is the Transducer Pulser Module (TPM), where the high voltage and connection to the transducer lies.
- The other is the Analog Processing Module (APM). A dual input for the clipped raw signal from the transducer was integrated, as well as different jumpers and pots, to control the Variable Gain Amplifiers (VGA) gain, as well as the ADC reference voltage. The high-speed ADC was removed, and replaced with an on-board serial 2Msps ADC.
The remaining elements of the kits are micro-controllers, processing units, or power supplies that can be easily obtained and easily modified and programmed.
To test the two APM and TPM modules, we used a commercial ultrasound probe and a Beaglebone-based acquisition board.
A third iteration
The latest set of modules is based on a wireless-enabled, Arduino-compatible STM32, which has a 6 Msps on-board ADC, strictly compatible with the analog processing module for the envelope detection.
A selection of integrated ICs
To save on costs and limit complexity, and to ensure the robustness of the designs, the two designed modules leverage existing ICs:
- The Transducer Pulser Module (TPM) requires both a high-voltage source, and a pulser control. These functions used the Recom Power R05-100B DC/DC Regulated Converter with single-output, to generate a stable high-voltage, which level is determined by a potentiometer, and a Supertex HV7360, High Speed Two or Three Level Ultrasound Pulser, to precisely control the pulse level and duration.
- The mono-channel Analog Processing Module (APM) uses a single channel ultrasound Time Gain Compensation (TGC) integrated circuit, the Analog Devices AD8331, Ultralow Noise VGA with Preamplifier, which gain can be controlled by an external 0 to 1V track. The amplified signal is fed into a RF envelope detector, the Analog Devices ADL5511, RF envelope and TruPwr™ rms detector. The envelope is the unbiased with an Analog Devices AD8691 Series Precision Amplifier, and optimized for the last item, the Analog Devices AD7274, a 12-bit, 3 Msps Analog to Digital Converters.
4. Quality control
Most of the modules can be found on usual open-source hardware procurement websites. However, the two modules specifically developed for this project have to be custom made, as they are not currently sold as kits or assemblies.
One of the modules uses a DC-booster, which can raise the voltage it delivers above 100V, as the R05–100B can deliver up to 134VDC. The design has limited high-voltage to specific points within the module, and to the SMA connector going to the transducer. The other pins of the module have inputs/outputs that range in the [–5V ; 5V] bracket. The full setup, without the motor, did not use more than 170 mA at 9V during the tests. The ATL3 probe, powered at 3.3V, brought the total power envelope to 330mA at 9V. The difference of stimulating the transducer caused a 5 mA at 9V difference.
Other safety issues when applied to humans . There are indeed very strict regulations on ultrasound equipment for use in humans due to both thermal and mechanical effects of ultrasound on tissue such as overheating, and mechanical breaking of tissue structures. We understand that no medical scanners can be sold on the market without having undergone strict measurements and reporting routines (e.g. the FDA in USA and similar institutions elsewhere).
However, the present modules do not aim at providing a medical ultrasound imaging system to a doctor, nor is suitable for tests on living beings, and hence does not need to fulfill the same requirements as a medical device.
Emulating the signal
In order to obtain repeatable signals, the DAC of a Arduino-compatible board was used and integrated on a separate module. This module is capable of simulating a 2MHz signal, using an arbitrary signal profile. This signal can be used to characterize the analog processing module, as well as the DAQ modules.
Calibrating the signal
Calibration of ultrasound electrical signal processing requires a standard signal, which is difficult to provide using a classical transducer. Moreover, due to the variety of transducers, it would be extremely difficult to obtain a standard setup and signal. A calibration tool has been built (the DAC module), based on a STM32F205 DAC. This permitted to record the calibration signal, and to simulate the behavior of the Transducer Pulser Module (TPM). We note that do-it-yourself signal ultrasound generators  exist, though these were too complex for our purposes. Qualification and calibration of the high-voltage level on the TPM are done using an oscilloscope.
Finally, the gain level of the analog processing module is in the tests described below adjusted at the beginning of the experiment, to use the full range of output signal and obtain the best image possible. The level of gain can be selected, either from one input signal, coming from an external DAC for example, or with a potentiometer, the choice between the two being made possible by a jumper.
Developing a home-made reference material
A home-made phantom developed by echOpen was used to test the first iteration of the board. It was made of a gelatin phantom, with tapioca inclusions of two types (2mm and 8mm), the medium being contained in a condom (see Figure 4). This type of phantom does not conserve well, and was not reused for the second iteration. Tapioca and gelatin are used as they are close in terms of ultrasound properties to biological tissues.
Developing a wire phantom
The gelatin phantom is useful in terms of obtaining volumetric images. However, this type of phantom does not conserve well, and does not provide well-calibrated images, making it difficult to compare signals acquired over time.
To this purpose, we have developed a very simple strip-board phantom, made of off-the-shelf electronic components, see Figure 5.
General testing has been done, especially for the two modules:
- For the Transducer Pulser Module (TPM), the criteria of the tests were the duration of the pulse, which should match the input signals, as well as the voltage of the pulse, being set by a potentiometer. Tests were done using an oscilloscope.
- For the analog processing unit, the DAC module allowed a standard input to be processed, and the result of the processing analyzed.
General conditions of the tests were that of a 150 ns, 70V-pulse for the Transducer Pulser Module (TPM), with a repetition every 300us. The gain setting on the analog processing board was set to maximize the range of the signal and match it to the DAQ unit.
These modules can be used in any setup requiring the excitation of the transducer, and further receiving and processing of the ultrasound signals. In our case, we have shown that they are working with commercial probes as well as single elements.
General use case
The modules can be assembled in a minimum set of additional modules using a power-supply, a pulser controller, and data acquisition.
- The Beaglebone cape setup is relatively simple, see Figure 6. The pulse control was realized using a Trinket Pro (point A), controlling the board (B). The data was acquired with a Bitscope.
- For the second iteration iteration, the modules were used with a vintage probe found on eBay and the Beaglebone PRUDAQ cape, replacing the Bitscope, see Figure 7.
- With the wireless setting, the setup simplifies, and only need to be powered with a USB cable (see Figure 8).
Using the modules with a single element transducer
A first test was done using a single-element transducer, salvaged from a used endovaginal S-VRW77AK ultrasound probe. The transducer was moved by a basic servomotor controlled by a Trinket Pro 5V, which doubled as the controller sending the pulse commands. Data was acquired on the first iteration at 5Msps with a Bitscope unit (BS10). The noise kept the SNR low, but nonetheless provided a source of data, and permitted to assess the performances of the different blocks. See Figure 4 for the phantom, and Figure 6 for the setup. Image type is detailed in Figure 3.
Using the modules with a commercial transducer
The dev-kit has been tested with a ATL-3 probe found online. This mechanical probe has 3 rotating transducers, a characteristic of this series of ATL probes. The ATL Access 3 probe connector to the transducers is simple and consists of a BNC cable. The other connector pins may correspond to the control of the probe motor. The probe’s motor was connected to a 3.3V, allowing the transducers to rotate freely in the body of the probe. The probe also includes outputs exposing the motor control, ensuring that the excitation of transmitter pulses are synchronized with the rotation, so that each line appears in the same direction in space for each rotation of the probe. In our case, we have seen that the transducers rotate relatively uniformly with a 3.3V supply from the voltage regulator. Minor adjustments in images were done in software to obtain a consistent video loop.
A first test took place using a Bitscope micro (BS10), similarly to the previous application. However, the time interval between two captures was not consistent due to buffer transfer delays and did not lead to satisfactory acquisitions. A second try was done using the PRUDAQ, a faster, real-time acquisition unit, designed as an extension of the Beaglebone. The PRUDAQ was connected to the amplified envelope signal provided by the APM, clipped at 1.4V to protect the DAQ input. 32MB were acquired. With 32MB containing two signals encoded over 16 bits each, there are 8388608 points of data, or approximately 839ms. With a pulser set at 300us intervals, we should see around 2796 lines of data, which was the case. Rebuilding the image, we could see close to 12 full images, for a framerate of 14 fps, meaning that the motor was at approximately 290rpm. The setup was used on a ultrasound phantom, as well as on a small dice (10mm side), as seen in Figure 9.
Using the modules with a Arduino and a servo
The last use-case was done using a piezo-element controlled by the Adafruit Feather WICED. The image obtained is shown in Figure 10. We show that with a 2 Msps acquisition, we can easily resolve the pitch between the different wires of the phantom. The full 6 Msps acquisition of the microcontroler still needs to be used.
A small library of images obtained on home-made phantoms with the first iteration is available at https://github.com/kelu124/murgen-dev-kit/tree/master/software/examples.
Full data from the regular phantom imaging can be found on https://github.com/kelu124/echomods/blob/master/include/20160822/2016-08-22-Fantom.md.
The data corresponding to the image of the dice can be found at https://github.com/kelu124/echomods/blob/master/include/20160814/2016-08-14-HackingAUltrasoundProbe.md.
Reuse potential and adaptability
Application for non-destructive testing (NDT)
The technology developed here does not differ from the technology used in NDT. Therefore, the whole set of modules can be used as-is in NDT, or its design can be adapted to NDT requirements.
Application for transducer professionals
Often, ultrasound equipment repair professionals need to check each element in probe-arrays, and thus only need a single channel equipment.
High speed DAC
Working with the DAC module enables one to be able to work on the acquisition system, based on a known signal input. This enables repeatability of the input, contrarily to images that are usually captured using a probe on an ultrasound phantom. This DAC can go up to 2MHz, on a limited voltage range, and could be used in testing analog signals processing. Recent development in open hardware provide interesting opportunities .
It is suggested that the pulser can be used in medical ultrasound image devices, or for test applications. It’s up to 35 MHz operating frequency and 2 ns matched delay times allow higher frequencies uses, such as superficial imaging or doppler analyses .
The analog processing module was tested for signals from 2MHz to 10MHz, with some distortion happening on the higher end of the bracket. However, it can be noted that, with the possibility to measure and control the inputs and outputs between each processing unit, this module could possibly be used for signal demodulation.
High-speed, wireless DAQ
The wireless DAQ module we built can go up to 6 Msps, with a 10-bit resolution, on a [0;3.3V] input range, and can work on a battery, as there is a battery management system already built-in. This module could, therefore, be used in systems where rapid acquisition and wireless streaming need to be used. For example, for Software Defined Radio (SDR), this module can be used after demodulation.
Adaptability of the home-made modules
The modules source code has been released, it is relatively easy for electronic engineers to reuse this code.
Apart from the well-known obstetrics and gynecology uses, ultrasound devices have been developed for several uses, which the current hardware could support, such as: doppler ultrasonography, contrast ultrasonography, molecular ultrasonography, elastography, non destructing testing, bladder measurement and other. An interesting one, suggested by Richard et al , would be to provide visual biofeedback to stroke victims relearning to control muscles. The same board could be reused for work on sonar-like systems , or as an acquisition device for bone conduction microphones.
A low-cost option
Apart from the wireless-enable micro-controller at 35$, the two custom modules components bill of materials cost 60$ and 85$ respectively. This low-cost lifts the barrier of high-cost equipment purchase and hence facilitates the reuse of these designs.
This project benefits from an infrastructure that is completely open: GitHub for the storage of files, and a GitBook to synthesize the complete documentation. A mailing-list gathers the users community, enabling a community-based support. Communication between the different projects is to be developed.
6. Build Details
Availability of materials and methods
Most of the modules can be sourced from usual, well known open-hardware online suppliers. Moreover, the two specific modules can either be produced with a proper surface mount equipment, or the manufacturing files sent to be produced. The HV7360 becoming obsolete, a new version of the board has been published.
Ease of build
When the first iteration had 4 layers, the two newly made modules are 2-layer designs, for the sake of simplicity.
The design also relies on off-the-shelf ICs to limit the number of its components. A trade-off had to be found when some ICs were BGA ICs.
The non-custom modules can be found commercially or already built.
Most of systems are FPGA (or DSP) based, especially for higher imaging frequencies [4, 5, 9], as well as using multiple-element transducers [7, 10] -while maintaining costs and power consumption low. We considered that programming FPGA (even DSPs) was a steep requirement for non-specialists, hence we focused on alternatives. However, it can be noted that an FPGA module could be developed to interface with existing modules.
Operating software and peripherals
The hardware has modules that require software to operate. These modules rely on the Arduino IDE, and their code was compiled using Arduino IDE 1.6.9. For the wireless module, the WICED BSP version used was 0.5.5.
To collect the data, the Beaglebone module simply uses the Beaglebone black with its PRUDAQ cape installed, where the data being acquired is available on a device (/dev/beaglelogic). With the wireless module, any wifi-enabled device can acquire the UDP stream.
- Most of the processing code is using Python 2.7, which is GPL-compatible.
- The Beaglebone module is using a Beaglebone Black, which is under a Creative Commons Attribution-Share Alike 3.0 license.
- The Feather WICED module is Open Hardware, and Open Source for its software.
- The code for the Arduino-compatible modules is developed under Arduino IDE.
- The two boards developed under this project are following the Open Hardware TAPR license.
- The source documents for these two boards was originally developed using Altium (proprietary), but the source has been ported to KiCad, which is under a GNU General Public License(GPL) version 3.
Hardware documentation and files location
The module approach that has been followed enables the posting of all code, source files, images, and general documentation in a single GitHub repository.
For each module, a Readme file presents the module, provides clear images of the module, the inputs and output of each module, and describes what is required to build and run the experimental setup.
- Name: Github repository for the ultrasound Arduino-like modules.
- Persistent identifier: http://doi.org/10.5281/zenodo.377054.
- Release: https://github.com/kelu124/echomods/releases/tag/v2.0.0.
- Filetypes: both boards are available in Altium and in Kicad format.
- Licence: TAPR Open hardware license under which the documentation and files are licensed.
- Publisher: Luc JONVEAUX.
- Date published: 31/10/16.
The full documentation, available as a GitBook, provides more details on the rationale of the designs, as well as more general comments on the setup and the author’s worklog. It can be found at: https://kelu124.gitbooks.io/echomods/content/v/50fd2a5931f95ab0e5c111557b0069c8273e0f77/.
In this work, we presented the development of a cheap ($400) set of modules for ultrasound imaging, leveraging on existing open-source hardware and integrated circuits. Their power and voltage requirements, fitting within a USB power envelope, can easily be supplied by off-the-shelf 5V power banks, and their small and lightweight design (A5 format) allows a great diversity in manipulation and configuration. In terms of image quality, the modules provide relatively high quality considering the level of complexity and their low cost ($400). The proposed modular design, as building blocks, will enable users to use the existing sets of modules or tailor them, if necessary, according to their own requirements.
This set of modules shows that ultrasound imaging can profit from a usable development kit. The following points will benefit from future review and improvements:
- In general, the design of the boards can be greatly improved. For example, having only two layers on the current design may be a source of noise. Moreover, applying a RF net to the board or using a RF shield for the sensitive parts may be another option.
- The pulser-module design uses only two inputs and one high voltage source. However, the chip enables more complex uses as a pulser, which can be further explored.
- The PRUDAQ has a real-time access to the digital information, as well as a Linux userspace. Further programming would enable the Beaglebone platform to be a real server and controller of the setup.
- The modules are slightly too wide for a breadboard: an effort could be done to make the pins available on a standard breadboard.
- A whole field left unexplored so far is that of the transducer. As the key sensor in the kit, it would be interesting to explore relevant technologies to develop an open and accessible transducer.
- The transducer at the moment is used in water. For ease of working, probes or scan head will have to be developed. Further work is required to determine the acoustic window material and its thickness. Several works already give pointers in that sense .
- A multiplexer module can be used, to interface this single channel kit with an array probe. Doing this would permit to do synthetic aperture imaging, and to characterize as well each element in the array.
- From a software point of view, the modules could be wirelessly controlled, leveraging the existing wireless communication channel, so that researchers can use a single unit for a laboratory, controlled from personal computers.
- For these high frequencies, a robust scan head can be used to obtain 130 fps, with light-weight transducer, and magnetic drive mechanism . A bimorph actuator would be sufficient to drive the imaging transducer [4, 5] immersed in the probe. The advantage of such a scanning device would be to precisely know the position of the line being imaged, while being cheaper, and more robust as there are no mechanical parts. Another alternative would be an ultrasound motor .
- An additional module could link the ADC with a USB interface, providing as well the power for the other modules. We have shown that our modules can be run with a power bank, and previous work show is it possible to stay within the USB power envelope .
Having a set of easy to use and modify Arduino-like modules will support the development of ultrasound imaging research, and provide the keys to the researchers, makers and curious-minded persons to explore this field.