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
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
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.
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.
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
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.
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 :-)
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 :=-._
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.
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
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
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?
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?
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.
Ä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?