NOT A PRIZE ENTRY - PLEASE IGNORE!
I want to image my finger with EIT. All the set-ups I have seen have limited resolution because of the number of electrodes. By scanning my electrodes around, as well as up and down, I can hopefully achieve much higher resolution. It's all going to be controlled by a teensy, and should be fairly cheap to replicate.
I kind of stalled working on this during the holidays - I now suspect the analogue front-end will need a bit more work, and I may have to figure out another way of doing the impedance measurement. Now, I have decided to give it a proper go, and enter it into the 2016 hackaday prize. This post will describe the theory behind my idea, and where I'm going with this. Since the hardware is boxed up, this is an easy way to get back to work on this. Here goes.
The idea of Electrical impedance tomography was new to me, and I first heard about it when this project was featured on hackaday (http://chrisharrison.net/projects/tomo/tomo.pdf): The idea that you could image the inside of the body in a non-non-invasive way with electricity as opposed to light, sound or radiation appealed to me. Surely this would be easier to build than an X-ray machine?
The basic technique (described in the above video) has been around for ages, but it's main limitation has been resolution - the maximum resolution is a function of the number of electrodes, and attaching more than 16 to someone is a pain, especially if you need to know their exact positions. Thus, it is mainly used for detecting changes (lung or heart movement, gestures, brain activation) as opposed to imaging.
Based on the theory of operation, my intuition was that the actual hardware required wouldn't be too expensive. A few papers on arduino-based EIT systems (e.g. 'A Low Cost Electrical Impedance Tomography (EIT) for Pulmonary Disease
Modelling and Diagnosis.' by Chitturi et al) seemed to back this up.
However, they still used external chips to generate a signal and measure the various electrode voltages. And all these approaches were still limited by electrode number to very low resolutions. But one paper demonstrated imaging things inside a tank of (salt) water - there wasn't a need for the electrodes to contact skin for basic imaging to occur.
This leads to my idea - inside a tank is the object to be scanned. Two sets of electrodes are laid out in rings around the circumference of the tank. By rotating one set of electrodes in small increments and taking measurements at each position, you can effectively have thousands of 'virtual electrodes' to build up a much more detailed picture. This sacrifices the real time nature of EIT scanning in exchange for cheap, high resolution imaging. I think I am the first to attempt this, mainly because everyone with money just gets an MRI machine (which is superior by far).
There are a few drawbacks to my intended approach:
If the water surrounding the limb being imaged is too conductive, almost no current will go through the flesh, limiting how much of the inside we can see. If it's not conductive enough, the signals will be too small.
There is a huge variation in impedance between different parts of a body. So my idea of using the built in ADC with no amplification may be futile, and I'll have to add a decent op-amp or something.
Electricity travels in 3D, while this system will only scan one slice at a time. However, since by adding another motor you can scan through a vertical distance, you can collect lots more data and try to reconstruct a 3D image.
Going from the raw data to an image will be hard - lots to learn!
I have fixes in mind for some of the above, but much more experimenting is needed. Luckily, I should have access to some decent test gear at university, so I can test out some theories using signal generators and scopes far out of my price range :)
Had less time to work on this today, as I kept getting side-tracked on other projects. I did manage to move away from a breadboard and tangle of wires to a more organised system. Everything is on one piece of proto-board, into which I plug my teensy-LC, the motor drivers and the wires going to the electrodes. Just for fun, I used point to point wiring and solder blobs to make the board look a bit more interesting. Ok, so not just for fun - didn't have time to etch a PCB :D
Here it is:
I got code working that reads the values from each electrode through the 4051 multiplexers, but I still need to work out how to simultaneously generate a signal and send that out. DMA should be possible but I have almost no experience with that. Anyway, Here's a video because I'm experimenting with that too:
The video compression makes it look bad but 9 megs vs 180 made uploading feasible. Now it's just tidying up, adding the second set of electrodes, insulating stuff and writing a lot of code. easy, right?
The first day of this project was pretty fun, and I made some decent progress. I wanted a way of moving two sets of 8 electrodes down in small steps, rotating one set. With some scarp tubing, a plastic cricket stump, some screws out of an old printer (and a spring from the same), a coffee tin lid, a bottle top, a few stepper motors and some rails (also from the printer) I got it working fairly well. Here are the steps I followed:
The cricket stump (red, not shown) fits inside some PVC I had, so I drilled 8 holes through both then cut channels in the PVC, using the rest of the stump as a guide to make them strait(ish).
I added screws to a slice of the stump, and filed the channels in the PVC until they all matched up:
Added a second ring of the red tube, with a long section rising up. This will hold the electrodes that will turn, while the screws will be the 'stationary' electrodes. The point of this is that when I push the second piece down, it will push the screw ring down, but when it turns the screw ring won't. Since I'll only bbe turning 1/8th of a rotation, I added a spring to stop the bottom ring (the one with the screws) dropping under gravity:
I melted some holes (with a hacked-together alcohol burner and a piece of wire) to attach a section of the wider, white PVC which will be the 'shaft' that brings the rotation from one stepper and also pushes everything down. Here's the shaft before attaching it to the motor:
I added a ring of plastic (from a coffee tub) to go outside the PCV and hold the screws and wires in place. Oh, yes, I soldered 8 wires to the screws and hot-glued them in place. Ugly but it works:
Here it is in the PVC guide, with the shaft assembly attached:
I have an axis from an old printer. I replaced the DC motor that was driving it with a stepper from a different printer, and mounted a second stepper on the sled. I have two easydrivers mounted to a big heatsink, and so I can give step+direction signals to move the sled up and down and rotate the second stepper. Here's me trying out the shaft:
And now the obligatory crappy video, where the temporary coupling between the rotating stepper and the shaft slipped off and I dropped the phone. BUT, at least you can see what's going on and it all works nicely.
Tomorrow, I will be testing out getting actual readings from the electrodes (which will involve them being in salt water) and replacing some of the hackier aspects of this build. Also, since the video I figured out why it wasn't working. I will eventually power the motors from ~9V anyway so no worries :D