Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. #define PHpin A0
  2.  
  3.  
  4. // pH promenne
  5. float Healthy1_mv=1.96;
  6. float average=0;
  7. float mvReading=0;
  8. float PHValue=0;
  9. float mvReading_7=3.50; // hodnota vrácena sondou při kalibraci v roztoku pH7
  10. float mvReading_4=4.26; // hodnota vrácena sondou při kalibraci v roztoku pH4
  11. float Slope=0;
  12. float Vs=5;
  13. float offset=0;
  14.  
  15. // Kelman filter
  16. float varVolt=1.12184278324081E-05;
  17. float varProcess=1e-9;
  18. float Pc=0.0;
  19. float G=0.0;
  20. float P=1.0;
  21. float Xp=0.0;
  22. float Zp=0.0;
  23. float Xe=0.0;
  24.  
  25.  
  26. void setup() {
  27.   Serial.begin(115200);
  28.  
  29.  
  30.   }
  31.  
  32. void loop() {
  33.  
  34.    
  35.     mereni_ph();
  36.    delay(1000);
  37.  
  38.  
  39. }
  40.  
  41.  
  42.  
  43. void mereni_ph()
  44. {
  45.   Slope_calc();
  46.  
  47.   int i=0;
  48.   unsigned long sum=0;
  49.   long reading=0;
  50.   average=0;
  51.   while(i<=50){
  52.   reading=analogRead(PHpin);
  53.   sum=sum+reading;
  54.     delay(2);
  55.     i++;
  56.   }
  57.   average=sum/i;
  58.   Pc=P + varProcess;
  59.   G=Pc/(Pc + varVolt);
  60.   P=(1-G)*Pc;
  61.   Xp=Xe;
  62.   Zp=Xp;
  63.   Xe=G*(average-Zp)+Xp;
  64.  
  65.  
  66. mvReading=Xe*Vs/1024;     //Converting to mV reading and then to pH
  67. Serial.println("");
  68. Serial.print("mvReading : ");
  69. Serial.println(mvReading);
  70.  
  71. PHValue=(7-((mvReading_7-mvReading)*Slope));
  72. Serial.println("");
  73. Serial.print("PHValue : ");
  74. Serial.println(PHValue,1);
  75. Serial.println("------------------");
  76.  
  77. }
  78.  
  79. void Slope_calc()
  80. {
  81.   offset=Healthy1_mv-mvReading_7;
  82.   Slope=3/(Healthy1_mv-mvReading_4-offset);
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement