- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 68

Thema: Ein ADC Schritt Ref/n oder Ref/(n-1)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von HaWe Beitrag anzeigen
    (sorry, eigentlich wollte ich ja raus sein, aber bestimmte Dummheiten kann ich einfach nicht unwidersprochen stehen lassen -

    aber ab jetzt ....)
    Schon wieder so eine Diffamierung ... Aber braucht ja keiner mehr eine zu "fürchten". Ich habe ein Experiment durchgeführt, das auch jeder einfach selbst nachbauen kann:

    Ich habe an den 10-Bit ADC eines ATtiny44 ADC ein 10k Poti angeschlossen und AD-Wandlungen durchgeführt. Aref auf Vcc. Dann mit 8-fach rechts shiften einen 2-Bit ADC simuliert. Die 2-Bit ADC-Ausgabe, also die Werte 0, 1, 2, 3 per RS232 auf den PC Bildschirm und parallel mit einem Multimeter am ADC-Eingang die Spannung gemessen.

    Reale Meßwerte: bei Vcc = 5,04V

    DMM 0,00V bis 1,26V , ADC-Ausgabe = 0
    DMM >1,26V bis 2,52V , ADC-Ausgabe = 1
    DMM >2,52V bis 3,78V , ADC-Ausgabe = 2
    DMM >3,78V bis 5,03V , ADC-Ausgabe = 3

    Das Meßgerät ist kein Präzisionsmeßgerät und der Tiny sitzt nur auf dem Steckbrett. Um Meßwertzittern zu vermeiden habe ich vor dem shiften eine 2-Bit SW-Hysterese verwendet. Die Ungenauigkeit dadurch ist 5v*3/256=0,0585V oder 5V*3/255=0,0588V

    Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.

    Für die Zuordnung einer Spannung zu einer ADC Ausgabe rechne ich Vref/(4*2)+Vref*ADC/4. Ich rechne also mit n, also der Anzahl der möglichen Ausgabewerte beim ADC. Bei 8-Bit ADC also mit 256 und nicht mit den schlechteren 255.

    - - - Aktualisiert - - -

    Zitat Zitat von Searcher Beitrag anzeigen
    Um Meßwertzittern zu vermeiden habe ich vor dem shiften eine 2-Bit SW-Hysterese verwendet. Die Ungenauigkeit dadurch ist 5v*3/256=0,0585V oder 5V*3/255=0,0588V
    Fehler ist noch kleiner, da es die letzten beiden Bits des 10-Bit Ergebnisses sind:
    5v*3/1024=0,01464V bzw 5v*3/1023=0,01466V für die (n-1) Leute.
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    HaWe
    Gast
    Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.
    klarer Fall:
    da eine Funktion immer nur 1 Funktionswert pro Argument haben darf und sowohl die unterste Grenze (0) als auch die oberste (5) abgebildet werden müssen, um insb. "oben" nichts abzuschneiden:
    mit n-1. Beim 2-bitter also exemplarisch dann Schritte zu je 5V/3:

    0 -> 0 V
    1 -> 1,67 V
    2- > 3,33 V
    3 -> 5 V


    Wer Grenzen um die Zielwerte braucht, kann diese um die per (n-1)-Divisor berechneten skalierten Werte herum frei definieren, nur sind sie dann eben nicht ganz symmetrisch zur nächstniedrigeren und der nächsthöheren "Schaltschwelle" (idealerweise sollten sie etwa in der Mitte dazwischen liegen, außer beim niedrigsten und beim höchstmöglichen Wert). Die Asymmetrie sinkt aber mit der Höhe der bit-Auflösung.
    Immerhin bleibt dann auch die Möglichkeit zu 5,0V bei ADC=3, anstelle von 3,78V, entsprechend zu pwm.

    PS,
    Auch können sich andere ADC-Chips in ihren "Schwellen" u.U. anders verhalten (bei SAMD, ESP, ADS1115, PCF8591, MCP3008...) - dies würde dennoch die bisherige Skalierung per Dreisatz in keinster Weise betreffen oder beeinträchtigen
    a/aMax=v/vMax,
    aMax = (2i)-1,
    vMax=vRef (5V),
    i=ADC-bit-Auflösung
    a=umzuwandelnder ADC-Wert
    v=korrespond. skalierter Volt-Wert
    Geändert von HaWe (08.02.2020 um 10:30 Uhr) Grund: ADS1115

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    899
    Geändert von Holomino (08.02.2020 um 13:53 Uhr) Grund: kroookokokoko - prust

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.685
    Zitat Zitat von Holomino Beitrag anzeigen
    Zitat Zitat von HaWe Beitrag anzeigen
    0 -> 0 V
    1 -> 1,67 V
    2- > 3,33 V
    3 -> 5 V
    Diese Einteilung hatte gestern nichts mit der Realität zu tun, heute nicht und morgen wird sie es auch nicht haben.

    Unter https://www.spektrum.de/lexikon/phys...al-wandler/492 ist der Aufbau eines AD-Wandlers zu finden, dessen Teilerverhältnisse klar zeigen:
    Es gibt dieses "krumme" 1:3 Teilungsverhältnis nicht.

    Insofern ist Deine Skalierung komplett an der Realität vorbei - unnötige Kosmetik, die krampfhaft zu verschleiern versucht, dass man VREF mit einem AD-Wandler nicht mehr messen kann.
    Versteh ich nicht.
    Ciao sagt der JoeamBerg

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von Searcher Beitrag anzeigen
    Die Meßwerte reichen trotzdem aus um zu entscheiden, ob mit 3 (n-1) oder besser mit 4 (n) gerechnet werden sollte.
    Beim AVR wird die Größe eines Quantisierungsintervalls mit Vref/n errechnet. n ist die Anzahl möglicher Ausgabewerte des ADC. Bei einem 2-Bit ADC ist n=4 und ein Quantisierungsintervall bei Vref=5V somit 5V/4=1,25V.

    Zitat Zitat von HaWe Beitrag anzeigen
    a/aMax=v/vMax,
    aMax = (2i)-1,
    vMax=vRef (5V),
    i=ADC-bit-Auflösung
    a=umzuwandelnder ADC-Wert
    v=korrespond. skalierter Volt-Wert
    Im ersten Quantisierungsintervall eines 2-Bit ADC wird jede Spannung von 0V bis 1,25V zu einer a=0 digitalisiert. Bei Skalierung mit a/aMax=v/vMax (aMax=n-1), v=a/aMax*vMax is v=0. Bei einer Eingangsspannung von bis zu 1,25V wird also zu 0V skaliert. Das sind bis zu 100% Fehler bezogen auf das Quantisierungsintervall. Der Fehler sinkt in den folgenden Quantisierungsintervallen des Meßbereichs, steigt aber ab Mitte Meßbereich (1/2 Vref) wieder auf 100% im letzten Qantisierungsintervall. Ein Skalierungsfehler, der abhängig von der Eingangsspannung ist.

    Der 100% max. Fehler im ersten und letzten Quantisierungsintervall ist auch bei anderen ADC-Auflösungen zu berücksichtigen.


    Zitat Zitat von Searcher Beitrag anzeigen
    ... rechne ich Vref/(4*2)+Vref*ADC/4. Ich rechne also mit n,
    Bei Verwendung von V=Vref/(n*2)+Vref*ADC/n ist der Fehler über alle Quantisierungsintervalle maximal 50% bezogen auf das Quantisierungsintervall und in jedem Fall, auch bei anderen ADC-Auflösungen kleiner als der maximale Fehler bei a/aMax=v/vMax.


    (Bin bewußt nicht auf Feinheiten an den Quantisierungsintervallgrenzen eingegangen, da sie für mich nur unwesentlichen Einfluß auf meine Betrachtung hätten und hoffe natürlich, daß sich keine Rechenfehler und vor allem keine logischen Fehler eingschlichen haben - nachrechnen erwünscht)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    HaWe
    Gast
    rechne ich Vref/(4*2)+Vref*ADC/4. Ich rechne also mit n
    diese Formel ergibt
    für ADC=0: 5/8+0/4=5/8=0,65V, kann also keine 0V abbilden;
    für ADC=3: 5/8+15/4=35/8=4,375V, kann also auch keine 5V abbilden -
    zugunsten gleich großer Fehlerbereiche.

    Ziel aber muss es sein, den gesamten Volt-Bereich abzubilden, ähnlich wie es eine pwm-Funktion tut: auch hier erwarte ich bei einem 2bit-pwm-Generator pwm(0)=0V und bei pwm(3)=5V (bzw. bei einem 8-bit-pwm-Generator pwm(255)=5V).
    Auch ein digitalWrite(1), analog zu einem "theoretischen" 1-bit-Wandler per analogWrite(1), ergibt ja die vollen 5V.
    Das "Aufspreizen" des Zielwertebereichs auf den vollen Voltbereich (wie bei pwm) erfordert die Inkaufnahme eines größeren möglichen Fehlerintervalls v.a. beim niedrigsten als auch beim höchsten ADC-Wert, aber der Fehler bei ADC-Werten beträgt ja statistisch sowieso ±1 ADC, also geht der "Aufspreizfehler" im statistischen Fehler unter und ist spätestens bei 8-bittern bei 1/255 Schritten auch messtechnisch unerheblich.


    Eine simple Division von 5V/256 Schritte wie im TOP als Möglichkeit ( gegenüber 5V/255 ) angefragt, hätte allerdings überhaupt keine Berechtigung.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    899
    1) ein Wert repräsentiert 1/Res vom Messbereich (Res = Resolution)
    2) Lt. DB ist der höchste vom Wandler ausgebbare AD-Wert "Res-1" äquivalent zu URef-URef/Res (...and the maximum value represents the voltage on the AREF pin minus 1 LSB)

    3) In den Dreisatz eingesetzt
    (URef-URef/Res)/(Res-1) = U/ADWert

    4) Für ADWert= Res eingesetzt:
    (URef-URef/Res)/(Res-1) = U/Res

    umgestellt:
    Res*(URef-URef/Res)/(Res-1) = U

    Res im Zähler herausgekürzt:
    (Res*URef-URef)/(Res-1) = U

    Und aus dem Zähler das URef herausgezogen:
    Uref(Res-1)/(Res.1) = U

    Gekürzt:
    URef= U (für ADWert = Res)

    Das zeigt zwei Dinge:
    a) URef wird in der Skalierung nie erreicht, da das eingesetzte Res vom AD-Wandler nicht ausgegeben werden kann (es fehlt eine Bitstelle)
    b) Wenn der hypothetische AD-Wert Res gleichbedeutend zu URef ist, kann ich den Dreisatz auch vereinfacht bilden:

    URef/Res = U/ADWert
    Geändert von Holomino (08.02.2020 um 19:14 Uhr)

  8. #8
    HaWe
    Gast
    Wenn eine angelegte 5V (bzw. 3.3V bei SAMD) Messspannung per ADC-Wert 255 (oder 1023 oder 2047,...) abgebildet werden kann, dann muss es auch möglich sein, diese Werte auf 5V (bzw. 3.3V) zurückzurechnen.
    Genau dazu dient die mathematische Dreisatz-Formel
    a/aMax=v/vMax
    und hier sind die Fehler nicht größer als die immanenten, genuinen und statistischen ADC-Auflösungen und -Fehler.

    kA ob das ein AVR kann, aber meine SAMDs, mein PCF8591 und mein ADS1115 können das.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Oh mann... das ist ja ne Diskussion... da dreht sich einem alles...
    Das geballte Fachwissen eines ganzen Forums in voller Pracht!


  10. #10
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.685
    Zitat Zitat von Gnom67 Beitrag anzeigen
    Oh mann ..
    Genau, da rührt sich mal was. Irgendwie doch ein hübsches Beispiel (mit) der numerischen Mathematik. Sozusagen alles gequantelt - und hier fast "zum anfassen"?

    Ich lass da gern die mathematische Ethik oder Puristik sein (kann man das so nennen?) - also besser: lasse die brave Mathe sein wie sie ist, kümmere mich manchmal herzlich wenig um abgeschlossene, halboffene, beschränkte oder wie auch immer Intervalle, nicht um deren Längen und Grenzen. Solange im Testlauf was vernüftiges rauskommt . . .
    Ciao sagt der JoeamBerg

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Entscheidungshilfe Schritt oder Getriebemotor
    Von Atmega328 im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 30.04.2014, 17:38
  2. Antworten: 5
    Letzter Beitrag: 09.10.2013, 11:50
  3. Suche Drehtisch/Schwenkkopf für Kamera (Schritt oder Servo)
    Von MasterFX im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 13.07.2013, 08:28
  4. Schritt- oder Getriebemotor?
    Von logliner im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 22
    Letzter Beitrag: 28.08.2012, 15:47
  5. welchen motor, schritt oder servo?
    Von x3oo im Forum Motoren
    Antworten: 7
    Letzter Beitrag: 23.03.2010, 22:41

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress