Update vom 10.05.15

Dependencies:   FreescaleIAP MODSERIAL mbed monitor timer0

Fork of 18_PT1000 by Temp27

Files at this revision

API Documentation at this revision

Comitter:
Sven3010
Date:
Sun Sep 07 12:10:34 2014 +0000
Parent:
17:c307f8c96ab1
Child:
19:f3c41bbc809a
Commit message:
070914;

Changed in this revision

MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
Ventiel.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
monitor.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Sun Sep 07 12:10:34 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Sissors/code/MODSERIAL/#a65f89de75c5
--- a/Ventiel.lib	Sat Aug 30 08:49:43 2014 +0000
+++ b/Ventiel.lib	Sun Sep 07 12:10:34 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/Temp/code/Ventiel/#0a998c16eead
+http://mbed.org/teams/Temp/code/VentielDisplay/#0b90e095f3b7
--- a/main.cpp	Sat Aug 30 08:49:43 2014 +0000
+++ b/main.cpp	Sun Sep 07 12:10:34 2014 +0000
@@ -12,29 +12,34 @@
 #include "Buffer.h"
 #include "monitor.h"
 #include "ventiel.h"
+#include "MODSERIAL.h"
 
 #define CR 13
 
-#define SOLL_WERT 27.0          // Sollwert für den Fühler in der Flüssigkeit
-#define R_TEMP_MAX 40.0         // Maximaltermperatur für den Widerstand
+#define SOLL_WERT 32.0          // Sollwert für den Fühler in der Flüssigkeit
+#define R_TEMP_MAX 60.0         // Maximaltermperatur für den Widerstand
+#define R_OFFSET 0.0            // wird bei abgeschaltetert Trofpensteuerung zum Haltetemperatur addiert
 #define OFFSET_0 28330          // AD Wert für 0° Abgleich Kanal 0
 #define OFFSET_1 28560          // AD Wert für 0° Abgleich Kanal 1
 //#define OFFSET 27100          // AD Wert für 0° Abgleich Steuerung Flosrian
 #define GAIN 113                // Digit pro °C  >> 112.3 Steuerung Florian
 //#define GAIN 112.3            // Digit pro °C  >> 112.3 Steuerung Florian
 
+#define BOOL_FMT(bool_expr)  (bool_expr) ? "ein" : "aus"
+
 //------------------------------------------------------------------------------
 // Anlegen von Klassen
 
 SDFileSystem sd(PTD2, PTD3, PTC5, PTD0, "sd");  // The pinout (MOSI, MISO, SCLK, CS)
 timer0 down_timer;                              // Zeitsteuerung
 Serial pc(USBTX, USBRX);                        // tx, rx
-Serial com(PTC4, PTC3);                         
+MODSERIAL com(PTC4, PTC3); 
+//MODSERIAL com(PTC4, PTC3);                         
 Buffer <char> buf;                              // Ringbuffer für ankommende Zeichen
 // DS2482 ow(PTE0,PTE1,0x30);                   //        sda, scl, adr
 
 ventiel magnet;                                 // Klasse Ventiele anlegen
-
+char lcd_text[25];
 Timer t;                                        // Zeitmessung für Entprellen
 
 //------------------------------------------------------------------------------
@@ -96,7 +101,7 @@
 //------------------------------------------------------------------------------
 // Globale Variablen
 
-float temp1, temp_mw;
+float temp1, temp_mw, temp_r_max, temp_r_ist;
 uint16_t temp_word;
 uint8_t n, y, status, ds1820_status;
 
@@ -119,6 +124,7 @@
 
 //float offset = 0.0;
 float soll_wert = 27.0;     // Sollwert für den Temperaturfühler in der Flüssigkeit
+float korr_wert = R_OFFSET; // Korrekturwert bei abgeschalteter Heizung
 
 //------------------------------------------------------------------------------
 // Interruptroutine wird bei jedem Tropfen aufgerufen
@@ -213,7 +219,7 @@
     //------------------------------------------------------------------------------
     // RS232 Schnittstellt welche auf den CMSIS-DAP (USB Port) weitergeleitet wird
     //
-    pc.baud(115200);
+    pc.baud(57600);
     pc.attach(&rx_handler, Serial::RxIrq);
     pc.printf("\n V08 was compiled on %s  %s \n", __DATE__,__TIME__);
 
@@ -222,8 +228,8 @@
     //------------------------------------------------------------------------------
     // RS232 Schnittstellt zum Ansteuern der Magnetventile
     //
-    com.baud(9600);
-    com.printf("\n V08 was compiled on %s  %s \n", __DATE__,__TIME__);
+    com.baud(57600);
+    //com.printf("\n V08 was compiled on %s  %s \n", __DATE__,__TIME__);
         
     //------------------------------------------------------------------------------
     // Timer für die Zeitsteuerung
@@ -231,6 +237,7 @@
     down_timer.SetCountdownTimer(0,1,50);  // Timer für die LED
     down_timer.SetCountdownTimer(1,1,500); // Timer für die Tropfensteuerung
     down_timer.SetCountdownTimer(2,1,1000);// Timer für die Ausgabe der Daten
+    down_timer.SetCountdownTimer(3,1,100); // Timer für Taster
     
     r = g = b = 1;                          // RGB LED ausschalten
     
@@ -239,7 +246,7 @@
     
     cfg.read("/sd/input.cfg");
  
-     if (cfg.getValue("t_flag", &value[0], sizeof(value))) 
+    if (cfg.getValue("t_flag", &value[0], sizeof(value))) 
     {
         if (atoi(value) == 1)
         {
@@ -282,9 +289,14 @@
     if (cfg.getValue("soll", &value[0], sizeof(value))) 
     {
         soll_wert = atof(value);
-        pc.printf("\nsoll_wert = %f\n", soll_wert); 
+        pc.printf("\nsoll_wert = %f", soll_wert); 
     }
-    
+
+    if (cfg.getValue("korr", &value[0], sizeof(value))) 
+    {
+        korr_wert = atof(value);
+        pc.printf("\nkorrektur_wert = %f\n", korr_wert); 
+    }    
     //--------------------------------------------------------------------
     // Anfangswert bestimmen
     
@@ -304,6 +316,7 @@
        //-------------------------------------------
        // Prüfen ob Tropfenzahl erreicht
        
+       
        if (f_flag)
        {
            if (tropfen_anz >= drops){
@@ -359,7 +372,7 @@
        if (down_timer.GetTimerStatus(2) == 0)
        {
             down_timer.SetCountdownTimer(2,1,1000);
-            
+
             //------------------------------------------------------
             // PT1000 Kanal 1 ( Fühler in Flüssigkeit) lesen und die Temperatur berechnen
         
@@ -369,18 +382,18 @@
            temp_soll /= GAIN;
  
             //pc.printf("%d;",temp_word);                           // Rohwert ausgeben
-            pc.printf("Soll %2.2f; Soll ist %2.2f; ",soll_wert, temp_soll);                     // Temperaturwert soll Flüssigkeit   
+            pc.printf("Soll %2.2f; Soll ist %2.2f;",soll_wert, temp_soll);                     // Temperaturwert soll Flüssigkeit   
             
             //------------------------------------------------------
             // PT1000 Kanal 0 ( Fühler am Heizwiderstand ) lesen und die Temperatur berechnen       
             
             temp_word = read_mw(0);
             temp_float = (temp_word - OFFSET_0);
-            temp_float /= GAIN;  
+            temp_r_ist = temp_float / GAIN;  
             
             //pc.printf("%d;",temp_word);                           // Rohwert ausgeben
-            pc.printf("Temp-R %0.2f; ",temp_float);                     
-
+            pc.printf("Temp-R %0.2f; ",temp_r_ist);                     
+            
             // die Temperaturregelung ist nur bei aktiver Tropfensteuerung eingeschaltet
             //
             if (f_flag)
@@ -435,22 +448,19 @@
             // auf soll_wert begrenzt
             if (f_flag)
             {
-                if(temp_float > R_TEMP_MAX)
-                {
-                    regelwert = 0.0;
-                    esum = 0.0;
-                }
+                temp_r_max = R_TEMP_MAX;
             }
             else
+            {                
+                temp_r_max = soll_wert + korr_wert;
+            }                
+                
+            if(temp_float > temp_r_max)
             {
-                if(temp_float > soll_wert)
-                {
                     regelwert = 0.0;
                     esum = 0.0;
-                }               
-                
             }
-            
+ 
             //------------------------------------------------------
             // Heizwiederstand ansteuern >> 0,02 entspricht 100%
             
@@ -476,10 +486,120 @@
                 else              pc.putc('0');              
             }
 
-            pc.printf("; verbleibende Zeit %02d",down_timer.GetTimerZeit(1));
+            pc.printf("; verbleibende Zeit %02d; ",down_timer.GetTimerZeit(1));
+            
+            if(f_flag)
+            pc.printf("on;");
+            else
+            pc.printf("off;");
+            
+            pc.printf("\n");
+            
+            // LCD String zusammensetzen und ausgeben
+            for (int i = 0; i < 25; i++) lcd_text[i] = 0;
+                            //01234567890123456789
+            sprintf(lcd_text,"TR   %3.1f  /  %3.1f ",temp_r_ist,temp_r_max);
+            //sprintf(lcd_text,"erste Zeile");
+            uint8_t len = strlen(lcd_text);
+            uint8_t anz = len + 3;
+            com.printf(":AA%02x020000",anz);    //Zeile 1 Temps
+            for (int i = 0; i < len; i++)
+            {
+               com.printf("%02x",lcd_text[i]); 
+            }
+            com.printf("A5\n");
+            //wait_ms(100);
+            
+            
+            for (int i = 0; i < 25; i++) lcd_text[i] = 0;
+                            //01234567890123456789
+            sprintf(lcd_text,"TK   %3.1f  /  %3.1f ",temp_soll,soll_wert);
+            //sprintf(lcd_text,"Heizung         %s " ,BOOL_FMT(t_flag));
+            len = strlen(lcd_text);
+            anz = len + 3;
+            com.printf(":AA%02x020001",anz);    //Zeile 2 Heizung (ein/aus)
+            for (int i = 0; i < len; i++)
+            {
+               com.printf("%02x",lcd_text[i]); 
+            }
+            com.printf("A5\n");
+            //wait_ms(100);
+             
+            for (int i = 0; i < 25; i++) lcd_text[i] = 0;
+                            //01234567890123456789
+            sprintf(lcd_text,"temp. %s  flow %s ",BOOL_FMT(t_flag) ,BOOL_FMT(f_flag));
+            len = strlen(lcd_text);
+            anz = len + 3;
+            com.printf(":AA%02x020002",anz);    //Zeile 3 Tropfensteuerung (ein/aus)
+            for (int i = 0; i < len; i++)
+            {
+               com.printf("%02x",lcd_text[i]); 
+            }
+            com.printf("A5\n");
+            //wait_ms(100);
             
-            pc.printf(";\n");
+            for (int i = 0; i < 25; i++) lcd_text[i] = 0;
+                            //01234567890123456789
+            sprintf(lcd_text,"Zeit %3d Tropfen %3d" ,down_timer.GetTimerZeit(1),tropfen_anz);
+            len = strlen(lcd_text);
+            anz = len + 3;
+            com.printf(":AA%02x020003",anz);    //Zeile 4 Anz. Zeit+Tropfen
+            for (int i = 0; i < len; i++)
+            {
+               com.printf("%02x",lcd_text[i]); 
+            }
+            com.printf("A5\n");
+            //wait_ms(100);
+            
        } // end if(down_timer ...
+            
+    
+    // timer 3
+       
+
+       
+            if (com.readable()) {
+            
+            int ch = com.getc();
+            // pc.printf("\nzeichen=%c %x",ch,ch);
+            
+            switch (ch){
+                case '1': magnet.toggle (0);
+                break;
+                case '2': magnet.toggle (1);
+                break;
+                case '3': magnet.toggle (2);
+                break;
+                case '4': magnet.toggle (3);
+                break;
+                case '5': if (t_flag)
+                {
+                     t_flag = false; 
+                     pc.printf("\nHeizung durch externen Taster deaktiviert\n");
+                }    
+                else 
+                {
+                    t_flag = true;
+                    pc.printf("\nHeizung durch externen Tastet aktiviert\n");
+                }
+                break;
+                case '6': if (f_flag)
+                {
+                     f_flag = false;
+                     pc.printf("\nTropfensteuerung durch externen Taster deaktiviert\n");
+                }
+                      else
+                {     
+                       f_flag = true;
+                       pc.printf("\nTropfensteuerung durch externen Taster aktiviert\n");
+                }
+                break;
+                }
+                
+            }
+            
+       
+       
                            
     } // end while
 }
--- a/monitor.lib	Sat Aug 30 08:49:43 2014 +0000
+++ b/monitor.lib	Sun Sep 07 12:10:34 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/Temp/code/monitor/#e5f5e56ffc50
+http://mbed.org/teams/Temp/code/monitor/#f5bfddb84d63