|
- or - Rough and dirty vacuum testing: my path towards high vacuum |
#include <Wire.h>
#include <Adafruit_ADS1015.h>
// ADS1115 addresses: (GND - 0x48) (SDA 0x4A)
Adafruit_ADS1115 ads1(0x48); /* Use this for the 16-bit version */
Adafruit_ADS1115 ads2(0x4A); /* Use this for the 16-bit version */
void setup(void)
{
// Serial monitor
Serial.begin(9600);
Serial.println("Hello!");
ads1.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV 0.125mV
ads2.setGain(GAIN_ONE); // 1x gain +/- 4.096V 1 bit = 2mV 0.125mV
ads1.begin();
ads2.begin();
}
void loop(void)
{
// ADC reading
int16_t adc1_0, adc1_1, adc1_2, adc1_3; // FIRST ADC
int16_t adc2_0, adc2_1, adc2_2, adc2_3; // SECOND ADC
// Read from first ADC
adc1_0 = ads1.readADC_SingleEnded(0);
adc1_1 = ads1.readADC_SingleEnded(1);
adc1_2 = ads1.readADC_SingleEnded(2);
adc1_3 = ads1.readADC_SingleEnded(3);
// Read from second ADC
adc2_0 = ads2.readADC_SingleEnded(0);
adc2_1 = ads2.readADC_SingleEnded(1);
adc2_2 = ads2.readADC_SingleEnded(2);
adc2_3 = ads2.readADC_SingleEnded(3);
// Average values in time
double avg_bits_1_0 = 0; // Setpoint Mass flow controller
double avg_bits_1_1 = 0; // Output Mass flow controller
double avg_bits_2_0 = 0; // Output 10 Torr pressure gauge
int Navg = 250;
for(int ii = 0; ii < Navg; ++ii)
{
avg_bits_1_0 += (double)(adc1_0)/Navg;
avg_bits_1_1 += (double)(adc1_1)/Navg;
avg_bits_2_0 += (double)(adc2_0)/Navg;
}
// Convert to voltages
double Vsetpoint_mV = avg_bits_1_0*0.125; // Setpoint voltage Mass flow controller
double Voutput_mV = avg_bits_1_1*0.125; // Output voltage Mass flow controller
double Voutput_mV_Pressure = avg_bits_2_0*0.125; // Output voltage pressure gauge (divided by two)
double P_Torr = Voutput_mV_Pressure/1000/5*10;
Serial.print("\n");
Serial.print("Setpoint - He: "); Serial.print(Vsetpoint_mV); Serial.print(" mV "); Serial.print(Vsetpoint_mV/1000*30/5); Serial.print(" sccm\n"); // "30" -> 30sccm FS mass flow controller
Serial.print("Output - He: "); Serial.print(Voutput_mV); Serial.print(" mV "); Serial.print(Voutput_mV/1000*30/5); Serial.print(" sccm\n"); // "30" -> 30sccm FS mass flow controller
Serial.print("\n");
Serial.print("P: "); Serial.print(Voutput_mV_Pressure); Serial.print(" mV "); Serial.print(P_Torr); Serial.print(" Torr = "); Serial.print(P_Torr*133); Serial.print(" Pa\n");
delay(1000);
}