Hallo Zusammen, ich stehe vor dem Problem das ich ein Analoges Signal im Bereich von ca. 1.8Volt bis ca. 3.5Volt "messen" muss. Da der ADC offensichtlich im Bereich 0-5Volt arbeitet, verschenke ich fast die haelfte des Messbereiches und somit dringend benoetigte Messgenauigkeit. Ist es irgendwie moeglich dem ADC zu sagen/vorzugeben in welchem Spannungsbereich er messen soll ?! Nach oben hin scheint das laut Doku ueber AREF zu gehen (indem ich dort z.B. nur 3.5Volt anlege). Stimmt das so ? Aber wie kann ich die Untergrenze der Spannung veraendern ? Fuer jeden Erfahrungsbericht/Loesungsvorschlag dankbar, Lars.
Hi Lars! Um den gesamten zur Verfügung stehenden Spannungsbereich des ADC nutzen zu können, brauchst du ein Messsignal, das bei 0 V anfängt. Um deinem Signal das beizubringen, empfiehlt sich eine Subtrahiererschaltung, die den Pegel des Messignals um 1,8 Volt verringert. Das ist eine recht schlichte Schaltung mit einem Operationsverstärker, wenn Bedarf besteht, suche ich mal genaueres raus. Im Idealfalle hättest du dann 3,5V - 1,8V = 1,7 Volt Maximum am ADC-Eingang stehen, und da sollte idealerweise auch die Referenzspannung liegen. Allerdings bleibt anzumerken, dass eine solche Gechichte nicht ganz unkritisch ist, wenn du die 10 Bit des Wandlers wirklich voll nutzen willst. Da spielen dann ganz schnell Offset und Drift des OPs eine entscheidende Rolle. Grüße: Holger
Hi Holger, tatsaechlich kommt das Signal schon aus einem OpAmp (LM741) heraus. Da ich aber als Versorgungsspannung nur GND/+5V zur Verfuegung habe, kann der OpAmp die Spannung irgendwie nicht richtig "runterziehen" (so habe ich mir das zumindest mal ausgedacht, denn eigentlich sollte das trotzdem funktionieren dachte ich) [das gleiche gilt auch nach oben...ich habs nicht hinbekommen das er am Ausgang ueber 3.8Volt kommt]. Es waere deshalb die Frage ob das ueberhaupt moeglich ist da noch einen Subtrahierer Dahinterzuschalten bzw. koennte ich dann gleich die Beschaltung des bereits vorhandenen OpAmp aendern. Evtl. bin ich auch nur zu doof ne OpAmp-Schaltung zu berechnen/bauen, aber viel kann man da ja nich falsch machen hoffe ich ;) Falls es wem hilft koennte ich nen Snapshot von der Schaltung hier reinstellen. Lars.
Hi Lars! Das du mit 'nem guten alten 741 nicht weit kommst, ist völlig klar. Was du brauchst, ist ein sogenannter "rail-to-rail"-OP. Bei denen kann die Ausgangsspannung nämlich Werte bis an die Versorgungsspannungsgrenzen annehmen, und das geht mit einem 741 garantiert nicht. 1,2 Volt unter der Betriebsspannungsgrenze sind ein völlig normaler Wert für einen 741.
hmm du hast mir nich zufaellig eine Modellnummer von sonem OP das ich mir da mal das Datenblatt ansehen kann ? :) Sehr fein waere natuerlich ein 741-Pin-Kompatibler, dann muesste ich die Platine nicht neu machen.
hab mir mal einen LTC1152 besorgt....der ist mit ca. 15DM dann doch leicht teurer als ein 741 ;) Mal sehen ob ich mit dem das Problem geloest bekomme.
Hab' gerade mal bei LT nachgeschaut. Gute Wahl. Viel Glück! Holger
Hmm irgendwie funktioniert der doch etwas anders als der LM741 ;) was ich will ist einen Widerstandswert R_M der im Bereich von ca. R_min = 900 Ohm bis R_max = 1400 Ohm liegt auf den Spannungsbereich 0 V bis +5 V abzubilden (kann auch invertiert sein, ist egal). Zur Verfuegung steht ein LTC1152 und GND/+5V Versorgungsspannung. Falls sich jemand gut mit OpAmps auskennt waere ich fuer eine Berechnung/Formel/Hinweise/Alle infos dazu dankbar :) Bisher habe ich dass so, das am nichtinvertierenden Eingang ueber einen Spannungsteiler (1,5k gegen Masse, R_M gegen VCC) der R_M eingeht. Am invertierenden Eingang habe ich ebenfalls ueber einen Spannungsteiler eine "geeignete" Spannung angelegt und der Ausgang des Amps ist ueber einen Widerstand R_R ebenfalls auf den invertierenden Eingang rueckgekoppelt. Na ich such nochma das Kapitel ueber OpAmps raus, mal sehen ob ich das nich selber loesen kann ;) Lars.
Hi Lars, versuche doch mal folgendes: invertierender Eingang des OP`s vorspannen (z.B. 1,8V), die Messpannung an den nichtinvertierenden Eingang. Den OP so beschalten, das du eine Verstärkung erhältst die eben bei 3,5V am Eingang die 5V am Ausgang ergibt. Evt. noch eine Begrenzung vor dem ADC vorsehen. Und einen anständigen OP benutzen, der LTC ist sehr gut geeignet. Musst du den OP eigentlich mit 5V betreiben? Wenn nicht, kannst du auch einen LM358 nehmen, sind gleich zwei in einem Gehäuse. Gruß, Günter
hi... mal ne frage und zwar: habe mit winavr einen quellcode erzeugt der ca 600 zeilen umfaßt. jetzt ist beim kompilieren mit winavr folgendes problem aufgetreten. -------------------------------- avrdude: Device signature = 0x01911e avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "main.hex" avrdude: input file main.hex auto detected as Intel Hex avrdude: ERROR: address 0x0810 out of range at line 129 of main.hex ---------------------------------- entscheidend LETZTE zeile !!! kann der speicher evtl. schon voll sein. beim kompilieren allerdings wird angezeigt, dass erst ca. 33,4% (2,7kB) belegt sind. was ist da also los??? Benutzt wird der uC "Attiny26" von atmel danke schonmal David
Der ATTiny26 hat 2KB Flash, das ist 0x800 als hex. avrdude hat also recht, das passt da nicht mehr rein. (Hat ja auch dein Programm beim Kompilieren schon angezeigt, 2.7 kB) kann man dem evtl den vorhandenen Speicher irgendwo konfigurieren, damit auch die Prozentanzeige stimmt? /Ernst
hi... @ernst: erstmal danke soweit. heisst das jetzt im klartext das ich das programm abspecken kann auf 2kB? oder gibts da evtl noch nen kleinen trick....?? das mit dem speicher ist echt zu dumm. normalerweise stellt man den controller typen im makefile von winavr ein. das "sollte" eigentlich funktionieren. David
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.