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
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
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
> 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...
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.
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.
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.
Hmmm, ich meine der Atmega8 hat nur einen ADC mit vorgeschaltetem Multiplexer.
>> 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.