Pico ADC untersuchen: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Ein Hilfsprogramm)
(Messungen)
Zeile 79: Zeile 79:
 
Ergebnis:
 
Ergebnis:
 
<pre>
 
<pre>
>>> %Run -c $EDITOR_CONTENT
+
===== Ergebnisse =====
  
MPY: soft reboot
+
--- Einzelmessungen ---
********************************
+
Durchschnitt: 323.7227
400 272
+
Max-Wert: 384
[324.5625, 323.5, 324.8125, 323.6875, 324.0, 323.625, 324.4375, 323.75,
+
Min-Wert: 256
323.625, 323.4375, 324.0, 323.5625, 323.1875, 323.4375, 323.5, 324.0,
+
maximale Abweichung: 60.27734
323.75, 323.5, 324.0, 324.1875, 323.8125, 324.0, 324.0625, 324.4375, 324.5,
+
minimale Abweichung: 67.72266
324.4375, 323.625, 324.9375, 324.5625, 324.0625, 323.3125, 324.75]
+
gesammte Abweichung: 128
 +
 
 +
--- Mittelwerte ---
 +
Durchschnitt: 323.7227
 +
maximale Abweichung: 324.6875
 +
minimale Abweichung: 322.75
 +
gesammte Abweichung: 1.9375
 
</pre>
 
</pre>
 
Ich habe die Ausgabe zur besseren Darstellung bearbeitet.
 
Ich habe die Ausgabe zur besseren Darstellung bearbeitet.

Version vom 17. Dezember 2023, 14:50 Uhr

Die ADC's in den Microcontrollern sind meist von schlechter Qualität. Für den Raspberry Pi Pico und den ESP32 ließt man das immer wiedeer im Internet. Deshalb möchte ich mir selbst einen Eindruck davon schaffen, was ich vom ADC des Pico halten kann.

Ein Hilfsprogramm

Deshalb habe ich ein Programm geschrieben, das die maximalen, minimalen und duchschnitts Werte ermittelt:

# adc_repeat_test_02.py
#
# V. 1.0
# 17.12.2023
# Peter Stoeck
#
# Das Programm misst eine Spannung am ADC.
# Es werden Maximum und Minimum jeder über
# die gesammte messzeit erfasst.
# Es werden messungen Messungen aufaddiert und
# daraus der Durchschnitt errechnet und gespeichert
# Es werden runden Runden davon absolviert.
# Am Ende werden Max, Min, die Durchschnittswerte
# ausgegeben.


import machine
import utime

potentiometer = machine.ADC(26)

runden = 32
verz = 10         # in ms
messungen = 256
werte = 0
maxi = 0
mini = 100000

sammlung = []

for r in range(runden):
    werte = 0
    for i in range(messungen):
        wert = potentiometer.read_u16()
        if wert > maxi:
            maxi = wert
        elif wert < mini:
            mini = wert
        werte += wert
        utime.sleep_ms(verz)
    sammlung.append(werte / messungen)
    print('*', end='')
    
# Auswertung
d_durchschnitt = sum(sammlung) / runden
d_max = max(sammlung)
d_min = min(sammlung)
a_max = d_max - d_durchschnitt
a_min = d_min - d_durchschnitt

# Ausgabe
print()
print('===== Ergebnisse =====')
print()
print('--- Einzelmessungen ---')
print('Durchschnitt:', d_durchschnitt)
print('Max-Wert:', maxi)
print('Min-Wert:', mini)
print('maximale Abweichung:', maxi - d_durchschnitt)
print('minimale Abweichung:', d_durchschnitt - mini)
print('gesammte Abweichung:', maxi - mini)
print()
print('--- Mittelwerte ---')
print('Durchschnitt:', d_durchschnitt)
print('maximale Abweichung:', d_max)
print('minimale Abweichung:', d_min)
print('gesammte Abweichung:', d_max - d_min)

Messungen

Ich habe diese Messung bei einer Eingangsspannung von 0,000 Volt durchgeführt-
Ergebnis:

===== Ergebnisse =====

--- Einzelmessungen ---
Durchschnitt: 323.7227
Max-Wert: 384
Min-Wert: 256
maximale Abweichung: 60.27734
minimale Abweichung: 67.72266
gesammte Abweichung: 128

--- Mittelwerte ---
Durchschnitt: 323.7227
maximale Abweichung: 324.6875
minimale Abweichung: 322.75
gesammte Abweichung: 1.9375

Ich habe die Ausgabe zur besseren Darstellung bearbeitet.

Einzelmessungen

Man sieht hier, das der Wert der Einzelmessungen zwischen 272 und 400 liegt, also ganz erheblich schwankt.

Gemittelte Messungen

Fazit

ADC Test
Spannung Wert Volt
0,000 0 0
1 0 1
2 1 0
3 1 1