Forum: Mikrocontroller und Digitale Elektronik 2 ADC's kombinieren


von Hari (Gast)


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

von spess53 (Gast)


Lesenswert?

Hi

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

MfG Spess

von Hari (Gast)


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

von Eddy C. (chrisi)


Lesenswert?

Hier war mal ein interessanter Beitrag:

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

von Hari (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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

von Bernd (Gast)


Lesenswert?

10 mV / V

Eine Auflösung von 1mV würde dir also reichen ?
1
uint16_t getAdcValue (void)
2
{
3
    uint8_t AvgCount = 0;
4
    uint32_t AvgSum = 0;
5
6
    for (AvgCount = 0; AvgCount < 128; AvgCount ++) {
7
        ADCSR |= (1 << ADSC);                      // AD Wandler starten
8
        while (ADCSR & (1 << ADSC));               // AD Wandlung fertig ?
9
        AvgSum += ADC;                             // Mittelwert bilden
10
    }
11
    return (AvgSum >> 5);
12
}

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.

von Ben (Gast)


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.

von J. S. (engineer) Benutzerseite


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.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Hmmm, ich meine der Atmega8 hat nur einen ADC mit vorgeschaltetem 
Multiplexer.

von Bernd (Gast)


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.

von Lutz (Gast)


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.

von Hari (Gast)


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)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.