MH K8 firmware with HV control.

Dependencies:   mbed NOKIA_5110

Fork of muonhunter-K8 by Oliver Keller

Revision:
10:534172e71f4f
Parent:
9:fe24e28b391a
Child:
11:5a5f16e09f10
--- a/main.cpp	Sun Jun 18 14:07:30 2017 +0000
+++ b/main.cpp	Wed Jul 19 21:58:36 2017 +0000
@@ -11,6 +11,8 @@
 //set the initial frequency of the oscillators below
 volatile int f1 = 4000; //3500;
 volatile int f2 = 4000;
+volatile int prevVoltage1;
+volatile int prevVoltage2;
 int deltaF = 20;
 int deltaV = 2; 
 bool hv1Ready = 0;
@@ -86,7 +88,7 @@
             wait(0.002);
         }
     } else {
-        wait(0.05);
+        wait(0.001);
     }
     C_led = 0;
 }
@@ -100,7 +102,7 @@
             wait(0.001);
         }
     } else {
-        wait(0.05);
+        wait(0.001);
     }
     GM1_led = 0;
 }
@@ -114,7 +116,7 @@
             wait(0.001);
         }
     } else {
-        wait(0.05);
+        wait(0.003);
     }
     GM2_led = 0;
 }
@@ -175,7 +177,14 @@
 // high voltage software monitors
 void hv1monitor_(void)
 {
+    prevVoltage1 = (prevVoltage1 + v1) / 2;
     v1 = hv1.get_voltage();
+    
+    if(prevVoltage1 - v1 > 15){ 
+        f1 = 6000;
+        hv1.set_frequency(f1);
+        }
+        
     if(targetVoltage1 < 200) targetVoltage1 = 200;
     if(targetVoltage1 > 1000) targetVoltage1 = 1000;
 
@@ -188,21 +197,19 @@
     if(v1 < targetVoltage1*1.05 && v1 > targetVoltage1*0.95) hv1Ready = 1;
     else hv1Ready = 0;
                 
-    hv1.set_frequency(f1);
-        
-    if(hv1.measure()) {
-        if(v1 - hv1.get_voltage() > 100) {
-            hv1.shutdown();  //unusual voltage drop detected
-        }
-   } else {
-        hv1.shutdown();
-    }
- //   pc.printf("V1=%0.2f, F1=%d, T1=%0.2f\n\r", v1, f1, targetVoltage1);
+    hv1.set_frequency(f1);  
 }
 
 void hv2monitor_(void)
 {
+    prevVoltage2 = (prevVoltage2 + v2) / 2;
     v2 = hv2.get_voltage();
+    
+    if(prevVoltage2 - v2 > 15){ 
+        f2 = 6000;
+        hv2.set_frequency(f2);
+        }
+        
     if(targetVoltage2 < 200) targetVoltage2 = 200;
     if(targetVoltage2 > 1000) targetVoltage2 = 1000;
     
@@ -216,14 +223,6 @@
     else hv2Ready = 0;
             
     hv2.set_frequency(f2);
-    if(hv2.measure()) {
-        if(v2 - hv2.get_voltage() > 100) {
-            hv2.shutdown();  //unusual voltage drop detected
-        }
-    } else {
-        hv2.shutdown();
-    }
-//    pc.printf("V2=%0.2f, F2=%d, T2=%0.2f \n\r", v2, f2, targetVoltage2);
 }
 
 //discarding older items if buffer gets too big
@@ -303,7 +302,7 @@
     hv2monitor.attach(&hv2monitor_, 0.1);
 
 //  offset for proto board
-//  targetVoltage2 *= 0.82;
+    targetVoltage2 *= 0.79;
 
     char number[10];