-
        

Ergebnis 1 bis 7 von 7

Thema: Schnelle Messungen mit dem ADC

  1. #1

    Schnelle Messungen mit dem ADC

    Anzeige

    Hallo,
    ich möchte mit einem Tiny 24 an insgesamt 5 Eingängen so schnell und so genau wie möglich die Spannungswerte ermitteln. Funktioniert soweit auch ganz gut, doch leider habe ich inzwischen ein Problem festgestellt:
    Da alle Spannungsquellen sehr hochohmig sind, beeinflussen sich die einzelnen Kanäle gegenseitig
    Inzwischen hab ich auch gelernt, dass es logisch ist, da im Tiny ein Kondensator sitzt, der durch die hochohmigkeit der Eingänge nicht komplett ge-/entladen wird.
    Gibt es eine Möglichkeit, den Kondensator im Tiny per Software zu entladen, ohne dabei viel Zeit zu verlieren?
    Bis jetzt frage ich die einzelnen Kanäle direkt hintereinander ab
    Code:
    [..]
    Wert1=Getadc(0)
    Wert2=Getadc(1)
    Wert3=Getadc(2)
    Wert4=Getadc(3)
    Wert5=Getadc(4)[..]
    Danke schon mal.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.05.2008
    Ort
    Oststeinbek
    Alter
    28
    Beiträge
    607
    Ohne an der Hardware zu spielen sollte es relativ schwer werden.

    Das, was du machen kannst, ist bei jedem Eingang einen kleinen Kondensator gegen GND anzuschließen. Das würde dazu führen, dass der innere Kondensator des Tiny von diesem äusere Kondensator aufgeladen wird und nich so viel Strom durch die hochohmige Leitung geliefert wird.
    Leider führt dieser äußere Kondensator aber auch dazu, dass die Reaktionszeit, mit der sich die Spannung am Eingang ändert, nachdem eine neue Spannung eingestellt wurde, größer wird.
    Musst halt die richtige Größe ausloten.

    Gruß, Yaro

    Edit: ich wollte grad gucken, wie groß der sample and hold Kondensator des Tiny13 ist, habe es im Datenblatt aber nicht gefunden.
    Würde aber ca. 50pF schätzen.
    Mit nem äußeren Kondensator von ca. 150pF sollte dann schätzungsweise ein angemessener Kompromiss gefunden worden sein. Musst es aber halt ausprobieren...

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    Wenn deine Spannungsquelle zu hochohmig ist, würde ich einen Impedanzwandler in Form eines (pro Kanal) Rail-to-Rail Op-Amps vor den ADC hängen.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.586

    Re: Schnelle Messungen mit dem ADC

    Bascom kann ich nicht, weiß auch nicht, welcher Maschinencode aus Deiner Quelle gemacht wird. ABER in den docs der Atmels - soweit ich die etwa 10 controller kenne, die ich kenne - steht genau über das Multiplexen einiges drin. Denke daran, dass Du nur einen ADC hast, der auf die verschiedenen Eingänge gemultiplext wird! Das gibt Timingfragen über Timingfragen. Ich habe mit 1,2 kHz beim Umschalten insgesamt 3 ADCs recht sauber abfragen können. Um ein möglichst genaues Messergebnis zu bekommen, hatte ich in diesem Fall jeweils 12 Messwerte EINES ADC-Kanals gemittelt - macht nette 100 Hz. Wenn Dir das zu langsam ist - dann empfehle ich mal den ganzen Abschnitt ADC im doc genau durchzugehen und auf dessen Grundlage das Timing genau zu planen. Es ist eben wie immer: Geschwindigkeit hat eben ihren Preis *ggg*.

    Zitat Zitat von huzzel
    ... Bis jetzt frage ich die einzelnen Kanäle direkt hintereinander ab ...
    Da scheint mir der Hase im Pfeffer zu liegen. Aber, wie gesagt, ich kenne nicht den späteren Maschinencode von Bascom.
    Ciao sagt der JoeamBerg

  5. #5
    Ich habe jetzt mal noch ein paar Versuchsreihen gemacht:
    Versuch 1: Von Kanal zu Kanal aufsteigende Spannung
    Versuch 2: Von Kanal zu Kanal abfallende Spannung

    Mein Ziel war, das gleiche Ergebnis zu bekommen, egal in welcher Reihenfolge ich die Kanäle ansteuere (was die ganze Zeit nicht der Fall war).

    Und mit

    Code:
               Admux = Admux And &B1111000
               Admux = Admux Or &B0000011
               Waitus 300
               Ledgruen = Getadc(3) + Ledgruen                  'Spannung der LEDgruen messen
               Admux = Admux And &B1111000
               Admux = Admux Or &B0000100
               Waitus 300
               Ledgelb = Getadc(4) + Ledgelb                    'Spannung der LEDgelb messen
               Admux = Admux And &B1111000
               Admux = Admux Or &B0000010
               Waitus 300
               Ledrot = Getadc(2) + Ledrot                      'Spannung der LEDrot messen
               Admux = Admux And &B1111000
               Admux = Admux Or &B0000000
               Waitus 300
               Ldr = Getadc(0) + Ldr                            'Spannung LDR einlesen
               Admux = Admux And &B1111000
               Admux = Admux Or &B0000001
               Waitus 300
               Ft = Getadc(1) + Ft                  'Spannung messen
    hat es sehr gut ausgeschaut

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der S&H Kondensator soll etwa 14 pF sein. Damit die Spanung des externen kondensators nicht zu sehr zusammenbraicht sollte der zusätzliche Kondensator idealerweise wenigstens 1000 mal größer sein, wenn man die volle Auflösung braucht. So ab 10 nF wäre also OK.
    Bei 100 K Quellwiderstand wäre man da schon bei 1 ms Zeitkonstante.

    Ein kleinerer Kondensator um 150 pF ist gerade ganz falsch. Da ändert sich die Spannung trotzdem um 10%, und die zeitkonstante wird 10 mal länger.

    Man kann noch etwas gewinnen, wenn man den AD Wandler direkt über die Register anspricht. Wenn die Beschaltung stimmt, muß man ja nicht erst eine Dummymessung machen. Dann paßt auch die erste Messung.

    Wenn man die 2,5 V Ref. nutzt muß der OP auch kein Rail-Rail typ sein.

  7. #7
    Ich habe mal noch einige Versuche gemacht. Das beste Ergebnis, ohne die HW zu ändern, bekam ich, indem ich vor jeder eigentlichen Messung ADC 32 (Masse) eingelesen habe. Dadurch beeinflussen sich zumindest die einzelnen Kanäle nicht mehr gegenseitig.
    Wenn ich wieder dazukomme, werde ich mal ein paar Kondensatoren ausprobieren.

Berechtigungen

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