Recientemente publiqué, pero mi esquema cambió y también mi problema.
Tengo esta configuración y en mi Raspberry Pi tengo este código en ejecución que obtiene el número de 10 bits del ADC y lo convierte en un voltaje utilizable para mí.
#!/usr/bin/python
import spidev
import time
import os
# Open SPI bus
spi = spidev.SpiDev()
spi.open(0,0)
# Function to read SPI data from MCP3002 chip
# Channel must be an integer 0-7
def ReadChannel(channel):
adc = spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data
# Function to convert data to voltage level,
# rounded to specified number of decimal places.
def ConvertVolts(data,places):
volts = (data * 5) / float(1023)
volts = round(volts,places)
return volts
while True:
# Read the MCP3002
ADC_volts = ReadChannel(0)
digital_Volts = ConvertVolts(ADC_volts,2)
print digital_Volts
El problema que tengo es que si ejecuto esto espero obtener una lectura constante de 3.3V en mi programa. Sin embargo, no lo hago. Obtengo una lectura fluctuante entre 4.34-4.63V. Necesito establecer un voltaje constante porque tengo la intención de incluir un elemento piezoeléctrico para detectar el voltaje de las vibraciones y la señal debe desviarse para obtener los voltajes pos + y negativos producidos.
¿Puede alguien explicar por qué no obtengo 3.3 V y por qué no obtengo una lectura constante de 4.5 o casi un valor fluctuante? Gracias