Infrared CT Scanner Update 3

Blog Post Week #3: Imaging Instrumentation Infrared CT Lab
Jorie Budzikowski, Stephanie Molitor, and Rachel Welscott

Quote of the Week:

“Do you know what this delay is for?”
“I don’t know, but it’s probably not important. You can delete it.”
*deletes delay*

“OKAY so that delay was VERY important!”

This week, we were able to tackle several parts of the Infrared CT Scanner including the servo rotation, the stepper motor rotation, and the Matlab readout of photodiode voltage from the Arduino.

The Servo and Stepper Rotation:

With the success of the voltage readouts from our circuit, we have since turned our attention to the Servo that controls the rotating arm of the scanner. We have programmed the Servo (via Arduino) to move the rotating arm, and have optimized the speed and delay during rotation. The code that controls the Servo rotation is shown in the image below. We have also programmed the stepper motor to move the phantom with a step size of 1.8 degrees between each full sweep of the servo arm. To complete a full 360 degree image of the phantom, the stepper motor must rotate the phantom 200 times. The combined movements from the Servo and the stepper motor are shown in the video below. We have also altered the Arduino code to display the output voltage and sweeper arm position on the serial monitor for each data point.

Video one: The Servo has been programmed to rotate the sweeper arm around the phantom, and the stepper motor takes (very small) steps between each full sweep.

Image One: The Arduino code that controls both Servo and stepper motor rotation. This code also writes the output voltage and corresponding sweeper arm position to the serial monitor.

combined code

The Matlab readout of the photodiode voltage from the Arduino:

Matlab is a crucial element to this CT Infrared Scanner because it is the way that we will ultimately analyze the results from our scan. Our code should read out and store the voltage value at each point for both the sweeper arm and gantry rotation. These readout values will be translated into binary numbers and be displayed as black or white on our image reconstruction. Our preliminary code, shown below, is used to read and store the output voltage for each step of our Servo and stepper motor.

Image Two: The Matlab code that stores the output voltage value for each step.

matlab

Questions we set out to answer this week:

  1. What is the finest resolution with which you can move the swing arm (servo) and stage (stepper motor)? What does this dictate about the finest spatial resolution of your image?
    1. The smallest step size that we can take with the stepper motor is 1.8 degrees. The smallest step size we can take with the servo is 1 degree. This dictates that the finest spatial resolution of our image is 1.8 degrees since this is the larger of the two component resolution values.
  2. The servo has an extra (white) wire on it, that reads out its built-in position potentiometer, which you can use to record the servo’s actual position (rather than just its intended position). Is your image reconstruction improved by using this value instead of the intended value?
    1. The position value of the servo is an arbitrary position value. As long as we know where the designated 0 position is located, it does not really matter whether or not we know the actual position of the servo. Thus, the white wire does not add much information to our system.
  3. What parameters of your scanner and scan method influence resolution? Investigate these.
    1. The parameters that influence resolution are the step size of the servo motor and the time the servo motor has to record a section of the “image” in between steps.

Leave a Reply

Your email address will not be published. Required fields are marked *