Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const int relay = 2;
  2. const int sensorIn = A0;
  3. int mVperAmp = 100; // use 100 for 20A Module and 66 for 30A Module
  4. int relaystate;
  5. double sensorVal;
  6.  
  7. void setup() {
  8. Serial.begin(9600);
  9. pinMode(relay, OUTPUT);
  10. pinMode(sensorIn, INPUT);
  11. digitalWrite(relay, LOW);
  12. }
  13.  
  14. void loop() {
  15.  
  16. delay(500);
  17. relaystate = digitalRead(relay); //Check if the fan is on/off
  18. sensorVal = getVPP();
  19. Serial.println(sensorVal); //Printing out the AmpsRMS
  20.  
  21. while(sensorVal >= .50) {
  22. digitalWrite(relay, HIGH); //If the current is drawing, then turn on fan
  23. delay(3000);
  24. Serial.println(sensorVal);
  25. }
  26. if (sensorVal < .50) { //If projector turns off, wait 1 minute and turn off fan
  27. Serial.println("Projector off, waiting one minute to cool off.");
  28. delay(60000);
  29. digitalWrite(relay, LOW);
  30. }
  31. }
  32.  
  33. float getVPP() {
  34. double Voltage = 0;
  35. double VRMS = 0;
  36. double AmpsRMS = 0;
  37.  
  38. int readValue; //value read from the sensor
  39. int maxValue = 0; // store max value here
  40. int minValue = 1024; // store min value here
  41.  
  42. uint32_t start_time = millis();
  43. while ((millis() - start_time) < 1000) //sample for 1 Sec
  44. {
  45. readValue = analogRead(sensorIn);
  46. // see if you have a new maxValue
  47. if (readValue > maxValue)
  48. {
  49. /*record the maximum sensor value*/
  50. maxValue = readValue;
  51. }
  52. if (readValue < minValue)
  53. {
  54. /*record the maximum sensor value*/
  55. minValue = readValue;
  56. }
  57. }
  58. // Subtract min from max
  59. // Serial.print(maxValue);
  60. // Serial.println(" Max Value");
  61. // Serial.print(minValue);
  62. // Serial.println(" Min Value");
  63. Voltage = ((maxValue - minValue) * 5.0) / 1024.0;
  64. VRMS = (Voltage / 2.0) * 0.707;
  65. AmpsRMS = (VRMS * 1000) / mVperAmp;
  66.  
  67. return AmpsRMS;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement