Advertisement
sanjiro

Maquina_Cafe_v_18.07.27_beta.ino

Jul 27th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. int ThermistorPin = A0; // blue wire
  2. int Vo;
  3. float R1 = 5000; // 5000 47Kohms
  4. float logR2, R2, T, Tc;
  5. float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
  6. const int ButtonCoffee = 12; // brown wire
  7. const int RelayBoiler = 11; // yellow wire
  8. const int RelayCoffee = 10; // green wire
  9. const int LedPower = 9; // orange wire
  10. const int setTemp = 95;
  11. const int Hysteresis = 5;
  12. int buttonState = 0; // current state of the button
  13. int lastButtonState = 0; // previous state of the button
  14. int ledState = 0; // remember current led state
  15.  
  16. void setup() {
  17.  
  18. pinMode(ButtonCoffee, INPUT); // brown wire
  19. // resistor is in positive side, "pullup", so RelayCoffee must be low level trigger
  20. pinMode(RelayCoffee, OUTPUT); // green wire
  21. pinMode(RelayBoiler, OUTPUT); // yellow wire
  22. pinMode(LedPower, OUTPUT); // orange wire
  23. digitalWrite (RelayBoiler, LOW);
  24. digitalWrite (RelayCoffee, HIGH); // low level trigger
  25. digitalWrite (LedPower, LOW);
  26. }
  27.  
  28. void loop() {
  29. digitalWrite (LedPower, HIGH);
  30. Boiler();
  31. Coffee();
  32. Error();
  33. }
  34.  
  35. void Boiler() {
  36.  
  37. Vo = analogRead(ThermistorPin);
  38. R2 = R1 * (1023.0 / (float)Vo - 1.0);
  39. logR2 = log(R2);
  40. T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
  41. Tc = T - 273.15;
  42. if ( Tc > 0 && Tc < (setTemp - Hysteresis) ) // cold
  43. {
  44. digitalWrite (RelayBoiler, HIGH);
  45. }
  46. else if ( Tc > setTemp ) // hot
  47. {
  48. digitalWrite (RelayBoiler, LOW);
  49. }
  50. delay(200); // delay between ntc readings
  51. }
  52.  
  53. void Coffee() {
  54. buttonState = digitalRead(ButtonCoffee);
  55. if (buttonState != lastButtonState)
  56. {
  57. if (buttonState == 1)
  58. {
  59. if(ledState == 1) ledState=0;
  60. else ledState=1;
  61. }
  62. lastButtonState = buttonState;
  63. }
  64. digitalWrite(RelayCoffee, ledState);
  65. delay(20); //debouncing
  66. }
  67.  
  68. void Error() {
  69. if ( Tc < 0 ) // error
  70. {
  71. digitalWrite (RelayBoiler, LOW);
  72. digitalWrite (LedPower, LOW);
  73. delay(500);
  74. digitalWrite (LedPower, HIGH);
  75. delay(500);
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement