ACS Publications: Chemistry journals, books, and ...



Supporting information for:The design, fabrication, and optical characterization of a low cost and open-source spin coater Mohammad Sadegh-cheriDepartment of Laser, Institute of Science and High Technology and Environmental Sciences, Graduate University of Advanced Technology, Kerman, Iranm.sadeghcheri@kgut.ac.ir1. Bill of MaterialsThe bill of materials together with the cost and supplier are provided in Table S1.Table S1. List of materials along with their cost and suppliersItemModelIDSupplierPrice Link (website)Arduino microcontrollerNANO V3940937Banggood$2.19 16×2 978155Banggood$3.01 Sensor module 3144E1387544Banggood$1.32 IR module TCRT5000L1038443Banggood$0.99 speed controller (ESC)Simonk-10A-Brushless1024733Banggood$5.21 TesterAny model-eBay$1.14 Supply Adapter12V, 0.5AAny model-eBay$2.09 round disk magnets5×1 mmNeodymium N35-eBay$1.99 (used or stock that works normally)Any model-eBay$2.5 sheet+ laser cut2mm×50 cm×20cmAny laser cutting shop$6Some (wires, switch, button, PCB board and pin headerAny model-Various$2Plastic CD/DVD box + CDAny model-Various$1Total$29.442. Wiring circuitThe schematic circuit of the spin coater has been implemented in the free and portable version of Fritzing software. The latest version of Fritzing software can be downloaded from: rotating the knob of the servo tester, the speed of the HDD motor changes and by pressing the switch button the time is started. The pin and wire connections are given in Table S2. As shown in Figure S1, each ESC has an input for the power supply (red and black wires). The three thick ESC wires are connected to the three wires of the HDD motor. The other three ESC wires (the thin ones) are connected to the servo motor according to Table S2.Figure S1. The wiring circuit of the spin coaterTable S2. Pin and wire connectionsD3 PIN (Arduino)D0 PIN (sensor)D4 PIN (Arduino)m PIN (LCD)D5 PIN (Arduino) l PIN (LCD)D6 PIN (Arduino) k PIN (LCD)D7 PIN (Arduino) n PIN (LCD)D8 PIN (Arduino) Left PIN (switch)D11 PIN (Arduino) f PIN (LCD)D12 (Arduino) d PIN (LCD)GND (Arduino) a, e, and p PINs (LCD)GND PIN (sensor) Right PIN (switch)5V (Arduino) b and o PINs (LCD)Vcc PIN (sensor) Right PIN (potentiometer)Middle PIN (potentiometer) c PIN (LCD)Signal PIN (servo tester) Yellow wire of ESC+ PIN (servo tester) Red wire of ESC- PIN (servo tester) Brown wire of ESCThree PINs of the HDD motor Black wires (the thick wires) of ESC+ wire of ESC (red wire) + power supply (12 V, 0.5 A)- wire of ESC (black wire) - power supply3. The principles of spin speed measurementFigure S2 shows the schematic configuration for measuring the spin speed. For IR configuration, a reflective layer with an opaque (or black) part is used. For HE configuration, the magnet is used instead of the reflective part. The IR configuration consists of two LEDs, an IR LED transmitter (wavelength of 950 nm), and an IR LED receiver. Briefly, if the layer is opaque for the wavelength of 950 nm when a reflective layer (such as an aluminum layer) appears in front of two LEDs, due to the reflection of the reflective layer, a signal is received by the IR receiver (Fig. S2a). Similarly, for the HE configuration, if a magnet appears in front of the IC, a signal is received by the IC (Fig. S2b). Therefore, by the spinning of the surface and by counting the received signals with the IR LED/ HE IC Hall, the spin speed can be obtained as follows:Spin speed (rpm)=Nsinaln×60 (1)N signal is the number of signals received in 1 second by the IR LED/HE IC and n is the number of the reflective parts/magnets placed on the spinning surface for IR/HE configuration, respectively.Spin speed measurementWe measured the spin speed of the motor according to Figure S2 for IR LED/Hall IC configurations. Figure S3 shows the spin speed versus the current drawn by the motor for IR LED/ Hall IC configurations. The current drawn at 9000 rpm is 0.4 ampere which is equal to the low power consumption of 4.5 Watt for 12 Volt (V). The sensitivity of the two configurations versus the vertical distance (h in Figure S2) was investigated. By changing the vertical distance, the spin speed was monitored in the LCD display.Figure S4 shows the sensitivity of the two configurations versus the vertical distance (h) from the spinning surface at 12 V and 0.39 A. The IR configuration is sensitive in a vertical distance of 2 mm to 13 mm whereas the HE configuration does not have a suitable sensitivity for a distance of higher than 10 mm. For both configurations, the spin speed is similar.Figure S2. Schematic configuration of the spin speed measurement by a) two IR LEDs or b) HE IC.Figure S3. The spin speed of the fabricated spin coater versus the current drawn by the motor (at 12 Volt) for IR and Hall configurations.Figure S4. The sensitivity of the IR/HE configurations versus vertical distance from the spinning surface4. Fabrication of the spin coater4.1. The motor of the spin coaterAn HDD is used for the motor of the spin coater. Using a screwdriver, the cover of the HDD is opened. As shown in Figure S5, the main parts of each HDD (in this case a Maxtor brand) are a BLDC motor, plotter (disk with recording medium), an in-hub motor, a voice coil motor, an actuator arm, an actuator arm driver, and a read/write head.1 The in-hub motor holds the plotter and is fastened by three bolts to the HDD rotor (including three threaded holes). For the fabrication of the spin coater, we need the BLDC motor and the other parts are removed from the HDD case. Figure S6a shows the parts of the HDD motor. Each HDD motor consists of a rotor, a stator, and a shaft. The stator has 12 coils of which each of the four coils is wound by one wire (see Figure S6b). Figure S5. The parts of an HDDFigure S6. a) Photograph of a disassembled HDD motor b) the schematic of an HDD motor By powering each of the four coils, an electric magnet is created which interacts with the permanent magnets of the rotor. The built-in microcontroller of the ESC powers each of the four coils in correct timing to spin the rotor. The inner section of the HDD rotor has 12 arranged permanent magnets (with north (N) and south (S) magnetic poles) that are integrated as a ring-shaped magnet. As shown in Figure S6b, these 12 magnets are located in front of each coil (see Figure S6b).4.2 Assembling the electrical and mechanical partsA: Electrical partsAccording to Figure S1 and Table S2, the electrical parts are assembled on the PCB board. Figure S7 shows the electrical parts of the spin coater. Each HDD motor has three wires located on the back side of the HDD case. A servo tester along with an electronic speed controller (that has a built-in microcontroller) was used for driving the HDD motor. B: Mechanical parts The mechanical parts include the body of the spin coater which holds the electrical parts and the chuck which measures the spin speed (and also holds the sample). The CAD files of the body spin coater (supplementary files: frameworks 1 and 2) and chuck (supplementary files: rotor for IR/HE sensors) were designed in Corel software. The body of the spin coater and the chuck can be fabricated by a 3D printer, a turning mechanism, and/or a laser cutter. A CO2 laser was used for cutting poly(methyl methacrylate) (PMMA) sheet. Figure S8a shows the rear view of the fabricated chuck including a CD plate (cut by the CO2 laser) along with four pieces of black tape for IR configuration. Each CD plate has an aluminum reflective layer that has a good reflectivity for the IR LED receiver (950 nm). Figure S8b shows the rear view of the fabricated chuck including four embedded magnets in the chuck for the HE configuration.Figure S7. Electrical assemblyFigure S8. a) Rear side of the fabricated chuck for the IR configuration and b) for the HE configuration c) front side of the HDD case along with the IR sensorThe chuck for the IR configuration (Figure S8a) has two PMMA circular plates with the thicknesses of 3 mm (the smaller one) and 2 mm (the bigger one) and also a CD plate with the thickness of 1 mm. The chuck for the HE configuration (Figure S8b) has three PMMA circular plates with the thickness of 2 mm. Each configuration (IR/HE) shows similar speed measurements (according to Figure S3) and for the fabrication of the spin coater there is no difference between the two configurations (IR/HE). Figure S8c shows the embedded IR sensor in the HDD case. The rear side of the chuck in Figure S8a is mounted on the HDD motor (Figure S8c) and fastened by three bolts. According to Figure S2a, the rear side of the chuck is mounted opposite the IR sensor. For the HE configuration, Hall IC is embedded in the HDD case and the rear side of the chuck in Figure S8b is mounted on the HDD rotor. Then, the PMMA parts of the body of the spin coater were glued by hot glue and the electrical parts in Figure S7 were embedded in the body of the spin coater. 5. Arduino to Computer Interface The latest version of Arduino software can be downloaded from: . After installing the Arduino software, the Arduino board was connected to the PC via a USB cable. Then, the Arduino model (NANO) and serial communication port were chosen (COM1/COM2, etc.) through the "tools" bar of the software. Finally, the code in section 7 was pasted to the window of the software and was then uploaded to the Arduino microcontroller. Figure S9 shows the view of the Arduino software.Figure S9. The view of the Arduino software6. Testing the spin coater According to the existing equipment in a classroom setting, a simple experiment was conducted along with the students. Figure S10 shows the fabricated spin coater ready to be used. A plastic CD box was used to prevent the splashing of the solution during the spin coating process. The concentrated grape juice was selected due to its dark color and high viscosity. However, any color solution (or liquid polymer) with any viscosity can be used. The concentrated grape juice was dropped by a syringe on the lamel surface and the spin coater was run. After spin coating, the lamel was removed from the rotor and was put on a white piece of paper. Then the photographs of all the coated samples were taken by a cell phone. As shown, by increasing the spin speed, the thickness and color of the coated lamel decrease and therefore the white color of the background is better seen (Figure 11b). As was mentioned in the manuscript, the color difference of the samples at 1000 rpm and at 2000 rpm was not clear and the grayscale contrasts of the photographs were investigated. Figure S10. The fabricated spin coater during the experiment For this purpose, the photograph is opened in the Image J software. The latest version of Image J software can be downloaded from: S11 shows working with the Image J software. After opening the photograph in the software, using the tools bar section of the software, the rectangular tool was selected (stage 1) and an imaginary square with 201 pixels× 201 pixels was drawn on the photograph (stage 2). Then using “Analyze” in the menu bar the “Plot Profile” was selected (stage 3). Figure S11c shows the grayscale contrast of the photograph in the imaginary square. The software averages each 201 pixels in a column. This process was repeated for the other samples. The saved files of the ten images were opened in Excel (a Microsoft Office software) and drawn together (Figure S12). Figure S11. Working with Image J software, choosing the rectangular tool from the tool bar (stage 1), drawing an imaginary square on the 1000 rpm sample (stage 2), choosing “Analyze” in the menu bar and then “Plot Profile” (stage 3), saving the gray values (stage 4)Figure S12. Gray values of ten images versus pixels obtained from Image J software (Figure S11 C) and drawn in Excel (the lowest gray value is for 1000 rpm sample and the highest gray values are for blank and 9000 rpm samples.7. Arduino code The code of the program includes two parts. The first part measures the spin speed and the second part is a chronometer. In the following code, the blue color line is a formula for calculating "rpm" and depends on the number of magnets or reflective parts. We used four reflective parts. #include <LiquidCrystal.h>//LiquidCrystal lcd(8,9,4,5,6,7);LiquidCrystal lcd(12,11,6,5,4,3);//chornometer variablesint ledPin = 13; int buttonPin = 8; int buttonState; int lastButtonState; int elapsedmilisec; int elapsedSeconds; int elapsedMinutes; char buf[10]; unsigned int rev=0;int rpm;int counter;char buf_t[10]; void ext_int(){ //interrupt service routine rev++;}ISR(TIMER1_OVF_vect){ elapsedmilisec++; if(elapsedmilisec == 1000){ elapsedmilisec=0; elapsedSeconds++; if(elapsedSeconds == 59){ elapsedSeconds=0; elapsedMinutes++; if(elapsedMinutes == 99){ elapsedmilisec=0; elapsedSeconds=0; elapsedMinutes=0; } } } TCNT1H=0xC180 >> 8; TCNT1L=0xC180 & 0xff;}ISR(TIMER2_OVF_vect){ counter++; if(counter == 1000){ noInterrupts(); counter=0; rpm=(rev/4)*60; //calculates rpm rev=0; interrupts(); } TCNT2=0x06;}void setup(){ lcd.begin(16, 2); pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(2),ext_int,RISING); rev=0; sei(); setupTimer2();} void loop(){ chornometer(); tachometer(); }void setupTimer2(void){ ASSR=(0<<EXCLK) | (0<<AS2); TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20); TCCR2B=(0<<WGM22) | (1<<CS22) | (0<<CS21) | (0<<CS20); TCNT2=0x06; OCR2A=0x00; OCR2B=0x00; TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (1<<TOIE2);}void setupTimer1(void){ TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0xC1; TCNT1L=0x80; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);}void tachometer(void){ lcd.setCursor(0,0); itoa(rpm, buf_t, 10); lcd.print("Speed:"); lcd.print(rpm); lcd.print(" rpm ");}void chornometer(void){ static bool counter=HIGH; buttonState = digitalRead(buttonPin); if (buttonState == LOW && lastButtonState == HIGH && counter == HIGH){ setupTimer1(); counter = LOW; delay(10); lastButtonState = buttonState; elapsedmilisec=0; elapsedSeconds=0; elapsedMinutes=0; } else if(buttonState == LOW && lastButtonState == HIGH && counter == LOW){ TCCR1A=0; TCCR1B=0; TCNT1H=0; TCNT1L=0; counter = HIGH; delay(10); lastButtonState = buttonState; } else{ lastButtonState=buttonState; sprintf(buf,"%d:%d:%d ",elapsedMinutes,elapsedSeconds,elapsedmilisec); lcd.setCursor(0,1); lcd.print("Time:"); lcd.print(buf); } }Reference1. Wood, R. Future hard disk drive systems. J. Magn. Magn. Mater. 2009, 321(6), 555-561. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download