900M/T12/JBC + heat gun soldering controller

A place to document your own projects.

900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sat Aug 13, 2016 4:53 am

Controller:
mcu_sch.png


Power/analog:
sch.png


Firmware:
irfan-f030-01.zip
(13.75 KiB) Downloaded 229 times
Last edited by projector42 on Thu Jul 20, 2017 6:22 am, edited 11 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sat Aug 13, 2016 4:56 am

T12 heating/cooling (20..25sec from cold, 10..12sec from 150 degrees):
iron-t01.png


I use cartridge without handle, just soldered wires to contacts under protection cap, and put on silicone rubber tube:
t12.JPG


Many T12 have problem of bad joint on one pin (temperature chaotically changes during heating):
t12-joint.JPG

Can be fixed by wrapping this pin with thin wire and tinning it.
Last edited by projector42 on Wed Aug 17, 2016 3:23 am, edited 8 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sat Aug 13, 2016 5:11 am

Controller pinout: PA0 - Tiron input, PA1 - Tgun input, PA2 - iron heater PWM output, PA3 - gun heater PWM, PA4 - gun fan PWM, PF0 - iron on/off button/LED, PF1 - gun on/off button/LED, PA10 - beeper control (passive buzzer), PA9 - UART TX temperatures output (38400baud, in CSV format).

LCD 8x2 or 16x2 (for 16x2 place 2..3K resistor from LCD D4 to ground).

Control (on connector XP2) - with encoder (KEY1/2 - A/B phase, KEY3 - button) or 3-button keyboard (short KEY3 to GND, KEY1 is "+", KEY2 is "-", KEY1+KEY2 is "set".

STM32's internal temperature sensor is used for cold-junction compensation.

For iron with combined heater/thermocouple short "Iron T+" input with "Iron Ht" output.
Last edited by projector42 on Sat Aug 13, 2016 5:54 am, edited 2 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sat Aug 13, 2016 5:23 am

MCU single-sided PCB (in KiCAD):
mcu_sch.zip
(340.56 KiB) Downloaded 277 times


Power/analog PCB:
power_sch.zip
(452.33 KiB) Downloaded 293 times
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sat Aug 13, 2016 5:38 am

PID code:

Code: Select all
struct pid_struct {
   u8  init, div,cnt;   // initialization flag, update divider,counter
   i32 sv, pv,pv1,pv2;  // set value, current/previous process values
   i16 kp,ki,kd;        // Kp,Ki,Kd
   i32 u, u_min,u_max;  // output and min/max limit
};

// initialize
void pid_init(struct pid_struct *pid, u8 div, i16 kp,i16 ki,i16 kd, i32 u_min,i32 u_max){
   pid->init  = pid->cnt = 0;
   pid->div   = div;
   pid->kp    = kp; pid->ki = ki; pid->kd = kd;
   pid->u = pid->u_min = u_min; pid->u_max = u_max;
}

// update process value
i32 pid_update(struct pid_struct *pid, i32 pv){
   // first init
   if (!pid->init){ pid->init = 1; pid->pv2 = pid->pv1 = pid->pv = pv; }
   if (++pid->cnt >= pid->div){
      pid->cnt = 0;
      pid->pv2 = pid->pv1; pid->pv1 = pid->pv; pid->pv = pv;
      pid->u = pid->u + pid->kp * (pid->pv1 - pid->pv) + pid->ki * (pid->sv - pid->pv) + pid->kd * (2*pid->pv1 - pid->pv - pid->pv2);
      if (pid->u > pid->u_max) pid->u = pid->u_max;
      if (pid->u < pid->u_min) pid->u = pid->u_min;
   }
   return pid->u;
}

// update all parameters
i32 pid_update_all(struct pid_struct *pid, i32 pv,i32 sv, u8 div, i16 kp,i16 ki,i16 kd){
   pid->div = div; pid->kp = kp; pid->ki = ki; pid->kd = kd; pid->sv = sv;
   return pid_update(pid, pv);
}
Last edited by projector42 on Thu Aug 18, 2016 2:26 pm, edited 6 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sun Aug 14, 2016 7:12 am

Control: encoder left - set iron temperature, encoder right - set gun temperatute/fan speed, encoder short press - set all previous parameters, plus iron/gun control type (temperature/PWM), and select current profile (0..9).

Encoder long press - set configuration parameters: parameter name at upper row, parameter number and value - at lower row. left/right - select parameter, short press - edit parameter, long press - exit from configuration editor.

Parameters:

00.ironTmin - iron minimum temperature
01.ironTmax - iron maximum temperature
02.irnTstep - iron temperature step
03.ironTmul - iron temperature multiplier (1.00 for 900M sensor, 1.80..2.00 for T12 sensor)

04.irPIDdiv - iron PID divider (5..15)
05.irnPIDkp - iron PID Kp (10..25)
06.irnPIDki - iron PID Ki (1..5)
07.irnPIDkd - iron PID Kd (1..5)

08.irnEnInv - iron enable input inversion
09.iPWMFast - iron PWM mode (0-slow, 1-fast)

10.ironToff - iron sleep temperature
11.ironSoff - iron sleep time, sec

12.fanTmin - gun minimum temperature
13.fanTmax - gun maximum temperature
14.fanTstep - gun temperature step
15.fanTmul - gun temperature multiplier (1.00 for k-thermocouple)

16.fanOnTmr - gun on-timer, sec (maximum time to heat)
17.fanOnEn - gun on-timer enable

18.fnPIDdiv - gun PID divider
19.fanPIDkp - gun PID Kp
20.fanPIDki - gun PID Ki
21.fanPIDkd - gun PID Kd

22.fanEnInv - gun enable-input inversion

23.blowToff - fan-off temperature
24.blowThys - fan-off temperature hysteresis
25.blowPoff - fan-off pause (for gun without thermocouple)
26.blow%Min - fan minimum PWM, %
27.blow%Max - fan maximum PWM, %
28.blow%Stp - fan PWM step

29.corTamb - ambient temperature correction (internal sensor)
30.corTiron - iron temperature correction
31.corTfan - gun temperature correction

32.logDelay - RS232 log delay (0.1sec step)
33.reset - configuration reset to defaults
Last edited by projector42 on Thu Aug 18, 2016 12:39 pm, edited 1 time in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sun Aug 14, 2016 8:56 am

power supply - modified 60/105W halogen "electronic transformer" (1.5..2.5$): added filtering capacitor 22..100uF 400V, Y-capacitor, voltage doubler rectifier bridge, and current feedback changed to voltage feedback:
power-01.JPG

taschibra2.jpg

Output voltage - about 30V unloaded, 22..24V under full load. 7824 IC used for fan power stabilization.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Tue Aug 30, 2016 3:58 pm

Update: number of iron profiles reduced to 4, PID/sensor parameters for every profile, better Tgun stabilization, cooling at maximum RPM.
irfan-f030-01.zip
(13.56 KiB) Downloaded 163 times
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sun Sep 04, 2016 5:14 am

gun test, non-critical overshoot present:
gun-lpf-005.png


firmware update (added iron timer):
irfan-f030-01.zip
(13.74 KiB) Downloaded 158 times
Last edited by projector42 on Sun Sep 04, 2016 11:00 am, edited 2 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Sun Sep 04, 2016 5:30 am

Parameters list:

00.ironTmin - iron minimum temperature
01.ironTmax - maximum temperature
02.irnTstep - temperature step
03.irnTmul1 - iron 1 temperature multiplier (1.00 for k-type sensor, 1.80..2.00 for T12 sensor)
04.irnTmul2 - iron 2 multiplier
05.irnTmul3 - iron 3 multiplier
06.irnTmul4 - iron 4 multiplier

07.irPIDdiv - iron PID divider (5..15)
08.irPIDkp1 - iron 1 Kp (10..25)
09.irPIDkp2 - iron 2 Kp (10..25)
10.irPIDkp3 - iron 3 Kp (10..25)
11.irPIDkp4 - iron 4 Kp (10..25)
12.irPIDki1 - iron 1 Ki (1..5)
13.irPIDki2 - iron 2 Ki (1..5)
14.irPIDki3 - iron 3 Ki (1..5)
15.irPIDki4 - iron 4 Ki (1..5)
16.irPIDkd1 - iron 1 Kd (1..5)
17.irPIDkd2 - iron 2 Kd (1..5)
18.irPIDkd3 - iron 3 Kd (1..5)
19.irPIDkd4 - iron 4 Kd (1..5)

20.irnEnInv - iron enable input inversion (for normal-open reed switch)
21.iPWMFast - PWM mode (0-slow, 1-fast)

22.ironToff - iron sleep temperature
23.ironSoff - sleep time, sec

24.ironTmr - iron work timer, min
25.irnTmrEn - work timer enable

26.gunTmin - gun minimum temperature
27.gunTmax - maximum temperature
28.gunTstep - temperature step
29.gunTmul - temperature multiplier (1.00 for k-thermocouple)

30.gnPIDdiv - gun PID divider
31.gunPIDkp - Kp
32.gunPIDki - Ki
33.gunPIDkd - Kd

34.gunEnInv - gun enable-input inversion (for reed switch)

35.fanToff - fan switch-off temperature
36.fanThys - on/off hysteresis
37.fanPoff - switch-off pause (for gun without thermocouple)
38.fan%Min - minimum PWM, %
39.fan%Max - maximum PWM, %
40.fan%Stp - PWM step, %

41.gunTmr - gun switch-on timer, sec
42.gunTmrEn - switch-on timer enable

43.corTamb - ambient temperature correction (internal sensor)
44.corTirn1 - iron 1 temperature correction
45.corTirn2 - iron 2 temperature correction
46.corTirn3 - iron 3 temperature correction
47.corTirn4 - iron 4 temperature correction
48.corTgun - gun temperature correction

49.logDelay - RS232 log delay (0.1sec step)
50.reset - reset configuration to defaults
Last edited by projector42 on Wed Sep 07, 2016 6:20 am, edited 4 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby kodi » Tue Sep 06, 2016 6:25 am

Very nice documentation - hats off to you, sir!
You got me interested in this project. Have you tried any JBCs with it? How does it hold the temperature when soldering large thermal mass?
kodi
Newbie
Newbie
 
Posts: 11
Joined: Thu Oct 25, 2012 4:00 pm

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Tue Sep 06, 2016 7:39 am

I have no JBC iron, from information on this and other sites it has separate sensor/heater pins, and requires more powerful supply 200..250W, thus replacement of switch VT3 to something with lower Rds (SUD50P04, SPD50P03L, IPD50P03P4L/IPD042P03/IPD068P03, AOD403/423/425, IRFR5305 etc), also diode VD6 - to SS54/SK84 etc. Maybe, thermocouple slope coefficient irnTmul also should be adjusted...

Soldering large thermal mass requires large power margin, and/or large thermal capacity.
PID regulator reacts quickly (at T12 graph - during soldering even large mass, temperature drops maximum by 2..3 degrees)
Last edited by projector42 on Wed Sep 07, 2016 3:49 am, edited 4 times in total.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Wed Sep 07, 2016 2:06 am

Something like this:
jbc-conn.png
jbc-conn.png (10.38 KiB) Viewed 7588 times

jbc-tip.jpg

Diode keeps C3 near ground when the heater (C2) is on, resistor grounds thermocouple's "-" when heater is off.
VD2 can be replaced/paralleled by N-MOSFET for lower heat dissipation / noise.
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby projector42 » Fri Sep 09, 2016 1:08 pm

Another gun test. Overshoot 2..5 deg max:
gun-02.png


Firmware:
irfan-f030-01.zip
(13.75 KiB) Downloaded 132 times
projector42
Jr. Member
Jr. Member
 
Posts: 62
Joined: Sat Aug 13, 2016 4:20 am
Location: K.W.C

Re: 900M/T12/JBC + heat gun soldering controller

Postby kodi » Tue Sep 13, 2016 5:49 am

That looks pretty nice! How about thermal power delivery? Like when you are trying to solder something bigger? Does the temperature drop?
kodi
Newbie
Newbie
 
Posts: 11
Joined: Thu Oct 25, 2012 4:00 pm

Next

Return to Project logs