Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. #include "labduino.h"
  2. #include <TimerThree.h>
  3.  
  4. #define ON 1
  5. #define OFF 0
  6.  
  7. //Zmienne do temperatury:
  8. int temperatura; //odczyt z analogowego
  9. float tempC; //odczyt z cyfrowego
  10. int temp_zadana = 40; //temperatura zadana
  11.  
  12. //Zmienne do regulatora PI
  13. float wyjscie_regP; //wynik regulatora P
  14. float wyjscie_regI; //wynik regulatora I
  15. float suma_uchybow = 0;
  16. int kp = 2; //nastawa wzmocnienia regulatora P
  17. int ki = 1; //nastawa wzmocnienia regulatora I
  18. float uchyb; //roznica temp_zadana - tempC
  19. float sygnal_sterujacy;
  20. int podstawa_calkowania = 0.1;
  21. int wypelnienie_zaklocenia = 0;
  22.  
  23. //Inne zmienne
  24. int licznik_na_pol_sek = 0; //do odliczania 0.5 sek w przerwaniu Timer3ISR
  25. unsigned char Pwm_Set = 0; //do reprezantacyjnego programu do mrugania diodami
  26.  
  27. void Timer3ISR() {
  28. //static boolean output = HIGH; //do mrugania zielona dioda w przycisku trzecim
  29.  
  30. //INFORMOWANIE O UCHYBIE
  31. if (uchyb < 0.1*temp_zadana)
  32. {
  33. digitalWrite(LED3, ON);
  34. digitalWrite(LED1, OFF);
  35. digitalWrite(LED2, OFF);
  36. }
  37. if (uchyb > 0.1*temp_zadana)
  38. {
  39. digitalWrite(LED3, OFF);
  40. digitalWrite(LED1, ON);
  41. digitalWrite(LED2, ON);
  42. }
  43.  
  44. //REGULATOR PI
  45. uchyb = temp_zadana - tempC;
  46. suma_uchybow+=uchyb;
  47. wyjscie_regI = ki*suma_uchybow;
  48. if(wyjscie_regI > 255)
  49. {
  50. wyjscie_regI = 255;
  51. }
  52. //REGULATOR P
  53.  
  54. wyjscie_regI = kp * uchyb;
  55. if(wyjscie_regI > 255)
  56. {
  57. wyjscie_regI = 255;
  58. }
  59.  
  60.  
  61. //STEROWANIE
  62. sygnal_sterujacy = wyjscie_regP + wyjscie_regI;
  63. if(sygnal_sterujacy > 255)
  64. {
  65. sygnal_sterujacy = 255;
  66. }
  67. else if (sygnal_sterujacy < 0)
  68. {
  69. sygnal_sterujacy = 0;
  70. }
  71.  
  72.  
  73. if(uchyb > 0)
  74. {
  75. analogWrite(M1_EN, sygnal_sterujacy);
  76. analogWrite(M2_EN, 0);
  77. }
  78. else if(uchyb < 0)
  79. {
  80. analogWrite(M1_EN, 0);
  81. analogWrite(M2_EN, sygnal_sterujacy);
  82. }
  83.  
  84. // ZAKLOCENIE
  85. if (!digitalRead(SW3))
  86. {
  87. wypelnienie_zaklocenia = 255;
  88. analogWrite(M3_EN, wypelnienie_zaklocenia);
  89. }
  90. else
  91. {
  92. analogWrite(M3_EN, 0);
  93. }
  94.  
  95. //ZMIANA TEMPERATURY ZADANEJ - LEWY PRZYCISK ZWIEKSZANIE / PRAWY PRZYCISK ZMNIEJSZANIE
  96. if (!digitalRead(SW1)) //przycisk pierwszy - zwiekszanie temperatury zadanej
  97. {
  98. licznik_na_pol_sek++; //inkrementuj licznik
  99. if (licznik_na_pol_sek == 5) //jezeli odliczymy 0.5 sek
  100. {
  101. temp_zadana++; //zwieksz o jeden
  102. licznik_na_pol_sek = 0; //zeruj licznik
  103. }
  104. }
  105. else
  106. {
  107. //do nothing
  108. }
  109.  
  110. if (!digitalRead(SW2)) //przycisk drugi - zmniejszanie temperatury zadanej
  111. {
  112. licznik_na_pol_sek++; //inkrementuj licznik
  113. if (licznik_na_pol_sek == 5) //jezeli odliczymy 0.5 sek
  114. {
  115. temp_zadana--; //zwieksz o jeden
  116. licznik_na_pol_sek = 0; //zeruj licznik
  117. }
  118. }
  119. else
  120. {
  121. //do nothing
  122. }
  123.  
  124. //do mrugania zielona dioda w przycisku trzecim:
  125. //digitalWrite(LED3, output); //miganie zielonym przyciskiem
  126. //output = !output;
  127.  
  128.  
  129.  
  130. }
  131.  
  132. void setup() {
  133. labduinoSetup();
  134. sensors.begin();
  135. Timer3.initialize(100000);
  136. Timer3.attachInterrupt(Timer3ISR);
  137.  
  138. Serial.begin(9600);
  139. if (!sensors.getAddress(sensor, 0)) Serial.println("Nie znaleziono chipu DS18B20");
  140. }
  141.  
  142. void loop() {
  143. temperatura = analogRead(LM35);
  144. sensors.requestTemperatures();
  145. tempC = sensors.getTempC(sensor);
  146. Serial.println(String(temperatura) + String(" ; ") + String(tempC) + String(" ; ") + String(temp_zadana));
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement