Below we have the schematic for this board. To supply it we use a type mini B USB connector. That is connected to the power MOSFET but also to some pads for the buck converter so we could get 5V for the other microchips. Now the 16Mhz crystal is smaller so we have more space on the PCB for future improvements. See version 2 to see the other PCB. We haev 2 push buttons to set the temperature and other settings, a vibration sensor for the sleep mode and the ATmega328p.AU microcontroller. See full part list for all the components.
There are a few more pads for the UART connection so we could program the board. See that the board has no SPI connection, so the ATmega328 chip must have a bootloader, otherwise we won't be able to burn one later. This should be a improvement for future boards. Now let's see the layout.
Below you have a picture with the top and bottom side of the PCB. You can see that the tracks on the input are very thick, 2mm in this case since those will have to withstand currents up to 2 or 3 amps from the input to the MOSFET and T12 tip connectors. Below you could also see a real distribution of the real PCB. To secure in place the T12 iron tip, I've used some PCB fuse clips. Those will be soldered in the middle of the PCB on the bottom side and that is the side that has the LM358 OPAMP. The buck converter must be soldered on the top side and the OLED screen as well. The rest are SMD so they can only be soldered on one side so there shouldn't be any problem.
With these components, the chip should work. The 10K pullup will keep the chip active, the 16Mhz crystal will create the clock signal and the C2 capacitor is used to reset the chip with the DTR pulse. To test if it works, we have to connect an FTDI module an the UART pins. I then upload a test code that will write numbers on the serial monitor. Open the monitor and if you receive data, then the chip is ok and se can keep soldering components.
Do not solder the buck converter till the end. We can solder all the other components but in this order: First solder all the remmaining resistors and capacitors. Then we solder the USB connector. Then the P-MOSFET IRF4905 with the small NPN on the gate as a driver. Next we can solder the ÑM358 OPAMP and the diode, capacitor and amplifier resisors.
Now we can solder the remaining components such as the vibration sensor and the side push buttons. The board I've made didn't had the wings pads for the buttons, that's why I've put some hot hlue behind the buttons. But the final GERBER file has the wing pads for the buttons so solder those as well. Next we solder the clips for the T12 tip. Make sure the clips are on the bottom side. Then solder the OLED display on the top side of the board over the ATmega chip. Make sure all the resistors and capacitors are soldered before you add the display. Otherwise it would be difficult to solder below the OLED screen.
Ok, now, before we add the buck converter, we have to make sure its output is exactly 5V and it will stay that way. Connect it to a multimeter and apply 20V at the input. Rotate the potentiometer till you get exactly 5V. Then glue the potentiometer with some glue so it won't change its value. Now we can solder the buck converter in place. Make sure which is OUT and In as shown on the PCB.
The baord is complete. As a final test, check for shorts on all pads and then connect 20V to the USB input and see if we have 5V at the 5V pins. Is time to program the baord. For that you will have to download and install some libraries for the Arduino IDE and downlaod the last firmware V3.3 for this board.
Below we have a bit of the code. Here we could change the variables for the code. The version is V3.3 in this case and the minimum temperature is 200, and maximum is 500. The delay variable is the refresh rate so the loop will run each 0.3 seconds in this case. If you change these variables, you could affect the PID code and get the wrong values.
The new firmware, the V3.3 has some extr settings. If you press both buttons we get into sleep mode. If you press the bottom button while in sleep mode, you will enter settings. Here you can change the sleep time and the preset temperature which is the temperature that the iron starts with. These values get saved into the EEPROM of the Arduino so each time you restart the iron, those values will be on. See example in the video below. Stay tuned for future updates. I'll make a version where you could change the PID constants using the push buttons as well.
//////////////////////////////////////////YOU COULD CHANGE THIS VALUES IF YOU NEED TO//////////////////////////////////////////////////
//Editable Variables (change these values below to fit your project)
String Version = "Version 3.3";
float min_temp = 200; //This is the minimum temperature that the iron could get
float max_temp = 500; //This is the maximum temperature that the iron could get
float Delay=300; //Refresh rate. This is the time in ms the loop runs (PID+temperature read)
int setpoint = 280; //Temperature setpoint initial value
int sleeptime = 1; //Wait to enter into sleep mode. Time in minutes
int max_sleeptime = 10; //This is the maximum sleep time you could set the iron
Ok, so below you have the .STL files for the 3D case. Dwonlaod each file and print them. They are already oriented so you don't have to do enything. The case is made out of 4 parts. The top aprt, the bottom part and two small push buttons. I've used PLA material for each. Alos, a 0.4mm nozzle of my printer, 0.2mm layer height, 2 perimeters and 100% infill at a temperature of 200ºC.
To mount the final product just put the PCB on the bottom part of the case without the T12 tip. Make sure it fits ok in place. If there is not enough space, just slightly use the other soldering iron or a hot nail to melt a bit the plastic supports inside the case. Then add the buttons on each side. use some sandpaper for the buttons so they can moove freely. Then add the top part of the case and close it with two screws. Add the T12 tip and the product is ready.