www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Differenzverstärker und negative Spannungen (AVR)


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier einen ATMega8(Referenz-U 5V) an einen Hallsensor 
angeschlossen. Der Hallsensor gibt, wenn kein Magnetfeld vorhanden ist, 
2,5 V aus. Bei Abweichung der Spannung zu 0V hin liegt ein negatives und 
bei einer Abweichung zu 5V hin gibt er ein postives Feld aus.

Bis dahin klappt alles, aber bei der Eichung hab ich nun gemerkt, dass 
die Auflösung von ca 5mV/Bereich doch recht dürftig ist. Nun wollt ich 
die Differenz verstärken, um eine höhere Auflösung zu erreichen und per 
µC zurückrechnen und in mT umwandeln.

Da der ATMega aber nur positive Spannungen messen kann, wollte ich 
fragen, wie ich am einfachsten realisieren kann, dass bei einem 
negativem Feld ein - und bei einem positiven Feld ein + erscheint.


MfG
Markus

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat keiner einen Tipp? :(

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die frage ist nicht dein ernst, oder?
wie wäre es mit subtraktion das AD-wertes bei 2,5v.

Autor: Ralli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Markus,

5 V / 1024 = ca. 5 mV das sind die Grenzen vom ATMega8.

Gäbe noch die Möglichkeit, einen rail-to-rail In/Out OpAmp, der mit 5 V 
auskommt, davorzuschalten.

Somit lassen sich bei einer Verstärkung von 10 (Offset = 2,5 V) kleine
Werte besser auflösen.
Die Ausgangsspannung des OpAmp geht bei größeren Werten nur in die 
Begrenzung, gefährdet aber den Mega8 nie.

Zusätzlich ließe sich auch der Offset (bei konstanter Verstärkung) vom
Mega8 über passend gewählte Widerstände steuern.

Damit ließe sich die Auflösung steigern, die Genauigkeit dürfte aber
eher sinken...

Gruß Ralli

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du noch nicht auch dem Mega8 festgelegt bist, wäre auch der Einsatz
eines AVRs mit eingebautem Differenzverstärker zu überlegen. Leider sind
die entsprechenden Typen entweder deutlich größer (ATmega32) oder
kleiner (ATtiny25/45/85) als der ATmega8.

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh, sorry, das hier
> die Auflösung von ca 5mV/Bereich doch recht dürftig ist. Nun wollt ich

hatte ich überlesen. ist das die die auflösung des hallsensors?
bringt der bei maximalem magn. fluss 5mV ausschalg?
wenn ja, dann handelt es sich ja nur einfach um ein analoges hallelement 
(welcher typ ist es denn) und du musst sowieso einen differenzverstärker 
benutzen, der beide ausgänge des hallelements subtrahiert, sonst ist die 
abhängigkeit der hallspannung von der betriebsspannung (eigentlich 
stromstärke) und der temperatur viel zu groß und damit wären die werte 
sowoeso nichts wert.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke schon mal.

Auf den Mega8 bin ich leider schon fest gelegt.

>ist das die die auflösung des hallsensors?
die auflösung des ADC. Der hat bei meiner Referenzspannung eine 
Bereichsbreite von 5mV


>Somit lassen sich bei einer Verstärkung von 10 (Offset = 2,5 V) kleine
>Werte besser auflösen.
>Die Ausgangsspannung des OpAmp geht bei größeren Werten nur in die
>Begrenzung, gefährdet aber den Mega8 nie.

>Zusätzlich ließe sich auch der Offset (bei konstanter Verstärkung) vom
>Mega8 über passend gewählte Widerstände steuern.


Also versteh ich das richtig: Per Widerstände den Offset, also 2,5V, 
auslöschen und dann die übrige Spannung, die entsteht wenn ich den 
Sensor in ein Magnetfeld tauche, verstärken.

Aber wieso geht das nur bei konstanter Verstärkung? Offset wäre doch 
immer 2,5V und somit bliebe doch U=2,5V/I immer gleich

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn die ausgangspannung des hallsensors groß genug ist, wo ist dann 
dein problem?
alle adc-werte ab 0x200 (10bit-auflösung) sind positiv und alle darunter 
sind negativ. zieh vom adc-wert die 0x200 ab und du hast deine negativen 
und positiven werte. entweder habe ich das problem nicht verstanden oder 
du.
es ist doch vollkommen wurscht, ob die ausgangsspannung des hallsensors 
bei umgekehrter feldrichtung ebenfalls positiv ist.
wenn das so wäre, dann hättest du ein problem.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also nicht dass wir nun aneinander vorbei reden, ich hab dich nun so 
verstanden, dass ich programmtechnisch 2,5V vom Hallsensor abziehen soll 
und so meine Werte erhalte.

Das ist ja richtig, jedoch wollte ich eine höhere Auflösung als 10Bit 
erreichen. (Wären in meinem Bsp. ungefähr 1Gauss/Bereich -> zu viel)

Wenn ich jetzt programmtechnisch einfach 2,5V abziehe, hätte ich zwar 
positive und negative Werte, es wäre mir aber nicht möglich den Offset 
zu bereinigen (real 2,5V abziehen), diesen zu verstärken und so eine 
höhere Auflösung zu erreichen, da ja real noch 2,5V übrig bleiben -> 
Keine Verstärkung möglich, da der ADC nur bis 5V misst.

Wenn ich nun aber zum Beispiel per Poti 2,5V abziehe, bekomme ich ja 
keine negativen Werte


Hoffe du hast nun mein Problem verstanden :-)

Autor: Markus ---- (mrmccrash)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann bleibt dir nur, einen externen AD-Wandler mit höherer Auflösung per 
SPI oder I2C an den ATmega dranzuknoten. Mehr Auflösung als 10 Bit kann 
der Mega8 nicht.

Entsprechende Type mit 12 bit Auflösung oder mehr findest du bei 
einschlägigen Herstellern wie Analog Devices, Texas Instruments usw.

_.-=: MFG :=-._

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmmm.... das übersteigt meine Fähigkeiten leider

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus wrote:
> Also nicht dass wir nun aneinander vorbei reden,
>
> Hoffe du hast nun mein Problem verstanden :-)

nein, überhaupt nicht. entweder bin ich zu blöd oder du hast ein 
besonderes talent dich unklar auszudrücken.
mach es doch mal konkret.
welche ausgangsspannungen liefert der hallsensor denn nun wirklich und 
welcher spannungsbereich interessiert dich denn für deine messung?
der gesamte spannungsbereich des hallsensors oder nur ein teil davon?

du kannst mit recht einfachen mitteln zb einen spannungsbereich, zb von 
2,5V bis 3V ebenfalls wieder mit 10bit auflösen.
im prinzip könnte man mit einem externen DA-wandler dann auch die 
auflösung der AD-wandlung erhöhen, indem der DA-wandler eine 
offsetspannung ausgibt, die per opv vom hallsignal abgezogen wird.
du solltest dich aber keinen illusionen hingeben. 10bit auflösung, das 
ist schon eine genauigkeit von 0,1%. mit irgendwelchen basteleien wirst 
du da kaum genauer werden, denn deine schaltungen müssten in der 
toleranz (rauschen, temperaturabhängigkeit, spannungskonstanz) 
wesentlich besser als 0,1% sein. die frage ist, ob dein hallsensor 
überhaupt solch eine genauigkeit misst. wenn du jetzt also, durch welche 
maßnahmen auch immer, 12 bit auflösung erreichst, dann hast du zwar ein 
paar mehr stellen nach dem komma auf deiner anzeige, die sagen aber über 
die wirkliche messgröße (magn. flussdichte) absolut nichts aus. es 
handelt sich dann letztendlich nur um eine phantasiegenauigkeit.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gg
ja das mit dem unklar ausdrücken kann durchaus sein, war schon immer ne 
Niete in Deutsch :D, aber hab mein Bestes gegeben

>welche ausgangsspannungen liefert der hallsensor denn nun wirklich
Er liefert 2,5V, wenn kein Feld vorliegt. Wenn nun ein negatives Feld 
vorliegt, liefert er etwas von 0-2,5V. Wenn nun ein positives Feld 
vorliegt liefert er etwas von 2,5-5V. Dabei ist die Abnahme/Zunahme der 
Spannung direkt proportional zur magnetischen Flussdichte.

>welcher spannungsbereich interessiert dich denn für deine messung?
Ich brauch nicht den gesamten Bereich, da mich eher kleine Feldstärken 
interessieren. Gut wären so in etwa 1,75-3,25V. (Kann auch abweichen)

>der gesamte spannungsbereich des hallsensors oder nur ein teil davon?

Nein, wie oben eben nur ein Teil davon.



Vielleicht kann ichs ja so ausdrücken: Ich möchte einen Teil meines 
Bereichs einschränken und gegen Auflösung eintauschen.
also z.B. nicht mehr von 0-100mT und 10Bit
sondern 0-50mT und 11Bit

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Markus

In welchem Spannungsbereich befinden sich die Messungen?
Wenn bei maximalem Feld z.B. 3V bzw. 2V gemessen werden (also 1V 
komplett), könnte man die Differenzspannung vom Hallsensor zu 2,5V 
verstärken, eben auf 0 bis 5V.
Somit hättest Du eine höhere Auflösung, da das eine Volt nun in einem 
Bereich von 5V eingelesen wird.

Verständlich?

MfG

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus wrote:
> Ich brauch nicht den gesamten Bereich, da mich eher kleine Feldstärken
> interessieren. Gut wären so in etwa 1,75-3,25V. (Kann auch abweichen)
>
das sind also 3,25V-1,75V=1,5V spannungsdifferenz, die mitte liegt also 
bei (3,25V+1,75V):2=2,5V.
wenn du zum AD-wandeln die intere referenzquelle mit 2,56V nimmst (und 
das solltest du tun, wenn es einigermaßen genau werden soll), dann löst 
der ADC den Spannungsbereich von 0...2,56Volt mit 10bit auf.

du kannst jetzt mit einem differenzverstärker den spannungshub von 1,5V 
etwas verstärken (faktor 1,6) und im spannungsbereich nach unten 
verschieben, sodass die spannungen im bereich von ca 0v (wird natürlich 
nicht ganz klappen aber es gibt opvs die dem nahe kommen) bis 2,56V 
liegen. diese werte kannst du dann mit 10bit auflösen, sodass der 
bereich von 0-50mT mit 10bit aufgelöst wird.

> sondern 0-50mT und 11Bit

?? wo soll das 11.Bit herkommen?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>?? wo soll das 11.Bit herkommen?
Also da hab ich was falsch beschrieben. Ich meinte eigentlich, dass ich 
bei 0-50mT die gleiche auflösung habe, als wenn ich 11Bit bei 0-100mT 
hätte.

>In welchem Spannungsbereich befinden sich die Messungen?
>Wenn bei maximalem Feld z.B. 3V bzw. 2V gemessen werden (also 1V
>komplett), könnte man die Differenzspannung vom Hallsensor zu 2,5V
>verstärken, eben auf 0 bis 5V.
>Somit hättest Du eine höhere Auflösung, da das eine Volt nun in einem
>Bereich von 5V eingelesen wird.

OK, gut. Ich könnte aber evtl. in ein stärkeres magnetfeld kommen und 
dann würden meinen ATmega mehr als 5V eingehen. Ist das schlecht für den 
Mega, oder gibts irgendeine Sicherung, dass den Mega nicht mehr als 5V 
erreichen?


>wenn du zum AD-wandeln die intere referenzquelle mit 2,56V nimmst

OK nimm ich die Referenzspannung. Aber wieso ist die genauer als die 5V? 
Vielleicht kauf ich mir noch eine ext. Präzisionsreferenz

>du kannst jetzt mit einem differenzverstärker den spannungshub von 1,5V
>etwas verstärken (faktor 1,6) und im spannungsbereich nach unten
>verschieben,

Wie genau meinst du das? Wenn ich die Differenz verstärke, müsste sie 
doch eigentlich schon 'unten', also bei 0V beginnen, oder versteh ich da 
was falsch?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Der Sensor hat bei keinem Feld nicht genau 2,5V, sondern 2,455 oder so. 
Wie soll ich dann den Differenzverstärker beschalten, um auch wirklich 
die Differenz zu bekommen? Ich brauch da ja an einem Eingang irgendwie 
2,455V.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh, sorry aber ein letzter Post noch,

was mir eben gekommen ist:

Könnte ich nicht das ganze auch per Widerstand auf zB 0,5V runterregeln, 
so dass am R immer 2V abfallen.
DAnn die 0,5V verstärken um das fünffache? Dann hätte ich ja theoretisch 
von 2-3V 10Bit auflösung und müsste nicht mit den OPV hantieren.

Oder hab ich da was übersehen?

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein das funktioniert so nicht

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.