-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: ADC Ungenauigkeit, mögliche Fehlerquellen?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391

    ADC Ungenauigkeit, mögliche Fehlerquellen?

    Anzeige

    Hallo zusammen,
    ich habe folgendes Problem: Für einen Kumpel habe ich eine Unterspannungsabschaltung gebaut, diese soll bei 11 Volt automatisch ein Relais betätigen. Nun habe ich einen Spannungsteiler mit 300 KOhm und 100 Kohm genommen um eine Spannung von max. 20V zu messen (bei 20V liegen 5V am ADC an). So sollte ja rechnerisch bei 11V ein Wert von 563 in der AD-Variable stehen. Doch stattdessen muss 730 in der Variable stehen, damit das Relais bei 11V schaltet. Ich habe das mit 3 Messgeräten nachgemessen. Woran kann das liegen?
    Ich habe erste Überlegungen angestellt:
    -Der Spannungsregler gibt nicht exat 5V aus.
    -Die Toleranzen am Spannungsteiler sind zu hoch
    -Die Widerstände sind zu groß, sodass der Strom für den µC zu wenig ist um vernünftig zu messen.

    Aber ich kann da auch völlig auf dem Holzweg sein. Habt ihr vielleicht eine Idee.
    Gruß Hunni

    Code:
    '--------------------------------------------------------------------------------
                         'Grundeinstellungen
    $regfile "attiny45.dat"
    $crystal = 8000000
    '--------------------------------------------------------------------------------
                         'Konfiguration
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Config Portb.3 = Output
    Config Portb.4 = Output
    '--------------------------------------------------------------------------------
                         'Variablen deklaration und ini
    Dim Hysta As Bit
    Dim Ad_wert As Integer
    Dim A As Byte
    Hysta = 1
    '--------------------------------------------------------------------------------
                         'Hauptprogramm
    For A = 1 To 30                                             'Warte 3 Sek, um Einschaltschwankungen abzufangen
    Toggle Portb.3
    Waitms 100
    Next A
    Portb.3 = 0
    
    Do                                                          'Starte Hauptprogramm
    Portb.3 = 1                                                 'ADC-Wert Channel 1 in Ad_wert
    Ad_wert = Getadc(1)                                         'Ist Hystarese nicht gesetzt, überprüfe auf Unterspannung
    If Hysta = 1 Then                                           'Wenn Wert unter 11 Volt, schalte Relais
    If Ad_wert < 730 Then
    Portb.4 = 1
    Wait 2
    Portb.4 = 0
    Hysta = 0                                                   'setze Hystarese
    End If
    Else
    If Ad_wert > 750 Then Hysta = 1                             'Wenn Hystarese gesetzt, überprüfe ob Spannung wieder über Schwellwert ist
    End If
    Portb.3 = 0
    Wait 1
    Loop
    Angehängte Dateien Angehängte Dateien

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Wie hoch ist den die Toleranz der Widerstände?
    Das kann eventuell das Problem sein. Und sicher das du einen 300k genommen hast und keinen 330k?
    Und woher nimmt dein A/D-Wandler die Spannungsreferenz? Ist das die Versorgungsspannung oder eine Referenzspannungsquelle?
    Weil wenn die Versorgungsspannung auch gleich die Referenzspannung ist könnte das problematisch werden, wenn die Spannung bei Last schwankt oder so.
    Und wenn du "normale" Widerstände mit 5% Toleranz genommen hast kann das auch dazwischen funken.
    Bei 5% Toleranz an beiden Widerständen hast du bei +5%:
    Statt 300k 315k
    Statt 100k 105k
    und bei -5%
    Statt 300k 285k
    Statt 100k 95k

    Wenn du mal den Extremfall betrachtest und der 300k +5% hat und der 100k - 5% sind das 315k und 95k in Reihe und das wäre ein Spannungsabfall von 2,54V an dem 100k Widerstand und das wäre ein A/D-Wert von ca 640.
    Du siehst das die Toleranzen da schon richtig reinpfuschen
    Eventuell Messwiderstände nehmen (0,1% Toleranz) und dann noch eine Referenzspannungsquelle.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Zitat Zitat von hunni Beitrag anzeigen
    -Die Widerstände sind zu groß, sodass der Strom für den µC zu wenig ist um vernünftig zu messen.
    Es könnte sein, dass der 100 kOhm Widerstand im Spannungsteiler zu gross (empfohlen ist < 10kOhm) bzw. die "sample & hold" Zeit zu kurz ist.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Zitat Zitat von PICture Beitrag anzeigen
    Es könnte sein, dass der 100 kOhm Widerstand im Spannungsteiler zu gross (empfohlen ist < 10kOhm) bzw. die "sample & hold" Zeit zu kurz ist.
    So ist es. Der ADC ist für Eingangswiderstände kleiner 10kOhm ausgelegt. Du könntest versuchsweise Mal einen kleinen Kondensator (Pi Mal Daumen würde ich 100nF ansetzen) an den Pin anschließen, der könnte die Problematik evtl. entschärfen. Und dann kommen eben die schon erläuterten Toleranzen ins Spiel ...

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    Also die Toleranz liegt bei 5%...ja ich weiss das ist zum Messen nicht optimal, aber ich habe die Schaltung aus halt aus den Sachen gebaut, die ich hier so rumfliegen hatte. Also um eine genaue Messung zu haben, besser 3 KOhm und 1 KOhm und an den ADC-Pin ein kleinen Kondensator zur entstörung?
    gruß hunni

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Du kannst ruhig auf 30 und 10k rauf gehen denk ich mal.
    Du musst bedenken....je kleiner die Widerstände sind desto mehr Strom fließt und das permanent.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Mit einem Kondensator von ca. 100 nF dürfen die Widerstände auch deutlich größer sein. Die jetzigen 100 K und 300 K sind dann kein Problem, und wenn man man nicht gerade immer abwechselnd 2 Kanäle misst oder bei hohen Temperaturen (>60 C), dürften die Widerstände sogar noch deutlich (z.B. 10x) größer werden.

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von hunni Beitrag anzeigen
    Für einen Kumpel habe ich eine Unterspannungsabschaltung gebaut, diese soll bei 11 Volt automatisch ein Relais betätigen.
    Ich wüsste ein Workaround:
    • Zenerdiode -> Relais (Es wird exakt ein Bauteil benötigt, da ja das Relais schon vorhanden ist)
    • Komparator -> Relais

    Was ich aber nicht wüsste: Wieso braucht man dazu einen AVR?
    Grüße
    Thomas

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    Was ich aber nicht wüsste: Wieso braucht man dazu einen AVR?
    1. Weil ich den gerade da hatte
    2. Weil eine Hysterese vorhanden sein sollte ("flimmern" der Spannung vermeiden, kein erneutes Abschalten etc.)
    3. Weil das Schaltsignal nicht länger als 2-3 Sek dauern sollte, da ansonsten der PC ein Hard-Shutdown bekommt.
    (Ich schalte damit den Taster am Computer, damit der Computer ganz normal runterfährt und runtergefahren ist, bevor die Akkus in der USV keinen Saft mehr haben und die USV dann einfach abschaltet)

    Deswegen braucht man einen AVR

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.05.2006
    Beiträge
    183
    Gibt es nicht immer einen Grund für einen AVR

    Wenn es sich um ein Einzelstück handelt, spielen die Toleranzen eine untergeordnete Rolle, da man ja einfach mal messen kann bzw. wie du ausprobieren welcher Wert passt.
    Zu bedenken ist nur, dass falls die Versorgungsspannung nicht sauber stabilisiert ist, diese ebenfalls einen Einfluss auf den nötigen Grenzwert hat.

    gruß christoph

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Mögliche Projekte
    Von piatch im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 22.11.2010, 09:55
  2. niedrigste mögliche motorspannung beim L293B?
    Von pointhi im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 12.10.2010, 17:48
  3. Ultraschallsensor HC-SR04 Probleme ungenauigkeit
    Von anfaenger201 im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 04.08.2010, 15:06

Berechtigungen

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