PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schnelle Messungen mit dem ADC



huzzel
19.02.2010, 20:49
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

[..]
Wert1=Getadc(0)
Wert2=Getadc(1)
Wert3=Getadc(2)
Wert4=Getadc(3)
Wert5=Getadc(4)[..]
Danke schon mal.

yaro
19.02.2010, 20:58
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...

repi64
19.02.2010, 22:25
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.

oberallgeier
19.02.2010, 22:41
Ba scom 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*.


... 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 Ba scom.

huzzel
19.02.2010, 22:48
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



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 :)

Besserwessi
19.02.2010, 22:49
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.

huzzel
24.02.2010, 09:18
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.