Introduction: Cheap Hot Air Station With Arduino
first , it's my first instructable and i'm not native in english so be gentle
I had an idea weeks ago , build a hot air station for cheap , very cheap , i don't need a big stuff just a little station for few soldering.
i've find on ebay the 858 hot air station but to expensive for me, so i just buy the handle for 8 euros! and i have built a circuit with a arduino to control this handle.
lets go!
Step 1: Study the Handle !
The handle comes with 8 pins:
2 wires for the heater , it works with 220v ac ( i dont know for 110v) it is the grey and the white wire.
2 wires for the 24v dc fan plus is blue ans gnd is brown
1 wire for the reed switch the green
1 wire for the earth the yellow
2 wire for the thermocouple red (plus ) and black
now how to control this?
i will separate in section the rest of the project
first the heating
Step 2: The Heating Control
the objectif is realy simple : start and stop the heating with a logic command of 5v .
But we can't do that with 220 vac easily the solution : a triac and an optocoupler,
tric is like a relay but static , it is control by an optocoupler to secure the rest of the circuit.
it is done here with a moc3063 and BTA140-800
Step 3: The Fan Control
the fan works with a 24vdc, it must be activated always when the gun is hot .
we have two commands: the first is to power on the fan with the arduino it's a simple transistor . the second is a potentiometer to control the speed .
note: here the components are not the best, i take what a had in stock and it works great!
Step 4: The Arduino
the arduino nano control all the things,
to measure the temperature i used a module with a max 6675 connect directly to the thermocoupler of the handle,
the max6675 is connect by spi to the arduino and the supply library is very simple to use.
I put 2 push buttons to control the temperature and a lcd , the lcd is control by i2C it's overkill but i only had this in stock so i used it!
there is a led wich is lighting when the heater is on
to conclude the arduino is connect to my card build earlier.
Step 5: The Code:
My code is the simplest possible:
first: i don't implement for the moment the reed use when you put-on the station the gun is always on!
then we read the temperature if it is lower than the consigne the heater is put on , and stop when it reach the goal !
with the two button you adjust the temperature.
that's all.
Off course it's not perfect but i thought it would be a good starting point for all the beginner in electronic.
Attachments
Step 6: The Final
what's next?
in the future i would like to add the reed switch support , ( i've ordered in china the handle support) and most important the pid for the temperature management,
if you'd like to implement fonctions please be free and contact me , i will be very happy to test it!
4 People Made This Project!
- jestan1 made it!
- Jean-FrançoisR9 made it!
- Jean-FrançoisR9 made it!
- Jean-FrançoisR9 made it!
31 Comments
5 years ago
For the bracket :
https://www.aliexpress.com/snapshot/0.html?orderId=505220000599384&productId=32793701852
Reply 6 months ago
https://s.click.aliexpress.com/e/_DEjMP5l
10 months ago
Please help me .
error exit status 1
no matching function for call to 'MAX6675::MAX6675(int&, int&, int&, int&)'
An error occurred while uploading the sketch
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <max6675.h>
// Initialize the MAX6675 Library for our chip
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int chauffe;
int vent;
int plus;
int moins;
int led;
int temperature;
int etatboutonplus;
int etatboutonmoins;
int reed;
int CS = 2; // CS pin on MAX6675
int SO = 3; // SO pin of MAX6675
int aSCK = 4; // SCK pin of MAX6675
int units = 5; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float temperaturemesure = 0.0; // Temperature output variable
MAX6675 temp(CS,SO,aSCK,units);
void setup()
{
temperature=200;
chauffe= 13;
vent=12;
plus=11;
moins=7;
led=3;
reed=2;
pinMode(chauffe, OUTPUT);
pinMode(vent, OUTPUT);
pinMode(plus, INPUT_PULLUP);
pinMode(moins, INPUT_PULLUP);
pinMode(led, OUTPUT);
pinMode(reed, INPUT_PULLUP);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Station a ");
lcd.setCursor(3,1);
lcd.print("air chaud ");
delay(1500);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Marmotte 2017");
lcd.setCursor(3,1);
lcd.print("Version 1 ");
delay(1500);
}
void loop()
{
temperaturemesure = temp.read_temp();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reglage: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print(temperaturemesure);
if (digitalRead (5) == LOW)
{
digitalWrite(led, LOW);
lcd.setCursor(0,1);
lcd.print("Station en pause");
}
else {
if (temperaturemesure <= temperature)
{
digitalWrite(chauffe, HIGH);
digitalWrite(led, HIGH);
digitalWrite(vent, HIGH);
}
else {
digitalWrite(chauffe, LOW);
digitalWrite(led, LOW);
digitalWrite(vent, HIGH);
}
}
if (digitalRead (11) == LOW)
{
temperature=temperature+10;
}
else {
}
if (digitalRead (7) == LOW)
{
temperature=temperature-10;
}
else {
}
delay(100);
}
3 years ago
HI, I just want to ask if you can suggest alternative component of the BTA140-800. It is currently unavailable in my country. I hope you can help.
Reply 1 year ago
i think you can replace with BTA136/138/139
3 years ago
“Hey, I’ve got this error message, please help me.”
Arduino: 1.8.9 (Windows 10), Board: "Arduino/Genuino Uno"
hot_air_gun_station_V1.0:8:31: error: LiquidCrystal_I2C.h: No such file or directory
compilation terminated.
exit status 1
LiquidCrystal_I2C.h: No such file or directory
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Question 3 years ago on Step 5
Hello!
I do not know the programming and fail to compile the following code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <max6675.h>
// Initialize the MAX6675 Library for our chip
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int chauffe;
int vent;
int plus;
int moins;
int led;
int temperature;
int etatboutonplus;
int etatboutonmoins;
int reed;
int CS = 5; // CS pin on MAX6675
int SO = 4; // SO pin of MAX6675
int aSCK = 6; // SCK pin of MAX6675
int units = 1; // Units to readout temp (0 = raw, 1 = ˚C, 2 = ˚F)
float temperaturemesure = 0.0; // Temperature output variable
MAX6675 temp(CS,SO,aSCK,units);
void setup()
{
temperature=200;
chauffe= 13;
vent=12;
plus=11;
moins=7;
led=3;
reed=2;
pinMode(chauffe, OUTPUT);
pinMode(vent, OUTPUT);
pinMode(plus, INPUT_PULLUP);
pinMode(moins, INPUT_PULLUP);
pinMode(led, OUTPUT);
pinMode(reed, INPUT_PULLUP);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Station a ");
lcd.setCursor(3,1);
lcd.print("air chaud ");
delay(1500);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Marmotte 2017");
lcd.setCursor(3,1);
lcd.print("Version 1 ");
delay(1500);
}
void loop()
{
temperaturemesure = temp.read_temp();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reglage: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print(temperaturemesure);
if (digitalRead (5) == LOW)
{
digitalWrite(led, LOW);
lcd.setCursor(0,1);
lcd.print("Station en pause");
}
else {
if (temperaturemesure <= temperature)
{
digitalWrite(chauffe, HIGH);
digitalWrite(led, HIGH);
digitalWrite(vent, HIGH);
}
else {
digitalWrite(chauffe, LOW);
digitalWrite(led, LOW);
digitalWrite(vent, HIGH);
}
}
if (digitalRead (11) == LOW)
{
temperature=temperature+10;
}
else {
}
if (digitalRead (7) == LOW)
{
temperature=temperature-10;
}
else {
}
delay(100);
}
And his is the error:
<Arduino: 1.8.7 (Windows 10), Board: "Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)"
pistolet_a_air_chaud:30:30: error: no matching function for call to 'MAX6675::MAX6675(int&, int&, int&, int&)'
MAX6675 temp(CS,SO,aSCK,units);
^
In file included from C:\Users\harba\OneDrive\Documents\libraries\pistolet_a_air_chaud\pistolet_a_air_chaud.ino:4:0:
C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1/max6675.h:12:3: note: candidate: MAX6675::MAX6675(int8_t, int8_t, int8_t)
MAX6675(int8_t SCLK, int8_t CS, int8_t MISO);
^
C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1/max6675.h:12:3: note: candidate expects 3 arguments, 4 provided
C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1/max6675.h:10:7: note: candidate: constexpr MAX6675::MAX6675(const MAX6675&)
class MAX6675 {
^
C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1/max6675.h:10:7: note: candidate expects 1 argument, 4 provided
C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1/max6675.h:10:7: note: candidate: constexpr MAX6675::MAX6675(MAX6675&&)
C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1/max6675.h:10:7: note: candidate expects 1 argument, 4 provided
C:\Users\harba\OneDrive\Documents\libraries\pistolet_a_air_chaud\pistolet_a_air_chaud.ino: In function 'void loop()':
pistolet_a_air_chaud:66:28: error: 'class MAX6675' has no member named 'read_temp'
temperaturemesure = temp.read_temp();
^
Multiple libraries were found for "max6675.h"
Used: C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library-1.0.1
Not used: C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675_library
Not used: C:\Users\harba\OneDrive\Documents\libraries\libraries\MAX6675-library-master
exit status 1
no matching function for call to 'MAX6675::MAX6675(int&, int&, int&, int&)'
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Answer 3 years ago
I managed to compile the code, I was using an improper library. Works with MAX6675 library-2.0.1. zip.
https://github.com/mcleng/MAX6675-Library/releases
Question 3 years ago on Step 1
Can you please advise me where the switch is located at the marked location in the picture?
Thank you Michal
Question 4 years ago
Hello, I'm having problems loading the program in arduino.
This error occurs:
In file included from D:\Hot air station\pistolet_a_air_chaud\pistolet_a_air_chaud.ino:5:0:
C:\Users\CNC\Documents\Arduino\libraries\MAX6675-library-master/MAX6675.h:10:7: error: redefinition of 'class MAX6675'
class MAX6675 {
^
In file included from D:\Hot air station\pistolet_a_air_chaud\pistolet_a_air_chaud.ino:1:0:
C:\Users\CNC\Documents\Arduino\libraries\MAX6675-library-master/max6675.h:10:7: error: previous definition of 'class MAX6675'
class MAX6675 {
^
pistolet_a_air_chaud:30: error: conflicting declaration 'MAX6675 temperaturemesure'
MAX6675 temperaturemesure(CS,SO,aSCK,units);
^
D:\Hot air station\pistolet_a_air_chaud\pistolet_a_air_chaud.ino:27:7: note: previous declaration as 'float temperaturemesure'
float temperaturemesure = 0.0; // Temperature output variable
^
D:\Hot air station\pistolet_a_air_chaud\pistolet_a_air_chaud.ino: In function 'void loop()':
pistolet_a_air_chaud:66: error: 'temp' was not declared in this scope
temperaturemesure = temp.read_temp();
^
Using library MAX6675-library-master at version 1.0.0 in folder: C:\Users\CNC\Documents\Arduino\libraries\MAX6675-library-master
Using library Wire at version 1.0 in folder: C:\Users\CNC\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.21\libraries\Wire
Using library LiquidCrystal_I2C at version 1.1.2 in folder: C:\Users\CNC\Documents\Arduino\libraries\LiquidCrystal_I2C
exit status 1
conflicting declaration 'MAX6675 temperaturemesure'
I do not know programming.
Can you help me?
Answer 4 years ago
First. You can’t call two “variables” the same thing. Rename either the “float temperaturemesure” or the “MAX6675 temperaturemesure”... temperaturemesure is the name of the variables the code is creating. Rename one of those “temperaturemesure” to something else.
Reply 4 years ago
You may need to send me the code and I can help you...
Question 4 years ago
Dear friend please help .How to connected this hot air gun(858,8858D,878A,878) on pcb board 858D.My hot air gun it s 858 but pcb board it s 858D.
I have orange, blue, brown, green, white, black, red and yellow wire ( hot gun 858)
Please.....
5 years ago
Hello. I really like the project, thank you.
I want to build, but I think I would like to see the reed switch and PID support; have you managed to try this yet?
Thanks, well done
Reply 4 years ago
https://www.instructables.com/id/DIY-SMD-REWORK-ST...
Checkout this project I have made it with Reed switch and PID algorithm.
4 years ago
Hot air stations are going for $30 shipping included on ebay. Too cheap
Reply 4 years ago
But where is the fun in just buying one, this place is for makers and celebrating ingenuity and self-sufficiency. So be nice to everyone, we are here to learn how to make things, not shop for the lowest price. So have fun and make something!! :)
4 years ago
What a wonderful Instructable, and great use of English. The minor grammatical mistakes add an endearing touch. Like Typing with an accent, it adds uniqueness and highlights the diversity of our group here. Thank you so much for sharing your knowledge and project with us. :)
Question 4 years ago on Step 6
Total cost how much...sir
5 years ago
En ligne 45 le remplacement de lcd.init() par lcd.begin() résout le blocage pour ma configuration. Tout fonctionne.