Esta es mi primera incursión en la programación y el uso de un BeagleBone Black. Tengo algo de experiencia limitada en Python, y lo he utilizado dentro del IDE de Cloud9 proporcionado para capturar datos y escribirlos en un marco de datos de pandas, consulte el código a continuación.
Mientras el código funciona, he probado utilizando los pines P9_32 y P9_34 con un par de resistencias para generar ~ 1.29 voltios, y luego leo este voltaje como una entrada ADC en el pin P9_40. La frecuencia de muestreo es muy lenta, 113 - 116 muestras por segundo. El mínimo que necesito para la tarea que tengo a mano es de aproximadamente 400Hz por canal. Si bien puedo muestrear canales de forma secuencial, prefiero tener 4 canales operativos para un total de 1600Hz de frecuencia de muestreo.
¿Es posible un aumento significativo en la frecuencia de muestreo al optimizar o alterar el Código Python que tengo? Si no es así, ¿cuál es el método recomendado para la adquisición de datos a través del ADC en el Beaglebone Black?
import Adafruit_BBIO.ADC as ADC
import pandas as pd
import numpy as np
import time
import matplotlib.pyplot as plt
ADC.setup()
value = ADC.read("P9_40")
voltage = value * 1.8 #1.8V
value2 = ADC.read_raw("P9_40")
print(voltage)
print(value2)
df_ = pd.DataFrame()
timeout_start = time.time()
timeout = 5 #seconds
print(timeout_start)
def DAQ():
d = []
count = 0
while time.time() < timeout_start + timeout:
value = ADC.read("P9_40")
voltage = value * 1.8
d.append((count, time.time(), voltage))
count = count+1
out1 = {'count': count, 'df': pd.DataFrame(d, columns=('count', 'Time', 'Signal Amplitude'))}
return out1
x = DAQ()
count = x['count']
df = x['df']
print('end loop')
print(count, 'number of iterations', count/(time.time()-timeout_start), 'samples per second')
print(df)
print(df['Time'])
print(df['Signal Amplitude'])
#plt.plot([df['Time']],[df['Signal Amplitude']])
#plt.show()
#plt.figure()
#for count in df:
# plt.plot(n[0], n[1], label=n[2])
# plt.axis([0,count,0,60])
#plt.legend(loc=0, frameon=False)
Gracias,
P.S. Si alguien puede proporcionar orientación sobre cómo trazar gráficos en el BBB, lo apreciaría.