#include #include #include #include //pt100 temp probe Adafruit_MAX31865 thermo = Adafruit_MAX31865(12,13,14,15); //lcd LiquidCrystal_I2C lcd(0x27,16,2); //901p vacuum gauge (via serial) SoftwareSerial vacuumGaugeInterface(0,16); // RX, TX // The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000 #define RREF 430.0 // The 'nominal' 0-degrees-C resistance of the sensor; 100.0 for PT100, 1000.0 for PT1000 #define RNOMINAL 100.0 // this is the amount of time to wait before another main loop run #define loop_delay 2500 void setup() { //setup serial for debug Serial.begin(115200); //setup lcd lcd.begin(16,2); lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(1,0); lcd.print("Starting"); lcd.setCursor(1,1); lcd.print("Monitor..."); delay(1000); //for dramatic effect! //start temp sensor thermo.begin(MAX31865_3WIRE); //setup vacuum gauge vacuumGaugeInterface.begin(9600); } String readPressure(){ String pressure=""; //request 4 digit vacuum value from transducer vacuumGaugeInterface.write("@254PR4?;FF"); delay(100); String res=vacuumGaugeInterface.readString(); res.remove(0,7); res.remove(8); Serial.print("response: "); Serial.println(res); //parse response for conversion if (res.endsWith("E+2")){ res.remove(5); float val=res.toFloat(); val=val*100.0; pressure=val; pressure=pressure+" torr"; } else if (res.endsWith("E+1")){ res.remove(5); float val=res.toFloat(); val=val*10.0; pressure=val; pressure=pressure+" torr"; } else if (res.endsWith("E+0")){ res.remove(5); float val=res.toFloat(); val=val*1000.0; pressure=val; pressure=pressure+" micron"; } else if (res.endsWith("E-1")){ res.remove(5); float val=res.toFloat(); val=val*100.0; pressure=val; pressure=pressure+" micron"; } else if (res.endsWith("E-2")){ res.remove(5); float val=res.toFloat(); val=val*10.0; pressure=val; pressure=pressure+" micron"; } else if (res.endsWith("E-3")){ res.remove(5); float val=res.toFloat(); val=val*1.0; pressure=val; pressure=pressure+" micron"; } else{ Serial.print("could not parse: "); Serial.println(res); } return pressure; } float readTemperature(){ uint16_t rtd = thermo.readRTD(); float ratio = rtd; ratio /= 32768; float temp=thermo.temperature(RNOMINAL, RREF); Serial.print("Temp = "); Serial.println(temp); return temp; } void loop() { String vacuum=readPressure(); float temp=readTemperature(); //rebuild display data lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.setCursor(6,0); lcd.print(temp); lcd.print(" c"); lcd.setCursor(0,1); lcd.print("Vac: "); lcd.setCursor(5,1); lcd.print(vacuum); //timeout until next run delay(loop_delay); }