红水杯

#The 4th Innovation Competition#AI Constant Temperature Soldering Iron

 
Overview

Brief introduction:
A portable intelligent constant temperature electric soldering iron based on touch sensing + single-chip microcomputer control. It is easy to carry, intelligently controlled, the soldering iron core and the soldering iron tip will never dry burn, energy-saving and environmentally friendly, and the service life of the soldering iron tip and the soldering iron core is more than doubled.
1. Detailed description:
   The touch + intelligent control is built into the handle of the electric soldering iron. When the user picks up the electric soldering iron, it switches to the high-power fast-heating constant temperature mode. When the user puts down the electric soldering iron, it switches to the low-power heat preservation energy-saving mode. The soldering iron core and the soldering iron tip are free from dry burning and save electricity, which prolongs the service life of the electric soldering iron. The service life of the ordinary electric soldering iron core and the soldering iron tip is about 3 months, and the service life of the AI ​​constant temperature electric soldering iron tip and the soldering iron core is more than 6 months.
2. Challenges faced and problems solved;
A. Challenges faced: 1. How to build the sensing circuit, single-chip microcomputer, and power supply chip into the handle of the electric soldering iron. 2. How to quickly heat up from idle state to use state. 3. How to reliably identify the user status.
B. Problems to be solved: People who use electric soldering irons (or electric soldering stations) are divided into R&D engineers, debugging engineers, maintenance engineers and electrical maintenance personnel, technical workers on the production line and beginner electronic technicians. 1. When R&D engineers and debugging engineers debug circuit boards, they may use electric soldering irons for a few hours, and the soldering iron is in a waiting state 80% of the time. Because: a. Engineers will not and cannot wait until they need to use the electric soldering iron to plug in the electric soldering iron, and it takes 3-5 minutes to preheat the electric soldering iron. b. If the electric soldering iron (or electric soldering station) is plugged in for a long time, the electric soldering iron tip and the soldering iron core will dry burn, and the inflated dry burning soldering iron tip will be very dirty, and the dirty soldering iron tip will seriously affect the welding quality. 2. Maintenance engineers and electrical maintenance personnel use electric soldering irons or electric soldering stations at different times due to different measurement and analysis times. The electric soldering iron (or electric soldering station) is dry burning 80% of the time. In addition, it is very inconvenient for a maintenance worker to carry a 2-3 kg large soldering station. 3. Beginner electronic technicians, due to the high price of soldering stations, buy ordinary electric soldering irons without constant temperature function. Without constant temperature control, the electric soldering iron will burn out in 2-3 months, and the temperature of the electric soldering iron is high, and the welding quality is not guaranteed. This AI constant temperature electric soldering iron has constant temperature and intelligent sensing control, is easy to carry (the size of an ordinary electric soldering iron), and the price is almost the same as an ordinary constant temperature electric soldering iron.
3. Key points of hardware and software:
A. Hardware:
1. How to install the power chip, touch chip, single-chip microcomputer and other hardware into a small soldering iron handle with a good feel (the large handle feels very bad, and no one uses it now): The power chip uses the KP3310 SOP8 of Biyi Technology, and there are only 5 peripheral components; the touch chip uses the dedicated touch chip SC01, SOP8 package, and the single-chip microcomputer uses Songhan or Zhongwei 12-bit ADC12 SOP8 package, and the above configuration components can be built into the handle.
2. Soldering iron core: The selection requirements of the soldering iron core are that in low-power insulation mode, the power is 8-10W, and in high-power working mode, the temperature is required to rise quickly to about 350 degrees within 3 seconds, and the temperature is constant. In this way, a ceramic 4-wire heating core with a built-in temperature-sensitive resistor is selected, the temperature-sensitive resistor is 45-55 ohms, and the heating resistor is a 90W ceramic heating core. However, how to maintain a constant temperature for such a high-power heating core.
3. Induction mode: Due to the use of 220V or 110V voltage, the touch sensor (point) cannot be placed externally and must be in the handle for safety. At the same time, due to the huge differences in the user's hand grip, how to ensure reliable touch sensing. This design uses a dedicated touch chip SC01, + spring close to the inner shell of the handle,
B. Software:
1. The heating part of the soldering iron core is about 20mm away from the soldering nozzle. The soldering iron core temperature-sensitive resistor detects the temperature of the soldering iron core, not the temperature of the soldering nozzle. The software adopts full-speed heating first, and then delays for a certain period of time, and then gradually reduces the input power.
2. Environmental influence. Under the same power, the temperature of the soldering iron tip is very different when the environment is 10 degrees and 36 degrees. At present, the single-chip microcomputer is used to detect the ambient temperature. When the soldering iron is working, the influence of low ambient temperature is compensated.
4. Material list:





Serial
number Name
Number
Package
Quantity
1
Diode M7F
D1,D2
SMD
2
2
MCU 8F5701
IC5
SOP8
1
3
Thyristor BT131
Q1
SOT223
1
4
Power chip 3310
IC1
SOP8
1
5
Capacitor 100uF/10V
C15,C3
EC8MM_3.81MM
2
6
Temperature probe 1000K
RNTC

1
7
Chip resistor 100K 5%
R1
0603
1
8
Chip capacitor 104
C8,C10,C13,C14
0603
3
9
Chip capacitor 4.7nF
C5
0603
1
10
Chip capacitor 15pF NPO
C16
0603
1
11
Chip resistor 3k 5%
R2,R4
0603
2
12
Chip resistor 1k 5%
R11
0603
1
13
Chip resistor 1k 1%
R13
0805
1
14
Chip resistor 510R 5%
R9,R3
0603
2
16
Inductor ICSC01
IC2
SOP8
1
17
Chip capacitor 8p NPO
C17
0603
1
18
NTC 100K
RNTC1

1
19
Chip resistor 10k 1%
R12
0603
1
20
LED Red Blue
LED1, LED2
0603
2
V. Soldering iron photo:
1. Circuit board: WeChat picture_20190922134752_copy.jpg2. Finished product: WeChat picture_20190922134706_copy.jpgVI. Video: See attachment 11.
VII. Open source documentation:
   VII. Open source documentation.
include
include
include
define unchar unsigned char //8 bits, value range 0~255
define unint unsigned int //16 bits, value range 0~65535
define CLR_ADCCH (ADM & 0xE0) // Clear CHS[4:0]
define _EOC ADM & 0x20 // ADC status (EOC)
#define _ADENB ADM |= 0x80 // ADC enable (ADENB)
#define EnADC_Coverting ADM |= 0x40 // ADC converting start (ADS)
//#define BufSize 20
unint uiADCL=0; //AD value low 8
bitsunint uiADC=0; //AD value high 4
bitsunint ADC_Room_Temperature=0;//
unint Value_Room_Temperature=0;//Room temperature ADC
unint Value_Room_Temperature_Average=0;//Room temperature average value
//unint xdata ADC_Room_Temperature_Last=0;
unint ADC_NTC=0;//
unint Value_NTC=0;//Soldering iron ADC
unint Value_NTC_Average=0;//Room temperature average
unint Value_NTC_Last=0;
unint Value_Work=0;
unint Value_Work1=0;
unint Value_Work2=0;
unint Low_Default=4018;
unint High_Default=399 3;
unint Low=3861;
unint High=3798;
unchar Time_20ms=0; //20ms counter
unchar Time_500ms=0;
unchar Time_1s=0; unchar
Time_1m=0;
unchar Time_90m=90;
unchar Time_240m=240;
unchar Time_1h=0;
unchar i=0;
unchar j=0; unchar
Count_50=50;
Count_5=5;
unchar Open_Time=15;
//unchar Count_Heating=0;
unchar Mode_Temperature=1;
unchar Time_10s=10; unchar
Time_45s=45;
unchar Time_30s=30; unchar
Count_20ms =0
; =0; bit Tag_20ms = 0 ; bit Tag_Touch =0 ; bit Tag_Pre_Insulation=0; bit Tag_Smart=1; bit Tag_Timing_Control=1; bit Tag_10s =1; bit Tag_Temperature_Setting =1; bit Tag_Compensate=0; Tag_30s=0; bit Tag_Stop_High=0; bit Tag_ADC_Deal=0; /************Input and output definition***************/ sbit LED_Blue=P0^0; //Blue light sbit NTC=P0^1; //NTC detection




















sbit SCR=P0^2; //thyristor output
sbit Touch=P0^3; //touch interface
sbit Room_Temperature=P0^4; //temperature monitoring
sbit LED_Red=P0^5; //red light
//********************System initialization************************
void System_Init(void)
{
WDTR = 0x5A; //clear watchdog
CLKSEL = 0x04; //Fcpu=32M/2=16M
CLKCMD = 0x69; //enable setting
CKCON &= 0x4F; //Wait 4 Cycle From=16M
//P0OC |= 0x02; //1pin open drain output mode
}
//********************IO input and output settings************************
void Init_GPIO(void)
{
P0M = 0x25; //1,3,4 are inputs, the rest are outputs
P0UR = 0x08; // 3 is set as pull-up resistor
P0CON = 0x12; //1 and 4 are only used as analog input pins, the rest are GPIO
P0 = 0x08; //3 is high level, the rest are low level
}
//*********************Timer 0 initialization****************
void Timer0_Init_Mode1(void) //50ms
{
TCON0 = 0x22; //Timer external clock selection register T1RATE=Fext0/32=32/32=1M
TMOD = 0x65; // Timer mode 1
                              // T0GATE = 0,
                              // T0CT = 0, 16-bit timer
TH0 = 0xB1;
TL0 = 0xE0; // 65536-45536=20ms initialization initial value
TF0 = 0; //No overflow bit
ET0 = 1; //Interrupt enable
TR0 = 1; //Timing function enable
}
//************************ADC initialization********************************
void ADC_Init(void)
{
    ADR |= 0x40; // Enable ADC interrupt function (GCHS)
    ADR |= 0x30; //1/2 clock source
VREFH = 0x04; // Enable internal VDD voltage reference
    //VREFH &= 0xFD; // Enable internal low voltage reference
    //VREFH |= 0x03; // VHS[2] = 0 : ADC internal VREFH function is depend on VHS[1:0].
                                    // VHS[1:0] = 0X03 : Internal reference voltage is VDD.
}
//************************ADC processing***********************
void ADC_Deal(void) // ADC judgment is only done in the insulation stage
{
if(Tag_100ms==1&&Tag_10s==0)
​​{
//Tag_100ms=0;
i++;
IEN2 |= 0x01; //ADC interrupt enable_ADENB
; //ADC enable (ADENB), in STOP mode, disable ADC to save power
ADR |= 0x40; //Open ADC global channel (GCHS)
ADM = CLR_ADCCH |0x04; //Select ADC 04 channel
P0CON |= 0x10; //P04 is set to 1 as ADC input
EnADC_Coverting;
while(!_EOC); //Wait for the conversion to end
ADC_Room_Temperature=uiADC;
IEN2 &= 0xFE; //Turn off ADC interrupt
Value_Room_Temperature=Value_Room_Temperature+ADC_Room_Temperature;
if(i==10)
{
i=0;
Value_Room_Temperature_Average=Value_Room_Temperature/10;
Value_Room_Temperature=0;
ADC_Room_Temperature=0;
Tag_ADC_Deal=1;
}
}
if(Tag_100ms==1)
{
Tag_100ms=0;
j++;
IEN2 |= 0x01; //ADC interrupt enable_ADENB
; //ADC enable (ADENB), in STOP mode, disable ADC to save power
ADR |= 0x40; //Turn on ADC global channel (GCHS)
P0CON |= 0x02; //Set P01 to 1 as ADC inputADM
= CLR_ADCCH |0x01; //Select ADC 01 channelEnADC_Coverting
;
while(!_EOC); //Wait for the conversion to
endADC_NTC=uiADC;
IEN2 &= 0xFE; //Turn off ADC interruptValue_NTC
=Value_NTC+ADC_NTC;
if(j==10)
{
j=0;
Value_NTC_Average=Value_NTC/10;
Value_NTC=0;
ADC_NTC=0;
if(Value_NTC_Last!=0)
{
if(Value_NTC_Average=41)Open_Time=40;
}
//Value_NTC_Last=Value_NTC_Average;
}
else Value_NTC_Last=Value_NTC_Average;
}
}
}
/*****************Key scan**********************/
void Key_Scan(void)
{
if(Tag_10s==1)
{
SCR=0;
if(Touch==0)
{
Mode_Temperature+=1;
    if(Mode_Temperature==4)Mode_Temperature=1;
switch(Mode_Temperature)
{
//case 1:Low_Default=3913;High_Default=3866;Tag_Temperature_Setting=1;break;//130-140
//case 1:Low_ Default=4018;High_Default=3993;Tag_Temperature_Setting=1;break;//130-140
case 1:Low=3861;High=3798;LED_Red=1;LED_Blue=0;Tag_Temperature_Setting=0;Value_Work1=32;break;//140-150
case 2:Low=3798;High=3725;LED_Red=0;LED_Blue=0;Tag_Temperature_Setting=0;Value_Work1=40;break;//150-160
case 3:Low=3725;High=3640;LED_Red=0;LED_Blue=1;Tag_Temperature_Setting=0;Value_Work1=49;break;//160-170
}
while(1)
{
if(Touch==1) return; //Touch and release to jump to the main programif
(Tag_10s==0) ​​return; //10 seconds to jump to the main program
}
}
}
}
// ********************Room temperature processing************************
void Value_Work_Deal(void) //The first 10 seconds to process the room temperature, because the room temperature sensor will be heated by the soldering iron tip
{
if(Tag_ADC_Deal==1&&Tag_10s==0)
​​{
Tag_ADC_Deal=0;
if(Value_Room_Temperature_Average=119&&Value_Room_Temperature_Average=146&&Value_Room_Temperature_Average=185&&Value_Room_Temperature_Average=232&&Value_Room_Temperature_Average=289&&Value_Room_Temperature_Average=355&&Value_Room_Temperature_Average=432&&Value_Room_Temperature_Average=520&&Value_Room_Temperature_Average=619&&Value_Room_Temperature_Average=731&&Value_Room_Temperature_Average=880)Value_Work2=31;
}
}
// **************** ****Soldering tip temperature treatment************************
void Temperature_Treatment(void) //Query once every 1s
{
if(Tag_10s==0&&Tag_20ms==1)
{
  Tag_20ms=0;
//Initial temperature settingif
(Value_Work1>=Value_Work2)Value_Work=Value_Work1;
else Value_Work=Value_Work2;
  //Hand grip When the soldering iron is processed, the high temperature constant temperature working state
if(Touch==0)
{
Tag_Smart=0;
Tag_Pre_Insulation=1;
Tag_Compensate1=1;
Tag_45s=1;
Time_45s=45;
if(Tag_Compensate==1) //Return from low temperature When holding, it works at full power for 30s
{
Tag_Compensate=1;
Tag_30s=1;
LED_Blue=1;
LED_Red=0;
SCR=1;
}
else // Temperature processing when holding
{
LED_Blue=1;
if(Value_NTC_Average=Value_Work)SCR=0;
else SCR=1;
}
if(Value_NTC_Average=High)
{
if(Open_Time=Open_Time)SCR=0;
else SCR=1;
}
if(Value_NTC_Average>=Low)SCR=1;
     }
  }
//How to handle the soldering iron when it is idle,Enter the anti-oxidation state of the soldering iron
tipif(Touch==1)
{
Tag_Smart=1;
Tag_Pre_Insulation=0;
Tag_Compensate=1;
Tag_30s=1;
Time_30s=30;
if(Tag_Compensate1==1) //When returning from high temperature, work at 40% power for 45s
{
Tag_Compensate1=1;
Tag_45s=1;
LED_Blue=0;
LED_Red=0;
if(Count_50>=26)SCR=0;
else SCR=1;
}
else //Constant temperature when idle
{
LED_Red=1;
if(Value_NTC_Average=Open_Time)SCR=0;
else SCR=1;
}
if(Value_NTC_Average=High_Default)
{
if(Count_50>=Open_Time)SCR=0;
else SCR=1;
}
if(Value_NTC_Average>=Low_Default)SCR=1;
}
  }
Value_NTC_Last=Value_NTC_Average;
}
}
// ********************Main program****************************
void main(void)
{
EAL=1; //Open general
interruptSystem_Init(); //System initializationInit_GPIO
(); //IO port input and output
definitionTimer0_Init_Mode1(); //Timer 0 initializationADC_Init
();
while (1)
{
ADC_Deal();
Key_Scan();
Value_Work_Deal();
Temperature_Treatment();
}
}
//*********************time0 interrupt function*****************************
void Timer0_ISR(void) interrupt ISRTimer0 // 20ms timer interrupt
{
TH0 = 0xB1;
TL0 = 0xE0; // 65536-45536=20ms initialization
valueTag_20ms=1;
Count_5-=1; //100ms countdownif
  (Count_5==0)
{
Tag_100ms=1;
  Count_5=5;
}
Count_50-=1; //Power timing benchmarkif
(Count_50==0)Count_50=50;
Time_20ms+=1;
if(Time_20ms==25)
{
Time_20ms=0;
Time_500ms+=1;
if(Time_500ms==2) //1 second count
{
Time_500ms=0;
Time_1s+=1;
Tag_1s=1;
if(Tag_10s==1)Time_10s-=1 ; if
(Time_10s==0)
​​{
Tag_10s=0;
Tag_Temperature_Setting=0;
} if(Tag_30s==1)Time_30s-=1; if (Time_30s==0) ​​{ Tag_30s=0; Time_30s=30; Tag_Compensate=0; } if(Tag_45s ==1)Time_45s-=1; if(Time_45s==0) ​​{ Tag_45s=0; Time_45s=45; Tag_Compensate1=0; } if(Time_1s==60)//60 { Time_1m+=1; Time_1s=0; if(Tag_Timing_Control==1)Time_240m-=1; if(Time_240m==0) { Tag_90m=1; Tag_Timing_Control=0; Time_240m=240; } if(Tag_90m==1) { Time_90m-=1; P0M = 0x00; P0 = 0x08; if(Time_90m==0) { Tag_90m=0; P0M = 0x25; //1,3,4 are inputs, the rest are outputs P0UR = 0x08; // 3 is set as a pull-up resistor P0CON=0x12; //1 and 4 are only analog input pins, the rest are GPIO P0 = 0x08; //2 is low level, the rest are high level } } if(Time_1m==60) { Time_1h+=1; Time_1m=0; if(Time_1h==10)//4 { P0M=0x00; P0 = 0x08; //Turn off LED and output, restore after power failure and restart Time_1h=0; EAL=1; } } } if(Tag_Temperature_Setting==1) { LED_Red=~LED_Red; LED_Blue=1 ; } if(Tag_Smart==1&&Tag_1 0s==0&&Value_NTC_Average>=High_Default) { LED_Blue=~LED_Blue; //LED_Red=1; } if(Tag_Pre_Insulation==1&&Tag_10s==0&&Value_NTC_Average>=High) { LED_Red=~LED_Red; //LED_Blue=1;


































































}
}
}
}
//************************ADC interrupt function****************************
void ADC_ISR(void) interrupt ISRAdc
{
IRCON2 &= 0xFE; //Clear interrupt requestif
(_EOC) // Check ADC status
{
uiADCL = ADR;
uiADCL &= 0x0F; // Get ADB3~ADB0
uiADC = ADB ;
uiADC
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2025-05-20 18:55:05
  • Emergency assistance
  • TV subtitle overlay implemented by ATmega8
  • Does anyone know the corresponding process and response code of LM3S8962 interrupt under ucos2?
  • [Transfer] High-speed PCB design: source synchronous clock system (Part 1)
  • Resistive touch screen
  • Two circuit diagrams for emergency lights

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号