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