Para un ADC de 16 bits con un rango de entrada analógica de -10V a + 10V, he leído lo siguiente:
La resolución \ $ \ text {delta} = \ dfrac {20V} {2 ^ {16}} \ $
16 bit 0000000000000000 corresponde al decimal 0 y esto significa que el voltaje leído por el ADC está entre -10V y -9 999.695V.
Similarmente, el bit 111111111111111111 corresponde al decimal 65535 y esto significa que el voltaje leído por el ADC está entre +9 999.695V y +10 000.
Pero tengo un par de preguntas aquí donde me confundo:
1-) Si el ADC muestrea un voltaje de +9 999V, ¿se registrará como 65535 o 65534?
2-) ¿Qué tal 32767 y 32768? ¿Ambos representan VO? Me parece que 32767 está registrado si el voltaje está entre -20 / 2 ^ 16V y 0V; y 32768 se registra si el voltaje está entre + 20/2 ^ 16V y 0V. Es eso correcto. Si es así, significa que para 0 V hay dos pasos, a diferencia de otras lecturas de voltaje.
3-) ¿Es la resolución \ $ \ dfrac {20V} {2 ^ {16}} \ $ o \ $ \ dfrac {20V} {2 ^ {16} -1} \ $?
EDIT:
Graficé en Python la cuantización de una sinusoide para un ADC de 3 bits.
La siguiente gráfica representa mejor un convertidor ADC de 3 bits que cuantifica una entrada sinusoidal de 10V 1Hz en este caso muestreada a una velocidad de 512Hz:
3 es el número de bits.
A continuación, llámelo Plot 1, el número de niveles es impar, es decir (2 ^ 3) -1:
Yacontinuación,llámeloPlot2,elnúmerodenivelesespar,esdecir,2^3:
¿CuáldelasanterioresrepresentamejorunacuantificacióndeADC?
EDIT2:
EnrespuestaaDirceuRodriguesJrylafuncióndetransferenciaqueproporcionóensurespuesta,tratéderepresentarloenPython(ADCde3bitsparaentradade-10a+10Venlugardecódigobinarioendecimal):
importnumpyasnpimportmatplotlib.pyplotasplt#ANALOGSIGNAL:va=np.linspace(-10,10,10000)#Analoginputfrom-10Vto+10Vfs_p=10.0fs_n=-10.0#DIGITALOUTPUTCODE:n=3#ADCresolutionvd=((va-fs_n)/(fs_p-fs_n))*(2**n)#Transferfunctionvd=(vd).astype(int)#outputcodeplt.plot(va,vd,'.b')plt.plot(va,vd,'-g')plt.xlabel('Va(Analoginput)')plt.ylabel('Vd(Outputcode)')plt.show()plt.grid()
Aquíestálasalida: