www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 ADC's kombinieren


Autor: Hari (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

habe da einen Kraftaufnehmer (10mV/V) über einen OPAmp an meiem Mega8 
10BitADC angeschlossen.
Die auflösung ist mir aber so zu gering, und auf einen exteren, 
genaueren ADC möchte ich, wenn möglich, verzichten.
Jetzt die Überlegung:
Den Kraftaufnehmer an zwei OPAmps anschließen, wobei jeder einen anderen 
Arbeitsbereich hat, und einen der Mega8 ADC's bekommt. Die 
'Arbeitsbereiche überlappen' dabei etwas. Je nach Wert der beiden ADC's 
wird dann der eine, bzw der andre augewertet.
schonmal sowas gemacht??
ist das aufwändig??

thx

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Prinzipiell möglich. Aber es gibt auch AVRs mit einstellbaren Gain für 
den ADC.

MfG Spess

Autor: Hari (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie mach ich das dann, mit dem eistellbaren Gain?
Für die Justierung bräuchte ich, mit meiner Idee, den Messwert zweier 
bekannter Gewichte, und den Messert ohne Last.

Hari

Autor: Eddy Current (chrisi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier war mal ein interessanter Beitrag:

Beitrag "Re: ADC-Auflösung erhöhen"

Autor: Hari (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thx
hab mir den Betitrag mal durchgelesen, da schreibt einer:

'Motorola hat mal eine AN rausgegeben, die Auflösung mit zwei externen
Operationsverstärkern zu erhöhen.'

kennt die jemend, weiß wo ich sie finden kann?
hab mich schon vergeblich gesucht.

Aber sowas in der Art wäre optimal

Hari

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> kennt die jemend, weiß wo ich sie finden kann?
Das ist ein Standardverfahren, zum Nutzsignal wird gleichverteiltes 
Rauschen dazugegeben und dann über viele Messungen gemittelt. Du kannst 
auch einen Sägezahn draufgeben oder ein Dreieck...

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
10 mV / V

Eine Auflösung von 1mV würde dir also reichen ?
uint16_t getAdcValue (void)
{
    uint8_t AvgCount = 0;
    uint32_t AvgSum = 0;

    for (AvgCount = 0; AvgCount < 128; AvgCount ++) {
        ADCSR |= (1 << ADSC);                      // AD Wandler starten
        while (ADCSR & (1 << ADSC));               // AD Wandlung fertig ?
        AvgSum += ADC;                             // Mittelwert bilden
    }
    return (AvgSum >> 5);
}

Bei Verwendung des internen ADC's nebst Referenz (2,56 V) kommen hierbei 
12 BIT heraus und das funktioniert sehr gut.

Offset, Gain Error etc. mußt du natürlich noch behandeln.

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
atmega16/32 z.b. haben differentielle inputs mit 10x bzw. 200x gain.

falls dir die 10bit auflösung zu wenig ist (die 1024 schritte) brauchst 
du einen externen ADC. und ein gutes platinenlayout sonst sind die 
unteren bits nur rauschen und störungen.

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte die ADCS noch per Hand kalibrieren, indem man offset und gain 
für 2/3 Umax und 1/3 Umax (oder 0V) bestimmt. Dann wird es richtig 
genau. Für die Bestimmung der gemittelten Werte für offset- und 
gain-Korrektur sollten mindestens 4x soviel Werte hergenommen werden, 
wie nachher bei der Messung verwendet werden, um die Auflösung zu 
steigern.

Ferner besteht immer noch die Möglichkeit mit beiden ADCs gleichzeitig 
zu messen, wenn man sie schon frei hat. Dann heben sich Linearitärs- und 
Lagefehler der ADCs schon mal gegenseitig etwas weg.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, ich meine der Atmega8 hat nur einen ADC mit vorgeschaltetem 
Multiplexer.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Hmmm, ich meine der Atmega8 hat nur einen ADC mit vorgeschaltetem
Multiplexer.

Reicht doch völlig aus :-) mit der vorgeschlagenen Lösung kommst du auf 
eine Auflösung von 1 mV.

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die vom OP genannte Idee geht doch auch: Einfach 2 oder mehr ADC-Kanäle 
unterschiedlich dimensionieren (Widerstandsteiler) und dann mit OPAMP 
verstärken. Auswertung dann über Software a là "wenn Meßwert von ADC0 
größer als z.B. 900 dann nehm ADC1 und mach dort die Gleiche Prüfung" 
etc.

Autor: Hari (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal,

werde das so machen, wie es Bernd beschrieben hat, und mit der 
Ausführung von Lutz kombinieren.
Dann dürfte die Auflösung prima sein
1. ADC-Kanal -> gesamter Messbereich
2. ADC_Kanal -> 0-55% vom Messbereich
3. ADC-Kanal -> 45-100% vom Messbereich

@ Christian H.:
ist mir auch klar ;o)

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.