mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny15 ADC differential


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte am ATtiny15 den Differenzeingang des ADC verwenden.
Funktioniert soweit auch, aber es gibt da ein paar Unklarheiten, über
die sich das Datenblatt und div. App-Notes bisher ausschweigen.

Im Datenblatt steht, dass bei Verwendung als Diffenz-ADC die Auflösung
nur 8bit (normal 10bit) ist. Wie sind dann aber die Werte in den beiden
Registern (ADCL und ADCH) gespeichert? Wird dann nur ADCL verwendet?

Was passiert, wenn die Differenz bei der Messung negativ wird? Kommt
dann Null heraus, wird ein signed-Wert ausgegeben?

Hat da schon mal jemand was mit gemacht?

Sven

Autor: Michael L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da bin ich auch drüber gestolpert. Wenn du dir ADCH und ADCL ausgibst,
dann wirst du feststellen, dass der Differenz-ADC doch 10 Bit kann. Mir
haben 8 Bit gereicht, deshalb hab ich links justiert und nur ADCH
ausgewertet. Seither glaub ich nicht mehr alles was im Datenblatt steht
:-(

Wies mit dem Vorzeichen aussieht weis ich nicht, schätze aber dass Null
bei negatver Differenz raus kommt (wegen den internen Clamp-Dioden).
signed geht schlecht bei 8 Bit Auflösung. Sind ja sonst nur noch 7.

Grüß,
Michael

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich interpretiere das Datenblatt so:

Bei negativer Differenz sollten negative Zahlen heraus kommen.
Das Ergebnis ist als Zweierkomplement zu interpretieren.
Da der Wertebereich -128...+127 beträgt, sind es doch 8 Bit und nicht
nur (wie vermutet) 7 Bit.

Die beiden zu vergleichenden Spannungen müssen sich im Bereich zwischen
2V und Vcc-0,2V befinden, also weit weg von GND.

...

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes

Wo steht das? Habe bis jetzt nur das Datenblatt Rev 1 gehabt, mir jetzt
Rev F geholt.

Man kann halt in den Tiny15 so schlecht reinschauen, aber wenn ich mir
die AD-Werte seriell rausschiebe und auf den Oszi ausgebe, sieht es so
aus, als wäre es ein unsigned 10bit-Wert, wo alles Negative zu Null
wird.

Ich hab hier Ärger, weil der Wandler manchmal nach Einschalten oder
Reset völlig unsinnige Werte bringt, und ich weiss noch nicht, worans
liegt. (Interne Referenz, Differenzeingang mit Gain 20x) Ist sowas bei
euch schonmal aufgetreten?

Sven

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Appnote AVR120 Seite 4 oberer Absatz...

Wenn, wie beim Tiny15, die nutzbare Auflösung auf 8 Bit reduziert
wurde, dann gilt natürlich -128...+127 als nutzbarer Wertebereich.

...

Autor: Michael L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Note that some devices cannot measure negative differences, e.g.
ATiny26" und wohl auch der Tiny15.

Im Datenblatt steht 0...2,56V Differential Input Range
und nicht -2,56V...0...+2,56V. Meine Messung hat aber gezeigt, dass es
von 0...5V funktioniert. 0...2,56V wären 8Bit, 0...5V sind dann 10
Bit.

Zu dem Thema: Was ist denn das für eine Auflösung "16 LSB"?? Bedeutet
das, dass ich die letzten 4 Bit vergessen kann? Das kann ja fast nicht
sein, oder?

Wegen den unsinnigen Werten; hast du eine Dummywandlung zum
initialisieren eingebaut? Die erste Wandlung nach einem Kanalumschalten
ist Schrott und muss verworfen werden!

Michael

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einer negativen Differenz meinte ich nicht, dass eine der beiden
Spannungen negativ gegenüber GND ist, sondern dass die Differenz der
beiden Spannungen negativ ist. Also dass V+ negativer ist als V-, beide
aber positiver als GND.
Die angelegten Spannungen müssen schon innerhalb des
Betriebsspannungsbereiches liegen.

An die Eingänge eines OPV legt man ja auch keine Spannungen außerhalb
des Betriebsspannungsbereiches an.

...

Autor: Michael L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah so, hab ich falsch verstanden, sorry!

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Wegen den unsinnigen Werten

Nee, war mal wieder was ganz anderes: Das Programm begann mit einem
RJMP über den Interrupt-Vector-Bereich, dann die Eingänge enablen und
OSCCAL setzen.

Bei einigen Starts wurden (trotz Brown-Out und Slow-Start mit
Verzögerung 65ms) die Eingänge falsch gesetzt. Wenn ein ADC-Eingang nun
als Ausgang oder mit Pull-Up gesetzt wird, ist klar, dass dann Mist
rauskommt.

Hab ich es rumgedreht: Erst OSCCAL, dann Eingänge setzen. Funktioniert,
aber jetzt wird OSCCAL nicht immer richtig gesetzt.

Hab ich den RJMP weggelassen und gleich am Anfang OSCCAL gesetzt, dann
die Eingänge. Interrupt-Vectoren brauch ich (vorerst) nicht. Jetzt
funktionierts. Frag nich warum...

>>Mit einer negativen Differenz

Also, bei mir bringt der ADC im Differenz-Modus für negative Differenz
Null, 2.56V Differenz sind 10bit (mit interner Ref) (ADCH,ADCL
rausgeschoben und auf Oszi angesehen). Laut des Schematic im Datenblatt
kann er eigentlich auch nur positive Differenzen messen. Frag mich nur,
wie dann der Nullabgleich (beide Diff-Eingänge gleicher Kanal, um
Offset rauszurechnen) funktionieren soll, wenn der Offset zufällig
negativ ist...

Komische Sache das!

Sven

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.