Undergraduate Researcher at MIT
For the summer of my Sophomore year, I was invited to do undergraduate research at MIT's Nanophotonics and 3D Nano-manufacturing Laboratory under Professor Nicholas Fang. I worked with a team of post-doctoral fellows, graduate students, and visiting scientists from Japan to produce nanostructures on resin using initiating and inhibiting light using Digital Micromirror Displays (DMD).
The resin undergoes photochemical reactions when exposed to different wavelengths of light. Using a combination of wavelengths that would initiate reactions and inhibit reactions, we can produce structures that are of a higher resolution by using the principles of additive and subtractive manufacturing. We used primarily 2 light sources (Blue and UV), and relayed them through a DMD, which is a large array of mirrors that have dimensions on the micrometer scale. By doing so, we could expose our resin to a pattern of light that corresponds to each pixel of our desired structure, producing prints that are of a very high resolution.
My Involvement
I worked on 3 areas of the project. I helped develop the code for the DMD control, develop the chemical setup, and improve the optimization code for the DMD. I worked very closely with the team, particularly the post-doctoral fellow, Zhiguang Liu, who was leading this research project and the visiting scientist, Kunai-san from Japan on the chemical parts of the project. Each week, I would present my findings to Professor Fang, and the rest of the research group to hear their feedback on my work.
DMD Control Code
The DMD control code was done in C++. I have wrote code to shift the alignment of the exposure area to match the pixel mask distribution of the DMD. Here is what it looks like for a sample exposure of a tiger image.
Also, in order to calibrate the laser input of the DMD, I had to find the intensity of light exposed by a sample 500x500 blue and UV square pixel. And after measuring the power input, I could find the corresponding intensity per pixel voltage. This is one of the basic preliminary steps that would be useful for the later optimization could I use.
As part of the DMD control code, I had to also prepare demo prints of the nanostructures we could produce with our current optical setup. I tried prints with different input intensities for the DMD, and the photos shown below are captured by the microscope at 400x magnification. The one on the left has a 150,200mV blue, UV light input, meanwhile the one on the right only has an input of 235mV for blue light.
However, because the photos are prepared by using a well and droplet setup, where the resin are sent into a plate with wells and are photopolymerized as droplets. This led to bad demo photos as the thickness of the film was not uniform. After discussing this problem with the post-doctoral student I was working with, we came up with a plate based structure to complete the demos. We would sandwich the droplets between windows, so that the thickness would be uniform. This led to much higher quality photos with great resolutions. The one shown below is a product of this procedure.
DMD Optimization Code
I was also involved in writing code for the optimization algorithm used to compute the light intensities for our DMD array. The previous algorithm used a database for the optimized pixels in a 5x5 array, and that would be saved in the central pixel of the 5x5 area. However, there was one main assumption that this code failed to take into account. The printed pixel size was not exactly an integer multiple of the DMD array pixel size. This meant that there would be some missing pixels that would not be saved in the database. This lead to extremely longer computation times as there would be many misaligned pixels. And this error would only get worse, since the offset from the DMD pixels would get larger as we progressed more pixels away from the center.
As shown in the schematic above on the left, the database for printed pixel would be aligned to the center of a printed pixel. However, since there are some missing gaps on the side, there would be an offset between the assigned light distribution for the pixel and the printed pixel. This would only get worse as we progressed further from the center, as shown on the diagram on the right. And this would not only occur in the x direction. It would occur for both the x and y direction since the dimensions are not integer multiples in both. The solution to this problem was to produce a map between the two points. I wrote code to interpolate distances between the points allocated in the database, and using the interpolated information I could find the actual light intensities desired in reality. This would be shown in the above diagram as mapping the blue circles to the green circles.
As a result, I was able to produce light distributions for the DMD array that superimposed to give data that matches the target printed plane very well. This is shown in the graph above. This reduced the computation time significantly, reducing it by 32%.