Update #3
Danielle, Hannah, Antonio
Last week we predominantly worked on the software and data acquisition. Because we were having difficulty with the serial communication between the Arduino and Matlab, we decided to write Python code that would perform the serial communication instead. Below is the Python code that communicates with the Arduino from the serial port. The Python code reads successive lines from the serial port as the Arduino is taking data and then stores the projection angle data into the array byte_data. Because the data the Arduino prints to the serial port is in byte form, the script decodes the byte data, splits the values after each comma, and then stores them in an array. Once all of the data is received, this code writes the array to a text file on the users computer in ASCII format which is important. Because the text file is in ASCII format, matlab can very easily load the data from the text file directly into an array using the load() command. From here, the matlab code below can be used to perform filtered backprojection and reconstruct the image.
Question
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?
The finest resolution with which we can move the servo is 1.8 degrees and for the stage, 200 steps per resolution. This means that the finest spatial resolution is determined by whichever component has the largest angle of rotation.
Question
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?
Our image reconstruction is improved.
Our Python code
Our Matlab code