Mihaly Vadai
/
muonhunter-K8
MH K8 firmware with HV control.
Fork of muonhunter-K8 by
Diff: main.cpp
- 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];