Soldering irons: Can anyone beat Radio Shack?

Go To Last Post
58 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

So I'm in the market for a soldering iron. Right now I have an old Radio Shack thing and the tip is almost completely gone. At work I'm somewhat spoiled; a few years back someone bought an earlier model of this line:

http://www.howardelectronics.com/jbc/BD-1BA.html

...Which is the best soldering iron I've ever used. It heats up in seconds and works great, despite horrible abuse over the years (left on for days, used to solder 10-gauge wire, etc). $375 for a good soldering iron is a lot, but is it excessive? What do y'all use?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I saw your subject line and was going to tell you about this great place to go to for soldering irons. I found out about it two years or so ago. The company I worked for then used this:
http://www.howardelectronics.com/xytronic/169D.html
For the price, it was great.

Is it excessive you ask? Well, I would have to say no. If it is as good as you say it is, it might be the last one you purchase. It is only money! Great tools are needed to do great things. :)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You can pick up a Hakko 936 (analog temp dial) or 937 (digital) on ebay for about 100$ I'm pretty sure, as a newbie it will work great for a lot of years, and you will probably still prefer it to others when you are a pro.

http://cgi.ebay.ca/936-12-Hakko-...|66%3A2|65%3A12|39%3A1|240%3A1318

If you want to dish out a bit more cash, look for something like this:

http://www.hakko.com/english/pro...

Which is a modular station to which you can later add a hot air module, or nitrogen module. This is probably overkill however.

Also keep in mind you need to buy some tips as well. I would recommend getting a fairly big one for easy through-hole soldering, and a couple of smaller ones for SMD components.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

A second-hand Metcal STSS system can often be picked up quite cheaply on Ebay and will outperform most other soldering equipment. Hakko actually copied their technology and got sued.

Leon

Leon Heller G1HSM

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I like my goot iron. Its nice to hold and makes nice solder joins.

When I am in china I often use hakko 936s, these are still quite ok.

I've used that jbc one you've linked to. Fancy bit of kit but it just felt soulless to me, i'd rather the goot any day.

oddbudman

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Are you looking for a bench model or portable?

Since I do not know where you are located(USA/Abroad) Does make a difference. I have a few Wellers that I have had for years and work real well. I had a Hakko, and I really hated to give that back.

Jim

I would rather attempt something great and fail, than attempt nothing and succeed - Fortune Cookie

 

"The critical shortage here is not stuff, but time." - Johan Ekdahl

 

"Step N is required before you can do step N+1!" - ka7ehk

 

"If you want a career with a known path - become an undertaker. Dead people don't sue!" - Kartman

"Why is there a "Highway to Hell" and only a "Stairway to Heaven"? A prediction of the expected traffic load?"  - Lee "theusch"

 

Speak sweetly. It makes your words easier to digest when at a later date you have to eat them ;-)  - Source Unknown

Please Read: Code-of-Conduct

Atmel Studio6.2/AS7, DipTrace, Quartus, MPLAB, RSLogix user

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Try Stan Rubinstein Associates. Good stuff and really good prices. I've bought quite a lot of stuff here, for home and work, irons and hot-air kit for surface mount.

Example, this temperature controlled solder station, equivalent to a Weller or a Hakko, is only $49. The model below this is $37.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I have a couple of Aoyue irons from Stan Rubenstein. I've always wanted something with a name that has no consonants. :)

They work pretty well. I prefer the "analog" one to the digital, because the digital always goes to 350 degress C when it's turned on. So I have to hit the decrement button 50 times to get the temperature to 300 C. Actually I exaggerate. If I hold the decrement button in for a while, the temperature will usually end up around 285 C, so then I only have to hit the increment button 15 times.

Maybe I'm still exaggerating. I think it changes the temperature in 2 degree steps, so cut those numbers in half.

The analog one uses non-volatile memory to remember the last temperature I used. Some call these non-volatile memory devices potentiometers. :)

I use the small conical tip. When I bought it, the tip was straight. I dropped the iron and bent the tip. I like it much better now. If you have one of these irons, do yourself a favor and drop it on the floor. :)

Attachment(s): 

Last Edited: Thu. Mar 19, 2009 - 12:38 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

My Aoyue 2900 digital iron had a problem. It would lose control of the temperature at random times. When that happened, it would beep 5 times, show "UUU" in the display, and power down the heater.

I took it apart, reseated the cables, and put it back together. It now works fine.

I discovered two things when I opened it up. It uses only through hole components and it uses an Atmel chip.

Attachment(s): 

Last Edited: Thu. Mar 19, 2009 - 04:32 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
I discovered two things when I opened it up. It uses only through hole components and it uses an Atmel chip.

How interesting! Thinks... If one were to replace that conveniently socketed 2051 with the pin-compatible ATtiny2313, one would get free EEPROM to save the last temperature setting. How hard could it be? There's enough detail in that picture alone to write most of the code.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Gee Whiz. I was hoping someone would reverse engineer the code that is in the chip. :)

Actually I have no idea how it works. This digital iron is a "lead free" iron and has the heater integrated into the tip. It has only 3 independent wires going from the black box to the iron. One of the wires is earth ground. There are actually 5 wires in the cable but two pairs are connected together in the black box, and I think at the tip also, so I consider the connected pairs as one wire.

Unless they use earth ground as one of the signal wires, the two ungrounded wires must be used to heat the tip and also to read the tip temperature. How would that be done?

The analog iron is different. It has simple tips that slide over the heating element. It appears to have 4 independent wires plus ground in the cable.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The ADC0832 is a serial 8 bit A to D, analog input on pin 3. It probably reads a thermistor in the iron, as it's too cheap for a thermocouple. That should reveal the iron's sensor connection. It takes 2 port pins to drive it, one clock and one data. The 247 is a 7-segment decoder, so we have a multiplexed display with 3 digit bits and 4 segment bits for 7 pins. 3 more port pins for the push buttons, one for a triac driver, one for a zero-crossing detect input, one left over for a LED or whatnot. The code will probably have a lookup table for ADC to temperature, and a really simple on/off thermostat algorithm. Piece of cake.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm with Leon!

Metcal equipment is about the best that you will ever find. I've used one personally for over 10 years. One station will happily deal with tiny 0402 SMT components and large 6mm high current bolts - no temperature setting required (selected by choice of bit).

Interestingly Metcal are prevalent in contract manufacturers I've visited too, so not just research labs. Both sides of the Atlantic seem to like Metcal.

[Edit]
Before you baulk at the price of these things wondering how people can charge so much for some thing as simples as a soldering iron, I can tell you that I will never go back. I've used numerous irons such as the ones listed/linked to above and they do not compare. Hard to put into words why - it'#s a bit like a HiFi; you can spend £50, or you can spend £500. They both play music, but one does it just that little bit better. If you know of a local electronics firm that uses them, I would pop down and ask the techs about them. They may even have a sales contact and could get a discount of the list price.

As it happens, I am off to foreign climbs in two days time to support a project. I've actually FedEx'ed my Metcal iron out there as part of the delivery before I get on the plane.

Oh, one last thing - I'm not affiliated with Metcal in any way.

[/Edit]

http://www.metcal.com/products/
http://shop.ebay.com/items/?_nkw...

Do you homework and choose well.

Tim

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yeah, but does it have an Atmel in it? Or does it use a PIC? :)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

All this analysis from one photo! You guys are amazing.

I read this thread with interest, never having had an expensive iron.

The largest known prime number: 282589933-1

Without adult supervision.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
There's enough detail in that picture alone to write most of the code.

Oh boy...I have lots to learn :oops:

Just some guy

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The Metcal units look pretty nice, but I don't like the idea of having to buy a new tip for each temperature I want to solder at. It makes great sense for a business that's dealing with a high volume of just a few parts, but not for basement engineering studios.

The JBC has a cool quick-change tool integrated into the station, but this isn't worth a $100 premium over the Hakko 951 kit, which just provides you with a heat-resistant pad.

The JBC also has a sleep feature, and this is nice, but not worth the $100 premium.

The Hakko also has cheaper tips, however I wouldn't expect them to be as good as the JBC tips. The JBS tips at my work are a couple years old now and they've eaten through more than a spool of solder, and they still work fine. I would expect the Hakko tips to be way better than Radio Shack tips, though.

The Goot model shown at Howard Electronics seems more or less feature and price equivalent to the JBC. It's probably a damned fine soldering iron, but it sort of freaks me out that it has a soul.

I once saw this episode of an anime show that featured a fire control computer that became self-aware. It didn't start trying to murder people or anything like that, it just displayed some erratic behavior that the service technicians eventually traced to self-awareness. Since it wasn't designed to speak or communicate in any other way, nobody knew what to do with or about it, other than to sit it in the corner and leave it be. Sentience was a terrible curse for it, like the AI equivalent of "Johnny Got His Gun". I would never wish such a thing on my soldering iron.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You only need different temperature cartridges with the Metcal system if you are using both lead-free and lead solder. Most people use one or the other, so there isn't a problem.

Leon

Leon Heller G1HSM

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hakko tips are pretty much the standard form factor out there, and there are many manufacturers selling different quality tips. I can assure you however that Hakko-branded tips are of great quality.

What destroys tips is not normal usage, its things like an overheating iron, or bad cleaning.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm very happy with my Xytronics iron that comes with the old analog 988. One of these days I'll buy another of their irons to use when I'm away from the bench.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

For personal use I bought a Hakko 936 about 7 or 8 years ago. It still works great. I still use the original tip, among others.

At work I have a Weller. Same base unit as this one: http://search.digikey.com/script... but slightly different iron. It is now about two years old.

Both are fantastic pieces of equipment. The Weller heats up faster and gives me an actual readout of the temperature. It is also much easier to hot-swap tips on the Weller (you have to do it with pliers or something else to protect you from the heat with the Hakko).

Is the Weller worth the extra $300? For personal use, I'd say no. The Hakko is more than adequate for just about anything. I haven't used much Metcal equipment - but I'm sure it's good too. But for personal use - a $100 iron is all you really need.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Okay, let's have a contest. My Aoyue 2900 70 watt with digital readout and with the heater in the tips takes 14 seconds to get to 350 C.

My Aoyue 908 35 watt with no digital readout and simple tips without integral heaters takes 27 seconds to get to 300 C.

The digital is much faster to get to 350 C, but I want to solder at 300 C. It defaults to 350 C, so I have to punch buttons to get it down to 300 C. In the end, the analog gets to 300 C almost as fast and I don't have to punch any buttons. I can just sit on my ass and wait.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

if you watch and wait on ebay you can get a great deal on a metcal iron and tips. but you have to wait.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I've been quite happy with the BlackJack SolderWerks BK3000LFF from Circuit Specialists Inc. This is a digital temperature controlled soldering iron, 70 watts. Heats very rapidly and maintains tip temperature very well, at least for the kind of soldering I do.
Brand new price is $88 and they throw in a free solder fume fan/filter
http://www.circuitspecialists.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi,

I have BlackJack solderwerks BK3000LF station, and it seems it is a copy of AOYUE 2900.

Here's what I have come to, about the electronics:

1. The soldering iron is powered by around 30V rectified but non-filtered voltage.

2. This voltage is switched on/off by a IRF9540 MOSFET, controlled by the AT89C2051 MCU.

3. The MCU switches voltage on/off synchronously, i.e. twice for every period. (100Hz in europe, 120Hz in USA)

4. There is a 1ms dead time on every half-period, and the MCU reads the temperature in this 1ms dead time. The MOSFET is always switched off during dead time, so there isn't any voltage at the output from the station

5. There is a thermocouple in the soldering tip in series with the heater. I suppose the heater connections themselves are used as thermocouple. This gives around 9mV when heated to 350 degrees celsius. One can easily measure this with ordinary multimeter, coupled to the iron power wires. Another soldering iron or a hot air station can be used to heat up the measured solderin iron.

6. During this 1ms dead time, the voltage from the thermocouple is amplified around 300 times by a lm358 opamp , fed to one of the input channels of ADC0832, and read by the MCU.

Maybe I will be able to write a new software for ATTiny somewhere in the future, in order for it to be able to memorize the last temperature that has been set. Switching to 350 degrees every time is pretty disgusting. :)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Good work. If you can sell me something that causes it to start off with the previous temperature, I'll go for that. If it just started at 300 degrees, that would work for me.

While you are at it, can you make the automatic off after 30 minutes be really automatic? That's one of the reasons I bought the AOYUE, but it ain't exactly automatic. I have to push three buttons at once at startup to activate it. That takes both hands and my nose. ;) I wish it was automatically automatic, if you know what I mean.

The one problem I've had is the contacts between the tip and the holder. After I had the soldering station for a few weeks, it would beep 5 times and shut down. I think that's because of lousy contacts that prevent it from reading the temperature.

I cleaned the tip and I tried to clean the contacts. I also bent the contacts so they would press harder against the tip. So far, it seems to work.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

steve17 wrote:
Good work. If you can sell me something that causes it to start off with the previous temperature, I'll go for that. If it just started at 300 degrees, that would work for me.

While you are at it, can you make the automatic off after 30 minutes be really automatic? That's one of the reasons I bought the AOYUE, but it ain't exactly automatic. I have to push three buttons at once at startup to activate it. That takes both hands and my nose. ;) I wish it was automatically automatic, if you know what I mean.

The one problem I've had is the contacts between the tip and the holder. After I had the soldering station for a few weeks, it would beep 5 times and shut down. I think that's because of lousy contacts that prevent it from reading the temperature.

I cleaned the tip and I tried to clean the contacts. I also bent the contacts so they would press harder against the tip. So far, it seems to work.

Hi,

I got it 3 days ago. I am pretty satisfied with the iron performance so far.

I will let you know if I decide to play around with the software. It looks easy anyway. :) Only the communication with the ADC is a bit new to me. But I think I will be able to cope with it with some trials and errors.

The way MCU reads the temperature was pretty surprising also. At the first, I thought it reads the heater resistance, but the moment I hooked the oscilloscope to the ADC input cleared nearly all the things out. I was finally pretty sure wat I was dealing with when I hooked the multimeter to the iron's power terminals and heated it up with my hot air station. :)

Anyway, I will let you know if I decide to play around with the software.

...and axcuse my english, please. :)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

No response from urbach?.

With 0.5US$ solder is OK.

Jeckson

נרגעת

.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Jeckson wrote:
No response from urbach?.

With 0.5US$ solder is OK.

Jeckson

נרגעת

Do you mean someone already made this???

:shock:

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The company I work for ( 360 + employees, sub contract elec. assy) Uses Metcal exclusively...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I've used Metcal for years. Old STSS power units can be picked up cheap on Ebay, and can use the newer MX-500 and MX-5000 handpieces and cartridges.

Leon Heller G1HSM

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Geez, I wish there is a way to "flag" topics so they don't get lost in the nether reaches of the forum!

Jim

Jim Wagner Oregon Research Electronics, Consulting Div. Tangent, OR, USA http://www.orelectronics.net

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
Jeckson wrote:
No response from urbach?.

With 0.5US$ solder is OK.

Jeckson

נרגעת

Do you mean someone already made this???

It's 0.7US$ now.
Common solder.

Jeckson

נרגעת

.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Jeckson wrote:
Quote:
Jeckson wrote:
No response from urbach?.

With 0.5US$ solder is OK.

Jeckson

נרגעת

Do you mean someone already made this???

It's 0.7US$ now.
Common solder.

Jeckson

נרגעת

Did you mean someone made a new software for BJ/AOYUE? If so, how to buy?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Done so far(AtTiny2313/AVR Studio 5 used):
- It regulates the temperatire a bit faster. I have implemented a PID control of the iron.
- It remembers the last temperature setting on power down.
- The default/reset temperature can be programmed. For example, if you work on 250 degrees, and you have programmed a reset temperature of 320 degrees, it goes to 320 degrees when you push the X button. It remebmers this setting also on powerdown.

ToDo:
- waiting for ATTiny4313, because the 2K Flash on 2313 are completely full. Only 8 bytes left free, despite the long trials to optimise the code for size. I have even used "attribute ((naked))" on the main function, but still, this is not enough.
- The auto sleep function will be implemented with 10,30,60,90 minutes option, and separate option for on/off. This way you will be able to set the minutes, and the station will remember them, and when this feature is turned on, it stays on until you turn it off, no matter if you switch the station on or off.

My first AVR project so far. :)

Unfortunately, ATTiny2313/4313 reset pin is active low, and the AT89C2052 reset pin is active high. One can program the RSTDIS fuse and use it as a standart I/O pin, but device becomes unprogrmmable in serial mode after this. Because I am using JTAGICE 2 for programming and I don't have a parallel mode programmer, this option uas unacceptable for me. Instead, I had to select internal RC oscillator, cut the PCB trace to the reset pin, and hook it to the PA0/XTAL1 pin. It works like a charm. When the software is completely ready and tested, the reset/PA3 pin can be used as an I/0, external oscillator can be selected, and the RSTDIS fuse can be programmed for a complete compatibility with the AT89C2051 chip, whithout any PCB modifications.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You've been busy!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Here is the code (i've used AVRStudio 5):

#define F_CPU 8000000UL				//CPU Frequency

#include 
#include 
#include 
#include 
#include 

#define sbi(sfr,bn) (sfr|=_BV(bn))
#define cbi(sfr,bn) (sfr&=~_BV(bn))
#define SetCS sbi(PORTD, PD1)
#define ClrCS cbi(PORTD, PD1)
#define SetCLK sbi(PORTD, PD0)
#define ClrCLK cbi(PORTD, PD0)
#define SetDIDO sbi(PORTB, PB7)
#define ClrDIDO cbi(PORTB, PB7)
#define lbyte(var) ((unsigned char*)&var)[0]
#define ubyte(var) ((unsigned char*)&var)[1]

#define B0Pressed !(PINB&(1<<PB6))	// "+" button
#define B1Pressed !(PINB&(1<<PB5))	// "-" button
#define B2Pressed PINA&(1<<PA0)		// "X" button NOTE: There is two options for the X button. 
									// In the original design, X button is connected to RESET pin of the MCU. 
									// It can be left this way, but the MCU can be programmed only once using serial programming
									// So, I decided to cut off the signal to reset pin and connect it to PA0 pin.

#define ADC_PERIOD 2				//ADC clock half period in microseconds
#define ADC_AVG 3					//ADC temperature averaging constant, a power of two. Must be between 3 and 8.

#define PID_PGAIN 64				//PID control proportional gain
#define PID_IATTN 3					//PID control integral attenuation, a power of two
#define PID_DATTN 4					//PID control differential gain, a power of two
#define PID_IMIN -64				//PID minimum integral value boundary
#define PID_IMAX 2048				//PID maximum integral value boundary
#define PID_DMIN -256				//PID minimum differential value boundary
#define PID_DMAX 4096				//PID maximum differential value boundary

unsigned char EEPROMPos;			//Current EEPROM saving position
unsigned char ISRTicks;				//ISR Ticks
unsigned char SetTempB;				//ADC set temperature (settemp*3/4)
unsigned int TempAVG;				//Averaged current temperature, as read from ADC
unsigned char CSleepMinutes;
unsigned char CSleepSeconds;
unsigned char CSleepTicks;

struct PType{
	unsigned char Identifier;		//Identifier in EEPROM
	unsigned char RstIndex;			//Current reset temperature index in RstTemp[]
	unsigned char RstTemp[3];		//Reset temperature in degrees/2
	unsigned char SetTemp;			//Current set temperature in degrees/2
	unsigned char SleepMinutes;		//Minutes (10,30,60,90) and on/off flag (128) of sleep function
}Pars;

unsigned char EEPROM_GetChar(unsigned char addr)
{
	do{}while(EECR&(1<<EEPE));		//Wait for completion of previous write.
	EEAR=addr;						//Set EEPROM address register.
	EECR=(1<<EERE);					//Start EEPROM read operation.
	return EEDR;					//Return the byte read from EEPROM.
}

void EEPROM_PutChar(unsigned char addr, unsigned char new_value)
{
	unsigned char old_value;		//Old EEPROM value.
	unsigned char diff_mask;		//Difference mask, i.e. old value XOR new value.
	unsigned char old_interrupt;	//Stores interrupt flag while programming.

	old_interrupt = SREG & (1<<SREG_I); //Save interrupt flag state.
	cli(); 
	do{}while(EECR&(1<<EEPE));		//Wait for completion of previous write.
	EEAR=addr;						//Set EEPROM address register.
	EECR=(1<<EERE);					//Start EEPROM read operation.
	old_value=EEDR;					//Get old EEPROM value.
	diff_mask=old_value ^ new_value; //Get bit differences.
		
	if(diff_mask&new_value){		//Check if any bits are changed to '1' in the new value.		
		if(new_value!=0xff){		//Check if any bits in the new value are '0'.			
			EEDR=new_value;			//Set EEPROM data register.
			EECR=(1<<EEMPE)|(0<<EEPM1)|(0<<EEPM0); //Set Master Write Enable bitand Erase+Write mode.
			EECR|=(1<<EEPE);		//Start Erase+Write operation.
		} 
		else{						//Now we know that all bits should be erased.
			EECR=(1<<EEMPE)|(1<<EEPM0); //Set Master Write Enable bit and Erase-only mode.
			EECR|=(1<<EEPE);		//Start Erase-only operation.
		}
	} 
	else{							//Now we know that _no_ bits need to be erased to '1'.		
		if(diff_mask){				//Check if any bits are changed from '1' in the old value.
			EEDR=new_value;			//Set EEPROM data register.
			EECR=(1<<EEMPE)|(1<<EEPM1); //Set Master Write Enable bit and Write-only mode.
			EECR|=(1<<EEPE);		//Start Write-only operation.
		}
	}
	SREG|=old_interrupt;			//Restore interrupt flag state.
}

void LoadPars(unsigned char addr)
{
	unsigned char i;
	for(i=0;i>ADC_AVG)+rb;	//Average last 8 thermocouple voltages
				
		PWMP=(SetTempB-(TempAVG>>ADC_AVG));		//PID proportional value calculation
		
		PWMIL=PWMI+PWMP;						//PID integral value calculation
		if(PWMIL>PID_IMAX)PWMIL=PID_IMAX;
		if(PWMILPID_DMAX)PWMDL=PID_DMAX;
		if(PWMDL>PID_IATTN)+(PWMDL>>PID_DATTN))>>2;	//Calculation of PWM percentage
		if(PWMPRCL<0)PWMPRCL=0;
		if(PWMPRCL>256)PWMPRCL=256;		
		PWMPRC=PWMPRCL;
	}
	PWMCNT+=PWMPRC;								//Do the PWM
	if(ubyte(PWMCNT)){
		if(CSleepTicks|CSleepSeconds|CSleepMinutes)cbi(PORTD,PD6);
		ubyte(PWMCNT)=0;
	}	
	//Start monitoring of mains voltage.
	GTCCR=1;			//Reset timer prescaler			
	TCNT0=224;			//Timer0 overflow in 4mS
	TCCR0B=0b00000101;	//Timer0 clock = clkio/1024
	
	if(Pars.SleepMinutes&128){
		if(CSleepTicks){
			CSleepTicks--;
		}
		else{
			if(CSleepSeconds|CSleepMinutes){
				CSleepTicks=99;
				if(CSleepSeconds){
					CSleepSeconds--;
				}
				else{
					if(CSleepMinutes){
						CSleepMinutes--;
						CSleepSeconds=59;
					}
				}						
			}
		}		
	}
}

void main() __attribute__ ((noreturn));
void main(){
unsigned char i,i1;
unsigned int di;
unsigned char CDig;
unsigned char LISRTicks;
unsigned char DisplayTicks;
unsigned char ModeTicks;		
unsigned char Mode,OldMode;
unsigned char BeepTicks;
unsigned char DoBeep;
unsigned char BlinkTicks, BlinkPeriod;
unsigned char ButtonTicks[3];
unsigned char LastButtonTicks[3];
unsigned char AlarmTicks;
	cli();
	DDRB=0b00011111;
	DDRD=0b01111011;
	PORTA=0xFF;
	PORTB=0xFF;
	PORTD=0xFF;
	MCUCR=(MCUCR&0b11110000)|0b00000010;	
	GIMSK=0b01000000;
	TIMSK=0b00000010; //timer 0 overflow enable
	
	Pars.Identifier=0xFE;
	Pars.RstTemp[0]=150;
	Pars.SetTemp=150;
	Pars.SleepMinutes=30;
	
	for(i=0;i<=(255-sizeof(Pars));i+=sizeof(Pars)){	//search and read saved values in EEPROM
		i1=EEPROM_GetChar(i);
		switch(i1){
			case 0xFF:
				break;
			case 0xFE:
				EEPROMPos=i+sizeof(Pars);	
				if(EEPROMPos>255-sizeof(Pars))EEPROMPos=0;
				LoadPars(i);
				if(Pars.RstIndex>2)Pars.RstIndex=0;
				for(i1=0;i1<=2;i1++){
					if(((Pars.RstTemp[i1]<75)&&(Pars.RstTemp[i1]!=0))||(Pars.RstTemp[i1]>225))Pars.RstTemp[i1]=150;
				}
				for(i1=0;(i1<=2)&&(Pars.RstTemp[Pars.RstIndex]!=0);i1++){
					if(Pars.RstIndex<2){
						Pars.RstIndex++;
					}
					else{
						Pars.RstIndex=0;
					}					
				}
				if((Pars.SetTemp<75)||(Pars.SetTemp>225)){
					if(Pars.RstTemp[Pars.RstIndex]){
						Pars.SetTemp=Pars.RstTemp[Pars.RstIndex];
					}
					else{
						Pars.SetTemp=150;
					}
				}				
				switch(Pars.SleepMinutes&127){
					case 10:
					case 30:
					case 60:
					case 90:
						break;
					default:
						Pars.SleepMinutes=30;
				}				
			default:
				for(i1=0;i1BlinkPeriod)BlinkTicks=0;
			if(BeepTicks){
				BeepTicks--;
				cbi(PORTB,PB4);
			}
			else sbi(PORTB,PB4);
				
			i=TempAVG>>ADC_AVG;
			if(i>185){
				if(AlarmTicks<255)AlarmTicks++;
			}
			else{
				AlarmTicks=0;
			}						
			if(B0Pressed){
				if(ButtonTicks[0]++>240)ButtonTicks[0]--;
			}else ButtonTicks[0]=0;
			if(B1Pressed){
				if(ButtonTicks[1]++>240)ButtonTicks[1]--;
			}else ButtonTicks[1]=0;
			if(B2Pressed){
				if(ButtonTicks[2]++>240)ButtonTicks[2]--;
			}else ButtonTicks[2]=0;
			if(B0Pressed|B1Pressed|B2Pressed){				
				CSleepMinutes=Pars.SleepMinutes&127;
				CSleepSeconds=0;
				CSleepTicks=0;
			}			
		}		
		
		for(i=0;i<=2;i++){
			i1=0;
			if(ButtonTicks[i]){
				if(LastButtonTicks[i]){
					if((ButtonTicks[i]>50)&&(i!=2)){
						ButtonTicks[i]=48;
						i1=0x10+i;
					}					
				}
				else{
					i1=0x10+i;
				}				 
			}
			else{
				if(LastButtonTicks[i])i1=0x20+i;
			}
			LastButtonTicks[i]=ButtonTicks[i];
			
			while(i1){
				switch(i1){
					case 0x10: //button "+" down
						switch(Mode){
							case 2:
								Mode=5;
								Pars.SleepMinutes|=128;
								i1=0x82;
								break;
							case 4:
								if(Pars.RstTemp[Pars.RstIndex]<225)Pars.RstTemp[Pars.RstIndex]++;
								if(Pars.RstTemp[Pars.RstIndex]<75)Pars.RstTemp[Pars.RstIndex]=75;
								i1=0x83;
								break;
							case 5:
								if(Pars.SleepMinutes&128){
									switch(Pars.SleepMinutes&127){
										case 10:
											Pars.SleepMinutes=30+128;
											break;
										case 30:
										case 60:
											Pars.SleepMinutes+=30;
											break;
										default:
											Pars.SleepMinutes=10+128;
									}									
								}
								else{
									Pars.SleepMinutes|=128;																		
								}
								i1=0x82;
								break;
							case 6:
								BlinkPeriod=0;
								i1=0x80;
								break;
							default:
								if(Pars.SetTemp<225)Pars.SetTemp++;			
								i1=0x80;
						}			
						break;
					case 0x11: //button "-" down	
						switch(Mode){
							case 2:
								Mode=5;
							case 5:
								Pars.SleepMinutes&=127;
								i1=0x82;
								break;
							case 4:
								if(Pars.RstTemp[Pars.RstIndex]>=75)Pars.RstTemp[Pars.RstIndex]--;
								if(Pars.RstTemp[Pars.RstIndex]<75)Pars.RstTemp[Pars.RstIndex]=0;
								i1=0x83;
								break;
							case 6:
								BlinkPeriod=0;
								i1=0x80;
								break;
							default:
								if(Pars.SetTemp>75)Pars.SetTemp--;
								i1=0x80;								
						}			
						break;
					case 0x12: //button "X" down
						switch(Mode){
							case 3:
								i1=0x82;
								break;
							case 4:
								if(++Pars.RstIndex>2)Pars.RstIndex=0;
								i1=0x83;
								break;
							case 6:
								i1=0;
								break;
							default:
								Mode=2;
								i1=0x83;
								break;							
						}
						break;

					case 0x22: //button "X" up
						switch(Mode){
							case 2:
								for(i1=0;i1<=2;i1++){
									if((Pars.RstTemp[Pars.RstIndex]<75)||(Pars.RstTemp[Pars.RstIndex]>225)){
										if(++Pars.RstIndex>2)Pars.RstIndex=0;
									}									
								}																	
								if((Pars.RstTemp[Pars.RstIndex]>=75)&&(Pars.RstTemp[Pars.RstIndex]<=225)){
									Pars.SetTemp=Pars.RstTemp[Pars.RstIndex];
								}
								Mode=3;
								i1=0x81;
								break;
							case 3:
								if(++Pars.RstIndex>2)Pars.RstIndex=0;
								for(i1=0;i1<=1;i1++){
									if((Pars.RstTemp[Pars.RstIndex]<75)||(Pars.RstTemp[Pars.RstIndex]>225)){
										if(++Pars.RstIndex>2)Pars.RstIndex=0;
									}									
								}																	
								if((Pars.RstTemp[Pars.RstIndex]>=75)&&(Pars.RstTemp[Pars.RstIndex]<=225)){
									Pars.SetTemp=Pars.RstTemp[Pars.RstIndex];
								}
								i1=0x81;
								break;
							case 6:		
								BlinkPeriod=0;						
								i1=0x80;
								break;
							default:
								i1=0;
						}						
						break;
					case 0x80: //Exit 1
						Mode=1;
					case 0x81: //exit 2
						SetTempB=(Pars.SetTemp*3)/4;
						DoBeep++;
					case 0x82:
						ModeTicks=100;
						i1=0;
						break;
					case 0x83: //Exit 4
						ModeTicks=255;		
						i1=0;
						break;											
					default:
						i1=0;
				}
				DisplayTicks=0;	//Display immediately
			}
		}		
		if(AlarmTicks>=200){
			Mode=7;
			ModeTicks=100;
			DisplayTicks=0;			
		}
		else{
			if(Mode==7){
				Mode=0;
				DisplayTicks=0;
				BeepTicks=0;
			}
		}
		
		if((!DisplayTicks)||(OldMode!=Mode)){
			DisplayTicks=10;
			OldMode=Mode;
			i1=Mode+0x10;
			while(i1){
				switch(i1){
					case 0x10:	//Mode 0 - show real temperature
						if((!CSleepMinutes)&&(CSleepSeconds<=10)){
							BeepTicks=20;
							Mode=6;
							i1=0x16;
						}
						else
						{
							i=TempAVG>>ADC_AVG;
							if((i<(SetTempB-1))||(i>(SetTempB+1))){
								di=TempAVG/(3<<(ADC_AVG-3));						
								i1=0xFF;
							}
							else{							
								if(DoBeep){
									DoBeep=0;
									BeepTicks=2;
								}
								di=Pars.SetTemp<<1;
								i1=0xFF;
							}
						}
						break;
					case 0x11:	//Mode 1 - Show set temperature after +/- is pressed
						di=Pars.SetTemp<<1;
						i1=0xFF;						
						break;
					case 0x12:	//Mode 2 - waiting for 2 seconds to enter mode 4
						if(ButtonTicks[2]>=200){
							BeepTicks=5;
							Mode=4;
							i1=0x14;
							ModeTicks=200;
							DisplayTicks=0;
						}
						else{
							i1=0x10;
						}
						break;
					case 0x13: //Mode 3 - The temperature was set to one of the reset values
						di=Pars.SetTemp<<1;
						i1=0xFF;
						break;
					case 0x14:  //Mode 4 - Show current reset temperature
						BlinkPeriod=20;
						di=Pars.RstTemp[Pars.RstIndex]<<1;
						i1=0xFF;
						break;
					case 0x15:  //Mode 5 - Show sleep status (on/off,minutes)
						if(Pars.SleepMinutes&128){
							di=0x0E00+(((Pars.SleepMinutes&127)/10)<<4);
						}
						else{
							di=0x0ECC;
						}
						i1=0;
						break;	
					case 0x16:	//Mode 6 - show sleep seconds before sleep
						if((!CSleepMinutes)&&(CSleepSeconds<=10))ModeTicks=100;
						if(CSleepSeconds|CSleepTicks){							
							di=0xE00+((CSleepSeconds/10)<<4)+(CSleepSeconds%10);
							BlinkPeriod=0;
						}
						else{
							di=0xE00;
							BlinkPeriod=200;	
						}
						i1=0;
						break;					
					case 0x17: //Mode 7 - Soldering iron problem alarm
						BeepTicks=100;
						di=0xCCC;
						i1=0;
						break;
					case 0xFF:  //Encode the BINARY in di to BCD
						di<<=1;
						for(i=0;i<2;i++){
							di<<=1;
							if((di&0xF00)>=0x500)di+=0x300;
						}			
						di>>=3;
						for(i=0;i<4;i++){
							if((di&0xF0)>=0x50)di+=0x30;
							if((di&0xF00)>=0x500)di+=0x300;
							di<<=1;
						}
						di>>=4;
						i1=0;
						break;
					default:
						i1=0;
				}				
			}
		}
		PORTD|=0b00111000;
		if(BlinkTicks>=BlinkPeriod>>2){
			if(!(CDig=(CDig<<1)&0b00111000))CDig=8;
			switch(CDig){
				case 8:
					PORTB=(PORTB&0xF0)|(di&0x000F);
					break;
				case 16:
					PORTB=(PORTB&0xF0)|((di>>4)&0x000F);
					break;
				case 32:
					PORTB=(PORTB&0xF0)|((di>>8)&0x000F);
					break;
			}		
			PORTD&=~CDig;
			_delay_us(1000);
		}		
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You need ATTiny4313 device to be able to use the above code. ATTiny2313 does not have enough program memory for it. Also, I am using the internal RC oscillator on ATTiny, so the original one can be removed from the PCB. And, of course, you shoult make the needed adjustment in fuse settings for it to work this way.

And the new functions:

"X"+"-" disables the sleep timer.
"X"+"+" sets the sleep timer period in minutes (10,30,60,90)
The sleep function is remembered, so it will be in the same state after turning off and on again.

Also 3 preset temperatures can be remembered.
It is done by pressing "X" button and holding it until the display begins to flash.
Then release the "X" button and, pressing the "+" and "-" buttons you can set the temperature to remember. After the temperature is set, you can switch to next preset temperature setting by shortly pressing and releasing the "X" button. After the second preset temperature is set, you can program the third preset temperature the same way.
When you have set all you want, after 2 seconds the display will switch to real temperature display mode.
When you want to select one of the preset temperatures, this is done by shortly pressing and releasing the "X" button several times until the proposed temperature setting is shown on the display.

Of course, the last temeprature (no matter if you have selected one of the preset temperatures, or you have used "+" and "-" to select any other temperature) is also remembered after turning the solder station off.

If you want to reset the device setting to defaults, this is done by holding the "X" button while turning on the solder station.

...and please, excuse my english.

From my experiance so far, my preset temperatures are 250, 300, and 350 degrees celcius. This way, with a click or two on the "X" button I can easily select the temperature I need, and after this I can correct the temperature with the "+" and "-" buttons.

The code is far from perfection, but it works and I don't see any reason for refining it. The temperature control method is done by PID algothitm, and is a little faster than original. On my machine it is easily seen how it works looking at the dot on the display. You will notice it works a little different from the original one, contolling the soldering iron power in much shorter periods (in fact, the shorter possible period is the period of the mains supply).

Be informed that my Mains supply is 50Hz, and yours mqy be 60Hz. So, when you turn on the solder station for the first time, take extra care if it works as it should, and turn it of immediately if the soldering iron tends to overheat, which will destroy it. I have destroyed 3 while writing this software, so it was not a cheap process for me. :)

I can send you the entire AVRStudio 5 project, but I don't know how to attach it here.

Last Edited: Thu. Mar 22, 2012 - 08:56 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The tips with integrated heater on my soldering iron are priced $5 - $20.

Make a search in google for HAKKO T12 ot T15 tips. My solder station is "BlackJack BK3000LF" (you can do a search for this in google also), but as far as I can see, AOYUE units are using the same controllers, with slightly different front panel PCB, but the schematics looks identical, as far as I can see looking at the PCB photos.

I am extremely pleased with performance of my unit. I can use it both for soldering TQFP64 with 0.5mm step with the smallest tip, and soldering a TO-247 with a bigger tip. After all, this is a 70W soldering statio, despite the tiny tips available.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

sparkybg wrote:
I can send you the entire AVRStudio 5 project, but I don't know how to attach it here.
If you haven't seen the attachment mechanism, you can get it two ways.

If you type anything in the Quick Reply window, and click Preview, you will see it. Another way to get it is to click New Reply at the top of the page.

Then click Browse under "Add an Attachment".

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I see.

Well, here it is:

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

@sparkybg

Nice job :-)

I just bought my first induction iron
http://www.somersetsolders.com/p...

Lots of selectable tips
http://www.somersetsolders.com/s...

It's fast & delivers lots of heat , wo. exceeding the set temp.

They have been "inspired by Oki/Metcal" i think ....

/Bingo

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I can't see how it was inspired by Metcal. They use RF heating and the temperature is determined by the Curie point of the tip. The technique is patented and they sue anyone who tries to use it.

Leon Heller G1HSM

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

leon_heller wrote:
I can't see how it was inspired by Metcal. They use RF heating and the temperature is determined by the Curie point of the tip. The technique is patented and they sue anyone who tries to use it.

It obviously have nothing to do with Curie type solder irons, because it can be seen from the photos that the temperature of the iron is controlled by the solder station and not by the tip. I don't know about Metcal's RF method, but I've seen at least 2-3 soldering irons using the Curie temperature of magnetic element, used regulate the temperature. However, it is used as a switching element, and nothing to do with RF.

As far as I can see from the photos, the soldering iron tips are "classic" ones, not the integrated heater type. Am I right?

Anyway, I prefer to control the temerature from the control unit, and not by the tip. For example, I am using my smallest tip with temperatures from 250 to 400 degrees. Sometimes there is a tiny solder joints which are hard to solder with temeprature lower than 350-400 degrees. For example - ground pins on a PWM controler in SOIC 8 package with exposed bottom pad. LM22675 is a typical example.

PS: It is with integrated heater. I just saw this. 5GBP is a Fair price for a tip with heater.

You may take a looh here for tips, if your tips are the same:
http://www.aliexpress.com/fm-sto...

I've got my extra tips from these peaple. Best price I was able to find on the internet.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Here are some pics of the tips

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

More

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Dedicated thermocouple? Looks great! :)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
I can't see how it was inspired by Metcal. They use RF heating and the temperature is determined by the Curie point of the tip. The technique is patented and they sue anyone who tries to use it.

Thermaltronics have recently started making metcal clones. Apparently, the patent ran out. thermaltronics are even cheeky enough to make metcal compatible replacement tips :-)

- S

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

We had a couple of Metcal systems in the lab at Racal Comms, for reworking very dense PCBs used in a prototype radio system. Most of us used ordinary Weller equipment. I got a second-hand Metcal system many years ago - a used STSS power unit, a new MX-500 handpiece and an assortment of new cartridges. It cost me £125. I subsequently bought a second power unit on Ebay for £75.

Hakko copied Metcal, and was sued, a few years ago.

I didn't know that the patent had expired. I had a look at Thermaltronics and they even use the same frequency as Metcal, 13.56 MHz, which is a bit cheeky of them. I can't see why they also offer 450 kHz, they don't give any reasons for it.

Leon Heller G1HSM

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

leon_heller wrote:
I can't see how it was inspired by Metcal. They use RF heating and the temperature is determined by the Curie point of the tip. The technique is patented and they sue anyone who tries to use it.

leon_heller wrote:
I didn't know that the patent had expired.

Thanx a lot Leon .... :shock:
Don't you just love your own quick responses.

Does it make you feel good ?

/Bingo

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Splendid effort, Sparkybug!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Did anyone tried my source yet? How did it work on your station?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

sparkybg wrote:
Did anyone tried my source yet? How did it work on your station?

I intend to try it soon, just have to wait a bit before ordering a 4313. I've ordered a few too many packages of parts lately and the wife is getting mad. :wink:

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I am interested in trying it but I've got at least 3 months of other things to do first.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I like JBC! Tip changing is a breeze! It can be done whilst hot. Whilst the cartridges are not cheap, they are virtually indestructible. If you forget to turn your iron off, it goes into a low temp mode, which does not cook the tip. If you take the hand piece out of the holder, it will be up to temp before you get it to the job.
Temperature control is excellent. Hand piece balance weight & balance a delight!

Charles Darwin, Lord Kelvin & Murphy are always lurking about!
Lee -.-
Riddle me this...How did the serpent move around before the fall?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I like JBC! Tip changing is a breeze! It can be done whilst hot. Whilst the cartridges are not cheap, they are virtually indestructible. If you forget to turn your iron off, it goes into a low temp mode, which does not cook the tip. If you take the hand piece out of the holder, it will be up to temp before you get it to the job.
Temperature control is excellent. Hand piece balance weight & balance a delight!

Charles Darwin, Lord Kelvin & Murphy are always lurking about!
Lee -.-
Riddle me this...How did the serpent move around before the fall?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Must be doubly good, Lee! :lol:

Ross McKenzie ValuSoft Melbourne Australia

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

LDEVRIES wrote:
I like JBC! Tip changing is a breeze! It can be done whilst hot. Whilst the cartridges are not cheap, they are virtually indestructible. If you forget to turn your iron off, it goes into a low temp mode, which does not cook the tip. If you take the hand piece out of the holder, it will be up to temp before you get it to the job.
Temperature control is excellent. Hand piece balance weight & balance a delight!

We have some JBC irons at work and somehow people manage to destroy the tips constantly. They're expensive and hard to find, too (have to be purchased straight from the manufacturer, apparently).

But they're good irons.