Soldering iron driver fubarino contest

Keep a log of a project build here. Be sure to include pictures and as much documentation as possible.

Soldering iron driver fubarino contest

Postby pjkim » December 18th, 2013, 1:34 am

Few tools are as important to the hacker as a good soldering iron. Although a $15 dollar soldering iron does a passable job for most things, a temperature controlled soldering iron is so much better than the cheap ones-- it is ready to use in a minute and maintains a consistent temperature. A few years ago I received a free Soldering Iron Driver (SID) PCB from Dangerous Prototypes (thanks Ian). The SID was designed by Bogdan Kecman (aka Ahri) the PCB was layed out by Arikis for PTH components. I have been using it as my main soldering iron since and it works beautifully. I modified the firmware to debounce button presses and incorporate auto-repeat. Details can be found here hardwhack.

After I heard about the Fubarino contest, I thought I could turn one of my favorite hacking tools into a contest entry. When you turn on the SID, it does its normal thing until is ready to use. Then it displays the message that the iron is ready and the hackaday URL.

Here is a video of the hack in action:
[YouTube]https://www.youtube.com/watch?v=kanNqTI5M7w[/YouTube]

The changes are minimal and are entirely located in the measureAndCompute function.
Code: Select all
void measureAndCompute(unsigned char x){
    int lPart;
    int rPart;

    static int hackstate = 2;  // 2= not at temp
                        // 1= at temp, display message
                        // 0= all done
    static unsigned long int hackstarttime;

    measuredTemperature = (measuredTemperature + adc2temp(readTemperature(1))) / 2.0;
    if (measuredTemperature > TOOHOT) while(1) heaterOFF();
    if (changed == 1 && menu == 0) {
        if (x == 0) targetTemperature = encoder * 5;

        lPart = (int)((float)measuredTemperature);
        rPart = (int)((float)measuredTemperature*100)-lPart*100;

        if (hackstate)
        {
            if (lPart > targetTemperature -5 && hackstate == 2) //only happens once when CurrentTemp within 5deg of target
            {
                hackstarttime = millis;
                hackstate = 1;
                fprintf(_H_USER,  (const far rom char*)"\fReady to solder!\nhackaday.com");
            } else if (hackstate == 2)                         // Still warming up. Be patient.
            {
                goto printTemp;
            } else if (millis - hackstarttime > 2000)     // stop after 3000 ms
            {
                hackstate = 0;
            }
        } else
        {
printTemp:  fprintf(_H_USER,  (const far rom char*)"\fTarget:  %3i \n", targetTemperature);
            fprintf(_H_USER,  (const far rom char*)"Current: %3i.%02i", lPart,rPart);
        }
        changed = 0;
    }
    pidCompute();
}
pjkim
 
Posts: 2
Joined: February 10th, 2011, 11:23 am

Return to Project Logs

Who is online

Users browsing this forum: Yahoo [Bot] and 1 guest