3D Printed X-Ray Machine

Fully 3D printed x-ray machine using a dental tube and a custom transformer.

Similar projects worth following
X-Ray machine built from scratch, no TV flybacks :D. I used a modified ZVS Mazzilli driver capable of driving 150V at 110kHz for the custom transformer's primary. A Cockroft-Walton multiplier gets the voltage up to 65kV. Everything is controlled by a regular Arduino UNO board.

***Safety First***

This machine is very dangerous. I would not recommend it's construction unless you know what you are doing.

To avoid any risk, I set a countdown and leave the machine alone until the job is done. I do have a Geiger counter to make sure I'm not receiving x-rays. The hand picture was only done once and for half a second of exposure :P


This project started with a question one day taking a shower: can I build a decent X-Ray machine in the garage? I quickly found the answer,  no. At least, not with what I knew or could make. I had to spend like 2 years (I was also studying physics at college) to improve my skills and knowledge.

Finally I started designing the whole housing with Autodesk Fusion 360, limited by my 3D printer's area. I wanted to design a powerful machine, and I wanted it to be plug and play, so the power supply would have to be inside. I had to think a lot how to put inside that housing every single part of the machine, this was an absolut hell since I was limited by the size of my printer.

To solve that problem, I decided to make two levels inside the machine. The first level would contain the main 48V PSU, the Arduino board and the high voltage transformer. The second level would be above, containing the ZVS, another 12V PSU and a step-down converter for the tube's filament. The waterproof box that contains the voltage multiplier and the tube would be at the front of the machine occupying both levels. The machine has no buttons. it's controlled via USB, using the Arduino IDE's monitor to send commands to the machine.

Also, because this machine is my final degree project at college, I wanted it to have my college's logo on it, the one shown on top.

The machine is very powerful but probably not as powerful as any professional unit you can buy. Well the idea was to just learn how to make one and that is checked.

I also recorded most of the design & construction process and made a short video:

If you want to see two live tests, see the file "tests.mp4".

Note: this project contains my subproject

Adobe Portable Document Format - 19.18 MB - 07/04/2019 at 23:05


MPEG-4 Video - 21.78 MB - 12/21/2018 at 23:47


JPEG Image - 1.12 MB - 12/21/2018 at 23:40


JPEG Image - 1.15 MB - 12/21/2018 at 23:40


JPEG Image - 1.31 MB - 12/21/2018 at 23:40


View all 11 files

View all 23 components

  • Finished the paper

    Francisco Piernas07/04/2019 at 11:45 1 comment

    Hi there, I have finally finished my college degree and I can make the paper available for anyone. Due to a limit of 40 pages, I couldn't write it as complete as I wanted but I hope it's helpful.


  • Update time

    Francisco Piernas01/17/2019 at 20:16 0 comments

    Hi there everyone, huge thanks to all of you that follow and liked this project. I have had finals now but I have finished and I have some free time to upload new content.

    Here you have some pictures:

    Winding the transformer with the rudimentary but useful coil winder.

    Printing parts:

    The first level of parts. You can see here an arduino board, a buzzer, the 5.5kV transformer, a fan and the 48VDC PSU.

    And above all this, the top level:

    Numbers are:

    1. Fast ZVS
    2. Regular chinese 12V PSU.
    3. Step-down converter.
    4. Fuse and extender. The fuse is for the x-ray tube filament. It also contains a voltage divider used by arduino to read the filament voltage and it has other connections for the laser grid.
    5. Relay module. One of the relays controls the filament. The other enables or disables the Mosfet driver of the ZVS.
    6. Waterproof box containing the tube and voltage multiplier. Those blue things are HV capacitors placed between the cathode of the tube and mains earth, they stabilize voltage and improve efficiency.
    7. Vertical laser.

    Lights :D


    Front with laser grid:

    The machine is fully operated by the arduino board. It has no buttons, so a computer is used to send commands to arduino. These are the commands:

    • E: check machine status (arduino reads filament voltage and checks the Power_Good signal of the 48V PSU)
    • L: check lasers.
    • H+percentage: it sets the intensity in percentage for the horizontal laser. Example: H20 sets it by 20%.
    • V+percentaje: the same, but for the vertical one.
    • P: stop everything. If it's x-raying, it stops; if it was counting down to x-ray, it will stop. The 48V PSU, the filament, the ZVS and the laser grid will be turned off.
    • F: read filament voltage and show it on screen.
    • C+integer: Sets the countdown. Example: C10 sets a 10 second countdown when you use the x-ray command.
    • R+integer: X-ray command. When sent to arduino, the countdown set by the previous command starts. When it reaches 0, arduino turns on the 48V PSU, the ZVS and the filament. The machine will x-ray for as many milliseconds as set by this command. Example: R2000 will x-ray for 2 seconds.

    The machine uses a very specific way to stop x-raying. First it stops the 48V PSU and the tube filament at the same time, waits 200 ms and stops the mosfet driver of the ZVS. This is a better way to operate the machine rather than using another relay to cut the current coming from the PSU and going to the ZVS. The ZVS has an inductor that stores energy. If the current is suddenly cut, a high voltage peak will happen on both mosfet drains. To prevent this, arduino simply turns off the PSU, so all energy left in the ZVS leaves it through a fully on mosfet. Then arduino stops the mosfet driver and both mosfets of the ZVS turns off.

    That's all for now, see ya in the next update.

View all 2 project logs

Enjoy this project?



John wrote 06/21/2021 at 07:36 point

Will you be sharing the Code for the Arduino?

  Are you sure? yes | no

sunansherph wrote 05/04/2021 at 09:55 point

Very remarkable venture! Would you mind sharing your Arduino code? I am designing a similar setup and would really like to construct in your code to feature an automatic z axis 360 rotating goal table. you can see some similar projects here

  Are you sure? yes | no

Ronald wrote 08/13/2019 at 06:43 point

Very impressive project! Would you mind sharing your Arduino code? Im designing a similar setup and would like to build on your code to add an automated z axis 360 rotating target table. Will share details in case you want to add it to your design later! Thanks !

  Are you sure? yes | no

Francisco Piernas wrote 05/09/2020 at 21:04 point

I can't believe I missed this comment, sorry :P

The code is extremely simple, it's almost just a countdown that writes high and low values to the two relays.

  Are you sure? yes | no

oliver_cvetkovic wrote 06/11/2019 at 15:04 point

HI again,

Some time ago I asked for your help with similiar project of mine on some forum I can not remember right now. 

You gave me a lot of info, drawings and suggestions which I implemented and it is almost finished now.

Only thing is that I loose a lot of HV when filament current is aplied.

In cold cathod mode I have 80kV and as soon as I heat the filament, the current drops to 30kV.

Any more suggestions please?


  Are you sure? yes | no

Francisco Piernas wrote 06/11/2019 at 15:29 point

Hi, I remember you from Your HV source lacks power, that's why voltage drops when you heat the filament, because if you consider the x-ray tube as a resistor, heating the filament has the effect of reducing the value of that resistor. The tube asks for more current, and if your HV source can't provide it at 80kV, then it will provide it but at 30kV.

  Are you sure? yes | no

oliver_cvetkovic wrote 06/11/2019 at 17:17 point

Thanks again, it makes sence when you put it like that. I'll try and up the current on my converter or remove it. 

  Are you sure? yes | no

ntsanov wrote 03/11/2019 at 07:33 point

I’ve been looking at hundreds if not thousands of diy projects but this is by far the coolest one.

  Are you sure? yes | no

Francisco Piernas wrote 05/04/2019 at 12:30 point

Hi ntsanov, many thanks, I tried my best with this project.

  Are you sure? yes | no

sdewolfe wrote 02/28/2019 at 18:14 point

Wow. I have worked for 37 years in medical x-ray installation, repair, and maintenance. I have to say I am very impressed with your ability to consolidate so many disciplines of study into one project. Technically I think I could do this. But, I don't have the patience necessary to solve the multitude of problems that you had to solve in building this machine and then creating a 3D image of objects in your CT application. Kudos to you and may you fare well in your chosen profession, whatever it may be.

You commented that you tried to make fluoroscopic images but it was riddled with "bright pixel" artifacts. First try moving the camera out of the beam. Use a mirror angled to the incident plane. Even if it doesn't fix the artifact your camera will live longer. Second, collimate the beam. Use a lead lined cone to limit the exposed area to the ROI at the incident plane. Looking at the screen in your photos, the entire screen is aglow. You don't need all that scatter adding noise to the image. You could also experiment with thin aluminum filters placed at the port to eliminate low energy photons; low energy adds little to the image and much to the noise.

With continuous x-ray you may have smeared flouroscopic images. This is inherent to the decay rate of the screen. The fix is a faster screen. Ideally, you would have a rapid screen and pulse the x-ray syncronized to the CCD image capture time of your camera in movie mode. The idea is to create a stop-action image just as a strobe light does for photography. That would take a lot of tinkering; a lot has to happen in 40ms.

If you get fluoro to work you can capture things like fluid flow through a device. You can enhance fluid imaging with a radio opaque dye -- tincture of iodine comes to mind.

I am certain that you are aware already but just in case; a fixed anode requires a long time to cool. Diligent adherence to the tube cooling curve will prolong the life of the tube.

Again, many good wishes for your future endeavors.

  Are you sure? yes | no

Francisco Piernas wrote 05/04/2019 at 12:29 point

Hi thanks for the comment, I didn't noticed it. You know about this stuff professionally, so I'm happy that you approve it.

  Are you sure? yes | no

Gonçalo Nespral wrote 01/10/2019 at 16:57 point

ey ive got the same soldering iron

  Are you sure? yes | no

Francisco Piernas wrote 01/10/2019 at 20:00 point

Soldering iron mates.

  Are you sure? yes | no

Gonçalo Nespral wrote 01/10/2019 at 16:56 point

Holy shit this is by far one of the coolest projects ive seen here... keep it up, this is awesome!

  Are you sure? yes | no

Francisco Piernas wrote 01/10/2019 at 20:00 point

Thank you :P

  Are you sure? yes | no

jmhead01 wrote 01/10/2019 at 06:54 point

Any lead panel shielding? Lead is cheap :) And you could encase it in epoxy etc to seal in the leadness :)
Very cool build - could see lots of practical applications, just with some very good overlapping shielding :)

  Are you sure? yes | no

Francisco Piernas wrote 01/10/2019 at 20:09 point

It has 1mm of lead that removes around 97% of the photons energy. Adding more lead was not necessary since the machine is activated remotely, so you are not behind the beam, you are just in another room or in another country if you want.

  Are you sure? yes | no

Jeff Wilkinson wrote 01/09/2019 at 22:35 point

Expanding on the Marie Curie vibe - your geiger counter is generally under-responding. You should be using an ion chamber to get a reasonable measurement. Also, although the beam is much more intense in the forward direction you will be getting substantial radiation in the other directions, even with a tube housing. Don't assume since the geiger counter is much angrier in front of the machine that you are safe behind it.

  Are you sure? yes | no

Justin Kenny wrote 01/09/2019 at 19:14 point

Did you find documentation for your specific dental tube or did you discover the pinout yourself? I purchased a dental tube a long time ago with the intention of making a homemade X-ray machine also, but never got around to doing anything since I didn't know the pinout for it and couldn't find any info on the model I purchased.

Edit: Nevermind, the tube you are using is very well documented and simple to use. Mine is a full up dental X-ray machine head with no visibility to the internals, but does have the built in shielding.

  Are you sure? yes | no

Francisco Piernas wrote 01/10/2019 at 20:03 point

The pinout is easy to know, the pin not connected to the others via some resistance is the grid pin. The other two are the filament pins.

  Are you sure? yes | no

Mayke wrote 01/09/2019 at 18:01 point

Massive accomplishment! 


How much electricity does it use? I do ecology research and I always wanted to take x-rays of bromeliad plants in the field :(

  Are you sure? yes | no

Francisco Piernas wrote 01/10/2019 at 20:05 point

Thanks c: it only draws around 80W.

  Are you sure? yes | no

Evan Allen wrote 12/24/2018 at 20:39 point

What material is the sheet you're using for exposure? Do you set up the camera and leave the room/building during exposure? Have you had any issues with having the camera in the x-ray beam or do you take pictures off-axis with the beam?

  Are you sure? yes | no

Francisco Piernas wrote 12/25/2018 at 02:52 point

My screen is a Fuji Speed Green, I want to test other screens like some Kodak Lanex but they are pricey. Yes, I send a command to the machine that sets a countdown and I leave it alone until it has finished, I'm not in front of the machine taking the picture.

I always put the camera on axis (in front of the beam), the pictures I get are great as you can see. Only when I'm recording on video I get some bright pixel noise.

  Are you sure? yes | no


[this comment has been deleted]

Francisco Piernas wrote 12/25/2018 at 02:46 point

I was lucky to find it new on eBay for around 60 bucks. It's a CEI OX/70-G4.

  Are you sure? yes | no

logan1691987 wrote 12/24/2018 at 02:48 point

Amazing work but please don't end up like Marie Curie

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates