Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.45 KB | None | 0 0
  1. //definiujemy przekaźniki
  2. #define przekaznik1 4 // przekaźnik odpowiadający za przełączenie silnika 1 na bieg 1
  3. #define przekaznik2 5 // przekaźnik odpowiadający za przełączenie silnika 1 na bieg 2
  4. #define przekaznik3 6 // zgodny kierunek jazdy przenosnika 1
  5. #define przekaznik4 7 // zmiana kierunku jazdy na przeciwny przenosnika 1
  6. #define przekaznik5 13 // przekaźnik odpowiadający za przełączenie silnika 2 na bieg 1
  7. #define przekaznik6 14 // przekaźnik odpowiadający za przełączenie silnika 2 na bieg 2
  8. #define przekaznik7 15 // zgodny kierunek jazdy przenosnika 2
  9. #define przekaznik8 16 // zmiena kierunku jazdy na przeciwny przenosnika 2
  10.  
  11. #define alarm 8 //sygnał dźwiękowy
  12. #define sygnalizator 9 //sygnał świetlny
  13.  
  14. #define przycisk_wlacz 10 // przycisk uruchamiający przenośniki
  15. #define przycisk_wylacz 11 // przycisk hamowania manewrowego
  16.  
  17. int wartoscprzekladnika1 = 0; // zmienna przechowywująca wartość prądu silnika 1 w zakresie 0 do 1023
  18. float skalowanie1; // przeskalowana wartość krotność prądu znamionowego silnika 1, gdzie 7In to maksymalna odczytana wartość na arduino
  19. int wartoscprzekladnika2 = 0; // zmienna przechowywująca wartość prądu silnika 2 w zakresie 0 do 1023
  20. float skalowanie2; //przeskalowana wartość krotność prądu znamionowego silnika 1, gdzie 7In to maksymalna odczytana wartość na arduino
  21.  
  22. boolean stansilnika1 = false; // stan silnika 1, true-załączony, false-wyłączony
  23. boolean stansilnika2 = false; // stan silnika 1, true-załączony, false-wyłączony
  24.  
  25.  
  26. void setup() {
  27. Serial.begin(9600); //uruchamiamy transmisję do testów
  28. inicjowanie();
  29. }
  30.  
  31. void inicjowanie(){
  32.  
  33. pinMode(przekaznik1, OUTPUT); // przypisanie przekaźników jako wyjścia
  34. pinMode(przekaznik2, OUTPUT);
  35. pinMode(przekaznik3, OUTPUT);
  36. pinMode(przekaznik4, OUTPUT);
  37.  
  38. pinMode(przekaznik5, OUTPUT);
  39. pinMode(przekaznik6, OUTPUT);
  40. pinMode(przekaznik7, OUTPUT);
  41. pinMode(przekaznik8, OUTPUT);
  42.  
  43. digitalWrite(przekaznik1, LOW); // inicjowanie początkowych stanów przekaźników
  44. digitalWrite(przekaznik2, LOW);
  45. digitalWrite(przekaznik3, LOW);
  46. digitalWrite(przekaznik4, LOW);
  47.  
  48. digitalWrite(przekaznik5, LOW);
  49. digitalWrite(przekaznik6, LOW);
  50. digitalWrite(przekaznik7, LOW);
  51. digitalWrite(przekaznik8, LOW);
  52.  
  53. pinMode(alarm, OUTPUT); // przypisujemy alarm oraz sygnalizator jako wyjścia
  54. pinMode(sygnalizator, OUTPUT);
  55.  
  56. pinMode(przycisk_wlacz, INPUT); // przypisanie przycisku włączającego układ
  57. pinMode(przycisk_wylacz, INPUT); // przypisanie przycisku wyłączającego układ w sposób manewrowy
  58. }
  59.  
  60. float getADCValue(){
  61. int wartoscprzekladnika1 = analogRead(A4); // odczytanie i przeskalowanie wartości z przekładnika prądowego nr 1
  62. float skalowanie1 = map(wartoscprzekladnika1, 0, 1023, 0, 700)/100.0;
  63. Serial.println(skalowanie1);
  64. return skalowanie1;
  65. }
  66.  
  67. float getADCValue2(){
  68. int wartoscprzekladnika2 = analogRead(A5); // odczytanie i przeskalowanie wartości z przekładnika prądowego nr 2
  69. float skalowanie2 = map(wartoscprzekladnika2, 0, 1023, 0, 700)/100.0;
  70. Serial.println(skalowanie2);
  71. return skalowanie2;
  72. }
  73.  
  74. void silnikistop(){
  75. if(stansilnika2 == true){
  76. digitalWrite(przekaznik1, LOW); // wyłączenie silnika 2, jeżeli został uruchomiony
  77. digitalWrite(przekaznik2, LOW);
  78. digitalWrite(przekaznik3, LOW);
  79. digitalWrite(przekaznik4, LOW);
  80. Serial.println("wyłączono 2 silnik");
  81. stansilnika2 = false;
  82. }
  83. delay(5000);
  84.  
  85. if(stansilnika1 == true){
  86. digitalWrite(przekaznik5, LOW); // wyłączenie silnika 1, jeżeli został uruchomiony
  87. digitalWrite(przekaznik6, LOW);
  88. digitalWrite(przekaznik7, LOW);
  89. digitalWrite(przekaznik8, LOW);
  90. Serial.println("wyłączono 1 silnik");
  91. stansilnika1 = false;
  92. }
  93. }
  94.  
  95. void silnikistart(){
  96. Serial.println("Uwaga! Rozruch Przenośnika 1");
  97. digitalWrite(alarm, HIGH); //włącz alarm i sygnalizator na 5 sekund
  98. digitalWrite(sygnalizator, HIGH);
  99. delay(5000);
  100. digitalWrite(alarm, LOW); //wyłącz alarm i sygnalizator
  101. digitalWrite(sygnalizator, LOW);
  102.  
  103. digitalWrite(przekaznik3, HIGH); //zgodny kierunek jazdy przenosnika 1
  104. digitalWrite(przekaznik1, HIGH); //załącz przekaźnik p1 uruchamiający silnik 1 na bieg 1
  105. stansilnika1 = true;
  106. Serial.println("przelaczenie na 1 bieg silnika 1");
  107. delay(2000);
  108.  
  109. skalowanie1 = getADCValue();
  110.  
  111. /*
  112. Po odczytaniu wartości czekamy, aż prąd spadnie do wartości 1,1In i nastąpi przełączenie
  113. silnika 1 na bieg 2
  114. */
  115.  
  116. while(skalowanie1 >= 1.10){
  117. if(digitalRead(przycisk_wylacz) == HIGH) return;
  118. skalowanie1 = getADCValue();
  119. if(skalowanie1 <=1.10) break;
  120. }
  121. digitalWrite(przekaznik1, LOW); // rozłącz przekaźnik 1, w celu umożlwienia zmiany biegu
  122. digitalWrite(przekaznik2, HIGH); // załącz przekaźnik 2, uruchamiający silnik 1 na bieg 2
  123. Serial.println("przelaczenie na 2 bieg silnika 1");
  124.  
  125. delay(5000); //odczekanie 5 sek na potrzebę testów
  126.  
  127. /*
  128. oczekiwanie na ustabilizowanie się prądu silnika 1 na poziomie 1,1In po czym nastąpi
  129. uruchomienie silnika 2 na bieg 1
  130. */
  131.  
  132. while(skalowanie1 >= 1.10)
  133. {
  134. if(digitalRead(przycisk_wylacz) == HIGH) return;
  135. skalowanie1 = getADCValue();
  136. if(skalowanie1 <=1.10) break;
  137. }
  138. Serial.println("Uwaga! Rozruch Przenośnika 2");
  139. digitalWrite(przekaznik7, HIGH); //zgodny kierunek jazdy przenosnika 2
  140. digitalWrite(przekaznik5, HIGH); //załącz przekaźnik 5, uruchamiający silnik 2 na bieg 1
  141. stansilnika2 = true;
  142. Serial.println("Przelaczenie biegu silnika 2 na 1 bieg");
  143. delay(2000);
  144.  
  145. skalowanie2 = getADCValue2();
  146.  
  147. /*
  148. Po odczytaniu wartości czekamy, aż prąd spadnie do wartości 1,1In i nastąpi przełączenie
  149. silnika 2 na bieg 2
  150. */
  151.  
  152. while(skalowanie2 >= 1.10)
  153. {
  154. if(digitalRead(przycisk_wylacz) == HIGH) return;
  155. skalowanie2 = getADCValue2();
  156. if(skalowanie2 <=1.10) break;
  157. }
  158. digitalWrite(przekaznik5, LOW); // rozłącz przekaźnik 5, w celu umożlwienia zmiany biegu
  159. digitalWrite(przekaznik6, HIGH); // zaczącz przekaźnik 6, uruchamiający silnik 2 na bieg 2
  160. Serial.println("Przelaczenie na 2 bieg silnika 2");
  161. delay(1000);
  162. Serial.println("Praca ciagla");
  163. }
  164.  
  165. void loop()
  166. {
  167. if(digitalRead(przycisk_wlacz) == HIGH) //wciśnięcie przycisku włącz
  168. {
  169. silnikistart();
  170. }
  171. if((stansilnika2 == true || stansilnika1 == true) && digitalRead(przycisk_wylacz) == HIGH)
  172. {
  173. silnikistop();
  174. }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement