Body-ultrasound Sonography With Arduino

42,968

111

21

Introduction: Body-ultrasound Sonography With Arduino

Hello!

My hobby and passion is to realize physics projects. One of my last work is about ultrasonic sonography. As always I tried to make it as simple as possible with parts you can get on ebay or aliexpress. So let's take a look how far I can go with my simple items...

I was inspired by this a bit more complicated and more expensive project:

https://hackaday.io/project/9281-murgen-open-sourc...

Here are the parts you'll need for my project:

the main parts:

for the transmitter:

  • a step-up-converter for the needed 100V for 5 USD: 100V boost converter
  • a common step-up-converter supplying 12-15V for the 100V-boost-converter for 2 USD: XL6009 boost-converter
  • a LM7805 voltage regulator
  • monoflop-IC 74121
  • mosfet-driver ICL7667
  • IRL620 mosfet: IRL620
  • capacitors with 1nF (1x), 50pF (1x), 0.1µF (1x electrolytic), 47µF (1x electrolytic), 20 µF (1 x electrolytic for 200V), 100 nF (2x MKP for 200V: 100nF20µF
  • resistors with 3kOhm (0.25W), 10kOhm (0.25W) and 50Ohm (1W)
  • 10 kOhm potentiometer
  • 2 pcs. C5-sockets: 7 USD C5 socket

for the receiver:

  • 3 pcs. AD811 operational amplifie: ebay AD811
  • 1 pcs. LM7171 operational amplifie: ebay LM7171
  • 5 x 1 nF capacitor, 8 x 100nF capacitor
  • 4 x 10 kOhm potentiometer
  • 1 x 100 kOhm potentiometer
  • 0.25W resistors with 68 Ohm, 330 Ohm (2 pcs.), 820 Ohm, 470 Ohm, 1.5 kOhm, 1 kOhm, 100 Ohm
  • 1N4148 diodes (2 pcs.)
  • 3.3V zener diode (1 pcs.)

Step 1: My Transmitter- and Receiver-circuits

Sonography is a very important way in medicine to look inside the body. The principle is simple: A transmitter sends ultra-sonic-pulses. They spread out in the body, are being reflected by inner organs or bones and come back to the receiver.

In my case I use the gauge GM100 for measuring the thickness of paint layers. Though not really intended for looking inside the body i am able to see my bones.

The GM100-transmitter works with a frequency of 5 MHz. Therefore you have to create very short pulses with a length of 100-200 nanoseconds. The 7412-monoflop is able to create such short pulses. These short pulses go to the ICL7667-mosfet-driver, which drives the gate of an IRL620 (attention: the mosfet must be able to handle voltages up to 200V!).

If the gate is switched on, the 100V-100nF-capacitor discharges and a negative pulse of -100V is applied to the transmitter-piezo.

The ultrasonic-echoes, received from the GM100-head are going to a 3-stage amplifier with the fast OPA AD820. After the third step you'll need a precision-rectifier. For this purpose I use an LM7171 operational amplifier.

Pay attention: I got the best results, when I shorten the input of the precision-rectifier with a dupont-wire-loop (? in the circuit). I don't really understand why but you'll have to check it if you try to reconstruct my ultrasonic-scanner.

Step 2: The Arduino-software

The reflected pulses have to be stored and displayed by a microcontroller. The microcontroller must be fast. Therefore I choose an arduino due. I've tried two different types of fast analog-read-codes (look at the attachments). One is faster (about 0.4 µs per conversion) but I got 2-3 times the same value when reading in the analog input. The other one is a bit slower (1 µs per conversion), but hasn't the disadvantage of the repeated-values. I've chosen the first one...

There are two switches on the receiver-board. With those sitches you can stop the measurement and choose two different time-bases. One for measure-times between 0 and 120 µs and the other between 0 and 240 µs. I realized this by reading out 300 values or 600 values. For 600 values it takes twice the time, but then I take just every second analog-in-value.

The incoming echoes are being read with one of the analog-input-ports of the arduino. The zener-diode should protect the port for too high voltages because the arduino due can only read voltages up to 3.3V.

Each analog-input-value is then transformed into an value between 0 and 255. With this value a further grey-coloured-rectancle will be drawn on the display. White means high signal/echo, dark-grey or black means low signal/echo.

Here are the lines in the code for drawing the rectangles with 24 pixel width and 1 pixel height

for(i = 0; i < 300; i++)
{

values[i] = map(values[i], 0, 4095, 0, 255);

myGLCD.setColor(values[i], values[i], values[i]);

myGLCD.fillRect(j * 24, 15 + i, j * 24 + 23, 15 + i);

}

After one second the next column will be drawn...

Step 3: Results

I've examined different objects from aluminim-cylinders over water-filled balloons to my body. To see body-echos the amplification of the signals must be very high. For the aluminum-cylinders a lower amplification is needed. When you look at the pictures you can clearly see the echoes from the skin and my bone.

So what can I say about the success or failure of this project. It is possible to look inside the body with such simple methods and using parts, which aren't commonly intended for that purpose. But these factors are limiting the results too. You don't get such clear and well structured pictures compared with commercial solutions.

But and this is the most important thing, I've tried it and did my best. I hope you liked this instructables and it was at least interesting for you.

If you like to take a look at my other physics-projects:

https://www.youtube.com/user/stopperl16/videos?

more physics projects: https://stoppi-homemade-physics.de/

Arduino Contest 2019

Participated in the
Arduino Contest 2019

Be the First to Share

    Recommendations

    • Teach With Tinkercad Contest

      Teach With Tinkercad Contest
    • Halloween Contest

      Halloween Contest
    • Plywood Contest

      Plywood Contest

    21 Comments

    0
    jherpegiz
    jherpegiz

    2 months ago

    Second question!

    The 4.7uf and 100nf connected to 7805 regulator is what voltage?
    1nF (1x), 50pF (1x), 0.1µF (1x electrolytic), 47µF (1x electrolytic) what voltage is required for this components.
    Please attend as urgent!
    Appreciate Genius stoppi.

    0
    jherpegiz
    jherpegiz

    Question 2 months ago

    I love this project, great job!

    About the signal in how to you interface that with the transmitter board.

    My question is

    That signal in from the reciever which pin from the transmitter will go in there.
    Please address appropriately.
    Thank you genius!

    0
    Gualor
    Gualor

    Question 8 months ago

    Hi! Thanks for this great project! What is the purpose of the last 50 Ohm resistor in parallel to the piezo in the transmitter circuit? Since it makes a voltage divider with the 3k resistor, making the voltage seen by the piezo [0, -5V], instead of the [0, -100V] if we remove it. Was intended to limit the current? In that case I believe it should be placed in series with the piezo.

    0
    Raul98
    Raul98

    Question 1 year ago

    Hello, my name is Raul and I want to build this project. So far I have bought all the necessary components except the sensor connectors. I use the same sensor as you (transducer from the Gm100), can you help me connect the sensor to the rest of the circuit? How the sensor should be connected on the transmission side but also on the reception side.
    Thank you !

    0
    TezaTheRock
    TezaTheRock

    Question 1 year ago on Step 3

    Hi Stoppi

    I am trying to make an ultrasound transducer, any advice?

    0
    goudarc
    goudarc

    1 year ago

    Hello Stoppi,
    This is a great project, love it. What kind of breadboard you recommend for this project?
    Thanks,

    0
    goudarc
    goudarc

    Reply 1 year ago

    Hello Stoppi,
    Happy New Year. Finally got all the parts from ebay (shipping delay due to holidays). Now I am assembling all the parts. Can you please help me answer the following questions?

    What does "IN" mean in Receiver circuit diagram? Where should this be connected to?
    What does "Piezo" mean in Sender circuit diagram?
    Where should the C5 sockets be connected, since they are not shown in both Sender and Receiver circuit diagram?
    Also, what does -9V mean? where should this be connected to?

    Thanks,
    Gouda

    0
    stoppi71
    stoppi71

    Reply 1 year ago

    Hello! The ultrasonic-head has two cables, pulse-in and signal-out. The pulse-in has to be connected with the piezo in my schematics, the signal out with the Input (in) of the receiver. The C5 sockets are located at "piezo" and "in" to connect the ultrasonic-head with the emitter and receiver...
    For the operational amplifiers you need a negative voltage (-9V). I use two 9V-switching power supplies and connect them in series. The middle point is Ground, and the other two potentials are +9V and -9V...
    Good luck.

    0
    goudarc
    goudarc

    Reply 1 year ago

    Hello Stoppi,

    Thank you so much for the additional info. I completed assembling all the components and tested the connections with multi-meter.

    I am having an issue with TFT screen display. Basically, it just shows up blank white screen. It does turn on but nothing is being displayed.

    I am using the same code with UTFT library, program compiled and uploaded successfully. But there is no output on the screen. Please see the attached screenshot showing the blank display.

    I am using the following TFT screen :
    "HiLetgo 3.5" TFT LCD Display ILI9486/ILI9488 480x320 36 Pins for Arduino Mega2560"
    https://www.amazon.com/gp/product/B073R7Q8FF/ref=p...

    Can you please tell me how to make the display work with Arduino Due?
    As always, truly appreciate your input.

    Arduino-LCD-BlankDisplay.jpg
    0
    suryagupta3690
    suryagupta3690

    2 years ago

    Hi! I really loved this project and want to develop it for a student organization at Ohio State. Would it be possible to chat?

    0
    ökkeşz
    ökkeşz

    Question 2 years ago on Step 3

    Hi, i will ask some questions;
    1. The resolution is to low, which method the upgrade resolution?
    2 İf i want use in my mobile phone, use bluetooth connection, is it possible?


    0
    D_Murph
    D_Murph

    2 years ago

    place a link so folks can vote for you easily.

    0
    shypatel360
    shypatel360

    2 years ago

    Hey Stoppi! I love your project. I am currently a high school student and am not as skilled with arduino wiring. I am a coding person. However, I am very interested in the medicine field therefore I want to try to make this project. Is there any way you could show the wiring and how you put it together? I tried my best with the schematics, but couldn't really figure out all the wiring. Is there any way you can maybe make this wiring a little bit easier for me? Thank you so much. And again, AMAZING project!

    0
    stoppi71
    stoppi71

    Reply 2 years ago

    Hello!
    Thank's for the compliment. I've added a picture of the whole circuit in step 1: My Transmitter- and receiver-circuits. There you can see the shematics and the real circuits too. For the +100V I needed two step-up-converters. The first for delivering about +16V and the second one for the +100V.

    There are just 4 connections between the circuit and the arduino. Two come from the two switches to select the timebase and to stop the image, then the trigger-pulse from the arduino to the transmitter-circuit and then the analog-signals from the receiver, which are connected to analog-7 from the arduino.

    The display is just plugged into the arduino-due-socket ;-)

    Good luck, regards stoppi

    0
    Alpha1605
    Alpha1605

    2 years ago

    Hi! Can I use a GM200 paint thickness gauge instead of GM100? Thanks

    0
    stoppi71
    stoppi71

    Reply 2 years ago

    I'm afraid no but you can buy just the transducer from the Gm100. This will not be too expensive...

    0
    stevenstevensteven
    stevenstevensteven

    2 years ago on Step 1

    Hey Stoppi! Thanks so much for this project, some friends and I are building it! But we can't get the code to work, is there a special way to organize it or an unmentioned library we need because it's not compiling :(

    Look forward to hearing from you.

    Thanks,

    Steve

    0
    stoppi71
    stoppi71

    Reply 2 years ago

    Hi Steve!
    I've added two versions of the complete program and two display-libraries (UTFT and HX8357). I hope you will get your software running. If not, post here a command once again. I'd be very interested in your results... Good luck, cheers stoppi

    0
    stevenstevensteven
    stevenstevensteven

    Reply 2 years ago

    Hey Stoppi. Thanks for the extra libraries and help!
    The ultrasonic circuits seem to work great, but I think our group's main issue is we can't understand how to get the screen you had to work on the Due.

    We connected the screen (ILI9486) directly but is there a special pinout or shield you connected so the screen would work and not occupy D3,D4, and D5?

    Steve