Guest User

Absauganlage V2.11

a guest
Nov 29th, 2020
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.04 KB | None | 0 0
  1. [code]
  2. // -- -- Abschaltautomatik -- --
  3.  
  4. // Anselm Hintermann
  5. // November 2020
  6. // Version 2.1
  7. // Arduino Nano
  8.  
  9.  
  10.  
  11. // -- Einstellungen --
  12.  
  13. //Nachlaufzeiten in Millisekunden
  14. unsigned long NachlaufSaugerMaschine1 = 3000;
  15. unsigned long NachlaufSaugerMaschine2 = 3000;
  16. unsigned long NachlaufSaugerMaschine3 = 3000;
  17. unsigned long NachlaufSaugerMaschine4 = 3000;
  18. unsigned long NachlaufSaugerMaschine5 = 3000;
  19. unsigned long NachlaufVKlappeMaschine1 = 3000;
  20. unsigned long NachlaufVKlappeMaschine2 = 3000;
  21. unsigned long NachlaufVKlappeMaschine3 = 3000;
  22. unsigned long NachlaufVKlappeMaschine4 = 3000;
  23. unsigned long NachlaufVKlappeMaschine5 = 3000;
  24. unsigned long NachlaufSaugerMKlappe1 = 10;
  25. unsigned long NachlaufSaugerMKlappe2 = 10;
  26. unsigned long NachlaufSaugerMKlappe3 = 10;
  27. unsigned long NachlaufSaugerMKlappe4 = 10;
  28. unsigned long NachlaufSaugerMKlappe5 = 10;
  29.  
  30. //Schwelle kein absoluter Wert
  31. unsigned long EinschaltSchwelleMaschine1 = 550;
  32. unsigned long EinschaltSchwelleMaschine2 = 550;
  33. unsigned long EinschaltSchwelleMaschine3 = 550;
  34. unsigned long EinschaltSchwelleMaschine4 = 550;
  35. unsigned long EinschaltSchwelleMaschine5 = 550;
  36.  
  37. //Wie oft wird der Stromsensor ausgelesen, je kleiner desto schneller aber ungenauer
  38. unsigned long printPeriod = 100;
  39.  
  40. // -- Pinbelegung --
  41.  
  42. // -- Eingänge --
  43.  
  44. int SSensor1 = A0;
  45. int SSensor2 = A1;
  46. int SSensor3 = A2;
  47. int SSensor4 = A3;
  48. int SSensor5 = A4;
  49. int SKlappe1 = 2;
  50. int SKlappe2 = 3;
  51. int SKlappe3 = 4;
  52. int SKlappe4 = 5;
  53. int SKlappe5 = 6;
  54.  
  55. // -- Ausgänge --
  56.  
  57. int Ventil1 = 7;
  58. int Ventil2 = 8;
  59. int Ventil3 = 9;
  60. int Ventil4 = 10;
  61. int Ventil5 = 11;
  62. int Sauger = 12;
  63.  
  64. // -- Rechenvariablen --
  65.  
  66. unsigned long SSensor1Value;
  67. unsigned long SSensor2Value;
  68. unsigned long SSensor3Value;
  69. unsigned long SSensor4Value;
  70. unsigned long SSensor5Value;
  71.  
  72. unsigned long SSensor1MaxValue;
  73. unsigned long SSensor2MaxValue;
  74. unsigned long SSensor3MaxValue;
  75. unsigned long SSensor4MaxValue;
  76. unsigned long SSensor5MaxValue;
  77.  
  78. unsigned long SSensor1Current;
  79. unsigned long SSensor2Current;
  80. unsigned long SSensor3Current;
  81. unsigned long SSensor4Current;
  82. unsigned long SSensor5Current;
  83.  
  84. unsigned long previousMillis;
  85.  
  86. unsigned long AusschaltZeitSauger = millis() - 1;
  87. unsigned long SchliessZeitVKlappe1 = millis() - 1;
  88. unsigned long SchliessZeitVKlappe2 = millis() - 1;
  89. unsigned long SchliessZeitVKlappe3 = millis() - 1;
  90. unsigned long SchliessZeitVKlappe4 = millis() - 1;
  91. unsigned long SchliessZeitVKlappe5 = millis() - 1;
  92.  
  93.  
  94. // -- Setup --
  95.  
  96. void setup() {
  97.  
  98.  
  99. // -- PinMode Definition --
  100.  
  101. pinMode(SSensor1, INPUT);
  102. pinMode(SSensor2, INPUT);
  103. pinMode(SSensor3, INPUT);
  104. pinMode(SSensor4, INPUT);
  105. pinMode(SSensor5, INPUT);
  106. pinMode(SKlappe1, INPUT);
  107. pinMode(SKlappe2, INPUT);
  108. pinMode(SKlappe3, INPUT);
  109. pinMode(SKlappe4, INPUT);
  110. pinMode(SKlappe5, INPUT);
  111. pinMode(Ventil1, OUTPUT);
  112. pinMode(Ventil2, OUTPUT);
  113. pinMode(Ventil3, OUTPUT);
  114. pinMode(Ventil4, OUTPUT);
  115. pinMode(Ventil5, OUTPUT);
  116. pinMode(Sauger, OUTPUT);
  117. Serial.begin(9600);
  118. }
  119.  
  120.  
  121. // -- Loop --
  122.  
  123. void loop() {
  124.  
  125.  
  126. // -- Stromsensoren abfragen und auswerten --
  127.  
  128. while (previousMillis + printPeriod > millis()) //MaxValue ermitteln
  129. {
  130. SSensor1Value = analogRead(SSensor1);
  131. SSensor2Value = analogRead(SSensor2);
  132. SSensor3Value = analogRead(SSensor3);
  133. SSensor4Value = analogRead(SSensor4);
  134. SSensor5Value = analogRead(SSensor5);
  135.  
  136. if (SSensor1MaxValue < SSensor1Value)
  137. {
  138. SSensor1MaxValue = SSensor1Value;
  139. }
  140. if (SSensor2MaxValue < SSensor2Value)
  141. {
  142. SSensor2MaxValue = SSensor2Value;
  143. }
  144. if (SSensor3MaxValue < SSensor3Value)
  145. {
  146. SSensor3MaxValue = SSensor3Value;
  147. }
  148. if (SSensor4MaxValue < SSensor4Value)
  149. {
  150. SSensor4MaxValue = SSensor4Value;
  151. }
  152. if (SSensor5MaxValue < SSensor5Value)
  153. {
  154. SSensor5MaxValue = SSensor5Value;
  155. }
  156. }
  157.  
  158. // -- MaxValue Nullen
  159.  
  160. SSensor1Current = SSensor1MaxValue;
  161. SSensor1MaxValue = 0;
  162. SSensor2Current = SSensor2MaxValue;
  163. SSensor2MaxValue = 0;
  164. SSensor3Current = SSensor3MaxValue;
  165. SSensor3MaxValue = 0;
  166. SSensor4Current = SSensor4MaxValue;
  167. SSensor4MaxValue = 0;
  168. SSensor5Current = SSensor5MaxValue;
  169. SSensor5MaxValue = 0;
  170. previousMillis = millis();
  171.  
  172.  
  173. // -- Ausschaltzeiten Maschinen festlegen --
  174.  
  175. if (EinschaltSchwelleMaschine1 <= SSensor1Current )
  176. {
  177. AusschaltZeitSauger = millis() + NachlaufSaugerMaschine1;
  178. SchliessZeitVKlappe1 = millis() + NachlaufVKlappeMaschine1;
  179. Serial.print(" Bed. Masch1 erf. ");
  180. }
  181. if (SSensor1Current > EinschaltSchwelleMaschine2)
  182. {
  183. AusschaltZeitSauger = millis() + NachlaufSaugerMaschine2;
  184. SchliessZeitVKlappe2 = millis() + NachlaufVKlappeMaschine2;
  185. }
  186. if (SSensor1Current > EinschaltSchwelleMaschine3)
  187. {
  188. AusschaltZeitSauger = millis() + NachlaufSaugerMaschine3;
  189. SchliessZeitVKlappe3 = millis() + NachlaufVKlappeMaschine3;
  190. }
  191. if (SSensor1Current > EinschaltSchwelleMaschine4)
  192. {
  193. AusschaltZeitSauger = millis() + NachlaufSaugerMaschine4;
  194. SchliessZeitVKlappe4 = millis() + NachlaufVKlappeMaschine4;
  195. }
  196. if (SSensor1Current > EinschaltSchwelleMaschine5)
  197. {
  198. AusschaltZeitSauger = millis() + NachlaufSaugerMaschine5;
  199. SchliessZeitVKlappe5 = millis() + NachlaufVKlappeMaschine5;
  200. }
  201.  
  202. // -- Ausschaltzeiten manuelle Klappen festlegen --
  203.  
  204. if (digitalRead(SKlappe1) == 1 )
  205. {
  206. AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe1;
  207. }
  208. if (digitalRead(SKlappe2) == 1 )
  209. {
  210. AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe2;
  211. }
  212. if (digitalRead(SKlappe3) == 1 )
  213. {
  214. AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe3;
  215. }
  216. if (digitalRead(SKlappe4) == 1 )
  217. {
  218. AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe4;
  219. }
  220. if (digitalRead(SKlappe5) == 1 )
  221. {
  222. AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe5;
  223. }
  224.  
  225.  
  226. // -- Sauger ansteuern --
  227.  
  228. if (AusschaltZeitSauger >= millis() )
  229. {
  230. digitalWrite(Sauger, HIGH);
  231. Serial.println("Sauger EIN ");
  232. }
  233. else {
  234. digitalWrite(Sauger, LOW);
  235. Serial.println("Sauger AUS ");
  236. }
  237.  
  238.  
  239. // -- Pneumatikklappen ansteuern --
  240.  
  241. if (SchliessZeitVKlappe1 >= millis())
  242. {
  243. digitalWrite(SKlappe1, HIGH);
  244. }
  245. else {
  246. digitalWrite(SKlappe1, LOW);
  247. }
  248. if (SchliessZeitVKlappe2 >= millis())
  249. {
  250. digitalWrite(SKlappe2, HIGH);
  251. }
  252. else {
  253. digitalWrite(SKlappe2, LOW);
  254. }
  255. if (SchliessZeitVKlappe3 >= millis())
  256. {
  257. digitalWrite(SKlappe3, HIGH);
  258. }
  259. else {
  260. digitalWrite(SKlappe3, LOW);
  261. }
  262. if (SchliessZeitVKlappe4 >= millis())
  263. {
  264. digitalWrite(SKlappe4, HIGH);
  265. }
  266. else {
  267. digitalWrite(SKlappe4, LOW);
  268. }
  269. if (SchliessZeitVKlappe5 >= millis())
  270. {
  271. digitalWrite(SKlappe5, HIGH);
  272. }
  273. else {
  274. digitalWrite(SKlappe5, LOW);
  275. }
  276.  
  277. // -- Serieller Monitor --
  278. Serial.print(" ZeitSaugerAus ");
  279. Serial.print(AusschaltZeitSauger);
  280. Serial.print(" Millis: ");
  281. Serial.print(millis());
  282. Serial.print(" Current: ");
  283. Serial.print(SSensor1Current);
  284.  
  285. // -- Ende Loop --
  286.  
  287. }
  288. [/code]
Advertisement
Add Comment
Please, Sign In to add comment