Advertisement
Guest User

Monitoramento Osmose Reversa

a guest
Nov 27th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2.  
  3. float vazao; //Variável para armazenar o valor em L/min
  4. float media = 0; //Variável para fazer a média
  5. float Litros = 0; //Variável para Quantidade de agua
  6. float MiliLitros = 0; //Variavel para Conversão
  7. int contaPulso; //Variável para a quantidade de pulsos
  8. int Min = 00; //Variável para minutos
  9. int i = 0; //Variável para segundos
  10. #define SinalBombaOR 9 // Entrada de sinal do disjuntor da bomba OR
  11. #define SinalBombaPressOR 10 // Entrada de sinal do disjuntor da bomba de pressurização OR
  12. #define SinalBombaPressCME 11 // Entrada de sinal do disjuntor da bomba de pressurização CME
  13. #define SinalBoiaInferior 12 // Entrada de sinal da boia inferior
  14. #define SinalBoiaSuperior 13 // Entrada de sinal da boia superior
  15. #define Sirene A0 // Saída de sinal para acionar a sirene quando houver falha
  16. int comando = 0; // Comando a ser executado
  17.  
  18.  
  19. LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
  20.  
  21.  
  22. void setup()
  23. {
  24. Serial.begin(9600);
  25. pinMode(SinalBombaOR, INPUT);
  26. pinMode(SinalBombaPressOR, INPUT);
  27. pinMode(SinalBombaPressCME, INPUT);
  28. pinMode(SinalBoiaInferior, INPUT);
  29. pinMode(SinalBoiaSuperior, INPUT);
  30. pinMode(2, INPUT);
  31. attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
  32. analogReference(DEFAULT);
  33. pinMode(Sirene, OUTPUT);
  34. }
  35.  
  36.  
  37. void loop()
  38. {
  39. int leitura1 = digitalRead(SinalBombaOR); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  40. int leitura2 = digitalRead(SinalBombaPressOR); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  41. int leitura3 = digitalRead(SinalBombaPressCME); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  42. int leitura4 = digitalRead(SinalBoiaInferior); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  43. int leitura5 = digitalRead(SinalBoiaSuperior); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  44.  
  45.  
  46.  
  47. if (leitura1 == LOW && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA OR ESTIVER 0VCC
  48. {
  49. comando = 0; // EXECUTA O CASO 0
  50. }
  51. else if (leitura1 == HIGH && leitura2 == LOW && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA DE PRESSURIZAÇÃO OR ESTIVER 0VVC
  52. {
  53. comando = 1; // EXECUTA O CASO 1
  54. }
  55. else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == LOW && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA DE PRESSURIZAÇÃO CME ESTIVER 0VCC
  56. {
  57. comando = 2; // EXECUTA O CASO 2
  58. }
  59. else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == LOW && leitura5 == LOW) // SE O SINAL DA BOIA INFERIOR E SUPERIOR ESTIVEREM BAIXO
  60. {
  61. comando = 3; // EXECUTA O CASO 3
  62. }
  63. else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == LOW) // SE O SINAL DA BOIA SUPERIOR ESTIVER BAIXO
  64. {
  65. comando = 4; // EXECUTA O CASO 4
  66. }
  67. else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOIA INFERIOR E SUPERIOR ESTIIVEREM ALTO
  68. {
  69. comando = 5; // EXECUTA O CASO 5
  70. }
  71. switch (comando) // Switch Case
  72. {
  73. case 0:
  74.  
  75. comando = 0;//comando=0
  76.  
  77. analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  78. lcd.clear();
  79. lcd.setCursor (2, 0);
  80. lcd.print ("Defeito na");
  81. lcd.setCursor (4,1);
  82. lcd.print ("Bomba OR");
  83. delay (1000);
  84. break;
  85.  
  86. case 1:
  87.  
  88. comando = 1;//comando=1
  89. analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  90. lcd.clear();
  91. lcd.setCursor (2, 0);
  92. lcd.print ("Defeito na");
  93. lcd.setCursor (1, 1);
  94. lcd.print ("Bomba Press OR");
  95. delay (1000);
  96. break;
  97.  
  98. case 2:
  99.  
  100. comando = 2;//comando=2
  101. analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  102. lcd.clear();
  103. lcd.setCursor (2, 0);
  104. lcd.print ("Defeito na");
  105. lcd.setCursor (0, 1);
  106. lcd.print ("Bomba Press CME");
  107. delay (1000);
  108.  
  109. break;
  110.  
  111. case 3:
  112.  
  113. comando = 3;//comando=3
  114. analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  115. lcd.clear();
  116. lcd.setCursor (4, 0);
  117. lcd.print ("ATENCAO");
  118. lcd.setCursor (2, 1);
  119. lcd.print ("TANQUE VAZIO");
  120. delay (1000);
  121.  
  122. break;
  123.  
  124. case 4:
  125.  
  126. comando = 4;//comando = 4
  127. analogWrite(Sirene, LOW); //Sirene no estado baixo, informando que não há problemas no sistema
  128. lcd.clear();
  129. lcd.setCursor (4, 0);
  130. lcd.print ("ATENCAO");
  131. lcd.setCursor (0, 1);
  132. lcd.print ("TANQUE ENCHENDO");
  133. delay (1000);
  134. break;
  135.  
  136. case 5:
  137.  
  138. comando = 5;//comando = 5
  139. analogWrite(Sirene, LOW); //Sirene no estado baixo, informando que não há problemas no sistema
  140. contaPulso = 0;//Zera a variável
  141. sei(); //Habilita interrupção
  142. delay (1000); //Aguarda 1 segundo
  143. cli(); //Desabilita interrupção
  144.  
  145. vazao = contaPulso / 5.5; //Converte para L/min
  146. media = media + vazao; //Soma a vazão para o calculo da media
  147. i++;
  148. lcd.setCursor(4, 0);
  149. lcd.print("Vazao OR");
  150. lcd.setCursor(3, 1);
  151. lcd.print(vazao); //Escreve no display o valor da vazão
  152. lcd.print(" L/min "); //Escreve L/min
  153. delay(3000);
  154. lcd.clear();
  155. lcd.setCursor (0, 0);
  156. lcd.print ("OSMOSE OPERANDO");
  157. lcd.setCursor (2, 1);
  158. lcd.print ("TANQUE CHEIO");
  159. delay (1000);
  160. break;
  161.  
  162. }
  163. delay(1000);
  164. }
  165.  
  166.  
  167. void incpulso ()
  168. {
  169. contaPulso++; //Incrementa a variável de pulsos
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement