Software for custom SMD-Soldering Station for Weller RT tips. This was made for a school project.

Dependencies:   TextLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
Andi104
Date:
Fri Jun 12 17:35:05 2015 +0000
Commit message:
Software for Soldering Station REV2.0; (School-Project)

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Fri Jun 12 17:35:05 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jun 12 17:35:05 2015 +0000
@@ -0,0 +1,102 @@
+/* Libraries */
+#include "mbed.h"
+#include "TextLCD.h"
+
+/* */
+#define DELAY_M 50              //Delay before Measuring Voltage at ADC-Pin (TempNow)
+#define TEMP_BASEGAIN 0.137931  //Temp which should equal 1mV - changed by TEMP_FACTOR
+#define TEMP_OFFSET 0           //Offset of Temperature
+#define CTRL_GAIN 10            //TempDifference to PWM-Value Gain
+#define TEMP_FACTOR 1.5         //TEMP_BASEGAIN * TEMP_FACTOR = TEMP_GAIN
+
+/*  */
+Ticker dispRefresh;
+TextLCD lcd (p18, p16, p11, p10, p9, p8); // rs, e, d4-d7
+DigitalOut db5(p10);    //Data Pin 5 on LCD, used for Initialization
+DigitalOut rw(p17);     //Read-Write Pin on LCD: LOW-->WRITE
+PwmOut pHeat(p26);      //Heater-Pin 
+AnalogIn adc(p20);      //ADC-Pin 10Bit
+PwmOut pSpeaker(p25);   //Piezo-Speaker Pin
+InterruptIn rotSw1(p35); //Pin 1 of Rotary Encoder
+DigitalIn rotSw2(p33);   //Pin 2 of Rotary Encoder
+InterruptIn rotSwB(p30);   //Button of Rotary Encoder
+DigitalOut tempCtrlLED(LED1);
+
+/* */
+float TempNow = 0;      //Current Temperature Reading
+float TempSet = 200;      //Set Temperature   
+float pwmVal = 0;       //PWM-Value for Heater-Pin
+float adcVal = 0;       //Value of ADC-Reading
+
+/* */
+void writeLCD();
+void init4BitLCD();
+void readTemp();
+void calcPWM();
+void RotEnc();
+void RotBut();
+
+int ticker = 500;
+Ticker t;
+void tick_1(){
+    if(ticker > 0) ticker--;
+}
+
+int main() {
+    //Initialize
+    init4BitLCD();      //Set Display to 4 Bit-Mode
+    rw = 0;             // Set Read/Write Pin to Write
+    rotSw1.rise(&RotEnc);
+    rotSwB.rise(&RotBut);
+    pSpeaker.period_ms(2); //Set Speaker Frequency to 500Hz
+    //pHeat = 0.1;   
+    
+    t.attach(&tick_1, 0.001);
+    while(1) {
+        readTemp();     //Read Temperature              - Done
+        calcPWM();      //Calculate PWM-Value           - Done
+        pHeat = pwmVal; //Write PWM-Value to Heater     - Done
+        if(ticker == 0){
+            writeLCD();     //Write To LCD                  - Done
+            ticker = 500;
+        }
+        //Repeat
+    }
+}
+
+void RotBut()
+{tempCtrlLED = !tempCtrlLED;
+ if (pSpeaker == 0){pSpeaker = 0.5;}
+ else {pSpeaker = 0;}}
+ 
+void RotEnc()
+{
+    if (rotSw2 == 0){TempSet++;}
+    else if (rotSw2 == 1){TempSet--;}
+    wait_ms(1);
+    }
+
+void calcPWM()
+{
+    pwmVal = ((TempSet - TempNow) * CTRL_GAIN) / 255; //Calculate PWM-Val.
+    if (pwmVal > 1) pwmVal = 1;
+    else if (pwmVal < 0) pwmVal = 0;
+    }
+
+void readTemp()
+{   pHeat = 0;      //Switching Off Heater || Thermoelement --> No VoltageSupply
+    wait_ms(DELAY_M);   //Waiting for a bit|| Low-Pass Filter --> Ready State
+    adcVal = adc.read();    //Read ADC
+    TempNow = adcVal*3300*(TEMP_BASEGAIN * TEMP_FACTOR) + TEMP_OFFSET;   //Calculate current Temperature
+    pHeat = pwmVal;     //Re-Activate Heater Pin
+    }
+
+void writeLCD()
+{   char cHeat;
+    if(pwmVal > 0.5){cHeat = 'H';}
+    else{cHeat = ' ';}
+    lcd.cls();
+    lcd.printf("Set: %.0f C   %c\nNow: %.0f C", TempSet, cHeat, TempNow);}
+    
+void init4BitLCD()
+{   db5 = 1; wait_ms(1); lcd.cls();}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Jun 12 17:35:05 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/cbbeb26dbd92
\ No newline at end of file