A more complex ultrasonic sensor

Hi,

I'd like to know, if there are more complex ultrasonic sensors for Arduino, than the SRF kind. What I'd like to do is to create a simple device which can mimic medical ultrasound devices. Of course, these devices are really complicated, with transducers formed by combining more than a hundred of piezoelectric crystals. They act as a transmitter and reciever and are also able to evaluate the amplitude of the returning signal and generate gray-scale images.

We could start simple by using a single emitter-reciever combo. Of course, we won't be able to generate a gray scale picture with it but we may be able to draw a single-line graphic (like the M-mode ultrasonography or A-mode ultrasonography pictures). What we need is a single-element transducer, which can emit pulses and then listen to these pulses and measure the echo's amplitude. Do you know if such a sensor can be bought commercially? Or is it a project too complicated for Arduino?

Thanks

How do you plan to convert the ultrasonic receiver output to video ?

It is a bit too complex for an arduino. The beam is formed by driving the emitters at a specific phase relationship.
I am not aware of any commercial sensor.

Note there is no need to convert this into video, what ever that means.

Note there is no need to convert this into video, what ever that means.

What I'd like to do is to create a simple device which can mimic medical ultrasound devices. Of course, these devices are really complicated, with transducers formed by combining more than a hundred of piezoelectric crystals. They act as a transmitter and reciever and are also able to evaluate the amplitude of the returning signal and generate gray-scale images.

An ultra sound of an unborn baby in a mother's womb is a video
https://www.google.com/search?q=ultrasound+monitor+display&rlz=1C1GPCK_enUS504US504&es_sm=93&tbm=isch&imgil=2v9JntrAtID8IM%253A%253Bhttps%253A%252F%252Fencrypted-tbn1.gstatic.com%252Fimages%253Fq%253Dtbn%253AANd9GcSFmmME5BsrtnyTmmxcgtJJQoPqa87OSMPaUUI_k1WJbVAehzDK%253B700%253B486%253B7CVfeuGK65O4RM%253Bhttp%25253A%25252F%25252Fwww.visualphotos.com%25252Fimage%25252F2x4140523%25252Fmodel_released_obstetric_ultrasound_expectant&source=iu&usg=__xOWyjtU5izW01OBsJ-sUY2pOg6w%3D&sa=X&ei=YA5gU939BoyzyAS2o4E4&ved=0CFQQ9QEwBg#facrc=_&imgdii=_&imgrc=2v9JntrAtID8IM%253A%3B7CVfeuGK65O4RM%3Bhttp%253A%252F%252Fwww.visualphotos.com%252Fphoto%252F2x4140523%252Fmodel_released_obstetric_ultrasound_expectant_parents_watching_a_monitor_displaying_an_image_of_t_F0011599.jpg%3Bhttp%253A%252F%252Fwww.visualphotos.com%252Fimage%252F2x4140523%252Fmodel_released_obstetric_ultrasound_expectant%3B700%3B486

To be able to convert the echo recieved to video, you need to determine the depth levels from which echoes are produced. Let's assume an experimental setup: Let's assume we have an ultrasonic sensor and three targets. The targets are aligned (they have to be, because we are using a single transducer) and installed with a distance of 1 cm between each other. Here's a schematic representation:

(Transducer) -- 1 cm-- (Target 1)--1 cm-- (Target 2)--1 cm--(Target 3)

As we are using more than 1 object, we have to be able to transmit ultrasonic pulses instead of continous ultrasonic waves, otherwise we can't determine the distence between objects, or the number of the objects. Let's assume we send a very short pulse and then the sensor starts to listen for echoes. The pulse will hit target 1 and a quantity of the pulse will reflect back from target 1, but if the target is not a specular reflector (meaning it won't reflect all of the pulse back), a quantity will continue to go in the same direction and hit target 2. The same reaction will happen there and a portion will reflect back, while the remaining will hit target three. We will assume the speed of sound to be constant, so by measuring the time it takes for the returning echoes, we can accurately calculate the distence of these reflectors (x=V*t/2) and we can use a graphic display to plot these as dots. The upper border of the display would be the transducer, the lower part could be the range of the sensor (it would depend on its frequency), so we can draw dots on suitable locations. The size of the dot could be determined by the amplitude of the returning signal (assuming we could measure this amplitude).

One of the difficulties with your idea is the need to measure the amplitude of the return pulse as well as the round trip time. Commercial ultrasonic imaging devices operate at frequencies as high as several MHz, which is not possible with the Arduino.

However it should be possible to use the more common 40 kHz transducers. The standard ranging approach is to emit a short train of 8-16 pulses at 40 kHz and then listen for an echo. Any one pulse can result in a reflection. So, to accurately measure the return pulse height using an ADC, you would need to sample the incoming signal at several hundred kHz. That could be done with an external ADC, but not with the built-in ADC.

: raschemmel
You are being very aggressive today.
There is no need to make a video from the data. Yes you can but not on an arduino.
So how about posting things that are helpfull and not asking aggressive non relevant questions.

What I'd like to do is to create a simple device which can mimic medical ultrasound devices. Of course, these devices are really complicated,

Sorry, Mike, can you tell me where the OP explained the scope of his project ? (what exactly is his output ?) I didn't see it. The only reference I have to go on is his reference to medical ultrasound . It isn't very useful as a medical device if it doesn't generate an image does it ? If you handed the doctor a list of analog values or whatever, would that help him ? If you are going to talk about a simple medical ultrasound , then you are by definition talking about an image as that is the whole objective of the medical device.
If you talk about a simple medical ultrasound with no medical value, then yeah go ahead, but it's not medical, it's some arduino hobbyist's weekend project, because I personally don't see how you can use the words "medical" and "ultrasound" in the same sentence without someone expecting a picture at the end. I am not being aggressive. If I were , the OP would have told me to bugger off already. XD

After thinking about it, it occurred to me there may be a way to generate picture WITHOUT video by using the width of the serial monitor display as a scan limit. Read the values and display them across using an array counter. When the last value is read and the counter reaches the limit of serial print() values in one line, it prints the last value using Serial.println(). stop the scan and light and led to tell the operator to start another scan from left to right . He pushes a button to start his scan and scans again until the led lights. When the line counter reaches the limit of rows that can be displayed, the second led lights indicating SCAN COMPLETE.
The only catch is finding a way to prevent any values from being read in until you place on the skin. Also, preventing more than one value from being recorded in the same location. Maybe you can figure that out Mike....

jremington:
One of the difficulties with your idea is the need to measure the amplitude of the return pulse as well as the round trip time. Commercial ultrasonic imaging devices operate at frequencies as high as several MHz, which is not possible with the Arduino.

However it should be possible to use the more common 40 kHz transducers. The standard ranging approach is to emit a short train of 8-16 pulses at 40 kHz and then listen for an echo. Any one pulse can result in a reflection. So, to accurately measure the return pulse height using an ADC, you would need to sample the incoming signal at several hundred kHz. That could be done with an external ADC, but not with the built-in ADC.

Commercial ultrasound units use high frequency transducers, because they need very short wavelengths (inversely propotional to the frequency) to achieve high spatial resolution. I understand that this cannot be done with an Arduino but I don't need high spatial resolution. What I'd like to achieve is similar to a ultrasonic parking sensor's display but wihich is more complicated operationally . If your car is equipped with a screen , the distance of an object can be roughly drawn on it. I assume these parking sensors use a simple logic and only display a range of distance, not the actual distance or the shape of the object (if it measures less than 100 cm, it highlights a green line, if it is less than 30 cm it highlights a red line more close to the car). This isn't very different on lighting a green led if the measured distance is less than 100 cm but more than 30 cm, and lighting a red led if the distance is less than 30 cm. etc. What I want to be able to do is to be able to demonstrate more than 1 object in the same line of sight with a more accurate representation of their distance (also their shape, but this would require more than one transducer).

By the way, I am a radiologist, and medical ultrasound is my main area of interest. Of course, I am not trying to build a home-made medical ultrasound device (the one I use costs 150.000 USD, much more expansive than an Arduino! ) I just wanted to see if it is possible to expand the use of ultrasonic sensors, which are only used for simple distance calculations, and be able to show dots on a screen relative to the position of different objects.

I take it you are no longer interested in measuring the amplitude of the return pulse, just receiving multiple echos.

That can be done with a few, but not all, of the available ultrasonic modules. One example includes the old-fashioned Polaroid modules once used in cameras, which are still available and work astonishingly well: http://www.uoxray.uoregon.edu/polamod/
The modern versions of this module are sold by SensComp: http://www.senscomp.com/

jremington:
I take it you are no longer interested in measuring the amplitude of the return pulse, just receiving multiple echos.

That can be done with a few, but not all, of the available ultrasonic modules. One example includes the old-fashioned Polaroid modules once used in cameras, which are still available and work astonishingly well: http://www.uoxray.uoregon.edu/polamod/
The modern versions of this module are sold by SensComp: http://www.senscomp.com/

Thanks for the links, I'll check them.

I still am interested in measuring the amplitude, however I think it is better to go with baby steps on this. Would there be a method to measure the amplitude? We would need to be able to set the output in decibels and measure in decibels the returning echo. Any sensor able to do it?

Would there be a method to measure the amplitude?

Yes, use an ADC to measure the signal and characterize the pulse by processing the resulting data.

We would need to be able to set the output in decibels and measure in decibels the returning echo. Any sensor able to do it?

Not to my knowledge. How would the sensor know what an "echo" is?

jremington:

Would there be a method to measure the amplitude?

Yes, use an ADC to measure the signal and characterize the pulse by processing the resulting data.

We would need to be able to set the output in decibels and measure in decibels the returning echo. Any sensor able to do it?

Not to my knowledge. How would the sensor know what an "echo" is?

Good question. I don't know the answer but it is possible in medical ultrasound devices. This is how we have gray-scale imaging. When an object is reflective, it is white. When it doesn't generate an echo, it is black. If only a proportion of the initial transmitted wave is reflected back, then we have a shade of grey.

@drmaestro: Hey this is an interesting topic. I actually just started my research to do the same thing with a 40 khz ultrasonic sensor to do some imaging (I don't expect to get a very high resolution). Are you still working on it? Did it work?

Hi there @drmaestro ! A quick ping too, I'm working on a similar assignment with a MHz-range transducer.. Would be happy to have a chat with you!

With a boosted arduino-IDE compatible board, and with an tailor-made analog front end, it's possible! Basically what you said: analog processing, good ADC, and that's it. See Ultrasound Sensors to be used in the Medical ultrasonography - Sensors - Arduino Forum