from Adafruit_ADS1x15 import ADS1x15
import numpy as np
import matplotlib.pyplot as plt
pga = 1# Set full-scale range of programable gain amplifier
ADS1015 = 0x00# Specify that the device being used is ADS1015
adc = ADS1x15(ic=ADS1015) # Create instance of the class ADS1x15 called adc# Function to print sampled values to the terminaldeflogdata():print"sps value should be one of: 128, 250, 490, 920, 1600, 2400, 3300, otherwise the value will default to 1600"
frequency = 1000# Data rate in Hz
sps = 3300# maximum sps value for ADS1015
time1 = 10# how long to sample in seconds
period = 1.0 / frequency # Calculate sampling period
datapoints = int(time1*frequency) # Datapoints is the total number of samples to take, which must be an integer
dataarray=np.zeros([datapoints,2]) # Create numpy array to store value and time at which samples are taken
adc.start_adc(0, pga, sps) # Begin continuous conversion on input A0
startTime=time.time() # Time of first sample
t1=startTime # T1 is last sample time
t2=t1 # T2 is current time
V_dd = 3.3# ADS1015 is powered with 3.3V from RPi
n = 12# No. of bits in ADS1015
senstivity = 0.022# Sensitivity of WCS1600 in V/Afor x inrange (0,datapoints) : # Loop in which data is recorded
dataarray[x,0] = time.time()-startTime # Store the sample time in the numpy array
dataarray[x,1]= ((adc.get_last_result())*(V_dd)/(2**n))/ senstivity # Get the result in Amperes of the last conversion from ADS1015 and store in numpy arraywhile (t2-t1 < period) : # Check if t2-t1 is less then sample period, if it is then update t2
t2=time.time() # and check again
t1+=period # Update last sample time by the sampling periodreturn (dataarray)
dataSamples = logdata() # Call function to log data# Plot time data
TIME = dataarray[:,]
CURRENT = dataarray[:,]
plt.plot(TIME,CURRENT 'r', linewidth=1)
The input side the charger reads (110-220 V, 50 Hz, 0.3A).So we can expected a sinusoidal wave for the current time stamp with maximum current restricted to 0.3A.
However, on plotting the time vs current below graph is achieved which is obviously wrong:
Can somebody please let me know why am I not getting sinusoidal waveform, I would be very much appreciative
I never dived into current measuring, so I am not sure if this is relevant or not. First thing I thought was measuring current (A) versus voltage (V). But I suppose both are sinus shaped.
The next though I had is that the sensor's purpose was to measure the load (A) on a wire, so maybe the sensor is actually making it a flat line already? I honestly have no clue, this is just me guessing.
MovieScanner2-2.0.11-Linux-GTK-64bits.tar.gzDate: 2021-08-28 - Size: 29.1 MBA small application that uses FFProbe to scan your video files and logs these details in a small database. This is the 64 bit Linux version for GTK.
MovieScanner2-2.0.11-Linux-QT5-64bits.tar.gzDate: 2021-08-28 - Size: 29 MBA small application that uses FFProbe to scan your video files and logs these details in a small database. This is the 64 bit Linux version for QT5.
MovieScanner2-v2.0.11-macOS-64bit.dmgDate: 2021-08-28 - Size: 25.4 MBA small application that uses FFProbe to scan your video files and logs these details in a small database. This is the 64 bit macOS version.