Hallo.
Bitte verzeiht mir meine grenzenlose unwissenheit, Ich bin ein absoluter
neuling auf diesem Gebiet, habe mich bis jetzt lediglich mit SPS`sen und
nem ST6225 mittels Realizer rumgeschlagen.
Ich habe folgendes vor: Ich will einen möglichst pflegeleichten
Microcontroller (so etwas wie der st6) mit ner einfachen Software (in
der art vom relizer :-)) und der controller sollte einen 16bit A/D
wandler besitzen!
Könnt ihr mir eventuell irgendwelche Tipps geben?
MfG Valentin
Es kommt darauf an was Du möchtest. Jeder uController hat seine
Eigenheiten. Wo kommt er zum Einsatz? 16 bit A/D muss sicher zusätzlich
implementiert werden. Worauf kommt es an? Es gibt keine ultimative
Aussage darüber. (Wie immer im wirklichen Leben).
Gruss
Uwe
Danke erstmal für die Antwort!
Ich will damit einen PH Regler aufbauen.
Ich habe mir die Funktion in etwa so vorgestellt:
Ich gebe ihm ein 0-5V signal ein das einem PH wert von 3-10 entspricht.
Über zwei Taster (PH4) und (PH7) lässt er sich kalibrieren.
Dh. er muss lediglich über ein paar rechen funktionen (addieren
subtrahieren multipl. u. divid.) verfügen...
Dann stell ich mit zwei anderen tastern den sollwert ein der soll und
der Istwert soll mir über einen analog port ausgegeben werden.
Und dann bräucht ich noch viell. höchsten zwei drei ein und ausgänge...
nichts weltbewegendes also...
MfG Valentin
Mit 16 und 24 bit hat Analog devices die ADuC 's Das sind eigentlich
ADC's mit angeflanschten 8051-ern oder ARM's. Da gibt es glaub ich
Demoboards und ein abgespeckten Keil dafür.
Kleine dumme frage: Was sind ADUC`s und was sind angeflashte 8051 er
oder arms???
Kannst du mir das so verklicker das es auch der blödeste kapiert?
Ich kann, da ich mit der Materie nicht sehr vertraut bin, mit diesem
Fachjargon leider nicht sehr viel anfangen...
Bin lediglich ein in zwei monaten ausgelernter Elektroniker für BT/AT,
und interessiere mich erst seit kurzer zeit für die Microelektronik...
(Aller anfang ist schwer)
Ach ja, Simi.
Würde das auch beispielsweise mit einem von diesen C-Control controllern
gehen.
Kann ich die dann auch ausgeben?
Verwende ein voltmeter modul und will auf diesem bis auf die zweite
nachkomma stelle anzeigen. und es sollte einigermaßen ruhig sein...
Vermutlich ist es nicht einfach, einen guten analogen AD-Wandler und
einen digitalen Controller auf demselben Chip zu integrieren. Die
Herstellungstechniken sind zu verschieden.
Ich würde einen externen AD-Wandler benutzen. Es gibt für langsame
Messungen bis ca 100 Hz den LTC2400 mit 24 Bit, oder für reine
Wechselspannungsmessungen die AD-Wandler für Soundkarten, ebenfalls bis
24 Bit und 200 ksamples/sec
100 HZ langt dicke!!!
wie sieht des dann mit der digital verarbeitung im chip aus???
was für nen chip nimm ich am besten (sollte ne möglichst kostenlose
komfortable software haben...)
was für nen signal schickt der mir raus (seriell)?
ich hab von der materie echt keine ahnung!
Noch ne dumme frage (hoffe ihr verzeiht mir meine Unwissenheit)
Bei analogen ein-/ausgängen spricht amn ja von der auflösung in bit.
Wie ist es aber wenn ich ein digitales signal (eben von einem A/D
wandler) rein bekomm dieses verarbeite und dann wieder als dig. signal
rausschick auf einen D/A wandler. Was muss ich da beachten? gibt man
auch in bit an was er digital verarbeiten kann? und wie heist das?
ADU oder ADC = Analog Digital Wandler
ARM = ein Mikroprozessor Familie 32 Bit
8051 = eine sehr weit verbreitete Mikroprozessor Familie 8 bit.
Keil = Hersteller von Compilern (besonders C) und entsprechender
Entwicklungsoberflächen
Die ADuC Familie von Analog Devices beinhaltet also ein AD-Wandler und
ein Mikocontroller (wird gerne auch als uC bezeichnet u steht hier als
Ersatz für das Griechische My = µ ) zudem besitzen diese Teile natürlich
auch noch digitale I/O’s und andere Peripherie z.B. auch DA-Wandler .
Wenn du aber mit dem von dir verwendeten Prozessor und
Entwicklungswerkzeugen (relizer) zufrieden bist würde ich auch erstmal
einfach externe AD und DA Wandler verwenden.
Die Auflösung von DA-Wandlern gibt man auch in Bit an. Man bezeichnet
das als Auflösung oder englisch resolution. Wie bei den AD-Wandlern gibt
es auch bei den DA-Wandlern verschiedene Funktionsweisen. Zu beachten
ist unter Anderem der Verwendete Schnittsetellen Art (Parallel oder
seriell etc.) die Auflösung, die Wandlungsgeschwindigkeit mit externer
oder interner Referenz ……etc.
Ich denke, PH Messung wird nicht hochdynamisch sein ;-) (Wie Du ja
selber schon sagtest). Also kannst Du m. E. auch mit weniger Bits
auskommen. Und wenn das ganze ein bisschen verrauscht ist, tut das auch
nichts zur Sache. Hilft sogar.
Wie gesagt: Stichwort Oversampling. Das Prinzip ist, vereinfacht gesagt,
wie folgt:
Stell Dir vor, Du hast einen Komparator. Entweder 0-2.5V oder 2.5V-5V.
Das ist alles, was Du messen kannst. Jetzt willst Du eine Spannung
zwischen 2 und 3 Volt messen. Was tust Du? Du packst ein Rauschen drauf.
Das lässt Dir den Komparator flackern. Und je höher die Spannung wird,
desto öfter wirst Du "1" messen, und desto seltener "0". Mach das 1000
mal, dann mittle. Schon hast Du eine genaue Messung der
durchschnittlichen Spannung über diese 1000 Samples.
Nun - wenn Du 'nen 10-Bit-Wandler hast, dann wird Dir das LSB (das
niedrigstwertige Bit) eh immer rumzappeln. Und das zweite auch, und das
dritte wohl auch noch. Wie gesagt, Rauschen ist in diesem Fall Dein
Freund! Messe 10'000 mal und mittle die Samples. So kriegst Du beliebige
auflösung. Nur halt sehr langsam. Aber das gute dran ist - und das ist
besser als jedes wunderschöne Analogdesign mit teuersten
High-Precision-ADCs, Multilayer mit Power- und Groundplane und
wasweissich...: Das Rauschen wird weg sein! Da kann das wüsteste Zeug
reingemessen werden, wenn Du nach 10'000 Samples den Sack zu machst und
zusammenrechnest, kommt unter dem Strich immer etwa das selbe raus.
Warum machen es dann nicht alle so?
Tja, eben, weil es halt LANGSAM ist. Aber auch, weil Nicht-Ingenieure
UND Ingenieure oft die physikalische Auflösung zu stark gewichten. Ein
Auto mit 300 PS ist besser als eins mit 200 PS. Ob es die auch auf die
Strasse bringt, ist sekundär. ;-)
(Naja, das ist jedenfalls meine Erahrung aus einigen firmeninternen -
aber bereichsübergreifenden "Verkaufsgesprächen". "Aber das
Vorgänger-System hatte doch 16Bit! Warum habt Ihr hier nur noch 14???
Nein, keine Ausreden, ich will wieder 16Bit haben!"
:-)
Das C-Control-System kenne ich nicht. Aber wenn Du 'nen ADC hast, auch
wenn's nur ein 10-Bitter ist, dann geht das sicher. Schau Dir das
gemessene Zeug mal an. Wenn Du erkennst, dass es Dir zu wenig rauscht,
um eine schöne Mittelung zu bekommen, dann leg doch einfach noch 'nen
DOUT hochomig da drauf und lass den ein wenig rumzappeln. Am besten mit
einem Pseudo-Zufallsgenerator, so bekommst Du sicher kein Aliasing. Und
um das auszugeben, würde ich Dir raten, ein PWM-Signal zu generieren.
Dazu wird er wohl auch schon geeignete Hardware-Generatoren haben. Und
wenn nicht -> Software.
Aber ich würde jedenfalls nicht auf externe ADCs zurückgreifen, nur um
eine hohe Auflösung zu bekommen.
Schluck - die ST6 sieht mir etwas altmodisch aus 8bit AD und 8 bit PWM
(Pulswellenmodulation mit Hilfe eines counters/Zähler als art einfacher
DA-Wandler). Ob das reicht kann ich nicht sagen, Simi kennt sich da
sicher besser aus, aber grundsätzlich glaube ich auch, das man mit
weniger meist auch zurechtkommt. Aber ich würde mir diesen Typ heute
nicht mehr antun. Ich bin aber auch sehr von den AVR’s verwöhnt bei den
gibt’s 10 bit AD-Wandler und bis zu 16 bit PWM. Die gibt es an jeder
ecke, super Support hier auf dieser Seite . Die sind sehr billig,
Software für umsonst etc.
Gruß
Ich was das die dinger steinzeit sind, aber sie haben in meinen
bisherigen anwendungen super funktioniert!
Dann muss wohl was neues her...
Schau Ich mir mal an.
Nach genau sowas hab ich ja auch gesucht.(billig, kostenlose software
und genug leute die was davon verstehen. :-)
Und nochmal vielen Dank das ihr mir so fleissig antwortet!!!
Das erlebt man nicht überall!!!!!!!
Oversampling? schreibt Simi doch: häufiger messen und Mittelwert
bilden.
Schau dir doch mal hier unter AVR > AVR-GCC-Tutorial an. Ist eigentlich
eine Einfürung in GCC (ein kostenloser C-Compiler), da wird auch einiges
über AD und DA geschrieben.
ich kann nur davor warnen zu versuchen aus einem 10 bit ADC ein 11. oder
12. bit herauszukitzeln durch langes aufsummieren und dann duch einen
kleineren teiler zu teilen. das ergebnis ist sehr lustig. wenn die
ref-spannung und die temperatur stabil sind kann man die Werte
tatsächlich aufblasen, das Ergebnis sind dann aber ''weiche 10 bit
Treppen'': man kann die tatsächlichen 10 bit dann wiederfinden. Um das
Rauschen zu killen muss man schwache Signale natürlich immer über den
arithmetischen MW (oder Median) bestimmen, das ist klar.
Ich würde auch den exzellenten aber langsamen LTC2400 nehmen, aber nur
dann sinnvoll wenn man eine stabile Referenzspannung und
Versorgungsspannung hat, ansonsten ist es Perlen vor die Säue !
Die µC mit integriertem 16 bit Wandler sind sehr teuer !
Und Finger weg vom PIC14000 !!!!! Nach 2 Wochen der Tüftelei habe ich
die letzten Chips weggeworfen. Siehe auch Ergebnisse von anderen Leuten
die es aufgegeben haben sich weiter mit dem Chip zu beschäftigen.
Langsam wird es für mich schwierig, mich auf eine lösung zu fixieren!
Der eine sagt das der andere das...
Es ist ja echt lobenswert das alle so fleissig antworten, aber es macht
es für einen noob wie mich nicht gerade leicht!
Ich habe mich jetzt eigentlich darauf eingestellt das Tutorial mit
ATmega8 durch zu ackern, und dann, wenn alles soweit klappt, es mit
oversampling zu versuchen...
Es muss lediglich ein ruhiges signal geben, das ich dann schätzungsweise
auf einem LCD darstellen werde.
Habe momentan leider andere probleme, deshalb schläft das Projekt noch
für ein paar tage...
Gruß Valentin
Falls Du Dich doch wieder dranmachst:
Ich denke doch, dass in DEINER Anwendung Oversampling viel besser ist
als ein teurer, externer, hochauflösender ADC. Du willst kleine "Stufen"
in Deinem Messsignal. Das kannst Du schon versuchen, mit 14 oder 16 Bit
zu erreichen. Ich will Dir mal was vorrechnen: Sagen wir, Du kommst mit
einem 10V-Full-Scale-Signal rein (wird wohl noch kleiner sein). Dann ist
Dein LSB 10V/(2^16) = 100 Mikrovolt! Glaube ja nicht, dass Dir dieses
Bit wunderschön stabil bleibt. An Deinem ADC-Eingang wird ein Rauschen
liegen, das um ein VIELFACHES höher ist. Und jedesmal, wenn Du samplest,
nimmst Du einen Schnappschuss aus diesem Rauschen. Mal die obere Spitze,
mal die untere, mal irgendwas zwischendrin.
Wenn Du aber mit 10 Bit samplest, hast Du noch 10mV Auflösung.
Vielleicht musst Du hier tatsächlich das Rauschen noch ein wenig
künstlich verstärken, um gute Resultate zu kriegen. Aber dann machst Du
einen statistischen Mittelwert über 100 oder 1000 Samples. Damit
erreichst Du WIRKLICH wunderschön gleichmässige End-Samples.
Um dies zu verdeutlichen: Stell Dir vor, Du summierst 100 Zahlen, die
immer zwischen 995 und 1005 liegen. Zufällig verteilt (das ist Dein
Rauschen um 5 LSB). Sagen wir, Du würfelst das aus mit einem - hm-
10seitigen Würfel :-). Am Schluss hast Du also ein Zahl um 100'000. Es
könnten auch 99'500 sein oder 100'500. Aber diese Fälle sind EXTREM
unwahrscheinlich. Tatsächlich wirst Du immer etwas zwischen 99'900 und
100'100 kriegen (Und das ist noch SEHR pessimistisch geschätzt). Das
teilst Du wieder durch 100. Und kriegst etwas zwischen 999 und 1001.
Obwohl Du immer nur GANZE Zahlen genommen hast, kriegst Du am Schluss
Kommastellen. 999.5, 1000.3.....
Das ist Oversampling. Und das Rauschen ist durch die inherente
Digitalfilterung verschwunden resp. stark unterdrückt.
Und noch 'nen Vorteil hat das ganze. Du musst Dich viel weniger mit
Aliasing rumschlagen. Das ist auch so ein hässliches Phänomen, das den
ADC plötzlich Dinge messen lässt, die gar nicht da sind. Oversampling
entschärft dieses Problem sehr stark.
Gruss
Simi
Klar, geh Ich da wieder ran!!!
Manche probleme lösen sich doch schneller wie vermutet
(sch... Microsoft)...
Den ISP Programmer habe Ich mir schon zusammen gelötet, nun muss Ich nur
den Controller bestellen (ATmega8), und schon kanns losgehen.
Vielen Dank, genau so habe ich mir das auch vorgestellt. Ist ja ziemlich
simpel (in der Theorie :-) )
Kleine frage Simi was bist denn eigentlich von Beruf?
(wenn ich fragen darf)
MfG Valentin Baer
Salü Valentin!
Cool! Erzähl dann, wie's so läuft (oder - selbstverstänglich - löchere
uns weiterhin mit Fragen)!
Bei Microsoft-Fragen könnte ich allenfalls Fluchen helfen ;-)
Natürlich darfst Du fragen! :-)
Ich bin Elektroäschenjöör... hm... bei Euch sagt man zwar eher
ElektroINschenjöör. :-)
Gruss
Simi
Mach dir da mal keine sorgen!
Ich werde euch noch zu tode löchern!
Ihr werdet es noch bereuhen... ;-)
Ja ja, ich sag nur treiber oder geräte inkompatibilität und die daraus
resultierenden, kaum nachvollziehbaren, zur weissglut treibenden
probleme...
Stimmt, so oder so ähnlich sagts nen Alemanne... :-)
hab ich was überlesen?
wozu braucht man zur pH Messung, noch dazu in einem so eingeschränkten
Messbereich, einen 16 Bit Wandler ??
Verlangt man eine Auflösung von 0,01 pH Einheiten, was schon sehr exakt
ist da man so genau gar nicht kalibrieren kann, dann benötigt man über
den gesamten üblichen pH Bereich von 0 -14 gerade mal 1400 Werte. Bei
einer 2 Punkt Kalibrierung bei 4 und 7 kann man die Endbereiche eh
vergessen, also sagen wir zwischen pH 0 - 10 . Da reicht man mit einem 8
bit Wandler, ein 12 bit Wandler schafft den gesamten pH Bereich locker
mit riesigen Reserven.
Ein 16 Bit Wandler ist sinnlos da die Genauigkeit nicht verwertbar ist.
Wer der Meinung ist eine pH Messung in der dritten Kommastelle
durchzuführen sollte sich mal die Angaben auf den Kalibrierstandarts
ansehen und mit einem Chemiker unterhalten.
Messtechnik sollte auch Sinnhaftigkeit beinhalten.
Ja, hast du...
"So etwas in der art sollte dabei rauskommen:
http://www.dennerle.de/HG07UG09.htm"
Wenn du dir die Beiträge durchgelesen hättest, währe dir aufgefallen das
Ich von dem 16bit wandler weg bin und nun einen 10biter vor mir liegen
habe...
Mir ging es mehr um eine ruhige Anzeige...
Deswegen wollte ich anfangs einen 16er da Ich durch einen gewissen
überfluss an bits eine ruhige Anzeige erhlten wollte.
na dann ist ja alles paletti :-)
Und ich meinte oben natürlich 10 bit, nicht 8bit....
Da PH Messung nicht so sehr zeitkritisch ist solltest du bereits durch
Mittelung über 64 A/D Wandlungen eine akzeptable Ruhe in die Anzeige
bekommen.
Thema C-Control: das sind nix weiter als aufpolierte und schön verpackte
AVRs, die heißen sogar so! Nur dass sie den 6-8-fachen Preis kosten und
einen langsamen C-Interpreter an Bord haben, obwohl ein Mega sowieso in
C programmiert wird. Wieder 'n Beutelschneiderei vom 'C'.
Als 24-Bit ADC kann ich auch den AD7711 empfehlen, ist mit I²C.
Ich verstehe auch noch nicht so ganz, wie mir das Oversampling eine
höhere Auflösung bringen soll? Vielleicht könnt ihr mir ja helfen:
Ich treibe eine Welle mittels eines DC-Motors an. An einem Wellenende
ist über eine Kupplung ein Winkelsensor angebracht, der den absoluten
Wert mißt und eine Spannung zwischen 0 und 5 V ausgibt. Die Auflösung
ist mit 0,5° angegeben. Das macht 720 zu digitalisierende Werte. Mein
Atmega32 hat einen 10 Bit A/D-Wandler, d.h. er kann 1024 Werte ausgeben.
Lande ich damit zwischen den vom Sensor ausgegebenen Werten, muß ich
runden. Den maximalen Fehler habe ich damit zu 0,17° abgeschätzt. Das
ist mir eigentlich zu viel. Mit einem 12 Bit Wandler würde ich einen
max. Fehler von 0,04° erhalten.
Wie kann mir das Oversampling jetzt helfen? Habe ich in meinen
Überlegungen einen Fehler gemacht?
Gruß,
Daniel