54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
#!/usr/bin/python
|
|
''' Raspberry Pi, ADS1115, PH4502C Calibration '''
|
|
import board
|
|
import busio
|
|
import time
|
|
import sys
|
|
|
|
import adafruit_ads1x15.ads1115 as ADS
|
|
from adafruit_ads1x15.analog_in import AnalogIn
|
|
|
|
# Setup
|
|
i2c = busio.I2C(board.SCL, board.SDA)
|
|
ads = ADS.ADS1115(i2c)
|
|
|
|
def read_voltage(channel):
|
|
while True:
|
|
buf = list()
|
|
|
|
for i in range(10): # Take 10 samples
|
|
buf.append(channel.voltage)
|
|
buf.sort() # Sort samples and discard highest and lowest
|
|
buf = buf[2:-2]
|
|
avg = (sum(map(float,buf))/6) # Get average value from remaining 6
|
|
|
|
print(round(avg,2),'V')
|
|
time.sleep(2)
|
|
|
|
if __name__ == '__main__':
|
|
print('\n\n\n')
|
|
print('---- RPi-ADS115-PH4502 Calibration ----')
|
|
input('Press Enter once you have grounded the BNC connector...')
|
|
channel = None
|
|
while channel not in [0,1,2,3]:
|
|
try:
|
|
channel = int(input('ADS1115 channel 0-3: ')) # ADS.P0, ADS.P1, ADS.P2, ADS.P3
|
|
except:
|
|
print('Not a valid option. Try again.')
|
|
if channel == 0:
|
|
channel = AnalogIn(ads, ADS.P0)
|
|
elif channel == 1:
|
|
channel = AnalogIn(ads, ADS.P1)
|
|
elif channel == 2:
|
|
channel = AnalogIn(ads, ADS.P1)
|
|
elif channel == 3:
|
|
channel = AnalogIn(ads, ADS.P1)
|
|
else:
|
|
sys.exit('Error selecting an ADS1115 pin.')
|
|
print('Adjust potentiometer nearest to BNC socket to ~2.50V')
|
|
print('Starting readings. Press CTRL+C to stop...')
|
|
try:
|
|
read_voltage(channel)
|
|
except KeyboardInterrupt:
|
|
pass
|