Forum: Mikrocontroller und Digitale Elektronik newbie q: 8 oder 16 bit ADC?


von Bonebit (Gast)


Lesenswert?

Hi,
ich habe ein analoges Signal (ziemlich linear) das sich von 0 bis ca. 4 
V bewegt.
die anwendung soll die spannung an einem LCD element zeigen.
dafür brauche ich doch erst einmal einen ADC...
2 lithium batt. sollen 6 V spannung liefern
signal soll recht schnell und fehlerfrei "ankommen"
T. kompensiert
aber welchen jetzt?
8 bit oder 16? ich habe einen bereich von 0-4V und möchte noch drei 
spannungen auf +/- 0,01 V genau "abgreifen", soll heissen, dass an den 
drei spannungen ein akkustisches signal erzeugt wird.
8 bit geringere Auflösung und damit ungenauer?
heißt 8 bit, dass ich 8 digitale ausgänge habe, die mir das signal von 
0000.0000 bis 1111.1111 liefern?
was kann man an einem µC alles programmieren? kann ich das signal mit 
anderen funktionen addieren?
ich würde auch noch gerne über die zeit die steigung berechnen wollen, 
dann brauche ich noch einen oszillator und timer.

was empfehlt ihr mir?

bin auch über gute links zum µC grundsätzlich und ADC und thema bit...

von BernhardT (Gast)


Lesenswert?

Messbereich 4V
Auflösung = 0.01
4V / 0.01 = 400 Schritte d.H. mit 8 bit kommst du nicht mehr hin 2^8 = 
256 . Mit 10 Bit 2^10 = 1024 sieht es besser aus. Mann darf aber 
Auflösung nicht mit Genauigkeit gleichsetzten - sollte trotzdem langen. 
Viele AVR's haben einen 10bit
AD-Wandler eingebaut. Du solltest dir unbedingt hier das AVR-Tutorial 
anschauen wegen den Grundlagen. Ich würde dir dringend empfehlen dir mal 
einen Comiler-Demo aus dem Internet zu ziehen  bei dem du auch die 
AD-Wandler Eingänge simulieren kannst. Der E-LAB Pascal Compiler scheint 
mir da Ideal. Da ist auch ein Demoprog dabei bei dem du Spannungen über 
Regler auf dem Simulator einstellen kannst, die dan auf einem 
simuliertem LCD-Display angezeigt werden. Die von dir gewünschten 
Mathematischen Funktionen must du dan schon noch selber schreiben. Mit 
Pascal hast du dafür aber eine optimale Sprache und kannst die dann auch 
gleich auf dem PC simulieren. Die Demo kann übrigens mit 4Kb z.B. mehr 
als ein AVR90S2333 an Programmspeicher hat. Dein Projekt kannst du 
sicher damit komplett programmieren. Pascal verbindet die Einfachheit 
von Basic mit den Anforderungen an eine Vernünftige Hochsprache. Für den 
ersten Einstieg ist ein guter Simulator, viele Demoprogramme und 
deutschsprachige Dokumentation oft sehr hilfreich. Wenn du mal Blut 
geleckt hast, kannst du ja immernoch auf WINAVR (sauguter, kostenloser 
C-Compiler ohne jegliche Einschränkung aber sehr spartanisch) umsteigen.
Gruß Bernhard

von Bonebit (Gast)


Lesenswert?

ich gehe jetzt genauer auf die komponenten ein

das ganze soll ein teil einer Wetterstation werden...
der Drucksensor liefert bei 115kPa  4V

jetzt noch mal zur Auflösung:
also der Drucksensor hat eine Sensitivität dann von 4V/115kPa = 34,8 
mV/kPa

nehme ich jetzt einen 8 bit ADC
-> Auflösung = 6V(Referenzspannung)/255 = 23,5 mV/Bit
bei 16 bit ADC:
-> Auflösung = 6V / (2^16-1)= 0,09 mV/bit
bei 10 bit ADC
-> Auflösung = 6V/(2^10-1) = 5,86 mV/Bit

den Fehler vom Sensor mal ausser acht gelassen...
welcher ADC ist optimal für mich, damit ich die Spannung möglichst genau 
auf 0,01 V ansteuern kann, um z.B. bei 1,52 V ein akkustisches Signal 
ertönen zu lassen?
Da ich ja auch noch die Steigung der Geraden berechnen will, über einen 
best. Zeitraum, brauche ich eine Komponente, möglichst eine hochwertige, 
die eine Timerfunktion hat.
Brauche ich eigentlich noch ein BCD/7-Segment oder kann ich vom µC 
direkt in das 7-Segment?

Welchen ADC (>10bit) empfehlt ihr mir? Gut wäre ein billiger zum testen 
und ein hochwertigerer für die Anwendung.

ich habe zwar etwas ahnung über hoch-, tiefpässe, OP und ausreichend 
grundlagen in ANSI-C, aber mit µC habe ich mich noch nicht 
beschäftigt...
empfehlt ihr mir selber ein entwicklungsboard zu bauen oder ein teures 
zu kaufen?

hat jemand einen link parat, zum thema ADC speziell in der Anwendung

von Dirk (Gast)


Lesenswert?

Hi,

ich empfehle dir den AT8535. Er hat 8 ADC`s mit jeweils 10 Bit. Dein Ad 
Wandler ist aber nur so genau wie deine Ref Spannung ist. Du solltest 
deshalb ein Referenzspannungs IC nehmen. Weiss die genaue Type im moment 
net. Die gibt es als 2.56 V oder 5.1 V mit Adj. Pin. Ich hab mir fuer 
mein 8535 selber ein Entwicklungsboard gebaut. Kostenpunkt somit nur 20 
Euro , dazu kommt der Programmer ca 10 € und RS232 - TTL 
Pegelwandler ca 5 €. Anstatt der 7 Segmentanzeige empfehle ich dir 
ein 16 x 2 LCD. Timerfunktion mit Interrupt laesst sich auch schnell mit 
dem µC realisieren.
Nochmal zu deiner Messgenauigkeit. Jeder ADC bei mir hat eine 
Messgenauigkeit von 0.01 V und bei mir liegen an den ADC`s 
Spannungsteiler mit einfachen Kohlewiderstaenden.
Hohe Messgenauigkeit erreichst du nur bei niedriger Referenzspannung.
Spiel erstmal mit den ADC`s vom µC , wenn es Dir nicht reichen sollte 
kannst du immer noch ein 16 Bit ADWandler per I2C Bus ansschliessen ,und 
den µC zum berechnen der Graden benutzen. Achja falls du kein C oder ASM 
proggen kannst es gibt auch Basic Compiler.

Mfg

Dirk

von Schmittchen (Gast)


Lesenswert?

> Hohe Messgenauigkeit erreichst du nur bei niedriger Referenzspannung.
Falsch, vielleicht meinst du ja Auflösung.

Bonebit, geh die Sache anders an. Definiere einen bestimmten 
(Luftdruck)Bereich, den du gerne messen möchtest. 0-800hPa werden dich 
wahrscheinlich nicht interessieren. Mittels OPV-Schaltung diesen Bereich 
"ausblenden", dafür den interessierenden Bereich "aufziehen".
Mach dich frei von deinen 0,01V - beziehe das auf deine gewünschte 
Auflösung und Genauigkeit.
z.B. definierter Messbereich 800-1200hPa -> 0-5V
danach dann AD-Wandler aussuchen.

Schmittchen.

von Manfred Glahe (Gast)


Lesenswert?

Hallo,
der Einfachheit halber eine Referenzquelle von 4.096V und Du sparst Dir 
bei 12 Bit Auflösung (1mV/Bit)die Umrechnung.
REF = MAX6164, ADW = MAX1284, 2 Stück bekommst Du jeweils als Muster 
kostenlos.

MfG  Manfred Glahe

von Bonebit (Gast)


Lesenswert?

Schmittchen, so hört sich das gut an, allerdings sehe ich das 
"ausblenden" und "aufziehen" wieder mit Fehler verbunden.
Aber ich probiere jetzt erst mal...

Manfred, wie kommt man am einfachsten an Muster als Privatperson ran? 
Irgend ein Tip, der bei den Herstellern immer zieht oder senden die 
jedem ein Muster?

von Manfred Glahe (Gast)


Lesenswert?

Hallo Bonebit,
mein Sohn hat noch als Student auch ohne Probleme seine Muster bekommen. 
Ich empfehle einfach eine ehrliche Anforderung mit der ausfürlichen 
Angabe des Verwendungszweckes. Wer mit den MAX Bausteinen zufrieden war 
wird sie auch später im Beruf nutzen wollen. Das machen sich nun auch 
immer mehr Hersteller zu nutze. Der Nachteil dieser Entwicklung ist 
allerdings, daß man (auch als UNI) immer häufiger nur noch 50 oder gar 
100 Stück/ IC abnehmen muß wenn man sich mal dafür entschieden hat. So 
holen die Hersteller sich offenbar das Geld wieder rein.
MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

Ich würde nicht irgendwelche exotische Referenzen einsetzen.

Die interne Referenz ist doch sehr konstant.

Letztendlich willst Du ja auch nicht mV haben sondern kPa.

Und Rechnen ist ja nun wirklich eine Sache die jeder MC am liebsten 
macht.

Dann kannst Du auch gleich Deinen Sensor in Software kalibrieren.
D.h. du mißt bei einer linearen Fuktion an 2 Stellen, berechnest daraus 
die Korrekturwerte (Nullpunkt und Anstieg) und legst diese dann im 
EEPROM ab, wo sich die Rechenroutine die Werte dann rausholt.


Peter

von Manfred Glahe (Gast)


Lesenswert?

Hallo Herr Dannegger,
das ist keine exotische Referenz, sondern ein intelligente!
MfG  Manfred Glahe

von Bonebit (Gast)


Lesenswert?

danke peter das bringt mich voran!
ich will ja umrechnen, drum ja auch der µC ausserdem wär ja wieder ein 
bauteil mehr! aber falls ich doch ne konstante referenzspannung

Bei den Sensoren hab ich den MPXV4115V von Motorola oder den KP120 von 
Infineon im Auge...
beide schon mit integr. signalverstärkung, tempkompensation und 
Kalibrierung
Kann mir da jemand sagen ob ich nicht bessere (das ist mir wichtig) 
bekomme (schließlich bewegt sich der luftdruck auch nicht so 
wahnsinnig... vielleicht werde ich mal bergsteigen gehen... die höhen 
von den bergen sind ja ziemlich genau vermessen... denk ich mal)

wegen den mustern...
ich hab jetzt motorola und infineon angeschrieben und erklärt, dass ich 
den der konkurenz in der hobbyanwendung drinnen habe und mal ihren 
testen würde...

ich bin aber schon am überlegen ob ich das wirklich abwarten kann... 
schnell werden die nicht kommen...

von Bonebit (Gast)


Lesenswert?

ich werde den beitrag etwas ruhen lassen, die theorie ist mir jetzt klar 
und von anderen Beiträgen hier konnte ich auch ne menge mitnehmen... 
aber ich sollte mal wieder an die FH...
leider bin ich nicht im studiengang elektrotechnik, bei uns wurden nur 
die Grundschaltungen wie Pässe, OPV... behandelt. Ärgert mich schon!

ach und war jemand auf der sensor2003 in Nürnberg? war nicht der hit, 
finde ich, die haben eher marketing experten hinter den ständen als 
Leute die auch was technisches zu den Produkten erzählen können...

ich lass jetzt jedenfalls alles mal ruhen bis ich die hardware habe.

aber danke für die antworten...
irgendwelche probleme werden mit sicherheit auftauchen...

man sieht sich

von Manfred Glahe (Gast)


Lesenswert?

Hallo Bonebit,
aus gegebenem Anlaß noch mal eine Präzisierung meiner Vorschläge:
Die Festlegung auf 12 Bit und einer Referenz von 4096 mV/Bit macht 
selbstverständlich Sinn für anspruchsvollere Anwendungen mit mehreren 
Analogen Pfaden für Ein- und Ausgabe. (Wenn man mit den internen ADW's 
nicht arbeiten kann oder will, wofür es für -erfahrene Praktiker- viele 
Gründe geben kann).
Die externe analoge Elektronik verfügt über immer gleiche 
Schnittstellen und kann dadurch automatisch mit einem DA-    Ausgang bei 
schrittweiser (bitweiser) Erhöhung der    Ausgangsspannung getestet 
werden (und umgekehrt) wenn die von der externen Elektronik generierten 
Werte wieder synchron eingelesen werden (Eine Kalibrierung und 
Funktionsprüfung ist so auch im Anwenderprogramm während des Einsatzes 
möglich) . Ein ADW verarbeitet nur SPANNUNGEN und nichts anderes! Den 
daraus resultierenden Luftdruck rechnet der µP nun auch wieder nicht "so 
gern" um, er muß es halt. Aber 1mV/Bit am AD Eingang ist immer sinnvoll, 
"krumme Werte" ergeben sich leider von selbst! Es ist offensichtlich, 
daß die Vorgehensweise bei solchen Problemen davon abhängt ob man nun 
von der Hardware kommt oder mehr der Software nahesteht. Wer nicht genau 
mißt, der kann sich die "Software" basierte Kalibrierung auch gleich 
schenken!

MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

Puh, da verwechselt wohl einer Genauigkeit mit Auflösung !

Das ist aber wirklich nur ein vollkommen theoretisches Modell, daß ein 
ADC mit 1mV Auflösung auch wirklich bei 1mV, 2mV, 3mV usw. auf den 
nächsten Digitalwert springt.

In der Praxis jedoch heißt, daß ein ADC auf 1 LSB monoton ist nur, das 
der Fehler immer kleiner als 1LSB ist.

D.h. ein praktischer ADC kann z.B. bei 1mV, 1,1mV, 2,9mV, 4,5mV usw. den 
nächsten Digitalwert ausgeben.

Daher ist es also völlig egal, ob die theoretische Schrittweite nun 
exakt 1mV oder 1,1mV oder sonstwas ist.


Die Genauigkeit ist aber wieder ein völlig anderes Ding. Bei manchen 
ADCs ist sie z.B. nur 2 .. 4 LSBs, d.h. gewandelte 10mV können als 7 
oder auch 13mV angezeigt werden.


Meistens sind die ADCs nicht die schnellsten, d.h. bis die nächste 
Wandlung fertig ist, wartet der MC nur unnütz rum.
Also genug Zeit, um an dem vorher gewandelten Wert noch etwas 
rumzurechnen.

Ich weiß, daß Rechnen wird von Anfängern nicht besonders gemocht. Das 
trifft aber für alles zu, was der Prozessor nicht direkt in einem Befehl 
machen kann, also wofür man einmalig eine kleine Routine schreiben muß. 
Aber z.B. für den AVR gibts ja nun wirklich genug Beispiele für die 
Grundrechenarten im Web.

Bei Verwendung eines C-Compilers sind die entsprechenden Funktionen 
schon in den Bibliotheken enthalten, d.h. die entsprechenden 
Unterprogramme werden automatisch mit eingebunden, wenn man z.B. Y=aX+b; 
schreibt.


Seitdem ich die Softwarekalibrierung nehme hat die Stabilität und 
Zuverlässigkeit deutlich zugenommen. Ein Poti kann nun mal leicht 
verstimmt werden oder altern. Besonders bei benötigten hohen 
Genauigkeiten ist der Stellbereich oftmals sehr klein. Dann muß man das 
Poti sehr oft hin und herdrehen, bis es endlich zufällig bei Offset 
0,00000V bzw. Gain 9,99985V (alte 16Bit-DAC-Karte) stehen bleibt.
Auch deshalb repariere ich nur sehr ungern Altgeräte.

Ein EEPROM hält seinen Digitalwert zumindest genau so stabil und lange, 
wie der MC sein Programm behält.


Peter

von Andi_K (Gast)


Lesenswert?

Ich habe eine Frage zur Spannungsreferenz, da es
ja angesprochen wurde:

Mein ATMega8L hat, wie die meisten anderen µC von Atmel auch, eine 
interne Referenz von (angeblich) 2,56V. Ich habe da mal einige 
AD-Wandlungen durchgeführt und bin beim Vergleichen der Analogen und 
Digitalen Werte darauf gestoßen, daß der µC eine Uref von 2,707V hat. 
Genau das hat mir dann auch mein Multimeter gesagt, als ich den Vref-Pin 
gemessen habe.

Wie kann das sein, dass Atmel mit 2,56 V prahlt
(und das auch mit 2 Nachkommastellen in Datenblättern
angibt) , obwohl die tatsächliche Referenz 2,707 V
bei meinem µC hat ???

PS:
Ich bin mittlerweile dazu übergegangen, auf einen
einfachen niederohmigen Spannungsteiler als Referenz
zurückzugreifen, bei dem ich mir nach belieben 1024,
2048 4096 mV auf 1 mV genau einstellen kann. Denn
Vertrauen schenke ich den Sp.Referenzen nicht mehr.

von mikki merten (Gast)


Lesenswert?

@Andi_K
An welcher Stelle im Datenblatt prahlt Atmel den mit hochgenauer 
Spannungsrefenz. In den Datenblättern steht Vint min. 2,3 V typ. 2,56 V 
max. 2,7 Volt. In hochgenaue Referenzspannung kann man bei eine 
Mikrocontroller für den Massenmarkt ja auch nicht erwarten.

Der von dir genannte niederohmige Spannungsteiler ist auch noch keine 
Garantie für eine auf ein Millivolt genaue Referenzspannung. Dazu muß ja 
die Versorgungsspannung für den Spannungsteiler ja entsprechend genau 
und stabil sein.

von Andi_K (Gast)


Lesenswert?

@mikki

In jedem Datenblatt eines Atmel µC mit AD
und interner Referenz wird unter "features"
geschrieben:

"Selectable 2.56V ADC Reference Voltage"

und in ADMUX kann man mit 11xxxxxx

"Internal 2.56V Voltage Reference with external capacitor
at AREF pin"

einstellen. Es wird also immer von genau 2,56V gesprochen.
Wenn man dann zum Schluß aber angibt (wie du schon sagst)

"Internal Voltage Reference =2.45 / 2.56 / 2.80 V"

Dann ist das nicht nur verwirrend,sondern einfach nur
falsch seitens des Herausgebers. Ich habe mich
von dieser 2,56V-Angabe fehlleiten lassen. Das muss
ich zugeben. Dann soll man es bis zum Schluss Symbolisch
"Vref" nennen und nicht ständig auf 2 Kommastellen angeben!



Zu meiner eigenen Referenz: Du hast da schon recht, was
die Versorgungsspannung angeht. Diese muss ich natürlich
konstant halten und auch gut kennen. Ich mache das
mit einem selbstgebastelten Netzteil mit 7805er Reglern
und ausrechenden Dämpfungsgliedern. Damit ist meine
Restwelligkeit unterhalb der AD-Auflösung. Und die knapp
um die 5 V liegende Versorgungsspannung ist nun recht
zuverlässig messbar.

MfG

von Peter D. (peda)


Lesenswert?

Auf der Atmel Roadshow wurde das auch angesprochen:

Die Referenz ist zwar hochkonstant, aber nicht hochgenau.

Deshalb wird empfohlen, die Referenz zu messen und dann im EEPROM einen 
Korrekturwert einzuspeichern, mit dem dann die Software wieder ein 
hochgenaues Ergebnis errechnen kann.

Für den Bastler dürfte das kein Problem sein.

Interessant ist auch, daß man bei einigen Atmels den EEPROM gegen 
Löschen schützen kann. Dann kann man das einmal für alle seine MCs 
machen und die Rechnung stimmt auch dann, wenn man mal einen anderen MC 
einsetzt. Bzw. man muß nicht jedesmal nach dem Flashen auch den 
Korrekturwert neu in den EEPROM schreiben.


Für die Massenproduktion muß man diese Kalibration eben während des 
Endtests der Geräte vorsehen.


Peter

von Manfred Glahe (Gast)


Lesenswert?

Hallo Herr Dannegger,
ich verwechsele ganz sicher nicht Genauigkeit mit Auflösung! Wenn ich 10 
Bit Genauigkeit erreichen möchte und einen 12 Bit Wandler benutze habe 
ich selbstverständlich eine höhere Genauigkeit zur Verfügung. Und damit 
Sie nicht wieder Mißverstehen, das 'Bitklappern' der beiden niedrigen 
Bits ist nicht mehr Ausschlaggebend, da sie nicht mit verarbeitet 
werden. Desweiteren lassen Ihre Ausführungen über Datenblattangaben 
darauf schließen ,daß Sie wenig praktische Erfahrung im Aufbau von 
kompletten ADW Systemen haben sonst würden Sie die Herstellerangaben 
nicht mehr als Kriterium herranziehen sondern nur noch als schöngefärbte 
Laborergebnisse!
Ich darf Sie auch daran erinnern, daß Sie mir schon einmal bei einem PIC 
Programm vorgehalten haben, ich würde unübersichtliche Programme 
vorstellen. Daraufhin habe ich Ihnen eine Rutine von Mikrochip 
vorgestellt welche in fast genau der gleichen Weise aufgebaut war. Sie 
sind mir allerdings den Ihrigen, angekündigten Programmcode bis heute 
schuldig geblieben. Haben Sie die Generatorsteuerung nicht verstanden 
oder war es einfach zu viel Arbeit darüber nachzudenken? Es ist 
offensichtlich für Sie einfacher zu kritisieren als eigene KOMPLETTE 
Entwürfe vorzulegen!

MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

@Manfred Glabe,

ich habe im Gegenteil die Erfahrung gemacht, daß bei sorgfältigem 
Schaltungsaufbau und guten ADCs durchaus die volle Auflösung zu erzielen 
ist, d.h. aufeinanderfolgende Wandlungen nur um max +/-1 voneinander 
abweichen.

In einer Applikation eines Regelkreises habe ich durch Mittelwertbildung 
über 16 Meßwerte sogar noch 2 zusätzliche Bits an Auflösung rauskitzeln 
können.

Schlechte Erfahrungen habe ich nur mit ADCs gemacht, die im MC 
integriert sind. Da tritt dann durchaus der Effekt auf, daß die unteren 
Bits wie wild zappeln.

Es hat also schon seinen Grund, warum externe ADCs meist wesentlich 
teurer sind, als ein MC mit ADC intern.



"Haben Sie die Generatorsteuerung nicht verstanden..."

das war doch genau mein Kritikpunkt gewesen, daß man vor lauter "GOTO" 
und fester Zahlen ohne Angabe wie diese berechnet wurden total den Faden 
verliert, was wie passiert, wo was weitergeht, wo eine Funktion aufhört 
und eine andere beginnt usw.

Aber wenn es sich nicht um konstruktive Beiträge handelt, sondern um 
persönliche Differenzen, sollte man das besser per E-Mail ausmachen.

So ein Forum soll ja nicht zur Tortenschlacht verkommen.

Also auf ein Wiedersehen per E-Mail,

Peter

von Manfred Glahe (Gast)


Lesenswert?

Hallo Herr Dannegger,
"Puh, da verwechselt wohl einer Genauigkeit mit Auflösung !"
Dann hätten Sie das besser auch per Email gemacht.
Sie  hatten die Schaltung und die Aufgabe! Und Sie haben es als 
'einfach' beschrieben das Problem zu lösen. Wenn Sie dann ankündigen ein 
'struktutriertes Programm' vorzulegen (und sei es auch nur aus 
sportlichem Ehrgeiz) dann hätten Sie das tun können. Von mir aus auch 
per Email!
Ich frage jedenfalls erstmal nach bevor ich jemandem unterstelle er 
verwechsle so fundamentale Begriffe.

Nochwas zum ADW System, eine der seltenen Fehler ist das Überspringen 
von Bitmustern (Missing Code's) mit der von mir beschriebenen 
Vorgehensweise ist das leicht zu erfassen. In solchen kurzen Texten kann 
man nun nicht alles erläutern und deshalb ist Nachfragen doch sinnvoller 
als gleich kritteln.

MfG Manfred Glahe

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.